{"version":3,"file":"@udecode-liLIb716.js","sources":["../../node_modules/@udecode/utils/dist/index.mjs","../../node_modules/@udecode/react-utils/dist/index.mjs","../../node_modules/@udecode/cn/dist/index.mjs","../../node_modules/@udecode/plate-core/node_modules/slate-react/dist/index.es.js","../../node_modules/@udecode/slate/node_modules/slate/dist/index.es.js","../../node_modules/@udecode/slate/dist/index.mjs","../../node_modules/@udecode/react-hotkeys/dist/index.mjs","../../node_modules/@udecode/plate-core/dist/react/index.mjs","../../node_modules/@udecode/plate-utils/dist/react/index.mjs","../../node_modules/@udecode/plate-core/dist/index.mjs","../../node_modules/@udecode/plate-break/dist/react/index.mjs","../../node_modules/@udecode/plate-heading/dist/index.mjs","../../node_modules/@udecode/plate-alignment/dist/react/index.mjs","../../node_modules/@udecode/plate-autoformat/dist/react/index.mjs","../../node_modules/@udecode/plate-basic-marks/dist/react/index.mjs","../../node_modules/@udecode/plate-block-quote/dist/react/index.mjs","../../node_modules/@udecode/plate-caption/dist/react/index.mjs","../../node_modules/@udecode/plate-code-block/dist/react/index.mjs","../../node_modules/@udecode/plate-heading/dist/react/index.mjs","../../node_modules/@udecode/plate-highlight/dist/react/index.mjs","../../node_modules/@udecode/plate-indent/dist/react/index.mjs","../../node_modules/@udecode/plate-indent/dist/index.mjs","../../node_modules/@udecode/plate-indent-list/dist/react/index.mjs","../../node_modules/@udecode/plate-normalizers/dist/index.mjs","../../node_modules/@udecode/plate-floating/dist/index.mjs","../../node_modules/@udecode/plate-link/dist/react/index.mjs","../../node_modules/@udecode/plate-reset-node/dist/index.mjs","../../node_modules/@udecode/plate-reset-node/dist/react/index.mjs","../../node_modules/@udecode/plate-list/dist/react/index.mjs","../../node_modules/@udecode/plate-media/dist/react/index.mjs","../../node_modules/@udecode/plate-node-id/dist/index.mjs","../../node_modules/@udecode/plate-select/dist/index.mjs","../../node_modules/@udecode/plate-selection/dist/react/index.mjs","../../node_modules/@udecode/plate-trailing-block/dist/index.mjs","../../node_modules/@udecode/plate-kbd/dist/react/index.mjs","../../node_modules/@udecode/plate-indent-list/dist/index.mjs","../../node_modules/@udecode/plate-callout/dist/index.mjs","../../node_modules/@udecode/plate-callout/dist/react/index.mjs","../../node_modules/@udecode/plate-code-block/dist/index.mjs","../../node_modules/@udecode/plate-date/dist/index.mjs","../../node_modules/@udecode/plate-date/dist/react/index.mjs","../../node_modules/@udecode/plate-layout/dist/index.mjs","../../node_modules/@udecode/plate-layout/dist/react/index.mjs","../../node_modules/@udecode/plate-math/dist/index.mjs","../../node_modules/@udecode/plate-math/dist/react/index.mjs","../../node_modules/@udecode/plate-media/dist/index.mjs","../../node_modules/@udecode/plate-resizable/dist/index.mjs","../../node_modules/@udecode/plate-table/dist/react/index.mjs","../../node_modules/@udecode/cmdk/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../node_modules/@udecode/cmdk/dist/index.mjs","../../node_modules/@udecode/plate-dnd/dist/index.mjs"],"sourcesContent":["// src/environment.ts\nvar IS_APPLE = typeof navigator !== \"undefined\" && navigator.userAgent.includes(\"Mac OS X\");\n\n// src/escapeRegexp.ts\nvar escapeRegExp = (text) => {\n return text.replaceAll(/[#$()*+,.?[\\\\\\]^s{|}-]/g, String.raw`\\$&`);\n};\n\n// src/findHtmlParentElement.ts\nvar findHtmlParentElement = (el, nodeName) => {\n if (!el || el.nodeName === nodeName) {\n return el;\n }\n return findHtmlParentElement(el.parentElement, nodeName);\n};\n\n// src/getHandler.ts\nvar getHandler = (cb, ...args) => () => {\n cb?.(...args);\n};\n\n// src/hexToBase64.ts\nvar hexToBase64 = (hex) => {\n const hexPairs = hex.match(/\\w{2}/g) || [];\n const binary = hexPairs.map(\n (hexPair) => String.fromCodePoint(Number.parseInt(hexPair, 16))\n );\n return btoa(binary.join(\"\"));\n};\n\n// src/isUrl.ts\nvar protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\nvar emailLintRE = /mailto:([^?\\\\]+)/;\nvar localhostDomainRE = /^localhost[\\d:?]*(?:[^\\d:?]\\S*)?$/;\nvar nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\nvar isUrl = (string) => {\n if (typeof string !== \"string\") {\n return false;\n }\n const generalMatch = protocolAndDomainRE.exec(string);\n const emailLinkMatch = emailLintRE.exec(string);\n const match = generalMatch || emailLinkMatch;\n if (!match) {\n return false;\n }\n const everythingAfterProtocol = match[1];\n if (!everythingAfterProtocol) {\n return false;\n }\n try {\n new URL(string);\n } catch {\n return false;\n }\n return localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol);\n};\n\n// src/mergeProps.ts\nvar mergeProps = (props, overrideProps, {\n handlerKeys,\n handlerQuery = (key) => key.startsWith(\"on\")\n} = {}) => {\n const map = /* @__PURE__ */ new Map();\n const acc = {};\n const mapProps = (_props) => {\n if (!_props) return;\n Object.entries(_props).forEach(([key, value]) => {\n if ((!handlerKeys || handlerKeys.includes(key)) && (!handlerQuery || handlerQuery(key)) && typeof value === \"function\") {\n if (!map.has(key)) {\n map.set(key, []);\n }\n map.get(key)?.push(value);\n acc[key] = (...args) => {\n map.get(key)?.forEach((fn) => fn(...args));\n };\n } else {\n acc[key] = value;\n }\n });\n };\n mapProps(props);\n mapProps(overrideProps);\n return acc;\n};\n\n// src/sanitizeUrl.ts\nvar sanitizeUrl = (url, { allowedSchemes, permitInvalid = false }) => {\n if (!url) return null;\n let parsedUrl = null;\n try {\n parsedUrl = new URL(url);\n } catch {\n return permitInvalid ? url : null;\n }\n if (allowedSchemes && !allowedSchemes.includes(parsedUrl.protocol.slice(0, -1))) {\n return null;\n }\n return parsedUrl.href;\n};\n\n// src/type-utils.ts\nvar isUndefined = (obj) => obj === void 0;\nvar isNull = (obj) => obj === null;\nvar isUndefinedOrNull = (obj) => isUndefined(obj) || isNull(obj);\nvar isDefined = (arg) => !isUndefinedOrNull(arg);\nfunction bindFirst(fn, firstArg) {\n return (...args) => fn(firstArg, ...args);\n}\nexport {\n IS_APPLE,\n bindFirst,\n escapeRegExp,\n findHtmlParentElement,\n getHandler,\n hexToBase64,\n isDefined,\n isNull,\n isUndefined,\n isUndefinedOrNull,\n isUrl,\n mergeProps,\n sanitizeUrl\n};\n//# sourceMappingURL=index.mjs.map","// src/createSlotComponent.tsx\nimport React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nvar createSlotComponent = (element) => (\n // eslint-disable-next-line react/display-name\n React.forwardRef(({ as, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : as || element;\n return /* @__PURE__ */ React.createElement(Comp, { ref, ...props });\n })\n);\n\n// src/Box.tsx\nvar Box = createSlotComponent(\"div\");\n\n// src/MemoizedChildren.tsx\nimport React2 from \"react\";\nvar MemoizedChildren = React2.memo(\n ({ children }) => {\n return /* @__PURE__ */ React2.createElement(React2.Fragment, null, children);\n }\n);\n\n// src/PortalBody.tsx\nimport React3 from \"react\";\nimport ReactDOM from \"react-dom\";\nvar PortalBody = ({\n children,\n element\n}) => {\n const container = element || typeof window !== \"undefined\" ? document.body : void 0;\n if (!container) return /* @__PURE__ */ React3.createElement(React3.Fragment, null, children);\n return ReactDOM.createPortal(children, element || document.body);\n};\n\n// src/Text.tsx\nvar Text = createSlotComponent(\"span\");\n\n// src/composeEventHandlers.ts\nvar composeEventHandlers = (originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) => (event) => {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n};\n\n// src/createPrimitiveComponent.tsx\nimport React5 from \"react\";\nimport { isDefined } from \"@udecode/utils\";\nimport { clsx } from \"clsx\";\n\n// src/useComposedRef.ts\nimport React4 from \"react\";\nvar setRef = (ref, value) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n};\nvar composeRefs = (...refs) => (node) => refs.forEach((ref) => setRef(ref, node));\nvar useComposedRef = (...refs) => {\n return React4.useCallback(composeRefs(...refs), refs);\n};\n\n// src/createPrimitiveComponent.tsx\nvar createPrimitiveComponent = (element) => {\n const Comp = createSlotComponent(element);\n return ({\n propsHook,\n stateHook\n } = {}) => {\n return React5.forwardRef(\n ({\n asChild,\n className: classNameProp,\n getClassName,\n options,\n state: stateProp,\n ...props\n }, ref) => {\n const state = isDefined(stateProp) ? stateProp : stateHook ? stateHook(options) : void 0;\n const {\n hidden,\n props: hookProps,\n ref: hookRef\n } = propsHook ? propsHook(state) : { hidden: false, props: {}, ref: null };\n const _ref = useComposedRef(ref, hookRef);\n const className = isDefined(hookProps?.className) || isDefined(classNameProp) ? clsx(hookProps?.className, classNameProp) : void 0;\n const style = hookProps?.style || props.style ? { ...hookProps?.style, ...props.style } : void 0;\n if (!asChild && hidden) return null;\n return /* @__PURE__ */ React5.createElement(\n Comp,\n {\n ref: _ref,\n asChild,\n ...hookProps,\n className,\n style,\n ...props,\n ...props.setProps?.(hookProps ?? {}) ?? {}\n }\n );\n }\n );\n };\n};\n\n// src/createPrimitiveElement.tsx\nimport React6 from \"react\";\nfunction createPrimitiveElement(tag) {\n return React6.forwardRef(\n function CreateComponent(props, ref) {\n return React6.createElement(tag, { ...props, ref });\n }\n );\n}\n\n// src/useEffectOnce.ts\nimport React7 from \"react\";\nfunction useEffectOnce(effect, deps) {\n const initialized = React7.useRef(false);\n const prevDepsRef = React7.useRef(deps);\n React7.useEffect(() => {\n const depsChanged = deps.some((dep, i) => dep !== prevDepsRef.current[i]);\n if (!initialized.current || depsChanged) {\n initialized.current = true;\n prevDepsRef.current = deps;\n effect();\n }\n }, deps);\n}\n\n// src/useIsomorphicLayoutEffect.ts\nimport React8 from \"react\";\nvar CAN_USE_DOM = typeof window !== \"undefined\" && window.document?.createElement !== void 0;\nvar useIsomorphicLayoutEffect = CAN_USE_DOM ? React8.useLayoutEffect : React8.useEffect;\n\n// src/useMemoOnce.ts\nimport React9 from \"react\";\nfunction useMemoOnce(factory, deps) {\n const initialized = React9.useRef(false);\n const prevDepsRef = React9.useRef(deps);\n const memoizedValueRef = React9.useRef();\n if (!initialized.current || deps.some((dep, i) => dep !== prevDepsRef.current[i])) {\n initialized.current = true;\n prevDepsRef.current = deps;\n memoizedValueRef.current = factory();\n }\n return memoizedValueRef.current;\n}\n\n// src/useMemoizedSelector.ts\nimport React10 from \"react\";\nfunction useMemoizedSelector(selector, deps, equalityFn = (a, b) => a === b) {\n const [memoizedValue, setMemoizedValue] = React10.useState(() => selector());\n const previousValueRef = React10.useRef(memoizedValue);\n React10.useEffect(() => {\n const newValue = selector();\n if (!equalityFn(previousValueRef.current, newValue)) {\n setMemoizedValue(newValue);\n previousValueRef.current = newValue;\n }\n }, deps);\n return memoizedValue;\n}\n\n// src/useOnClickOutside.ts\nimport React11 from \"react\";\nvar canUsePassiveEvents = () => {\n if (typeof window === \"undefined\" || typeof window.addEventListener !== \"function\")\n return false;\n let passive = false;\n const options = Object.defineProperty({}, \"passive\", {\n // eslint-disable-next-line getter-return\n get() {\n passive = true;\n }\n });\n const noop = () => null;\n window.addEventListener(\"test\", noop, options);\n window.removeEventListener(\"test\", noop, options);\n return passive;\n};\nvar DEFAULT_IGNORE_CLASS = \"ignore-onclickoutside\";\nvar checkClass = (el, cl) => el.classList?.contains(cl);\nvar hasIgnoreClass = (e, ignoreClass) => {\n let el = e.target || e;\n while (el) {\n if (Array.isArray(ignoreClass)) {\n if (ignoreClass.some((c) => checkClass(el, c))) return true;\n } else if (checkClass(el, ignoreClass)) {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n};\nvar clickedOnScrollbar = (e) => document.documentElement.clientWidth <= e.clientX || document.documentElement.clientHeight <= e.clientY;\nvar getEventOptions = (type) => type.includes(\"touch\") && canUsePassiveEvents() ? { passive: true } : false;\nvar useOnClickOutside = (callback, {\n detectIFrame = true,\n disabled,\n eventTypes = [\"mousedown\", \"touchstart\"],\n excludeScrollbar,\n ignoreClass = DEFAULT_IGNORE_CLASS,\n refs: refsOpt\n} = {}) => {\n const [refsState, setRefsState] = React11.useState([]);\n const callbackRef = React11.useRef(callback);\n callbackRef.current = callback;\n const ref = React11.useCallback(\n (el) => setRefsState((prevState) => [...prevState, { current: el }]),\n []\n );\n React11.useEffect(\n () => {\n if (!refsOpt?.length && refsState.length === 0) return;\n const getEls = () => {\n const els = [];\n (refsOpt || refsState).forEach(\n ({ current }) => current && els.push(current)\n );\n return els;\n };\n const handler = (e) => {\n if (!hasIgnoreClass(e, ignoreClass) && !(excludeScrollbar && clickedOnScrollbar(e)) && getEls().every((el) => !el.contains(e.target)))\n callbackRef.current(e);\n };\n const blurHandler = (e) => (\n // On firefox the iframe becomes document.activeElement in the next event loop\n setTimeout(() => {\n const { activeElement } = document;\n if (activeElement?.tagName === \"IFRAME\" && !hasIgnoreClass(activeElement, ignoreClass) && !getEls().includes(activeElement))\n callbackRef.current(e);\n }, 0)\n );\n const removeEventListener = () => {\n eventTypes.forEach(\n (type) => document.removeEventListener(\n type,\n handler,\n getEventOptions(type)\n )\n );\n if (detectIFrame) window.removeEventListener(\"blur\", blurHandler);\n };\n if (disabled) {\n removeEventListener();\n return;\n }\n eventTypes.forEach(\n (type) => document.addEventListener(type, handler, getEventOptions(type))\n );\n if (detectIFrame) window.addEventListener(\"blur\", blurHandler);\n return () => removeEventListener();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n refsState,\n ignoreClass,\n excludeScrollbar,\n disabled,\n detectIFrame,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(eventTypes)\n ]\n );\n return ref;\n};\n\n// src/useStableMemo.ts\nimport React12 from \"react\";\nvar useStableMemo = (producer, deps) => {\n const [value, setValue] = React12.useState(producer);\n React12.useLayoutEffect(() => {\n setValue(producer);\n }, deps);\n return value;\n};\n\n// src/withProviders.tsx\nimport React13 from \"react\";\nvar withProviders = (...providers) => (WrappedComponent) => (props) => providers.reduceRight(\n (acc, prov) => {\n let Provider = prov;\n if (Array.isArray(prov)) {\n [Provider] = prov;\n return /* @__PURE__ */ React13.createElement(Provider, { ...prov[1] }, acc);\n }\n return /* @__PURE__ */ React13.createElement(Provider, null, acc);\n },\n /* @__PURE__ */ React13.createElement(WrappedComponent, { ...props })\n);\n\n// src/withRef.tsx\nimport React14 from \"react\";\nfunction withRef(renderFunction) {\n return React14.forwardRef(renderFunction);\n}\nexport {\n Box,\n CAN_USE_DOM,\n DEFAULT_IGNORE_CLASS,\n MemoizedChildren,\n PortalBody,\n Text,\n composeEventHandlers,\n composeRefs,\n createPrimitiveComponent,\n createPrimitiveElement,\n createSlotComponent,\n useComposedRef,\n useEffectOnce,\n useIsomorphicLayoutEffect,\n useMemoOnce,\n useMemoizedSelector,\n useOnClickOutside,\n useStableMemo,\n withProviders,\n withRef\n};\n//# sourceMappingURL=index.mjs.map","// src/cn.ts\nimport { cx } from \"class-variance-authority\";\nimport { twMerge } from \"tailwind-merge\";\nfunction cn(...inputs) {\n return twMerge(cx(inputs));\n}\n\n// src/withProps.tsx\nimport React from \"react\";\nfunction withProps(Component, defaultProps) {\n const ComponentWithClassName = Component;\n return React.forwardRef(function ExtendComponent(props, ref) {\n return /* @__PURE__ */ React.createElement(\n ComponentWithClassName,\n {\n ref,\n ...defaultProps,\n ...props,\n className: cn(\n defaultProps.className,\n props.className\n )\n }\n );\n });\n}\n\n// src/withCn.tsx\nfunction withCn(Component, ...inputs) {\n return withProps(Component, { className: cn(inputs) });\n}\n\n// src/withVariants.tsx\nimport React2 from \"react\";\nfunction withVariants(Component, variants, onlyVariantsProps) {\n const ComponentWithClassName = Component;\n return React2.forwardRef(function ExtendComponent(allProps, ref) {\n const { className, ...props } = allProps;\n const rest = { ...props };\n if (onlyVariantsProps) {\n onlyVariantsProps.forEach((key) => {\n if (props[key] !== void 0) {\n delete rest[key];\n }\n });\n }\n return /* @__PURE__ */ React2.createElement(\n ComponentWithClassName,\n {\n ref,\n className: cn(variants(props), className),\n ...rest\n }\n );\n });\n}\n\n// src/index.tsx\nexport * from \"@udecode/react-utils\";\nexport {\n cn,\n withCn,\n withProps,\n withVariants\n};\n//# sourceMappingURL=index.mjs.map","import getDirection from 'direction';\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport React, { createContext, useContext, useRef, useEffect, useLayoutEffect, useState, memo, forwardRef, useCallback, Component, useReducer, useMemo } from 'react';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { Editor, Range, Transforms, Node, Text as Text$1, Path, Point, Element as Element$1, Scrubber } from 'slate';\nimport { DOMEditor, EDITOR_TO_USER_MARKS, EDITOR_TO_PENDING_DIFFS, EDITOR_TO_PENDING_ACTION, EDITOR_TO_PENDING_INSERTION_MARKS, targetRange, verifyDiffState, EDITOR_TO_PENDING_SELECTION, IS_COMPOSING, IS_NODE_MAP_DIRTY, applyStringDiff, isDOMSelection, isTrackedMutation, EDITOR_TO_FORCE_RENDER, normalizeRange, normalizePoint, EDITOR_TO_PLACEHOLDER_ELEMENT, normalizeStringDiff, mergeStringDiffs, CAN_USE_DOM, IS_ANDROID, EDITOR_TO_SCHEDULE_FLUSH, MARK_PLACEHOLDER_SYMBOL, IS_IOS, PLACEHOLDER_SYMBOL, IS_WEBKIT, isTextDecorationsEqual, EDITOR_TO_KEY_TO_ELEMENT, NODE_TO_ELEMENT, ELEMENT_TO_NODE, isElementDecorationsEqual, NODE_TO_INDEX, NODE_TO_PARENT, IS_READ_ONLY, getActiveElement, getSelection, IS_FOCUSED, getDefaultView, EDITOR_TO_WINDOW, EDITOR_TO_ELEMENT, IS_FIREFOX, EDITOR_TO_USER_SELECTION, HAS_BEFORE_INPUT_SUPPORT, isDOMElement, isDOMNode, TRIPLE_CLICK, IS_FIREFOX_LEGACY, IS_WECHATBROWSER, IS_UC_MOBILE, Hotkeys, IS_CHROME, isPlainTextOnlyPaste, EDITOR_TO_ON_CHANGE, withDOM } from 'slate-dom';\nexport { NODE_TO_INDEX, NODE_TO_PARENT } from 'slate-dom';\nimport { ResizeObserver } from '@juggle/resize-observer';\nimport ReactDOM from 'react-dom';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\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}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\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}\n\n/**\n * A React context for sharing the editor object.\n */\nvar EditorContext = /*#__PURE__*/createContext(null);\n/**\n * Get the current editor object from the React context.\n */\nvar useSlateStatic = () => {\n var editor = useContext(EditorContext);\n if (!editor) {\n throw new Error(\"The `useSlateStatic` hook must be used inside the component's context.\");\n }\n return editor;\n};\n\n// eslint-disable-next-line no-redeclare\nvar ReactEditor = DOMEditor;\n\nfunction ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// https://github.com/facebook/draft-js/blob/main/src/component/handlers/composition/DraftEditorCompositionHandler.js#L41\n// When using keyboard English association function, conpositionEnd triggered too fast, resulting in after `insertText` still maintain association state.\nvar RESOLVE_DELAY = 25;\n// Time with no user interaction before the current user action is considered as done.\nvar FLUSH_DELAY = 200;\n// Replace with `const debug = console.log` to debug\nvar debug = function debug() {};\n// Type guard to check if a value is a DataTransfer\nvar isDataTransfer = value => (value === null || value === void 0 ? void 0 : value.constructor.name) === 'DataTransfer';\nfunction createAndroidInputManager(_ref) {\n var {\n editor,\n scheduleOnDOMSelectionChange,\n onDOMSelectionChange\n } = _ref;\n var flushing = false;\n var compositionEndTimeoutId = null;\n var flushTimeoutId = null;\n var actionTimeoutId = null;\n var idCounter = 0;\n var insertPositionHint = false;\n var applyPendingSelection = () => {\n var pendingSelection = EDITOR_TO_PENDING_SELECTION.get(editor);\n EDITOR_TO_PENDING_SELECTION.delete(editor);\n if (pendingSelection) {\n var {\n selection\n } = editor;\n var normalized = normalizeRange(editor, pendingSelection);\n if (normalized && (!selection || !Range.equals(normalized, selection))) {\n Transforms.select(editor, normalized);\n }\n }\n };\n var performAction = () => {\n var action = EDITOR_TO_PENDING_ACTION.get(editor);\n EDITOR_TO_PENDING_ACTION.delete(editor);\n if (!action) {\n return;\n }\n if (action.at) {\n var target = Point.isPoint(action.at) ? normalizePoint(editor, action.at) : normalizeRange(editor, action.at);\n if (!target) {\n return;\n }\n var _targetRange = Editor.range(editor, target);\n if (!editor.selection || !Range.equals(editor.selection, _targetRange)) {\n Transforms.select(editor, target);\n }\n }\n action.run();\n };\n var flush = () => {\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId);\n flushTimeoutId = null;\n }\n if (actionTimeoutId) {\n clearTimeout(actionTimeoutId);\n actionTimeoutId = null;\n }\n if (!hasPendingDiffs() && !hasPendingAction()) {\n applyPendingSelection();\n return;\n }\n if (!flushing) {\n flushing = true;\n setTimeout(() => flushing = false);\n }\n if (hasPendingAction()) {\n flushing = 'action';\n }\n var selectionRef = editor.selection && Editor.rangeRef(editor, editor.selection, {\n affinity: 'forward'\n });\n EDITOR_TO_USER_MARKS.set(editor, editor.marks);\n debug('flush', EDITOR_TO_PENDING_ACTION.get(editor), EDITOR_TO_PENDING_DIFFS.get(editor));\n var scheduleSelectionChange = hasPendingDiffs();\n var diff;\n while (diff = (_EDITOR_TO_PENDING_DI = EDITOR_TO_PENDING_DIFFS.get(editor)) === null || _EDITOR_TO_PENDING_DI === void 0 ? void 0 : _EDITOR_TO_PENDING_DI[0]) {\n var _EDITOR_TO_PENDING_DI, _EDITOR_TO_PENDING_DI2;\n var pendingMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(editor);\n if (pendingMarks !== undefined) {\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor);\n editor.marks = pendingMarks;\n }\n if (pendingMarks && insertPositionHint === false) {\n insertPositionHint = null;\n }\n var range = targetRange(diff);\n if (!editor.selection || !Range.equals(editor.selection, range)) {\n Transforms.select(editor, range);\n }\n if (diff.diff.text) {\n Editor.insertText(editor, diff.diff.text);\n } else {\n Editor.deleteFragment(editor);\n }\n // Remove diff only after we have applied it to account for it when transforming\n // pending ranges.\n EDITOR_TO_PENDING_DIFFS.set(editor, (_EDITOR_TO_PENDING_DI2 = EDITOR_TO_PENDING_DIFFS.get(editor)) === null || _EDITOR_TO_PENDING_DI2 === void 0 ? void 0 : _EDITOR_TO_PENDING_DI2.filter(_ref2 => {\n var {\n id\n } = _ref2;\n return id !== diff.id;\n }));\n if (!verifyDiffState(editor, diff)) {\n scheduleSelectionChange = false;\n EDITOR_TO_PENDING_ACTION.delete(editor);\n EDITOR_TO_USER_MARKS.delete(editor);\n flushing = 'action';\n // Ensure we don't restore the pending user (dom) selection\n // since the document and dom state do not match.\n EDITOR_TO_PENDING_SELECTION.delete(editor);\n scheduleOnDOMSelectionChange.cancel();\n onDOMSelectionChange.cancel();\n selectionRef === null || selectionRef === void 0 || selectionRef.unref();\n }\n }\n var selection = selectionRef === null || selectionRef === void 0 ? void 0 : selectionRef.unref();\n if (selection && !EDITOR_TO_PENDING_SELECTION.get(editor) && (!editor.selection || !Range.equals(selection, editor.selection))) {\n Transforms.select(editor, selection);\n }\n if (hasPendingAction()) {\n performAction();\n return;\n }\n // COMPAT: The selectionChange event is fired after the action is performed,\n // so we have to manually schedule it to ensure we don't 'throw away' the selection\n // while rendering if we have pending changes.\n if (scheduleSelectionChange) {\n scheduleOnDOMSelectionChange();\n }\n scheduleOnDOMSelectionChange.flush();\n onDOMSelectionChange.flush();\n applyPendingSelection();\n var userMarks = EDITOR_TO_USER_MARKS.get(editor);\n EDITOR_TO_USER_MARKS.delete(editor);\n if (userMarks !== undefined) {\n editor.marks = userMarks;\n editor.onChange();\n }\n };\n var handleCompositionEnd = _event => {\n if (compositionEndTimeoutId) {\n clearTimeout(compositionEndTimeoutId);\n }\n compositionEndTimeoutId = setTimeout(() => {\n IS_COMPOSING.set(editor, false);\n flush();\n }, RESOLVE_DELAY);\n };\n var handleCompositionStart = _event => {\n IS_COMPOSING.set(editor, true);\n if (compositionEndTimeoutId) {\n clearTimeout(compositionEndTimeoutId);\n compositionEndTimeoutId = null;\n }\n };\n var updatePlaceholderVisibility = function updatePlaceholderVisibility() {\n var forceHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var placeholderElement = EDITOR_TO_PLACEHOLDER_ELEMENT.get(editor);\n if (!placeholderElement) {\n return;\n }\n if (hasPendingDiffs() || forceHide) {\n placeholderElement.style.display = 'none';\n return;\n }\n placeholderElement.style.removeProperty('display');\n };\n var storeDiff = (path, diff) => {\n var _EDITOR_TO_PENDING_DI3;\n var pendingDiffs = (_EDITOR_TO_PENDING_DI3 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI3 !== void 0 ? _EDITOR_TO_PENDING_DI3 : [];\n EDITOR_TO_PENDING_DIFFS.set(editor, pendingDiffs);\n var target = Node.leaf(editor, path);\n var idx = pendingDiffs.findIndex(change => Path.equals(change.path, path));\n if (idx < 0) {\n var normalized = normalizeStringDiff(target.text, diff);\n if (normalized) {\n pendingDiffs.push({\n path,\n diff,\n id: idCounter++\n });\n }\n updatePlaceholderVisibility();\n return;\n }\n var merged = mergeStringDiffs(target.text, pendingDiffs[idx].diff, diff);\n if (!merged) {\n pendingDiffs.splice(idx, 1);\n updatePlaceholderVisibility();\n return;\n }\n pendingDiffs[idx] = _objectSpread$5(_objectSpread$5({}, pendingDiffs[idx]), {}, {\n diff: merged\n });\n };\n var scheduleAction = function scheduleAction(run) {\n var {\n at\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n insertPositionHint = false;\n EDITOR_TO_PENDING_SELECTION.delete(editor);\n scheduleOnDOMSelectionChange.cancel();\n onDOMSelectionChange.cancel();\n if (hasPendingAction()) {\n flush();\n }\n EDITOR_TO_PENDING_ACTION.set(editor, {\n at,\n run\n });\n // COMPAT: When deleting before a non-contenteditable element chrome only fires a beforeinput,\n // (no input) and doesn't perform any dom mutations. Without a flush timeout we would never flush\n // in this case and thus never actually perform the action.\n actionTimeoutId = setTimeout(flush);\n };\n var handleDOMBeforeInput = event => {\n var _targetRange2;\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId);\n flushTimeoutId = null;\n }\n if (IS_NODE_MAP_DIRTY.get(editor)) {\n return;\n }\n var {\n inputType: type\n } = event;\n var targetRange = null;\n var data = event.dataTransfer || event.data || undefined;\n if (insertPositionHint !== false && type !== 'insertText' && type !== 'insertCompositionText') {\n insertPositionHint = false;\n }\n var [nativeTargetRange] = event.getTargetRanges();\n if (nativeTargetRange) {\n targetRange = ReactEditor.toSlateRange(editor, nativeTargetRange, {\n exactMatch: false,\n suppressThrow: true\n });\n }\n // COMPAT: SelectionChange event is fired after the action is performed, so we\n // have to manually get the selection here to ensure it's up-to-date.\n var window = ReactEditor.getWindow(editor);\n var domSelection = window.getSelection();\n if (!targetRange && domSelection) {\n nativeTargetRange = domSelection;\n targetRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true\n });\n }\n targetRange = (_targetRange2 = targetRange) !== null && _targetRange2 !== void 0 ? _targetRange2 : editor.selection;\n if (!targetRange) {\n return;\n }\n // By default, the input manager tries to store text diffs so that we can\n // defer flushing them at a later point in time. We don't want to flush\n // for every input event as this can be expensive. However, there are some\n // scenarios where we cannot safely store the text diff and must instead\n // schedule an action to let Slate normalize the editor state.\n var canStoreDiff = true;\n if (type.startsWith('delete')) {\n if (Range.isExpanded(targetRange)) {\n var [_start, _end] = Range.edges(targetRange);\n var _leaf = Node.leaf(editor, _start.path);\n if (_leaf.text.length === _start.offset && _end.offset === 0) {\n var next = Editor.next(editor, {\n at: _start.path,\n match: Text$1.isText\n });\n if (next && Path.equals(next[1], _end.path)) {\n targetRange = {\n anchor: _end,\n focus: _end\n };\n }\n }\n }\n var direction = type.endsWith('Backward') ? 'backward' : 'forward';\n var [start, end] = Range.edges(targetRange);\n var [leaf, path] = Editor.leaf(editor, start.path);\n var diff = {\n text: '',\n start: start.offset,\n end: end.offset\n };\n var pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor);\n var relevantPendingDiffs = pendingDiffs === null || pendingDiffs === void 0 ? void 0 : pendingDiffs.find(change => Path.equals(change.path, path));\n var diffs = relevantPendingDiffs ? [relevantPendingDiffs.diff, diff] : [diff];\n var text = applyStringDiff(leaf.text, ...diffs);\n if (text.length === 0) {\n // Text leaf will be removed, so we need to schedule an\n // action to remove it so that Slate can normalize instead\n // of storing as a diff\n canStoreDiff = false;\n }\n if (Range.isExpanded(targetRange)) {\n if (canStoreDiff && Path.equals(targetRange.anchor.path, targetRange.focus.path)) {\n var point = {\n path: targetRange.anchor.path,\n offset: start.offset\n };\n var range = Editor.range(editor, point, point);\n handleUserSelect(range);\n return storeDiff(targetRange.anchor.path, {\n text: '',\n end: end.offset,\n start: start.offset\n });\n }\n return scheduleAction(() => Editor.deleteFragment(editor, {\n direction\n }), {\n at: targetRange\n });\n }\n }\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag':\n {\n return scheduleAction(() => Editor.deleteFragment(editor), {\n at: targetRange\n });\n }\n case 'deleteContent':\n case 'deleteContentForward':\n {\n var {\n anchor\n } = targetRange;\n if (canStoreDiff && Range.isCollapsed(targetRange)) {\n var targetNode = Node.leaf(editor, anchor.path);\n if (anchor.offset < targetNode.text.length) {\n return storeDiff(anchor.path, {\n text: '',\n start: anchor.offset,\n end: anchor.offset + 1\n });\n }\n }\n return scheduleAction(() => Editor.deleteForward(editor), {\n at: targetRange\n });\n }\n case 'deleteContentBackward':\n {\n var _nativeTargetRange;\n var {\n anchor: _anchor\n } = targetRange;\n // If we have a mismatch between the native and slate selection being collapsed\n // we are most likely deleting a zero-width placeholder and thus should perform it\n // as an action to ensure correct behavior (mostly happens with mark placeholders)\n var nativeCollapsed = isDOMSelection(nativeTargetRange) ? nativeTargetRange.isCollapsed : !!((_nativeTargetRange = nativeTargetRange) !== null && _nativeTargetRange !== void 0 && _nativeTargetRange.collapsed);\n if (canStoreDiff && nativeCollapsed && Range.isCollapsed(targetRange) && _anchor.offset > 0) {\n return storeDiff(_anchor.path, {\n text: '',\n start: _anchor.offset - 1,\n end: _anchor.offset\n });\n }\n return scheduleAction(() => Editor.deleteBackward(editor), {\n at: targetRange\n });\n }\n case 'deleteEntireSoftLine':\n {\n return scheduleAction(() => {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n }, {\n at: targetRange\n });\n }\n case 'deleteHardLineBackward':\n {\n return scheduleAction(() => Editor.deleteBackward(editor, {\n unit: 'block'\n }), {\n at: targetRange\n });\n }\n case 'deleteSoftLineBackward':\n {\n return scheduleAction(() => Editor.deleteBackward(editor, {\n unit: 'line'\n }), {\n at: targetRange\n });\n }\n case 'deleteHardLineForward':\n {\n return scheduleAction(() => Editor.deleteForward(editor, {\n unit: 'block'\n }), {\n at: targetRange\n });\n }\n case 'deleteSoftLineForward':\n {\n return scheduleAction(() => Editor.deleteForward(editor, {\n unit: 'line'\n }), {\n at: targetRange\n });\n }\n case 'deleteWordBackward':\n {\n return scheduleAction(() => Editor.deleteBackward(editor, {\n unit: 'word'\n }), {\n at: targetRange\n });\n }\n case 'deleteWordForward':\n {\n return scheduleAction(() => Editor.deleteForward(editor, {\n unit: 'word'\n }), {\n at: targetRange\n });\n }\n case 'insertLineBreak':\n {\n return scheduleAction(() => Editor.insertSoftBreak(editor), {\n at: targetRange\n });\n }\n case 'insertParagraph':\n {\n return scheduleAction(() => Editor.insertBreak(editor), {\n at: targetRange\n });\n }\n case 'insertCompositionText':\n case 'deleteCompositionText':\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n if (isDataTransfer(data)) {\n return scheduleAction(() => ReactEditor.insertData(editor, data), {\n at: targetRange\n });\n }\n var _text = data !== null && data !== void 0 ? data : '';\n // COMPAT: If we are writing inside a placeholder, the ime inserts the text inside\n // the placeholder itself and thus includes the zero-width space inside edit events.\n if (EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)) {\n _text = _text.replace('\\uFEFF', '');\n }\n // Pastes from the Android clipboard will generate `insertText` events.\n // If the copied text contains any newlines, Android will append an\n // extra newline to the end of the copied text.\n if (type === 'insertText' && /.*\\n.*\\n$/.test(_text)) {\n _text = _text.slice(0, -1);\n }\n // If the text includes a newline, split it at newlines and paste each component\n // string, with soft breaks in between each.\n if (_text.includes('\\n')) {\n return scheduleAction(() => {\n var parts = _text.split('\\n');\n parts.forEach((line, i) => {\n if (line) {\n Editor.insertText(editor, line);\n }\n if (i !== parts.length - 1) {\n Editor.insertSoftBreak(editor);\n }\n });\n }, {\n at: targetRange\n });\n }\n if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {\n var [_start2, _end2] = Range.edges(targetRange);\n var _diff = {\n start: _start2.offset,\n end: _end2.offset,\n text: _text\n };\n // COMPAT: Swiftkey has a weird bug where the target range of the 2nd word\n // inserted after a mark placeholder is inserted with an anchor offset off by 1.\n // So writing 'some text' will result in 'some ttext'. Luckily all 'normal' insert\n // text events are fired with the correct target ranges, only the final 'insertComposition'\n // isn't, so we can adjust the target range start offset if we are confident this is the\n // swiftkey insert causing the issue.\n if (_text && insertPositionHint && type === 'insertCompositionText') {\n var hintPosition = insertPositionHint.start + insertPositionHint.text.search(/\\S|$/);\n var diffPosition = _diff.start + _diff.text.search(/\\S|$/);\n if (diffPosition === hintPosition + 1 && _diff.end === insertPositionHint.start + insertPositionHint.text.length) {\n _diff.start -= 1;\n insertPositionHint = null;\n scheduleFlush();\n } else {\n insertPositionHint = false;\n }\n } else if (type === 'insertText') {\n if (insertPositionHint === null) {\n insertPositionHint = _diff;\n } else if (insertPositionHint && Range.isCollapsed(targetRange) && insertPositionHint.end + insertPositionHint.text.length === _start2.offset) {\n insertPositionHint = _objectSpread$5(_objectSpread$5({}, insertPositionHint), {}, {\n text: insertPositionHint.text + _text\n });\n } else {\n insertPositionHint = false;\n }\n } else {\n insertPositionHint = false;\n }\n if (canStoreDiff) {\n storeDiff(_start2.path, _diff);\n return;\n }\n }\n return scheduleAction(() => Editor.insertText(editor, _text), {\n at: targetRange\n });\n }\n }\n };\n var hasPendingAction = () => {\n return !!EDITOR_TO_PENDING_ACTION.get(editor);\n };\n var hasPendingDiffs = () => {\n var _EDITOR_TO_PENDING_DI4;\n return !!((_EDITOR_TO_PENDING_DI4 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI4 !== void 0 && _EDITOR_TO_PENDING_DI4.length);\n };\n var hasPendingChanges = () => {\n return hasPendingAction() || hasPendingDiffs();\n };\n var isFlushing = () => {\n return flushing;\n };\n var handleUserSelect = range => {\n EDITOR_TO_PENDING_SELECTION.set(editor, range);\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId);\n flushTimeoutId = null;\n }\n var {\n selection\n } = editor;\n if (!range) {\n return;\n }\n var pathChanged = !selection || !Path.equals(selection.anchor.path, range.anchor.path);\n var parentPathChanged = !selection || !Path.equals(selection.anchor.path.slice(0, -1), range.anchor.path.slice(0, -1));\n if (pathChanged && insertPositionHint || parentPathChanged) {\n insertPositionHint = false;\n }\n if (pathChanged || hasPendingDiffs()) {\n flushTimeoutId = setTimeout(flush, FLUSH_DELAY);\n }\n };\n var handleInput = () => {\n if (hasPendingAction() || !hasPendingDiffs()) {\n flush();\n }\n };\n var handleKeyDown = _ => {\n // COMPAT: Swiftkey closes the keyboard when typing inside a empty node\n // directly next to a non-contenteditable element (= the placeholder).\n // The only event fired soon enough for us to allow hiding the placeholder\n // without swiftkey picking it up is the keydown event, so we have to hide it\n // here. See https://github.com/ianstormtaylor/slate/pull/4988#issuecomment-1201050535\n if (!hasPendingDiffs()) {\n updatePlaceholderVisibility(true);\n setTimeout(updatePlaceholderVisibility);\n }\n };\n var scheduleFlush = () => {\n if (!hasPendingAction()) {\n actionTimeoutId = setTimeout(flush);\n }\n };\n var handleDomMutations = mutations => {\n if (hasPendingDiffs() || hasPendingAction()) {\n return;\n }\n if (mutations.some(mutation => isTrackedMutation(editor, mutation, mutations))) {\n var _EDITOR_TO_FORCE_REND;\n // Cause a re-render to restore the dom state if we encounter tracked mutations without\n // a corresponding pending action.\n (_EDITOR_TO_FORCE_REND = EDITOR_TO_FORCE_RENDER.get(editor)) === null || _EDITOR_TO_FORCE_REND === void 0 || _EDITOR_TO_FORCE_REND();\n }\n };\n return {\n flush,\n scheduleFlush,\n hasPendingDiffs,\n hasPendingAction,\n hasPendingChanges,\n isFlushing,\n handleUserSelect,\n handleCompositionEnd,\n handleCompositionStart,\n handleDOMBeforeInput,\n handleKeyDown,\n handleDomMutations,\n handleInput\n };\n}\n\nfunction useIsMounted() {\n var isMountedRef = useRef(false);\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef.current;\n}\n\n/**\n * Prevent warning on SSR by falling back to useEffect when DOM isn't available\n */\nvar useIsomorphicLayoutEffect = CAN_USE_DOM ? useLayoutEffect : useEffect;\n\nfunction useMutationObserver(node, callback, options) {\n var [mutationObserver] = useState(() => new MutationObserver(callback));\n useIsomorphicLayoutEffect(() => {\n // Discard mutations caused during render phase. This works due to react calling\n // useLayoutEffect synchronously after the render phase before the next tick.\n mutationObserver.takeRecords();\n });\n useEffect(() => {\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined');\n }\n mutationObserver.observe(node.current, options);\n return () => mutationObserver.disconnect();\n }, [mutationObserver, node, options]);\n}\n\nvar _excluded$2 = [\"node\"];\nfunction ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar MUTATION_OBSERVER_CONFIG$1 = {\n subtree: true,\n childList: true,\n characterData: true\n};\nvar useAndroidInputManager = !IS_ANDROID ? () => null : _ref => {\n var {\n node\n } = _ref,\n options = _objectWithoutProperties(_ref, _excluded$2);\n if (!IS_ANDROID) {\n return null;\n }\n var editor = useSlateStatic();\n var isMounted = useIsMounted();\n var [inputManager] = useState(() => createAndroidInputManager(_objectSpread$4({\n editor\n }, options)));\n useMutationObserver(node, inputManager.handleDomMutations, MUTATION_OBSERVER_CONFIG$1);\n EDITOR_TO_SCHEDULE_FLUSH.set(editor, inputManager.scheduleFlush);\n if (isMounted) {\n inputManager.flush();\n }\n return inputManager;\n};\n\nfunction ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\n * Leaf content strings.\n */\nvar String$1 = props => {\n var {\n isLast,\n leaf,\n parent,\n text\n } = props;\n var editor = useSlateStatic();\n var path = ReactEditor.findPath(editor, text);\n var parentPath = Path.parent(path);\n var isMarkPlaceholder = Boolean(leaf[MARK_PLACEHOLDER_SYMBOL]);\n // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n if (editor.isVoid(parent)) {\n return /*#__PURE__*/React.createElement(ZeroWidthString, {\n length: Node.string(parent).length\n });\n }\n // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n if (leaf.text === '' && parent.children[parent.children.length - 1] === text && !editor.isInline(parent) && Editor.string(editor, parentPath) === '') {\n return /*#__PURE__*/React.createElement(ZeroWidthString, {\n isLineBreak: true,\n isMarkPlaceholder: isMarkPlaceholder\n });\n }\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n if (leaf.text === '') {\n return /*#__PURE__*/React.createElement(ZeroWidthString, {\n isMarkPlaceholder: isMarkPlaceholder\n });\n }\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n if (isLast && leaf.text.slice(-1) === '\\n') {\n return /*#__PURE__*/React.createElement(TextString, {\n isTrailing: true,\n text: leaf.text\n });\n }\n return /*#__PURE__*/React.createElement(TextString, {\n text: leaf.text\n });\n};\n/**\n * Leaf strings with text in them.\n */\nvar TextString = props => {\n var {\n text,\n isTrailing = false\n } = props;\n var ref = useRef(null);\n var getTextContent = () => {\n return \"\".concat(text !== null && text !== void 0 ? text : '').concat(isTrailing ? '\\n' : '');\n };\n var [initialText] = useState(getTextContent);\n // This is the actual text rendering boundary where we interface with the DOM\n // The text is not rendered as part of the virtual DOM, as since we handle basic character insertions natively,\n // updating the DOM is not a one way dataflow anymore. What we need here is not reconciliation and diffing\n // with previous version of the virtual DOM, but rather diffing with the actual DOM element, and replace the DOM content\n // exactly if and only if its current content does not match our current virtual DOM.\n // Otherwise the DOM TextNode would always be replaced by React as the user types, which interferes with native text features,\n // eg makes native spellcheck opt out from checking the text node.\n // useLayoutEffect: updating our span before browser paint\n useIsomorphicLayoutEffect(() => {\n // null coalescing text to make sure we're not outputing \"null\" as a string in the extreme case it is nullish at runtime\n var textWithTrailing = getTextContent();\n if (ref.current && ref.current.textContent !== textWithTrailing) {\n ref.current.textContent = textWithTrailing;\n }\n // intentionally not specifying dependencies, so that this effect runs on every render\n // as this effectively replaces \"specifying the text in the virtual DOM under the below\" on each render\n });\n // We intentionally render a memoized that only receives the initial text content when the component is mounted.\n // We defer to the layout effect above to update the `textContent` of the span element when needed.\n return /*#__PURE__*/React.createElement(MemoizedText$1, {\n ref: ref\n }, initialText);\n};\nvar MemoizedText$1 = /*#__PURE__*/memo( /*#__PURE__*/forwardRef((props, ref) => {\n return /*#__PURE__*/React.createElement(\"span\", {\n \"data-slate-string\": true,\n ref: ref\n }, props.children);\n}));\n/**\n * Leaf strings without text, render as zero-width strings.\n */\nvar ZeroWidthString = props => {\n var {\n length = 0,\n isLineBreak = false,\n isMarkPlaceholder = false\n } = props;\n var attributes = {\n 'data-slate-zero-width': isLineBreak ? 'n' : 'z',\n 'data-slate-length': length\n };\n if (isMarkPlaceholder) {\n attributes['data-slate-mark-placeholder'] = true;\n }\n return /*#__PURE__*/React.createElement(\"span\", _objectSpread$3({}, attributes), !(IS_ANDROID || IS_IOS) || !isLineBreak ? '\\uFEFF' : null, isLineBreak ? /*#__PURE__*/React.createElement(\"br\", null) : null);\n};\n\nfunction ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// Delay the placeholder on Android to prevent the keyboard from closing.\n// (https://github.com/ianstormtaylor/slate/pull/5368)\nvar PLACEHOLDER_DELAY = IS_ANDROID ? 300 : 0;\nfunction disconnectPlaceholderResizeObserver(placeholderResizeObserver, releaseObserver) {\n if (placeholderResizeObserver.current) {\n placeholderResizeObserver.current.disconnect();\n if (releaseObserver) {\n placeholderResizeObserver.current = null;\n }\n }\n}\nfunction clearTimeoutRef(timeoutRef) {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n}\n/**\n * Individual leaves in a text node with unique formatting.\n */\nvar Leaf = props => {\n var {\n leaf,\n isLast,\n text,\n parent,\n renderPlaceholder,\n renderLeaf = props => /*#__PURE__*/React.createElement(DefaultLeaf, _objectSpread$2({}, props))\n } = props;\n var editor = useSlateStatic();\n var placeholderResizeObserver = useRef(null);\n var placeholderRef = useRef(null);\n var [showPlaceholder, setShowPlaceholder] = useState(false);\n var showPlaceholderTimeoutRef = useRef(null);\n var callbackPlaceholderRef = useCallback(placeholderEl => {\n disconnectPlaceholderResizeObserver(placeholderResizeObserver, placeholderEl == null);\n if (placeholderEl == null) {\n var _leaf$onPlaceholderRe;\n EDITOR_TO_PLACEHOLDER_ELEMENT.delete(editor);\n (_leaf$onPlaceholderRe = leaf.onPlaceholderResize) === null || _leaf$onPlaceholderRe === void 0 || _leaf$onPlaceholderRe.call(leaf, null);\n } else {\n EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl);\n if (!placeholderResizeObserver.current) {\n // Create a new observer and observe the placeholder element.\n var ResizeObserver$1 = window.ResizeObserver || ResizeObserver;\n placeholderResizeObserver.current = new ResizeObserver$1(() => {\n var _leaf$onPlaceholderRe2;\n (_leaf$onPlaceholderRe2 = leaf.onPlaceholderResize) === null || _leaf$onPlaceholderRe2 === void 0 || _leaf$onPlaceholderRe2.call(leaf, placeholderEl);\n });\n }\n placeholderResizeObserver.current.observe(placeholderEl);\n placeholderRef.current = placeholderEl;\n }\n }, [placeholderRef, leaf, editor]);\n var children = /*#__PURE__*/React.createElement(String$1, {\n isLast: isLast,\n leaf: leaf,\n parent: parent,\n text: text\n });\n var leafIsPlaceholder = Boolean(leaf[PLACEHOLDER_SYMBOL]);\n useEffect(() => {\n if (leafIsPlaceholder) {\n if (!showPlaceholderTimeoutRef.current) {\n // Delay the placeholder, so it will not render in a selection\n showPlaceholderTimeoutRef.current = setTimeout(() => {\n setShowPlaceholder(true);\n showPlaceholderTimeoutRef.current = null;\n }, PLACEHOLDER_DELAY);\n }\n } else {\n clearTimeoutRef(showPlaceholderTimeoutRef);\n setShowPlaceholder(false);\n }\n return () => clearTimeoutRef(showPlaceholderTimeoutRef);\n }, [leafIsPlaceholder, setShowPlaceholder]);\n if (leafIsPlaceholder && showPlaceholder) {\n var placeholderProps = {\n children: leaf.placeholder,\n attributes: {\n 'data-slate-placeholder': true,\n style: {\n position: 'absolute',\n top: 0,\n pointerEvents: 'none',\n width: '100%',\n maxWidth: '100%',\n display: 'block',\n opacity: '0.333',\n userSelect: 'none',\n textDecoration: 'none',\n // Fixes https://github.com/udecode/plate/issues/2315\n WebkitUserModify: IS_WEBKIT ? 'inherit' : undefined\n },\n contentEditable: false,\n ref: callbackPlaceholderRef\n }\n };\n children = /*#__PURE__*/React.createElement(React.Fragment, null, renderPlaceholder(placeholderProps), children);\n }\n // COMPAT: Having the `data-` attributes on these leaf elements ensures that\n // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\n // contenteditable behaviors. (2019/05/08)\n var attributes = {\n 'data-slate-leaf': true\n };\n return renderLeaf({\n attributes,\n children,\n leaf,\n text\n });\n};\nvar MemoizedLeaf = /*#__PURE__*/React.memo(Leaf, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.renderPlaceholder === prev.renderPlaceholder && next.text === prev.text && Text$1.equals(next.leaf, prev.leaf) && next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL];\n});\nvar DefaultLeaf = props => {\n var {\n attributes,\n children\n } = props;\n return /*#__PURE__*/React.createElement(\"span\", _objectSpread$2({}, attributes), children);\n};\n\n/**\n * Text.\n */\nvar Text = props => {\n var {\n decorations,\n isLast,\n parent,\n renderPlaceholder,\n renderLeaf,\n text\n } = props;\n var editor = useSlateStatic();\n var ref = useRef(null);\n var leaves = Text$1.decorations(text, decorations);\n var key = ReactEditor.findKey(editor, text);\n var children = [];\n for (var i = 0; i < leaves.length; i++) {\n var leaf = leaves[i];\n children.push( /*#__PURE__*/React.createElement(MemoizedLeaf, {\n isLast: isLast && i === leaves.length - 1,\n key: \"\".concat(key.id, \"-\").concat(i),\n renderPlaceholder: renderPlaceholder,\n leaf: leaf,\n text: text,\n parent: parent,\n renderLeaf: renderLeaf\n }));\n }\n // Update element-related weak maps with the DOM element ref.\n var callbackRef = useCallback(span => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n if (span) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 || KEY_TO_ELEMENT.set(key, span);\n NODE_TO_ELEMENT.set(text, span);\n ELEMENT_TO_NODE.set(span, text);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 || KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(text);\n if (ref.current) {\n ELEMENT_TO_NODE.delete(ref.current);\n }\n }\n ref.current = span;\n }, [ref, editor, key, text]);\n return /*#__PURE__*/React.createElement(\"span\", {\n \"data-slate-node\": \"text\",\n ref: callbackRef\n }, children);\n};\nvar MemoizedText = /*#__PURE__*/React.memo(Text, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.renderPlaceholder === prev.renderPlaceholder && next.text === prev.text && isTextDecorationsEqual(next.decorations, prev.decorations);\n});\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\n * Element.\n */\nvar Element = props => {\n var {\n decorations,\n element,\n renderElement = p => /*#__PURE__*/React.createElement(DefaultElement, _objectSpread$1({}, p)),\n renderPlaceholder,\n renderLeaf,\n selection\n } = props;\n var editor = useSlateStatic();\n var readOnly = useReadOnly();\n var isInline = editor.isInline(element);\n var key = ReactEditor.findKey(editor, element);\n var ref = useCallback(ref => {\n // Update element-related weak maps with the DOM element ref.\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n if (ref) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 || KEY_TO_ELEMENT.set(key, ref);\n NODE_TO_ELEMENT.set(element, ref);\n ELEMENT_TO_NODE.set(ref, element);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 || KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(element);\n }\n }, [editor, key, element]);\n var children = useChildren({\n decorations,\n node: element,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection\n });\n // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n var attributes = {\n 'data-slate-node': 'element',\n ref\n };\n if (isInline) {\n attributes['data-slate-inline'] = true;\n }\n // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n if (!isInline && Editor.hasInlines(editor, element)) {\n var text = Node.string(element);\n var dir = getDirection(text);\n if (dir === 'rtl') {\n attributes.dir = dir;\n }\n }\n // If it's a void node, wrap the children in extra void-specific elements.\n if (Editor.isVoid(editor, element)) {\n attributes['data-slate-void'] = true;\n if (!readOnly && isInline) {\n attributes.contentEditable = false;\n }\n var Tag = isInline ? 'span' : 'div';\n var [[_text]] = Node.texts(element);\n children = /*#__PURE__*/React.createElement(Tag, {\n \"data-slate-spacer\": true,\n style: {\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute'\n }\n }, /*#__PURE__*/React.createElement(MemoizedText, {\n renderPlaceholder: renderPlaceholder,\n decorations: [],\n isLast: false,\n parent: element,\n text: _text\n }));\n NODE_TO_INDEX.set(_text, 0);\n NODE_TO_PARENT.set(_text, element);\n }\n return renderElement({\n attributes,\n children,\n element\n });\n};\nvar MemoizedElement = /*#__PURE__*/React.memo(Element, (prev, next) => {\n return prev.element === next.element && prev.renderElement === next.renderElement && prev.renderLeaf === next.renderLeaf && prev.renderPlaceholder === next.renderPlaceholder && isElementDecorationsEqual(prev.decorations, next.decorations) && (prev.selection === next.selection || !!prev.selection && !!next.selection && Range.equals(prev.selection, next.selection));\n});\n/**\n * The default element renderer.\n */\nvar DefaultElement = props => {\n var {\n attributes,\n children,\n element\n } = props;\n var editor = useSlateStatic();\n var Tag = editor.isInline(element) ? 'span' : 'div';\n return /*#__PURE__*/React.createElement(Tag, _objectSpread$1(_objectSpread$1({}, attributes), {}, {\n style: {\n position: 'relative'\n }\n }), children);\n};\n\n/**\n * A React context for sharing the `decorate` prop of the editable.\n */\nvar DecorateContext = /*#__PURE__*/createContext(() => []);\n/**\n * Get the current `decorate` prop of the editable.\n */\nvar useDecorate = () => {\n return useContext(DecorateContext);\n};\n\n/**\n * A React context for sharing the `selected` state of an element.\n */\nvar SelectedContext = /*#__PURE__*/createContext(false);\n/**\n * Get the current `selected` state of an element.\n */\nvar useSelected = () => {\n return useContext(SelectedContext);\n};\n\n/**\n * Children.\n */\nvar useChildren = props => {\n var {\n decorations,\n node,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection\n } = props;\n var decorate = useDecorate();\n var editor = useSlateStatic();\n IS_NODE_MAP_DIRTY.set(editor, false);\n var path = ReactEditor.findPath(editor, node);\n var children = [];\n var isLeafBlock = Element$1.isElement(node) && !editor.isInline(node) && Editor.hasInlines(editor, node);\n for (var i = 0; i < node.children.length; i++) {\n var p = path.concat(i);\n var n = node.children[i];\n var key = ReactEditor.findKey(editor, n);\n var range = Editor.range(editor, p);\n var sel = selection && Range.intersection(range, selection);\n var ds = decorate([n, p]);\n for (var dec of decorations) {\n var d = Range.intersection(dec, range);\n if (d) {\n ds.push(d);\n }\n }\n if (Element$1.isElement(n)) {\n children.push( /*#__PURE__*/React.createElement(SelectedContext.Provider, {\n key: \"provider-\".concat(key.id),\n value: !!sel\n }, /*#__PURE__*/React.createElement(MemoizedElement, {\n decorations: ds,\n element: n,\n key: key.id,\n renderElement: renderElement,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n selection: sel\n })));\n } else {\n children.push( /*#__PURE__*/React.createElement(MemoizedText, {\n decorations: ds,\n key: key.id,\n isLast: isLeafBlock && i === node.children.length - 1,\n parent: node,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n text: n\n }));\n }\n NODE_TO_INDEX.set(n, i);\n NODE_TO_PARENT.set(n, node);\n }\n return children;\n};\n\n/**\n * A React context for sharing the `readOnly` state of the editor.\n */\nvar ReadOnlyContext = /*#__PURE__*/createContext(false);\n/**\n * Get the current `readOnly` state of the editor.\n */\nvar useReadOnly = () => {\n return useContext(ReadOnlyContext);\n};\n\nvar SlateContext = /*#__PURE__*/createContext(null);\n/**\n * Get the current editor object from the React context.\n */\nvar useSlate = () => {\n var context = useContext(SlateContext);\n if (!context) {\n throw new Error(\"The `useSlate` hook must be used inside the component's context.\");\n }\n var {\n editor\n } = context;\n return editor;\n};\nvar useSlateWithV = () => {\n var context = useContext(SlateContext);\n if (!context) {\n throw new Error(\"The `useSlate` hook must be used inside the component's context.\");\n }\n return context;\n};\n\nfunction useTrackUserInput() {\n var editor = useSlateStatic();\n var receivedUserInput = useRef(false);\n var animationFrameIdRef = useRef(0);\n var onUserInput = useCallback(() => {\n if (receivedUserInput.current) {\n return;\n }\n receivedUserInput.current = true;\n var window = ReactEditor.getWindow(editor);\n window.cancelAnimationFrame(animationFrameIdRef.current);\n animationFrameIdRef.current = window.requestAnimationFrame(() => {\n receivedUserInput.current = false;\n });\n }, [editor]);\n useEffect(() => () => cancelAnimationFrame(animationFrameIdRef.current), []);\n return {\n receivedUserInput,\n onUserInput\n };\n}\n\nvar createRestoreDomManager = (editor, receivedUserInput) => {\n var bufferedMutations = [];\n var clear = () => {\n bufferedMutations = [];\n };\n var registerMutations = mutations => {\n if (!receivedUserInput.current) {\n return;\n }\n var trackedMutations = mutations.filter(mutation => isTrackedMutation(editor, mutation, mutations));\n bufferedMutations.push(...trackedMutations);\n };\n function restoreDOM() {\n if (bufferedMutations.length > 0) {\n bufferedMutations.reverse().forEach(mutation => {\n if (mutation.type === 'characterData') {\n // We don't want to restore the DOM for characterData mutations\n // because this interrupts the composition.\n return;\n }\n mutation.removedNodes.forEach(node => {\n mutation.target.insertBefore(node, mutation.nextSibling);\n });\n mutation.addedNodes.forEach(node => {\n mutation.target.removeChild(node);\n });\n });\n // Clear buffered mutations to ensure we don't undo them twice\n clear();\n }\n }\n return {\n registerMutations,\n restoreDOM,\n clear\n };\n};\n\nvar MUTATION_OBSERVER_CONFIG = {\n subtree: true,\n childList: true,\n characterData: true,\n characterDataOldValue: true\n};\n// We have to use a class component here since we rely on `getSnapshotBeforeUpdate` which has no FC equivalent\n// to run code synchronously immediately before react commits the component update to the DOM.\nclass RestoreDOMComponent extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"context\", null);\n _defineProperty(this, \"manager\", null);\n _defineProperty(this, \"mutationObserver\", null);\n }\n observe() {\n var _this$mutationObserve;\n var {\n node\n } = this.props;\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined');\n }\n (_this$mutationObserve = this.mutationObserver) === null || _this$mutationObserve === void 0 || _this$mutationObserve.observe(node.current, MUTATION_OBSERVER_CONFIG);\n }\n componentDidMount() {\n var {\n receivedUserInput\n } = this.props;\n var editor = this.context;\n this.manager = createRestoreDomManager(editor, receivedUserInput);\n this.mutationObserver = new MutationObserver(this.manager.registerMutations);\n this.observe();\n }\n getSnapshotBeforeUpdate() {\n var _this$mutationObserve2, _this$mutationObserve3, _this$manager2;\n var pendingMutations = (_this$mutationObserve2 = this.mutationObserver) === null || _this$mutationObserve2 === void 0 ? void 0 : _this$mutationObserve2.takeRecords();\n if (pendingMutations !== null && pendingMutations !== void 0 && pendingMutations.length) {\n var _this$manager;\n (_this$manager = this.manager) === null || _this$manager === void 0 || _this$manager.registerMutations(pendingMutations);\n }\n (_this$mutationObserve3 = this.mutationObserver) === null || _this$mutationObserve3 === void 0 || _this$mutationObserve3.disconnect();\n (_this$manager2 = this.manager) === null || _this$manager2 === void 0 || _this$manager2.restoreDOM();\n return null;\n }\n componentDidUpdate() {\n var _this$manager3;\n (_this$manager3 = this.manager) === null || _this$manager3 === void 0 || _this$manager3.clear();\n this.observe();\n }\n componentWillUnmount() {\n var _this$mutationObserve4;\n (_this$mutationObserve4 = this.mutationObserver) === null || _this$mutationObserve4 === void 0 || _this$mutationObserve4.disconnect();\n }\n render() {\n return this.props.children;\n }\n}\n_defineProperty(RestoreDOMComponent, \"contextType\", EditorContext);\nvar RestoreDOM = IS_ANDROID ? RestoreDOMComponent : _ref => {\n var {\n children\n } = _ref;\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n};\n\n/**\n * A React context for sharing the `composing` state of the editor.\n */\nvar ComposingContext = /*#__PURE__*/createContext(false);\n/**\n * Get the current `composing` state of the editor.\n */\nvar useComposing = () => {\n return useContext(ComposingContext);\n};\n\nvar _excluded$1 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"scrollSelectionIntoView\", \"style\", \"as\", \"disableDefaultStyles\"],\n _excluded2 = [\"text\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Children = props => /*#__PURE__*/React.createElement(React.Fragment, null, useChildren(props));\n/**\n * Editable.\n */\nvar Editable = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var defaultRenderPlaceholder = useCallback(props => /*#__PURE__*/React.createElement(DefaultPlaceholder, _objectSpread({}, props)), []);\n var {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = defaultRenderPlaceholder,\n scrollSelectionIntoView = defaultScrollSelectionIntoView,\n style: userStyle = {},\n as: Component = 'div',\n disableDefaultStyles = false\n } = props,\n attributes = _objectWithoutProperties(props, _excluded$1);\n var editor = useSlate();\n // Rerender editor when composition status changed\n var [isComposing, setIsComposing] = useState(false);\n var ref = useRef(null);\n var deferredOperations = useRef([]);\n var [placeholderHeight, setPlaceholderHeight] = useState();\n var processing = useRef(false);\n var {\n onUserInput,\n receivedUserInput\n } = useTrackUserInput();\n var [, forceRender] = useReducer(s => s + 1, 0);\n EDITOR_TO_FORCE_RENDER.set(editor, forceRender);\n // Update internal state on each render.\n IS_READ_ONLY.set(editor, readOnly);\n // Keep track of some state for the event handler logic.\n var state = useMemo(() => ({\n isDraggingInternally: false,\n isUpdatingSelection: false,\n latestElement: null,\n hasMarkPlaceholder: false\n }), []);\n // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n // needs to be manually focused.\n useEffect(() => {\n if (ref.current && autoFocus) {\n ref.current.focus();\n }\n }, [autoFocus]);\n /**\n * The AndroidInputManager object has a cyclical dependency on onDOMSelectionChange\n *\n * It is defined as a reference to simplify hook dependencies and clarify that\n * it needs to be initialized.\n */\n var androidInputManagerRef = useRef();\n // Listen on the native `selectionchange` event to be able to update any time\n // the selection changes. This is required because React's `onSelect` is leaky\n // and non-standard so it doesn't fire until after a selection has been\n // released. This causes issues in situations where another change happens\n // while a selection is being dragged.\n var onDOMSelectionChange = useMemo(() => throttle(() => {\n if (IS_NODE_MAP_DIRTY.get(editor)) {\n onDOMSelectionChange();\n return;\n }\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = el.getRootNode();\n if (!processing.current && IS_WEBKIT && root instanceof ShadowRoot) {\n processing.current = true;\n var active = getActiveElement();\n if (active) {\n document.execCommand('indent');\n } else {\n Transforms.deselect(editor);\n }\n processing.current = false;\n return;\n }\n var androidInputManager = androidInputManagerRef.current;\n if ((IS_ANDROID || !ReactEditor.isComposing(editor)) && (!state.isUpdatingSelection || androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.isFlushing()) && !state.isDraggingInternally) {\n var _root = ReactEditor.findDocumentOrShadowRoot(editor);\n var {\n activeElement\n } = _root;\n var _el = ReactEditor.toDOMNode(editor, editor);\n var domSelection = getSelection(_root);\n if (activeElement === _el) {\n state.latestElement = activeElement;\n IS_FOCUSED.set(editor, true);\n } else {\n IS_FOCUSED.delete(editor);\n }\n if (!domSelection) {\n return Transforms.deselect(editor);\n }\n var {\n anchorNode,\n focusNode\n } = domSelection;\n var anchorNodeSelectable = ReactEditor.hasEditableTarget(editor, anchorNode) || ReactEditor.isTargetInsideNonReadonlyVoid(editor, anchorNode);\n var focusNodeInEditor = ReactEditor.hasTarget(editor, focusNode);\n if (anchorNodeSelectable && focusNodeInEditor) {\n var range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true\n });\n if (range) {\n if (!ReactEditor.isComposing(editor) && !(androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.hasPendingChanges()) && !(androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.isFlushing())) {\n Transforms.select(editor, range);\n } else {\n androidInputManager === null || androidInputManager === void 0 || androidInputManager.handleUserSelect(range);\n }\n }\n }\n // Deselect the editor if the dom selection is not selectable in readonly mode\n if (readOnly && (!anchorNodeSelectable || !focusNodeInEditor)) {\n Transforms.deselect(editor);\n }\n }\n }, 100), [editor, readOnly, state]);\n var scheduleOnDOMSelectionChange = useMemo(() => debounce(onDOMSelectionChange, 0), [onDOMSelectionChange]);\n androidInputManagerRef.current = useAndroidInputManager({\n node: ref,\n onDOMSelectionChange,\n scheduleOnDOMSelectionChange\n });\n useIsomorphicLayoutEffect(() => {\n var _androidInputManagerR, _androidInputManagerR2;\n // Update element-related weak maps with the DOM element ref.\n var window;\n if (ref.current && (window = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window);\n EDITOR_TO_ELEMENT.set(editor, ref.current);\n NODE_TO_ELEMENT.set(editor, ref.current);\n ELEMENT_TO_NODE.set(ref.current, editor);\n } else {\n NODE_TO_ELEMENT.delete(editor);\n }\n // Make sure the DOM selection state is in sync.\n var {\n selection\n } = editor;\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = getSelection(root);\n if (!domSelection || !ReactEditor.isFocused(editor) || (_androidInputManagerR = androidInputManagerRef.current) !== null && _androidInputManagerR !== void 0 && _androidInputManagerR.hasPendingAction()) {\n return;\n }\n var setDomSelection = forceChange => {\n var hasDomSelection = domSelection.type !== 'None';\n // If the DOM selection is properly unset, we're done.\n if (!selection && !hasDomSelection) {\n return;\n }\n // Get anchorNode and focusNode\n var focusNode = domSelection.focusNode;\n var anchorNode;\n // COMPAT: In firefox the normal seletion way does not work\n // (https://github.com/ianstormtaylor/slate/pull/5486#issue-1820720223)\n if (IS_FIREFOX && domSelection.rangeCount > 1) {\n var firstRange = domSelection.getRangeAt(0);\n var lastRange = domSelection.getRangeAt(domSelection.rangeCount - 1);\n // Right to left\n if (firstRange.startContainer === focusNode) {\n anchorNode = lastRange.endContainer;\n } else {\n // Left to right\n anchorNode = firstRange.startContainer;\n }\n } else {\n anchorNode = domSelection.anchorNode;\n }\n // verify that the dom selection is in the editor\n var editorElement = EDITOR_TO_ELEMENT.get(editor);\n var hasDomSelectionInEditor = false;\n if (editorElement.contains(anchorNode) && editorElement.contains(focusNode)) {\n hasDomSelectionInEditor = true;\n }\n // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n if (hasDomSelection && hasDomSelectionInEditor && selection && !forceChange) {\n var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n // domSelection is not necessarily a valid Slate range\n // (e.g. when clicking on contentEditable:false element)\n suppressThrow: true\n });\n if (slateRange && Range.equals(slateRange, selection)) {\n var _anchorNode;\n if (!state.hasMarkPlaceholder) {\n return;\n }\n // Ensure selection is inside the mark placeholder\n if ((_anchorNode = anchorNode) !== null && _anchorNode !== void 0 && (_anchorNode = _anchorNode.parentElement) !== null && _anchorNode !== void 0 && _anchorNode.hasAttribute('data-slate-mark-placeholder')) {\n return;\n }\n }\n }\n // when is being controlled through external value\n // then its children might just change - DOM responds to it on its own\n // but Slate's value is not being updated through any operation\n // and thus it doesn't transform selection on its own\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true\n });\n return;\n }\n // Otherwise the DOM selection is out of sync, so update it.\n state.isUpdatingSelection = true;\n var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n if (newDomRange) {\n if (ReactEditor.isComposing(editor) && !IS_ANDROID) {\n domSelection.collapseToEnd();\n } else if (Range.isBackward(selection)) {\n domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n } else {\n domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n }\n scrollSelectionIntoView(editor, newDomRange);\n } else {\n domSelection.removeAllRanges();\n }\n return newDomRange;\n };\n // In firefox if there is more then 1 range and we call setDomSelection we remove the ability to select more cells in a table\n if (domSelection.rangeCount <= 1) {\n setDomSelection();\n }\n var ensureSelection = ((_androidInputManagerR2 = androidInputManagerRef.current) === null || _androidInputManagerR2 === void 0 ? void 0 : _androidInputManagerR2.isFlushing()) === 'action';\n if (!IS_ANDROID || !ensureSelection) {\n setTimeout(() => {\n state.isUpdatingSelection = false;\n });\n return;\n }\n var timeoutId = null;\n var animationFrameId = requestAnimationFrame(() => {\n if (ensureSelection) {\n var ensureDomSelection = forceChange => {\n try {\n var el = ReactEditor.toDOMNode(editor, editor);\n el.focus();\n setDomSelection(forceChange);\n } catch (e) {\n // Ignore, dom and state might be out of sync\n }\n };\n // Compat: Android IMEs try to force their selection by manually re-applying it even after we set it.\n // This essentially would make setting the slate selection during an update meaningless, so we force it\n // again here. We can't only do it in the setTimeout after the animation frame since that would cause a\n // visible flicker.\n ensureDomSelection();\n timeoutId = setTimeout(() => {\n // COMPAT: While setting the selection in an animation frame visually correctly sets the selection,\n // it doesn't update GBoards spellchecker state. We have to manually trigger a selection change after\n // the animation frame to ensure it displays the correct state.\n ensureDomSelection(true);\n state.isUpdatingSelection = false;\n });\n }\n });\n return () => {\n cancelAnimationFrame(animationFrameId);\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n // is required because React's `beforeinput` is fake and never really attaches\n // to the real event sadly. (2019/11/01)\n // https://github.com/facebook/react/issues/11211\n var onDOMBeforeInput = useCallback(event => {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = el.getRootNode();\n if (processing !== null && processing !== void 0 && processing.current && IS_WEBKIT && root instanceof ShadowRoot) {\n var ranges = event.getTargetRanges();\n var range = ranges[0];\n var newRange = new window.Range();\n newRange.setStart(range.startContainer, range.startOffset);\n newRange.setEnd(range.endContainer, range.endOffset);\n // Translate the DOM Range into a Slate Range\n var slateRange = ReactEditor.toSlateRange(editor, newRange, {\n exactMatch: false,\n suppressThrow: false\n });\n Transforms.select(editor, slateRange);\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n onUserInput();\n if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n var _EDITOR_TO_USER_SELEC;\n // COMPAT: BeforeInput events aren't cancelable on android, so we have to handle them differently using the android input manager.\n if (androidInputManagerRef.current) {\n return androidInputManagerRef.current.handleDOMBeforeInput(event);\n }\n // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n // triggering a `beforeinput` expecting the change to be applied to the immediately before\n // set selection.\n scheduleOnDOMSelectionChange.flush();\n onDOMSelectionChange.flush();\n var {\n selection\n } = editor;\n var {\n inputType: type\n } = event;\n var data = event.dataTransfer || event.data || undefined;\n var isCompositionChange = type === 'insertCompositionText' || type === 'deleteCompositionText';\n // COMPAT: use composition change events as a hint to where we should insert\n // composition text if we aren't composing to work around https://github.com/ianstormtaylor/slate/issues/5038\n if (isCompositionChange && ReactEditor.isComposing(editor)) {\n return;\n }\n var native = false;\n if (type === 'insertText' && selection && Range.isCollapsed(selection) &&\n // Only use native character insertion for single characters a-z or space for now.\n // Long-press events (hold a + press 4 = ä) to choose a special character otherwise\n // causes duplicate inserts.\n event.data && event.data.length === 1 && /[a-z ]/i.test(event.data) &&\n // Chrome has issues correctly editing the start of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n // When there is an inline element, e.g. a link, and you select\n // right after it (the start of the next node).\n selection.anchor.offset !== 0) {\n native = true;\n // Skip native if there are marks, as\n // `insertText` will insert a node, not just text.\n if (editor.marks) {\n native = false;\n }\n // If the NODE_MAP is dirty, we can't trust the selection anchor (eg ReactEditor.toDOMPoint)\n if (!IS_NODE_MAP_DIRTY.get(editor)) {\n var _node$parentElement, _window$getComputedSt;\n // Chrome also has issues correctly editing the end of anchor elements: https://bugs.chromium.org/p/chromium/issues/detail?id=1259100\n // Therefore we don't allow native events to insert text at the end of anchor nodes.\n var {\n anchor\n } = selection;\n var [node, offset] = ReactEditor.toDOMPoint(editor, anchor);\n var anchorNode = (_node$parentElement = node.parentElement) === null || _node$parentElement === void 0 ? void 0 : _node$parentElement.closest('a');\n var _window = ReactEditor.getWindow(editor);\n if (native && anchorNode && ReactEditor.hasDOMNode(editor, anchorNode)) {\n var _lastText$textContent;\n // Find the last text node inside the anchor.\n var lastText = _window === null || _window === void 0 ? void 0 : _window.document.createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT).lastChild();\n if (lastText === node && ((_lastText$textContent = lastText.textContent) === null || _lastText$textContent === void 0 ? void 0 : _lastText$textContent.length) === offset) {\n native = false;\n }\n }\n // Chrome has issues with the presence of tab characters inside elements with whiteSpace = 'pre'\n // causing abnormal insert behavior: https://bugs.chromium.org/p/chromium/issues/detail?id=1219139\n if (native && node.parentElement && (_window === null || _window === void 0 || (_window$getComputedSt = _window.getComputedStyle(node.parentElement)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.whiteSpace) === 'pre') {\n var block = Editor.above(editor, {\n at: anchor.path,\n match: n => Element$1.isElement(n) && Editor.isBlock(editor, n)\n });\n if (block && Node.string(block[0]).includes('\\t')) {\n native = false;\n }\n }\n }\n }\n // COMPAT: For the deleting forward/backward input types we don't want\n // to change the selection because it is the range that will be deleted,\n // and those commands determine that for themselves.\n // If the NODE_MAP is dirty, we can't trust the selection anchor (eg ReactEditor.toDOMPoint via ReactEditor.toSlateRange)\n if ((!type.startsWith('delete') || type.startsWith('deleteBy')) && !IS_NODE_MAP_DIRTY.get(editor)) {\n var [targetRange] = event.getTargetRanges();\n if (targetRange) {\n var _range = ReactEditor.toSlateRange(editor, targetRange, {\n exactMatch: false,\n suppressThrow: false\n });\n if (!selection || !Range.equals(selection, _range)) {\n native = false;\n var selectionRef = !isCompositionChange && editor.selection && Editor.rangeRef(editor, editor.selection);\n Transforms.select(editor, _range);\n if (selectionRef) {\n EDITOR_TO_USER_SELECTION.set(editor, selectionRef);\n }\n }\n }\n }\n // Composition change types occur while a user is composing text and can't be\n // cancelled. Let them through and wait for the composition to end.\n if (isCompositionChange) {\n return;\n }\n if (!native) {\n event.preventDefault();\n }\n // COMPAT: If the selection is expanded, even if the command seems like\n // a delete forward/backward command it should delete the selection.\n if (selection && Range.isExpanded(selection) && type.startsWith('delete')) {\n var direction = type.endsWith('Backward') ? 'backward' : 'forward';\n Editor.deleteFragment(editor, {\n direction\n });\n return;\n }\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag':\n {\n Editor.deleteFragment(editor);\n break;\n }\n case 'deleteContent':\n case 'deleteContentForward':\n {\n Editor.deleteForward(editor);\n break;\n }\n case 'deleteContentBackward':\n {\n Editor.deleteBackward(editor);\n break;\n }\n case 'deleteEntireSoftLine':\n {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n break;\n }\n case 'deleteHardLineBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'block'\n });\n break;\n }\n case 'deleteSoftLineBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n break;\n }\n case 'deleteHardLineForward':\n {\n Editor.deleteForward(editor, {\n unit: 'block'\n });\n break;\n }\n case 'deleteSoftLineForward':\n {\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n break;\n }\n case 'deleteWordBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'word'\n });\n break;\n }\n case 'deleteWordForward':\n {\n Editor.deleteForward(editor, {\n unit: 'word'\n });\n break;\n }\n case 'insertLineBreak':\n Editor.insertSoftBreak(editor);\n break;\n case 'insertParagraph':\n {\n Editor.insertBreak(editor);\n break;\n }\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n if (type === 'insertFromComposition') {\n // COMPAT: in Safari, `compositionend` is dispatched after the\n // `beforeinput` for \"insertFromComposition\". But if we wait for it\n // then we will abort because we're still composing and the selection\n // won't be updated properly.\n // https://www.w3.org/TR/input-events-2/\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false);\n IS_COMPOSING.set(editor, false);\n }\n }\n // use a weak comparison instead of 'instanceof' to allow\n // programmatic access of paste events coming from external windows\n // like cypress where cy.window does not work realibly\n if ((data === null || data === void 0 ? void 0 : data.constructor.name) === 'DataTransfer') {\n ReactEditor.insertData(editor, data);\n } else if (typeof data === 'string') {\n // Only insertText operations use the native functionality, for now.\n // Potentially expand to single character deletes, as well.\n if (native) {\n deferredOperations.current.push(() => Editor.insertText(editor, data));\n } else {\n Editor.insertText(editor, data);\n }\n }\n break;\n }\n }\n // Restore the actual user section if nothing manually set it.\n var toRestore = (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(editor)) === null || _EDITOR_TO_USER_SELEC === void 0 ? void 0 : _EDITOR_TO_USER_SELEC.unref();\n EDITOR_TO_USER_SELECTION.delete(editor);\n if (toRestore && (!editor.selection || !Range.equals(editor.selection, toRestore))) {\n Transforms.select(editor, toRestore);\n }\n }\n }, [editor, onDOMSelectionChange, onUserInput, propsOnDOMBeforeInput, readOnly, scheduleOnDOMSelectionChange]);\n var callbackRef = useCallback(node => {\n if (node == null) {\n onDOMSelectionChange.cancel();\n scheduleOnDOMSelectionChange.cancel();\n EDITOR_TO_ELEMENT.delete(editor);\n NODE_TO_ELEMENT.delete(editor);\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.removeEventListener('beforeinput', onDOMBeforeInput);\n }\n } else {\n // Attach a native DOM event handler for `beforeinput` events, because React's\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n // real `beforeinput` events sadly... (2019/11/04)\n // https://github.com/facebook/react/issues/11211\n if (HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n node.addEventListener('beforeinput', onDOMBeforeInput);\n }\n }\n ref.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n }, [onDOMSelectionChange, scheduleOnDOMSelectionChange, editor, onDOMBeforeInput, forwardedRef]);\n useIsomorphicLayoutEffect(() => {\n var window = ReactEditor.getWindow(editor);\n // Attach a native DOM event handler for `selectionchange`, because React's\n // built-in `onSelect` handler doesn't fire for all selection changes. It's\n // a leaky polyfill that only fires on keypresses or clicks. Instead, we\n // want to fire for any change to the selection inside the editor.\n // (2019/11/04) https://github.com/facebook/react/issues/5785\n window.document.addEventListener('selectionchange', scheduleOnDOMSelectionChange);\n // Listen for dragend and drop globally. In Firefox, if a drop handler\n // initiates an operation that causes the originally dragged element to\n // unmount, that element will not emit a dragend event. (2024/06/21)\n var stoppedDragging = () => {\n state.isDraggingInternally = false;\n };\n window.document.addEventListener('dragend', stoppedDragging);\n window.document.addEventListener('drop', stoppedDragging);\n return () => {\n window.document.removeEventListener('selectionchange', scheduleOnDOMSelectionChange);\n window.document.removeEventListener('dragend', stoppedDragging);\n window.document.removeEventListener('drop', stoppedDragging);\n };\n }, [scheduleOnDOMSelectionChange, state]);\n var decorations = decorate([editor, []]);\n var showPlaceholder = placeholder && editor.children.length === 1 && Array.from(Node.texts(editor)).length === 1 && Node.string(editor) === '' && !isComposing;\n var placeHolderResizeHandler = useCallback(placeholderEl => {\n if (placeholderEl && showPlaceholder) {\n var _placeholderEl$getBou;\n setPlaceholderHeight((_placeholderEl$getBou = placeholderEl.getBoundingClientRect()) === null || _placeholderEl$getBou === void 0 ? void 0 : _placeholderEl$getBou.height);\n } else {\n setPlaceholderHeight(undefined);\n }\n }, [showPlaceholder]);\n if (showPlaceholder) {\n var start = Editor.start(editor, []);\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n onPlaceholderResize: placeHolderResizeHandler,\n anchor: start,\n focus: start\n });\n }\n var {\n marks\n } = editor;\n state.hasMarkPlaceholder = false;\n if (editor.selection && Range.isCollapsed(editor.selection) && marks) {\n var {\n anchor\n } = editor.selection;\n var leaf = Node.leaf(editor, anchor.path);\n var rest = _objectWithoutProperties(leaf, _excluded2);\n // While marks isn't a 'complete' text, we can still use loose Text.equals\n // here which only compares marks anyway.\n if (!Text$1.equals(leaf, marks, {\n loose: true\n })) {\n state.hasMarkPlaceholder = true;\n var unset = Object.fromEntries(Object.keys(rest).map(mark => [mark, null]));\n decorations.push(_objectSpread(_objectSpread(_objectSpread({\n [MARK_PLACEHOLDER_SYMBOL]: true\n }, unset), marks), {}, {\n anchor,\n focus: anchor\n }));\n }\n }\n // Update EDITOR_TO_MARK_PLACEHOLDER_MARKS in setTimeout useEffect to ensure we don't set it\n // before we receive the composition end event.\n useEffect(() => {\n setTimeout(() => {\n var {\n selection\n } = editor;\n if (selection) {\n var {\n anchor: _anchor\n } = selection;\n var _text = Node.leaf(editor, _anchor.path);\n // While marks isn't a 'complete' text, we can still use loose Text.equals\n // here which only compares marks anyway.\n if (marks && !Text$1.equals(_text, marks, {\n loose: true\n })) {\n EDITOR_TO_PENDING_INSERTION_MARKS.set(editor, marks);\n return;\n }\n }\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor);\n });\n });\n return /*#__PURE__*/React.createElement(ReadOnlyContext.Provider, {\n value: readOnly\n }, /*#__PURE__*/React.createElement(ComposingContext.Provider, {\n value: isComposing\n }, /*#__PURE__*/React.createElement(DecorateContext.Provider, {\n value: decorate\n }, /*#__PURE__*/React.createElement(RestoreDOM, {\n node: ref,\n receivedUserInput: receivedUserInput\n }, /*#__PURE__*/React.createElement(Component, _objectSpread(_objectSpread({\n role: readOnly ? undefined : 'textbox',\n \"aria-multiline\": readOnly ? undefined : true\n }, attributes), {}, {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we'd\n // have to use hacks to make these replacement-based features work.\n // For SSR situations HAS_BEFORE_INPUT_SUPPORT is false and results in prop\n // mismatch warning app moves to browser. Pass-through consumer props when\n // not CAN_USE_DOM (SSR) and default to falsy value\n spellCheck: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.spellCheck : false,\n autoCorrect: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCorrect : 'false',\n autoCapitalize: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCapitalize : 'false',\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n // explicitly set this\n contentEditable: !readOnly,\n // in some cases, a decoration needs access to the range / selection to decorate a text node,\n // then you will select the whole text node when you select part the of text\n // this magic zIndex=\"-1\" will fix it\n zindex: -1,\n suppressContentEditableWarning: true,\n ref: callbackRef,\n style: _objectSpread(_objectSpread({}, disableDefaultStyles ? {} : _objectSpread({\n // Allow positioning relative to the editable element.\n position: 'relative',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word'\n }, placeholderHeight ? {\n minHeight: placeholderHeight\n } : {})), userStyle),\n onBeforeInput: useCallback(event => {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's leaky polyfill instead just for it. It\n // only works for the `insertText` input type.\n if (!HAS_BEFORE_INPUT_SUPPORT && !readOnly && !isEventHandled(event, attributes.onBeforeInput) && ReactEditor.hasSelectableTarget(editor, event.target)) {\n event.preventDefault();\n if (!ReactEditor.isComposing(editor)) {\n var _text2 = event.data;\n Editor.insertText(editor, _text2);\n }\n }\n }, [attributes.onBeforeInput, editor, readOnly]),\n onInput: useCallback(event => {\n if (isEventHandled(event, attributes.onInput)) {\n return;\n }\n if (androidInputManagerRef.current) {\n androidInputManagerRef.current.handleInput();\n return;\n }\n // Flush native operations, as native events will have propogated\n // and we can correctly compare DOM text values in components\n // to stop rendering, so that browser functions like autocorrect\n // and spellcheck work as expected.\n for (var op of deferredOperations.current) {\n op();\n }\n deferredOperations.current = [];\n // COMPAT: Since `beforeinput` doesn't fully `preventDefault`,\n // there's a chance that content might be placed in the browser's undo stack.\n // This means undo can be triggered even when the div is not focused,\n // and it only triggers the input event for the node. (2024/10/09)\n if (!ReactEditor.isFocused(editor)) {\n var native = event.nativeEvent;\n var maybeHistoryEditor = editor;\n if (native.inputType === 'historyUndo' && typeof maybeHistoryEditor.undo === 'function') {\n maybeHistoryEditor.undo();\n return;\n }\n if (native.inputType === 'historyRedo' && typeof maybeHistoryEditor.redo === 'function') {\n maybeHistoryEditor.redo();\n return;\n }\n }\n }, [attributes.onInput, editor]),\n onBlur: useCallback(event => {\n if (readOnly || state.isUpdatingSelection || !ReactEditor.hasSelectableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n return;\n }\n // COMPAT: If the current `activeElement` is still the previous\n // one, this is due to the window being blurred when the tab\n // itself becomes unfocused, so we want to abort early to allow to\n // editor to stay focused when the tab becomes focused again.\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n if (state.latestElement === root.activeElement) {\n return;\n }\n var {\n relatedTarget\n } = event;\n var el = ReactEditor.toDOMNode(editor, editor);\n // COMPAT: The event should be ignored if the focus is returning\n // to the editor from an embedded editable element (eg. an \n // element inside a void node).\n if (relatedTarget === el) {\n return;\n }\n // COMPAT: The event should be ignored if the focus is moving from\n // the editor to inside a void node's spacer element.\n if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute('data-slate-spacer')) {\n return;\n }\n // COMPAT: The event should be ignored if the focus is moving to a\n // non- editable section of an element that isn't a void node (eg.\n // a list item of the check list example).\n if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n var node = ReactEditor.toSlateNode(editor, relatedTarget);\n if (Element$1.isElement(node) && !editor.isVoid(node)) {\n return;\n }\n }\n // COMPAT: Safari doesn't always remove the selection even if the content-\n // editable element no longer has focus. Refer to:\n // https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n if (IS_WEBKIT) {\n var domSelection = getSelection(root);\n domSelection === null || domSelection === void 0 || domSelection.removeAllRanges();\n }\n IS_FOCUSED.delete(editor);\n }, [readOnly, state.isUpdatingSelection, state.latestElement, editor, attributes.onBlur]),\n onClick: useCallback(event => {\n if (ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n // At this time, the Slate document may be arbitrarily different,\n // because onClick handlers can change the document before we get here.\n // Therefore we must check that this path actually exists,\n // and that it still refers to the same node.\n if (!Editor.hasPath(editor, path) || Node.get(editor, path) !== node) {\n return;\n }\n if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n var blockPath = path;\n if (!(Element$1.isElement(node) && Editor.isBlock(editor, node))) {\n var _block$;\n var block = Editor.above(editor, {\n match: n => Element$1.isElement(n) && Editor.isBlock(editor, n),\n at: path\n });\n blockPath = (_block$ = block === null || block === void 0 ? void 0 : block[1]) !== null && _block$ !== void 0 ? _block$ : path.slice(0, 1);\n }\n var range = Editor.range(editor, blockPath);\n Transforms.select(editor, range);\n return;\n }\n if (readOnly) {\n return;\n }\n var _start = Editor.start(editor, path);\n var end = Editor.end(editor, path);\n var startVoid = Editor.void(editor, {\n at: _start\n });\n var endVoid = Editor.void(editor, {\n at: end\n });\n if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n var _range2 = Editor.range(editor, _start);\n Transforms.select(editor, _range2);\n }\n }\n }, [editor, attributes.onClick, readOnly]),\n onCompositionEnd: useCallback(event => {\n if (ReactEditor.hasSelectableTarget(editor, event.target)) {\n var _androidInputManagerR3;\n if (ReactEditor.isComposing(editor)) {\n Promise.resolve().then(() => {\n setIsComposing(false);\n IS_COMPOSING.set(editor, false);\n });\n }\n (_androidInputManagerR3 = androidInputManagerRef.current) === null || _androidInputManagerR3 === void 0 || _androidInputManagerR3.handleCompositionEnd(event);\n if (isEventHandled(event, attributes.onCompositionEnd) || IS_ANDROID) {\n return;\n }\n // COMPAT: In Chrome, `beforeinput` events for compositions\n // aren't correct and never fire the \"insertFromComposition\"\n // type that we need. So instead, insert whenever a composition\n // ends since it will already have been committed to the DOM.\n if (!IS_WEBKIT && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_WECHATBROWSER && !IS_UC_MOBILE && event.data) {\n var placeholderMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(editor);\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor);\n // Ensure we insert text with the marks the user was actually seeing\n if (placeholderMarks !== undefined) {\n EDITOR_TO_USER_MARKS.set(editor, editor.marks);\n editor.marks = placeholderMarks;\n }\n Editor.insertText(editor, event.data);\n var userMarks = EDITOR_TO_USER_MARKS.get(editor);\n EDITOR_TO_USER_MARKS.delete(editor);\n if (userMarks !== undefined) {\n editor.marks = userMarks;\n }\n }\n }\n }, [attributes.onCompositionEnd, editor]),\n onCompositionUpdate: useCallback(event => {\n if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n if (!ReactEditor.isComposing(editor)) {\n setIsComposing(true);\n IS_COMPOSING.set(editor, true);\n }\n }\n }, [attributes.onCompositionUpdate, editor]),\n onCompositionStart: useCallback(event => {\n if (ReactEditor.hasSelectableTarget(editor, event.target)) {\n var _androidInputManagerR4;\n (_androidInputManagerR4 = androidInputManagerRef.current) === null || _androidInputManagerR4 === void 0 || _androidInputManagerR4.handleCompositionStart(event);\n if (isEventHandled(event, attributes.onCompositionStart) || IS_ANDROID) {\n return;\n }\n setIsComposing(true);\n var {\n selection\n } = editor;\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n return;\n }\n }\n }, [attributes.onCompositionStart, editor]),\n onCopy: useCallback(event => {\n if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy) && !isDOMEventTargetInput(event)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, 'copy');\n }\n }, [attributes.onCopy, editor]),\n onCut: useCallback(event => {\n if (!readOnly && ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut) && !isDOMEventTargetInput(event)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, 'cut');\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n } else {\n var node = Node.parent(editor, selection.anchor.path);\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor);\n }\n }\n }\n }\n }, [readOnly, editor, attributes.onCut]),\n onDragOver: useCallback(event => {\n if (ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragOver)) {\n // Only when the target is void, call `preventDefault` to signal\n // that drops are allowed. Editable content is droppable by\n // default, and calling `preventDefault` hides the cursor.\n var node = ReactEditor.toSlateNode(editor, event.target);\n if (Element$1.isElement(node) && Editor.isVoid(editor, node)) {\n event.preventDefault();\n }\n }\n }, [attributes.onDragOver, editor]),\n onDragStart: useCallback(event => {\n if (!readOnly && ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n var voidMatch = Element$1.isElement(node) && Editor.isVoid(editor, node) || Editor.void(editor, {\n at: path,\n voids: true\n });\n // If starting a drag on a void node, make sure it is selected\n // so that it shows up in the selection's fragment.\n if (voidMatch) {\n var range = Editor.range(editor, path);\n Transforms.select(editor, range);\n }\n state.isDraggingInternally = true;\n ReactEditor.setFragmentData(editor, event.dataTransfer, 'drag');\n }\n }, [readOnly, editor, attributes.onDragStart, state]),\n onDrop: useCallback(event => {\n if (!readOnly && ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {\n event.preventDefault();\n // Keep a reference to the dragged range before updating selection\n var draggedRange = editor.selection;\n // Find the range where the drop happened\n var range = ReactEditor.findEventRange(editor, event);\n var data = event.dataTransfer;\n Transforms.select(editor, range);\n if (state.isDraggingInternally) {\n if (draggedRange && !Range.equals(draggedRange, range) && !Editor.void(editor, {\n at: range,\n voids: true\n })) {\n Transforms.delete(editor, {\n at: draggedRange\n });\n }\n }\n ReactEditor.insertData(editor, data);\n // When dragging from another source into the editor, it's possible\n // that the current editor does not have focus.\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor);\n }\n }\n }, [readOnly, editor, attributes.onDrop, state]),\n onDragEnd: useCallback(event => {\n if (!readOnly && state.isDraggingInternally && attributes.onDragEnd && ReactEditor.hasTarget(editor, event.target)) {\n attributes.onDragEnd(event);\n }\n }, [readOnly, state, attributes, editor]),\n onFocus: useCallback(event => {\n if (!readOnly && !state.isUpdatingSelection && ReactEditor.hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n state.latestElement = root.activeElement;\n // COMPAT: If the editor has nested editable elements, the focus\n // can go to them. In Firefox, this must be prevented because it\n // results in issues with keyboard navigation. (2017/03/30)\n if (IS_FIREFOX && event.target !== el) {\n el.focus();\n return;\n }\n IS_FOCUSED.set(editor, true);\n }\n }, [readOnly, state, editor, attributes.onFocus]),\n onKeyDown: useCallback(event => {\n if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target)) {\n var _androidInputManagerR5;\n (_androidInputManagerR5 = androidInputManagerRef.current) === null || _androidInputManagerR5 === void 0 || _androidInputManagerR5.handleKeyDown(event);\n var {\n nativeEvent\n } = event;\n // COMPAT: The composition end event isn't fired reliably in all browsers,\n // so we sometimes might end up stuck in a composition state even though we\n // aren't composing any more.\n if (ReactEditor.isComposing(editor) && nativeEvent.isComposing === false) {\n IS_COMPOSING.set(editor, false);\n setIsComposing(false);\n }\n if (isEventHandled(event, attributes.onKeyDown) || ReactEditor.isComposing(editor)) {\n return;\n }\n var {\n selection\n } = editor;\n var element = editor.children[selection !== null ? selection.focus.path[0] : 0];\n var isRTL = getDirection(Node.string(element)) === 'rtl';\n // COMPAT: Since we prevent the default behavior on\n // `beforeinput` events, the browser doesn't think there's ever\n // any history stack to undo or redo, so we have to manage these\n // hotkeys ourselves. (2019/11/06)\n if (Hotkeys.isRedo(nativeEvent)) {\n event.preventDefault();\n var maybeHistoryEditor = editor;\n if (typeof maybeHistoryEditor.redo === 'function') {\n maybeHistoryEditor.redo();\n }\n return;\n }\n if (Hotkeys.isUndo(nativeEvent)) {\n event.preventDefault();\n var _maybeHistoryEditor = editor;\n if (typeof _maybeHistoryEditor.undo === 'function') {\n _maybeHistoryEditor.undo();\n }\n return;\n }\n // COMPAT: Certain browsers don't handle the selection updates\n // properly. In Chrome, the selection isn't properly extended.\n // And in Firefox, the selection isn't properly collapsed.\n // (2017/10/17)\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n reverse: true\n });\n return;\n }\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line'\n });\n return;\n }\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus',\n reverse: true\n });\n return;\n }\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus'\n });\n return;\n }\n // COMPAT: If a void node is selected, or a zero-width text node\n // adjacent to an inline is selected, we need to handle these\n // hotkeys manually because browsers won't be able to skip over\n // the void node with the zero-width space not being an empty\n // string.\n if (Hotkeys.isMoveBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: !isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: isRTL ? 'end' : 'start'\n });\n }\n return;\n }\n if (Hotkeys.isMoveForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: isRTL ? 'start' : 'end'\n });\n }\n return;\n }\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: 'focus'\n });\n }\n Transforms.move(editor, {\n unit: 'word',\n reverse: !isRTL\n });\n return;\n }\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: 'focus'\n });\n }\n Transforms.move(editor, {\n unit: 'word',\n reverse: isRTL\n });\n return;\n }\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to guessing at the input intention for hotkeys.\n // COMPAT: In iOS, some of these hotkeys are handled in the\n if (!HAS_BEFORE_INPUT_SUPPORT) {\n // We don't have a core behavior for these, but they change the\n // DOM if we don't prevent them, so we have to.\n if (Hotkeys.isBold(nativeEvent) || Hotkeys.isItalic(nativeEvent) || Hotkeys.isTransposeCharacter(nativeEvent)) {\n event.preventDefault();\n return;\n }\n if (Hotkeys.isSoftBreak(nativeEvent)) {\n event.preventDefault();\n Editor.insertSoftBreak(editor);\n return;\n }\n if (Hotkeys.isSplitBlock(nativeEvent)) {\n event.preventDefault();\n Editor.insertBreak(editor);\n return;\n }\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor);\n }\n return;\n }\n if (Hotkeys.isDeleteForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor);\n }\n return;\n }\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n }\n return;\n }\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n }\n return;\n }\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: 'word'\n });\n }\n return;\n }\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor, {\n unit: 'word'\n });\n }\n return;\n }\n } else {\n if (IS_CHROME || IS_WEBKIT) {\n // COMPAT: Chrome and Safari support `beforeinput` event but do not fire\n // an event when deleting backwards in a selected void inline node\n if (selection && (Hotkeys.isDeleteBackward(nativeEvent) || Hotkeys.isDeleteForward(nativeEvent)) && Range.isCollapsed(selection)) {\n var currentNode = Node.parent(editor, selection.anchor.path);\n if (Element$1.isElement(currentNode) && Editor.isVoid(editor, currentNode) && (Editor.isInline(editor, currentNode) || Editor.isBlock(editor, currentNode))) {\n event.preventDefault();\n Editor.deleteBackward(editor, {\n unit: 'block'\n });\n return;\n }\n }\n }\n }\n }\n }, [readOnly, editor, attributes.onKeyDown]),\n onPaste: useCallback(event => {\n if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste)) {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's `onPaste` here instead.\n // COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events\n // when \"paste without formatting\" is used, so fallback. (2020/02/20)\n // COMPAT: Safari InputEvents generated by pasting won't include\n // application/x-slate-fragment items, so use the\n // ClipboardEvent here. (2023/03/15)\n if (!HAS_BEFORE_INPUT_SUPPORT || isPlainTextOnlyPaste(event.nativeEvent) || IS_WEBKIT) {\n event.preventDefault();\n ReactEditor.insertData(editor, event.clipboardData);\n }\n }\n }, [readOnly, editor, attributes.onPaste])\n }), /*#__PURE__*/React.createElement(Children, {\n decorations: decorations,\n node: editor,\n renderElement: renderElement,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n selection: editor.selection\n }))))));\n});\n/**\n * The default placeholder element\n */\nvar DefaultPlaceholder = _ref => {\n var {\n attributes,\n children\n } = _ref;\n return (\n /*#__PURE__*/\n // COMPAT: Artificially add a line-break to the end on the placeholder element\n // to prevent Android IMEs to pick up its content in autocorrect and to auto-capitalize the first letter\n React.createElement(\"span\", _objectSpread({}, attributes), children, IS_ANDROID && /*#__PURE__*/React.createElement(\"br\", null))\n );\n};\n/**\n * A default memoized decorate function.\n */\nvar defaultDecorate = () => [];\n/**\n * A default implement to scroll dom range into view.\n */\nvar defaultScrollSelectionIntoView = (editor, domRange) => {\n // This was affecting the selection of multiple blocks and dragging behavior,\n // so enabled only if the selection has been collapsed.\n if (domRange.getBoundingClientRect && (!editor.selection || editor.selection && Range.isCollapsed(editor.selection))) {\n var leafEl = domRange.startContainer.parentElement;\n leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange);\n scrollIntoView(leafEl, {\n scrollMode: 'if-needed'\n });\n // @ts-expect-error an unorthodox delete D:\n delete leafEl.getBoundingClientRect;\n }\n};\n/**\n * Check if an event is overrided by a handler.\n */\nvar isEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n var shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.isDefaultPrevented() || event.isPropagationStopped();\n};\n/**\n * Check if the event's target is an input element\n */\nvar isDOMEventTargetInput = event => {\n return isDOMNode(event.target) && (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement);\n};\n/**\n * Check if a DOM event is overrided by a handler.\n */\nvar isDOMEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n var shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.defaultPrevented;\n};\n\n/**\n * A React context for sharing the `focused` state of the editor.\n */\nvar FocusedContext = /*#__PURE__*/createContext(false);\n/**\n * Get the current `focused` state of the editor.\n */\nvar useFocused = () => {\n return useContext(FocusedContext);\n};\n\nfunction isError(error) {\n return error instanceof Error;\n}\n/**\n * A React context for sharing the editor selector context in a way to control rerenders\n */\nvar SlateSelectorContext = /*#__PURE__*/createContext({});\nvar refEquality = (a, b) => a === b;\n/**\n * use redux style selectors to prevent rerendering on every keystroke.\n * Bear in mind rerendering can only prevented if the returned value is a value type or for reference types (e.g. objects and arrays) add a custom equality function.\n *\n * Example:\n * ```\n * const isSelectionActive = useSlateSelector(editor => Boolean(editor.selection));\n * ```\n */\nfunction useSlateSelector(selector) {\n var equalityFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : refEquality;\n var [, forceRender] = useReducer(s => s + 1, 0);\n var context = useContext(SlateSelectorContext);\n if (!context) {\n throw new Error(\"The `useSlateSelector` hook must be used inside the component's context.\");\n }\n var {\n getSlate,\n addEventListener\n } = context;\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef(() => null);\n var latestSelectedState = useRef(null);\n var selectedState;\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(getSlate());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current && isError(err)) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\".concat(latestSubscriptionCallbackError.current.stack, \"\\n\\n\");\n }\n throw err;\n }\n useIsomorphicLayoutEffect(() => {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(() => {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(getSlate());\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n if (err instanceof Error) {\n latestSubscriptionCallbackError.current = err;\n } else {\n latestSubscriptionCallbackError.current = new Error(String(err));\n }\n }\n forceRender();\n }\n var unsubscribe = addEventListener(checkForUpdates);\n checkForUpdates();\n return () => unsubscribe();\n },\n // don't rerender on equalityFn change since we want to be able to define it inline\n [addEventListener, getSlate]);\n return selectedState;\n}\n/**\n * Create selector context with editor updating on every editor change\n */\nfunction useSelectorContext(editor) {\n var eventListeners = useRef([]).current;\n var slateRef = useRef({\n editor\n }).current;\n var onChange = useCallback(editor => {\n slateRef.editor = editor;\n eventListeners.forEach(listener => listener(editor));\n }, [eventListeners, slateRef]);\n var selectorContext = useMemo(() => {\n return {\n getSlate: () => slateRef.editor,\n addEventListener: callback => {\n eventListeners.push(callback);\n return () => {\n eventListeners.splice(eventListeners.indexOf(callback), 1);\n };\n }\n };\n }, [eventListeners, slateRef]);\n return {\n selectorContext,\n onChange\n };\n}\n\nvar REACT_MAJOR_VERSION = parseInt(React.version.split('.')[0], 10);\n\nvar _excluded = [\"editor\", \"children\", \"onChange\", \"onSelectionChange\", \"onValueChange\", \"initialValue\"];\n/**\n * A wrapper around the provider to handle `onChange` events, because the editor\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\n */\nvar Slate = props => {\n var {\n editor,\n children,\n onChange,\n onSelectionChange,\n onValueChange,\n initialValue\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var [context, setContext] = React.useState(() => {\n if (!Node.isNodeList(initialValue)) {\n throw new Error(\"[Slate] initialValue is invalid! Expected a list of elements but got: \".concat(Scrubber.stringify(initialValue)));\n }\n if (!Editor.isEditor(editor)) {\n throw new Error(\"[Slate] editor is invalid! You passed: \".concat(Scrubber.stringify(editor)));\n }\n editor.children = initialValue;\n Object.assign(editor, rest);\n return {\n v: 0,\n editor\n };\n });\n var {\n selectorContext,\n onChange: handleSelectorChange\n } = useSelectorContext(editor);\n var onContextChange = useCallback(options => {\n var _options$operation;\n if (onChange) {\n onChange(editor.children);\n }\n switch (options === null || options === void 0 || (_options$operation = options.operation) === null || _options$operation === void 0 ? void 0 : _options$operation.type) {\n case 'set_selection':\n onSelectionChange === null || onSelectionChange === void 0 || onSelectionChange(editor.selection);\n break;\n default:\n onValueChange === null || onValueChange === void 0 || onValueChange(editor.children);\n }\n setContext(prevContext => ({\n v: prevContext.v + 1,\n editor\n }));\n handleSelectorChange(editor);\n }, [editor, handleSelectorChange, onChange, onSelectionChange, onValueChange]);\n useEffect(() => {\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange);\n return () => {\n EDITOR_TO_ON_CHANGE.set(editor, () => {});\n };\n }, [editor, onContextChange]);\n var [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor));\n useEffect(() => {\n setIsFocused(ReactEditor.isFocused(editor));\n }, [editor]);\n useIsomorphicLayoutEffect(() => {\n var fn = () => setIsFocused(ReactEditor.isFocused(editor));\n if (REACT_MAJOR_VERSION >= 17) {\n // In React >= 17 onFocus and onBlur listen to the focusin and focusout events during the bubbling phase.\n // Therefore in order for 's handlers to run first, which is necessary for ReactEditor.isFocused(editor)\n // to return the correct value, we have to listen to the focusin and focusout events without useCapture here.\n document.addEventListener('focusin', fn);\n document.addEventListener('focusout', fn);\n return () => {\n document.removeEventListener('focusin', fn);\n document.removeEventListener('focusout', fn);\n };\n } else {\n document.addEventListener('focus', fn, true);\n document.addEventListener('blur', fn, true);\n return () => {\n document.removeEventListener('focus', fn, true);\n document.removeEventListener('blur', fn, true);\n };\n }\n }, []);\n return /*#__PURE__*/React.createElement(SlateSelectorContext.Provider, {\n value: selectorContext\n }, /*#__PURE__*/React.createElement(SlateContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(EditorContext.Provider, {\n value: context.editor\n }, /*#__PURE__*/React.createElement(FocusedContext.Provider, {\n value: isFocused\n }, children))));\n};\n\n/**\n * Get the current editor object from the React context.\n * @deprecated Use useSlateStatic instead.\n */\nvar useEditor = () => {\n var editor = useContext(EditorContext);\n if (!editor) {\n throw new Error(\"The `useEditor` hook must be used inside the component's context.\");\n }\n return editor;\n};\n\n/**\n * Get the current slate selection.\n * Only triggers a rerender when the selection actually changes\n */\nvar useSlateSelection = () => {\n return useSlateSelector(editor => editor.selection, isSelectionEqual);\n};\nvar isSelectionEqual = (a, b) => {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return Range.equals(a, b);\n};\n\n/**\n * `withReact` adds React and DOM specific behaviors to the editor.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\nvar withReact = function withReact(editor) {\n var clipboardFormatKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x-slate-fragment';\n var e = editor;\n e = withDOM(e, clipboardFormatKey);\n var {\n onChange\n } = e;\n e.onChange = options => {\n // COMPAT: React < 18 doesn't batch `setState` hook calls, which means\n // that the children and selection can get out of sync for one render\n // pass. So we have to use this unstable API to ensure it batches them.\n // (2019/12/03)\n // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n var maybeBatchUpdates = REACT_MAJOR_VERSION < 18 ? ReactDOM.unstable_batchedUpdates : callback => callback();\n maybeBatchUpdates(() => {\n onChange(options);\n });\n };\n return e;\n};\n\nexport { DefaultElement, DefaultLeaf, DefaultPlaceholder, Editable, ReactEditor, Slate, useComposing, useEditor, useFocused, useReadOnly, useSelected, useSlate, useSlateSelection, useSlateSelector, useSlateStatic, useSlateWithV, withReact };\n//# sourceMappingURL=index.es.js.map\n","import { isPlainObject } from 'is-plain-object';\nimport { createDraft, finishDraft, isDraft, produce } from 'immer';\n\n// eslint-disable-next-line no-redeclare\nvar PathRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Path.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar PointRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var point = Point.transform(current, op, {\n affinity\n });\n ref.current = point;\n if (point == null) {\n ref.unref();\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar RangeRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Range.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\n\nvar DIRTY_PATHS = new WeakMap();\nvar DIRTY_PATH_KEYS = new WeakMap();\nvar FLUSHING = new WeakMap();\nvar NORMALIZING = new WeakMap();\nvar PATH_REFS = new WeakMap();\nvar POINT_REFS = new WeakMap();\nvar RANGE_REFS = new WeakMap();\n\n// eslint-disable-next-line no-redeclare\nvar Path = {\n ancestors(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var paths = Path.levels(path, options);\n if (reverse) {\n paths = paths.slice(1);\n } else {\n paths = paths.slice(0, -1);\n }\n return paths;\n },\n common(path, another) {\n var common = [];\n for (var i = 0; i < path.length && i < another.length; i++) {\n var av = path[i];\n var bv = another[i];\n if (av !== bv) {\n break;\n }\n common.push(av);\n }\n return common;\n },\n compare(path, another) {\n var min = Math.min(path.length, another.length);\n for (var i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1;\n if (path[i] > another[i]) return 1;\n }\n return 0;\n },\n endsAfter(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av > bv;\n },\n endsAt(path, another) {\n var i = path.length;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n return Path.equals(as, bs);\n },\n endsBefore(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av < bv;\n },\n equals(path, another) {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n },\n hasPrevious(path) {\n return path[path.length - 1] > 0;\n },\n isAfter(path, another) {\n return Path.compare(path, another) === 1;\n },\n isAncestor(path, another) {\n return path.length < another.length && Path.compare(path, another) === 0;\n },\n isBefore(path, another) {\n return Path.compare(path, another) === -1;\n },\n isChild(path, another) {\n return path.length === another.length + 1 && Path.compare(path, another) === 0;\n },\n isCommon(path, another) {\n return path.length <= another.length && Path.compare(path, another) === 0;\n },\n isDescendant(path, another) {\n return path.length > another.length && Path.compare(path, another) === 0;\n },\n isParent(path, another) {\n return path.length + 1 === another.length && Path.compare(path, another) === 0;\n },\n isPath(value) {\n return Array.isArray(value) && (value.length === 0 || typeof value[0] === 'number');\n },\n isSibling(path, another) {\n if (path.length !== another.length) {\n return false;\n }\n var as = path.slice(0, -1);\n var bs = another.slice(0, -1);\n var al = path[path.length - 1];\n var bl = another[another.length - 1];\n return al !== bl && Path.equals(as, bs);\n },\n levels(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var list = [];\n for (var i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i));\n }\n if (reverse) {\n list.reverse();\n }\n return list;\n },\n next(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the next path of a root path [\".concat(path, \"], because it has no next index.\"));\n }\n var last = path[path.length - 1];\n return path.slice(0, -1).concat(last + 1);\n },\n operationCanTransformPath(operation) {\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n case 'move_node':\n return true;\n default:\n return false;\n }\n },\n parent(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the parent path of the root path [\".concat(path, \"].\"));\n }\n return path.slice(0, -1);\n },\n previous(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the previous path of a root path [\".concat(path, \"], because it has no previous index.\"));\n }\n var last = path[path.length - 1];\n if (last <= 0) {\n throw new Error(\"Cannot get the previous path of a first child path [\".concat(path, \"] because it would result in a negative index.\"));\n }\n return path.slice(0, -1).concat(last - 1);\n },\n relative(path, ancestor) {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\"Cannot get the relative path of [\".concat(path, \"] inside ancestor [\").concat(ancestor, \"], because it is not above or equal to the path.\"));\n }\n return path.slice(ancestor.length);\n },\n transform(path, operation) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!path) return null;\n // PERF: use destructing instead of immer\n var p = [...path];\n var {\n affinity = 'forward'\n } = options;\n // PERF: Exit early if the operation is guaranteed not to have an effect.\n if (path.length === 0) {\n return p;\n }\n switch (operation.type) {\n case 'insert_node':\n {\n var {\n path: op\n } = operation;\n if (Path.equals(op, p) || Path.endsBefore(op, p) || Path.isAncestor(op, p)) {\n p[op.length - 1] += 1;\n }\n break;\n }\n case 'remove_node':\n {\n var {\n path: _op\n } = operation;\n if (Path.equals(_op, p) || Path.isAncestor(_op, p)) {\n return null;\n } else if (Path.endsBefore(_op, p)) {\n p[_op.length - 1] -= 1;\n }\n break;\n }\n case 'merge_node':\n {\n var {\n path: _op2,\n position\n } = operation;\n if (Path.equals(_op2, p) || Path.endsBefore(_op2, p)) {\n p[_op2.length - 1] -= 1;\n } else if (Path.isAncestor(_op2, p)) {\n p[_op2.length - 1] -= 1;\n p[_op2.length] += position;\n }\n break;\n }\n case 'split_node':\n {\n var {\n path: _op3,\n position: _position\n } = operation;\n if (Path.equals(_op3, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1;\n } else if (affinity === 'backward') ; else {\n return null;\n }\n } else if (Path.endsBefore(_op3, p)) {\n p[_op3.length - 1] += 1;\n } else if (Path.isAncestor(_op3, p) && path[_op3.length] >= _position) {\n p[_op3.length - 1] += 1;\n p[_op3.length] -= _position;\n }\n break;\n }\n case 'move_node':\n {\n var {\n path: _op4,\n newPath: onp\n } = operation;\n // If the old and new path are the same, it's a no-op.\n if (Path.equals(_op4, onp)) {\n return p;\n }\n if (Path.isAncestor(_op4, p) || Path.equals(_op4, p)) {\n var copy = onp.slice();\n if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) {\n copy[_op4.length - 1] -= 1;\n }\n return copy.concat(p.slice(_op4.length));\n } else if (Path.isSibling(_op4, onp) && (Path.isAncestor(onp, p) || Path.equals(onp, p))) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n } else {\n p[_op4.length - 1] += 1;\n }\n } else if (Path.endsBefore(onp, p) || Path.equals(onp, p) || Path.isAncestor(onp, p)) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n }\n p[onp.length - 1] += 1;\n } else if (Path.endsBefore(_op4, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1;\n }\n p[_op4.length - 1] -= 1;\n }\n break;\n }\n }\n return p;\n }\n};\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}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\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}\n\nfunction ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar applyToDraft = (editor, selection, op) => {\n switch (op.type) {\n case 'insert_node':\n {\n var {\n path,\n node\n } = op;\n var parent = Node.parent(editor, path);\n var index = path[path.length - 1];\n if (index > parent.children.length) {\n throw new Error(\"Cannot apply an \\\"insert_node\\\" operation at path [\".concat(path, \"] because the destination is past the end of the node.\"));\n }\n parent.children.splice(index, 0, node);\n if (selection) {\n for (var [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op);\n }\n }\n break;\n }\n case 'insert_text':\n {\n var {\n path: _path,\n offset,\n text\n } = op;\n if (text.length === 0) break;\n var _node = Node.leaf(editor, _path);\n var before = _node.text.slice(0, offset);\n var after = _node.text.slice(offset);\n _node.text = before + text + after;\n if (selection) {\n for (var [_point, _key] of Range.points(selection)) {\n selection[_key] = Point.transform(_point, op);\n }\n }\n break;\n }\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n var _node2 = Node.get(editor, _path2);\n var prevPath = Path.previous(_path2);\n var prev = Node.get(editor, prevPath);\n var _parent = Node.parent(editor, _path2);\n var _index = _path2[_path2.length - 1];\n if (Text.isText(_node2) && Text.isText(prev)) {\n prev.text += _node2.text;\n } else if (!Text.isText(_node2) && !Text.isText(prev)) {\n prev.children.push(..._node2.children);\n } else {\n throw new Error(\"Cannot apply a \\\"merge_node\\\" operation at path [\".concat(_path2, \"] to nodes of different interfaces: \").concat(Scrubber.stringify(_node2), \" \").concat(Scrubber.stringify(prev)));\n }\n _parent.children.splice(_index, 1);\n if (selection) {\n for (var [_point2, _key2] of Range.points(selection)) {\n selection[_key2] = Point.transform(_point2, op);\n }\n }\n break;\n }\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n if (Path.isAncestor(_path3, newPath)) {\n throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n }\n var _node3 = Node.get(editor, _path3);\n var _parent2 = Node.parent(editor, _path3);\n var _index2 = _path3[_path3.length - 1];\n // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n _parent2.children.splice(_index2, 1);\n var truePath = Path.transform(_path3, op);\n var newParent = Node.get(editor, Path.parent(truePath));\n var newIndex = truePath[truePath.length - 1];\n newParent.children.splice(newIndex, 0, _node3);\n if (selection) {\n for (var [_point3, _key3] of Range.points(selection)) {\n selection[_key3] = Point.transform(_point3, op);\n }\n }\n break;\n }\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _index3 = _path4[_path4.length - 1];\n var _parent3 = Node.parent(editor, _path4);\n _parent3.children.splice(_index3, 1);\n // Transform all the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n if (selection) {\n for (var [_point4, _key4] of Range.points(selection)) {\n var result = Point.transform(_point4, op);\n if (selection != null && result != null) {\n selection[_key4] = result;\n } else {\n var _prev = void 0;\n var next = void 0;\n for (var [n, p] of Node.texts(editor)) {\n if (Path.compare(p, _path4) === -1) {\n _prev = [n, p];\n } else {\n next = [n, p];\n break;\n }\n }\n var preferNext = false;\n if (_prev && next) {\n if (Path.equals(next[1], _path4)) {\n preferNext = !Path.hasPrevious(next[1]);\n } else {\n preferNext = Path.common(_prev[1], _path4).length < Path.common(next[1], _path4).length;\n }\n }\n if (_prev && !preferNext) {\n _point4.path = _prev[1];\n _point4.offset = _prev[0].text.length;\n } else if (next) {\n _point4.path = next[1];\n _point4.offset = 0;\n } else {\n selection = null;\n }\n }\n }\n }\n break;\n }\n case 'remove_text':\n {\n var {\n path: _path5,\n offset: _offset,\n text: _text\n } = op;\n if (_text.length === 0) break;\n var _node4 = Node.leaf(editor, _path5);\n var _before = _node4.text.slice(0, _offset);\n var _after = _node4.text.slice(_offset + _text.length);\n _node4.text = _before + _after;\n if (selection) {\n for (var [_point5, _key5] of Range.points(selection)) {\n selection[_key5] = Point.transform(_point5, op);\n }\n }\n break;\n }\n case 'set_node':\n {\n var {\n path: _path6,\n properties,\n newProperties\n } = op;\n if (_path6.length === 0) {\n throw new Error(\"Cannot set properties on the root node!\");\n }\n var _node5 = Node.get(editor, _path6);\n for (var _key6 in newProperties) {\n if (_key6 === 'children' || _key6 === 'text') {\n throw new Error(\"Cannot set the \\\"\".concat(_key6, \"\\\" property of nodes!\"));\n }\n var value = newProperties[_key6];\n if (value == null) {\n delete _node5[_key6];\n } else {\n _node5[_key6] = value;\n }\n }\n // properties that were previously defined, but are now missing, must be deleted\n for (var _key7 in properties) {\n if (!newProperties.hasOwnProperty(_key7)) {\n delete _node5[_key7];\n }\n }\n break;\n }\n case 'set_selection':\n {\n var {\n newProperties: _newProperties\n } = op;\n if (_newProperties == null) {\n selection = _newProperties;\n } else {\n if (selection == null) {\n if (!Range.isRange(_newProperties)) {\n throw new Error(\"Cannot apply an incomplete \\\"set_selection\\\" operation properties \".concat(Scrubber.stringify(_newProperties), \" when there is no current selection.\"));\n }\n selection = _objectSpread$e({}, _newProperties);\n }\n for (var _key8 in _newProperties) {\n var _value = _newProperties[_key8];\n if (_value == null) {\n if (_key8 === 'anchor' || _key8 === 'focus') {\n throw new Error(\"Cannot remove the \\\"\".concat(_key8, \"\\\" selection property\"));\n }\n delete selection[_key8];\n } else {\n selection[_key8] = _value;\n }\n }\n }\n break;\n }\n case 'split_node':\n {\n var {\n path: _path7,\n position,\n properties: _properties\n } = op;\n if (_path7.length === 0) {\n throw new Error(\"Cannot apply a \\\"split_node\\\" operation at path [\".concat(_path7, \"] because the root node cannot be split.\"));\n }\n var _node6 = Node.get(editor, _path7);\n var _parent4 = Node.parent(editor, _path7);\n var _index4 = _path7[_path7.length - 1];\n var newNode;\n if (Text.isText(_node6)) {\n var _before2 = _node6.text.slice(0, position);\n var _after2 = _node6.text.slice(position);\n _node6.text = _before2;\n newNode = _objectSpread$e(_objectSpread$e({}, _properties), {}, {\n text: _after2\n });\n } else {\n var _before3 = _node6.children.slice(0, position);\n var _after3 = _node6.children.slice(position);\n _node6.children = _before3;\n newNode = _objectSpread$e(_objectSpread$e({}, _properties), {}, {\n children: _after3\n });\n }\n _parent4.children.splice(_index4 + 1, 0, newNode);\n if (selection) {\n for (var [_point6, _key9] of Range.points(selection)) {\n selection[_key9] = Point.transform(_point6, op);\n }\n }\n break;\n }\n }\n return selection;\n};\n// eslint-disable-next-line no-redeclare\nvar GeneralTransforms = {\n transform(editor, op) {\n editor.children = createDraft(editor.children);\n var selection = editor.selection && createDraft(editor.selection);\n try {\n selection = applyToDraft(editor, selection, op);\n } finally {\n editor.children = finishDraft(editor.children);\n if (selection) {\n editor.selection = isDraft(selection) ? finishDraft(selection) : selection;\n } else {\n editor.selection = null;\n }\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar NodeTransforms = {\n insertNodes(editor, nodes, options) {\n editor.insertNodes(nodes, options);\n },\n liftNodes(editor, options) {\n editor.liftNodes(options);\n },\n mergeNodes(editor, options) {\n editor.mergeNodes(options);\n },\n moveNodes(editor, options) {\n editor.moveNodes(options);\n },\n removeNodes(editor, options) {\n editor.removeNodes(options);\n },\n setNodes(editor, props, options) {\n editor.setNodes(props, options);\n },\n splitNodes(editor, options) {\n editor.splitNodes(options);\n },\n unsetNodes(editor, props, options) {\n editor.unsetNodes(props, options);\n },\n unwrapNodes(editor, options) {\n editor.unwrapNodes(options);\n },\n wrapNodes(editor, element, options) {\n editor.wrapNodes(element, options);\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar SelectionTransforms = {\n collapse(editor, options) {\n editor.collapse(options);\n },\n deselect(editor) {\n editor.deselect();\n },\n move(editor, options) {\n editor.move(options);\n },\n select(editor, target) {\n editor.select(target);\n },\n setPoint(editor, props, options) {\n editor.setPoint(props, options);\n },\n setSelection(editor, props) {\n editor.setSelection(props);\n }\n};\n\n/*\n Custom deep equal comparison for Slate nodes.\n\n We don't need general purpose deep equality;\n Slate only supports plain values, Arrays, and nested objects.\n Complex values nested inside Arrays are not supported.\n\n Slate objects are designed to be serialised, so\n missing keys are deliberately normalised to undefined.\n */\nvar isDeepEqual = (node, another) => {\n for (var key in node) {\n var a = node[key];\n var b = another[key];\n if (isPlainObject(a) && isPlainObject(b)) {\n if (!isDeepEqual(a, b)) return false;\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (var i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n } else if (a !== b) {\n return false;\n }\n }\n /*\n Deep object equality is only necessary in one direction; in the reverse direction\n we are only looking for keys that are missing.\n As above, undefined keys are normalised to missing.\n */\n for (var _key in another) {\n if (node[_key] === undefined && another[_key] !== undefined) {\n return false;\n }\n }\n return true;\n};\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nvar _excluded$4 = [\"anchor\", \"focus\"];\nfunction ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Range = {\n edges(range) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var {\n anchor,\n focus\n } = range;\n return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor];\n },\n end(range) {\n var [, end] = Range.edges(range);\n return end;\n },\n equals(range, another) {\n return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus);\n },\n surrounds(range, target) {\n var intersectionRange = Range.intersection(range, target);\n if (!intersectionRange) {\n return false;\n }\n return Range.equals(intersectionRange, target);\n },\n includes(range, target) {\n if (Range.isRange(target)) {\n if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) {\n return true;\n }\n var [rs, re] = Range.edges(range);\n var [ts, te] = Range.edges(target);\n return Point.isBefore(rs, ts) && Point.isAfter(re, te);\n }\n var [start, end] = Range.edges(range);\n var isAfterStart = false;\n var isBeforeEnd = false;\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0;\n isBeforeEnd = Point.compare(target, end) <= 0;\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0;\n isBeforeEnd = Path.compare(target, end.path) <= 0;\n }\n return isAfterStart && isBeforeEnd;\n },\n intersection(range, another) {\n var rest = _objectWithoutProperties(range, _excluded$4);\n var [s1, e1] = Range.edges(range);\n var [s2, e2] = Range.edges(another);\n var start = Point.isBefore(s1, s2) ? s2 : s1;\n var end = Point.isBefore(e1, e2) ? e1 : e2;\n if (Point.isBefore(end, start)) {\n return null;\n } else {\n return _objectSpread$d({\n anchor: start,\n focus: end\n }, rest);\n }\n },\n isBackward(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.isAfter(anchor, focus);\n },\n isCollapsed(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.equals(anchor, focus);\n },\n isExpanded(range) {\n return !Range.isCollapsed(range);\n },\n isForward(range) {\n return !Range.isBackward(range);\n },\n isRange(value) {\n return isPlainObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus);\n },\n *points(range) {\n yield [range.anchor, 'anchor'];\n yield [range.focus, 'focus'];\n },\n start(range) {\n var [start] = Range.edges(range);\n return start;\n },\n transform(range, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return produce(range, r => {\n if (r === null) {\n return null;\n }\n var {\n affinity = 'inward'\n } = options;\n var affinityAnchor;\n var affinityFocus;\n if (affinity === 'inward') {\n // If the range is collapsed, make sure to use the same affinity to\n // avoid the two points passing each other and expanding in the opposite\n // direction\n var isCollapsed = Range.isCollapsed(r);\n if (Range.isForward(r)) {\n affinityAnchor = 'forward';\n affinityFocus = isCollapsed ? affinityAnchor : 'backward';\n } else {\n affinityAnchor = 'backward';\n affinityFocus = isCollapsed ? affinityAnchor : 'forward';\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(r)) {\n affinityAnchor = 'backward';\n affinityFocus = 'forward';\n } else {\n affinityAnchor = 'forward';\n affinityFocus = 'backward';\n }\n } else {\n affinityAnchor = affinity;\n affinityFocus = affinity;\n }\n var anchor = Point.transform(r.anchor, op, {\n affinity: affinityAnchor\n });\n var focus = Point.transform(r.focus, op, {\n affinity: affinityFocus\n });\n if (!anchor || !focus) {\n return null;\n }\n r.anchor = anchor;\n r.focus = focus;\n });\n }\n};\n\n/**\n * Shared the function with isElementType utility\n */\nvar isElement = value => {\n return isPlainObject(value) && Node.isNodeList(value.children) && !Editor.isEditor(value);\n};\n// eslint-disable-next-line no-redeclare\nvar Element = {\n isAncestor(value) {\n return isPlainObject(value) && Node.isNodeList(value.children);\n },\n isElement,\n isElementList(value) {\n return Array.isArray(value) && value.every(val => Element.isElement(val));\n },\n isElementProps(props) {\n return props.children !== undefined;\n },\n isElementType: function isElementType(value, elementVal) {\n var elementKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'type';\n return isElement(value) && value[elementKey] === elementVal;\n },\n matches(element, props) {\n for (var key in props) {\n if (key === 'children') {\n continue;\n }\n if (element[key] !== props[key]) {\n return false;\n }\n }\n return true;\n }\n};\n\nvar _excluded$3 = [\"children\"],\n _excluded2$3 = [\"text\"];\nvar IS_NODE_LIST_CACHE = new WeakMap();\n// eslint-disable-next-line no-redeclare\nvar Node = {\n ancestor(root, path) {\n var node = Node.get(root, path);\n if (Text.isText(node)) {\n throw new Error(\"Cannot get the ancestor node at path [\".concat(path, \"] because it refers to a text node instead: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n ancestors(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n for (var p of Path.ancestors(path, options)) {\n var n = Node.ancestor(root, p);\n var entry = [n, p];\n yield entry;\n }\n }();\n },\n child(root, index) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get the child of a text node: \".concat(Scrubber.stringify(root)));\n }\n var c = root.children[index];\n if (c == null) {\n throw new Error(\"Cannot get child at index `\".concat(index, \"` in node: \").concat(Scrubber.stringify(root)));\n }\n return c;\n },\n children(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n var {\n reverse = false\n } = options;\n var ancestor = Node.ancestor(root, path);\n var {\n children\n } = ancestor;\n var index = reverse ? children.length - 1 : 0;\n while (reverse ? index >= 0 : index < children.length) {\n var child = Node.child(ancestor, index);\n var childPath = path.concat(index);\n yield [child, childPath];\n index = reverse ? index - 1 : index + 1;\n }\n }();\n },\n common(root, path, another) {\n var p = Path.common(path, another);\n var n = Node.get(root, p);\n return [n, p];\n },\n descendant(root, path) {\n var node = Node.get(root, path);\n if (Editor.isEditor(node)) {\n throw new Error(\"Cannot get the descendant node at path [\".concat(path, \"] because it refers to the root editor node instead: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n descendants(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path];\n }\n }\n }();\n },\n elements(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path];\n }\n }\n }();\n },\n extractProps(node) {\n if (Element.isAncestor(node)) {\n var properties = _objectWithoutProperties(node, _excluded$3);\n return properties;\n } else {\n var properties = _objectWithoutProperties(node, _excluded2$3);\n return properties;\n }\n },\n first(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n n = n.children[0];\n p.push(0);\n }\n }\n return [n, p];\n },\n fragment(root, range) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get a fragment starting from a root text node: \".concat(Scrubber.stringify(root)));\n }\n var newRoot = produce({\n children: root.children\n }, r => {\n var [start, end] = Range.edges(range);\n var nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: _ref => {\n var [, path] = _ref;\n return !Range.includes(range, path);\n }\n });\n for (var [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n var parent = Node.parent(r, path);\n var index = path[path.length - 1];\n parent.children.splice(index, 1);\n }\n if (Path.equals(path, end.path)) {\n var leaf = Node.leaf(r, path);\n leaf.text = leaf.text.slice(0, end.offset);\n }\n if (Path.equals(path, start.path)) {\n var _leaf = Node.leaf(r, path);\n _leaf.text = _leaf.text.slice(start.offset);\n }\n }\n if (Editor.isEditor(r)) {\n r.selection = null;\n }\n });\n return newRoot.children;\n },\n get(root, path) {\n var node = Node.getIf(root, path);\n if (node === undefined) {\n throw new Error(\"Cannot find a descendant at path [\".concat(path, \"] in node: \").concat(Scrubber.stringify(root)));\n }\n return node;\n },\n getIf(root, path) {\n var node = root;\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n if (Text.isText(node) || !node.children[p]) {\n return;\n }\n node = node.children[p];\n }\n return node;\n },\n has(root, path) {\n var node = root;\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n if (Text.isText(node) || !node.children[p]) {\n return false;\n }\n node = node.children[p];\n }\n return true;\n },\n isNode(value) {\n return Text.isText(value) || Element.isElement(value) || Editor.isEditor(value);\n },\n isNodeList(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n var cachedResult = IS_NODE_LIST_CACHE.get(value);\n if (cachedResult !== undefined) {\n return cachedResult;\n }\n var isNodeList = value.every(val => Node.isNode(val));\n IS_NODE_LIST_CACHE.set(value, isNodeList);\n return isNodeList;\n },\n last(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n var i = n.children.length - 1;\n n = n.children[i];\n p.push(i);\n }\n }\n return [n, p];\n },\n leaf(root, path) {\n var node = Node.get(root, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n levels(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n for (var p of Path.levels(path, options)) {\n var n = Node.get(root, p);\n yield [n, p];\n }\n }();\n },\n matches(node, props) {\n return Element.isElement(node) && Element.isElementProps(props) && Element.matches(node, props) || Text.isText(node) && Text.isTextProps(props) && Text.matches(node, props);\n },\n nodes(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n pass,\n reverse = false\n } = options;\n var {\n from = [],\n to\n } = options;\n var visited = new Set();\n var p = [];\n var n = root;\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break;\n }\n if (!visited.has(n)) {\n yield [n, p];\n }\n // If we're allowed to go downward and we haven't descended yet, do.\n if (!visited.has(n) && !Text.isText(n) && n.children.length !== 0 && (pass == null || pass([n, p]) === false)) {\n visited.add(n);\n var nextIndex = reverse ? n.children.length - 1 : 0;\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length];\n }\n p = p.concat(nextIndex);\n n = Node.get(root, p);\n continue;\n }\n // If we're at the root and we can't go down, we're done.\n if (p.length === 0) {\n break;\n }\n // If we're going forward...\n if (!reverse) {\n var newPath = Path.next(p);\n if (Node.has(root, newPath)) {\n p = newPath;\n n = Node.get(root, p);\n continue;\n }\n }\n // If we're going backward...\n if (reverse && p[p.length - 1] !== 0) {\n var _newPath = Path.previous(p);\n p = _newPath;\n n = Node.get(root, p);\n continue;\n }\n // Otherwise we're going upward...\n p = Path.parent(p);\n n = Node.get(root, p);\n visited.add(n);\n }\n }();\n },\n parent(root, path) {\n var parentPath = Path.parent(path);\n var p = Node.get(root, parentPath);\n if (Text.isText(p)) {\n throw new Error(\"Cannot get the parent of path [\".concat(path, \"] because it does not exist in the root.\"));\n }\n return p;\n },\n string(node) {\n if (Text.isText(node)) {\n return node.text;\n } else {\n return node.children.map(Node.string).join('');\n }\n },\n texts(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path];\n }\n }\n }();\n }\n};\n\nfunction ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Operation = {\n isNodeOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_node');\n },\n isOperation(value) {\n if (!isPlainObject(value)) {\n return false;\n }\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node);\n case 'insert_text':\n return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n case 'merge_node':\n return typeof value.position === 'number' && Path.isPath(value.path) && isPlainObject(value.properties);\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath);\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node);\n case 'remove_text':\n return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n case 'set_node':\n return Path.isPath(value.path) && isPlainObject(value.properties) && isPlainObject(value.newProperties);\n case 'set_selection':\n return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isPlainObject(value.properties) && isPlainObject(value.newProperties);\n case 'split_node':\n return Path.isPath(value.path) && typeof value.position === 'number' && isPlainObject(value.properties);\n default:\n return false;\n }\n },\n isOperationList(value) {\n return Array.isArray(value) && value.every(val => Operation.isOperation(val));\n },\n isSelectionOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_selection');\n },\n isTextOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_text');\n },\n inverse(op) {\n switch (op.type) {\n case 'insert_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'remove_node'\n });\n }\n case 'insert_text':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'remove_text'\n });\n }\n case 'merge_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'split_node',\n path: Path.previous(op.path)\n });\n }\n case 'move_node':\n {\n var {\n newPath,\n path\n } = op;\n // PERF: in this case the move operation is a no-op anyways.\n if (Path.equals(newPath, path)) {\n return op;\n }\n // If the move happens completely within a single parent the path and\n // newPath are stable with respect to each other.\n if (Path.isSibling(path, newPath)) {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n path: newPath,\n newPath: path\n });\n }\n // If the move does not happen within a single parent it is possible\n // for the move to impact the true path to the location where the node\n // was removed from and where it was inserted. We have to adjust for this\n // and find the original path. We can accomplish this (only in non-sibling)\n // moves by looking at the impact of the move operation on the node\n // after the original move path.\n var inversePath = Path.transform(path, op);\n var inverseNewPath = Path.transform(Path.next(path), op);\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n path: inversePath,\n newPath: inverseNewPath\n });\n }\n case 'remove_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'insert_node'\n });\n }\n case 'remove_text':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'insert_text'\n });\n }\n case 'set_node':\n {\n var {\n properties,\n newProperties\n } = op;\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: newProperties,\n newProperties: properties\n });\n }\n case 'set_selection':\n {\n var {\n properties: _properties,\n newProperties: _newProperties\n } = op;\n if (_properties == null) {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: _newProperties,\n newProperties: null\n });\n } else if (_newProperties == null) {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: null,\n newProperties: _properties\n });\n } else {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: _newProperties,\n newProperties: _properties\n });\n }\n }\n case 'split_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'merge_node',\n path: Path.next(op.path)\n });\n }\n }\n }\n};\n\nvar IS_EDITOR_CACHE = new WeakMap();\nvar isEditor = value => {\n var cachedIsEditor = IS_EDITOR_CACHE.get(value);\n if (cachedIsEditor !== undefined) {\n return cachedIsEditor;\n }\n if (!isPlainObject(value)) {\n return false;\n }\n var isEditor = typeof value.addMark === 'function' && typeof value.apply === 'function' && typeof value.deleteFragment === 'function' && typeof value.insertBreak === 'function' && typeof value.insertSoftBreak === 'function' && typeof value.insertFragment === 'function' && typeof value.insertNode === 'function' && typeof value.insertText === 'function' && typeof value.isElementReadOnly === 'function' && typeof value.isInline === 'function' && typeof value.isSelectable === 'function' && typeof value.isVoid === 'function' && typeof value.normalizeNode === 'function' && typeof value.onChange === 'function' && typeof value.removeMark === 'function' && typeof value.getDirtyPaths === 'function' && (value.marks === null || isPlainObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && Node.isNodeList(value.children) && Operation.isOperationList(value.operations);\n IS_EDITOR_CACHE.set(value, isEditor);\n return isEditor;\n};\n\n// eslint-disable-next-line no-redeclare\nvar Editor = {\n above(editor, options) {\n return editor.above(options);\n },\n addMark(editor, key, value) {\n editor.addMark(key, value);\n },\n after(editor, at, options) {\n return editor.after(at, options);\n },\n before(editor, at, options) {\n return editor.before(at, options);\n },\n deleteBackward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteBackward(unit);\n },\n deleteForward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteForward(unit);\n },\n deleteFragment(editor, options) {\n editor.deleteFragment(options);\n },\n edges(editor, at) {\n return editor.edges(at);\n },\n elementReadOnly(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return editor.elementReadOnly(options);\n },\n end(editor, at) {\n return editor.end(at);\n },\n first(editor, at) {\n return editor.first(at);\n },\n fragment(editor, at) {\n return editor.fragment(at);\n },\n hasBlocks(editor, element) {\n return editor.hasBlocks(element);\n },\n hasInlines(editor, element) {\n return editor.hasInlines(element);\n },\n hasPath(editor, path) {\n return editor.hasPath(path);\n },\n hasTexts(editor, element) {\n return editor.hasTexts(element);\n },\n insertBreak(editor) {\n editor.insertBreak();\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options);\n },\n insertNode(editor, node) {\n editor.insertNode(node);\n },\n insertSoftBreak(editor) {\n editor.insertSoftBreak();\n },\n insertText(editor, text) {\n editor.insertText(text);\n },\n isBlock(editor, value) {\n return editor.isBlock(value);\n },\n isEdge(editor, point, at) {\n return editor.isEdge(point, at);\n },\n isEditor(value) {\n return isEditor(value);\n },\n isElementReadOnly(editor, element) {\n return editor.isElementReadOnly(element);\n },\n isEmpty(editor, element) {\n return editor.isEmpty(element);\n },\n isEnd(editor, point, at) {\n return editor.isEnd(point, at);\n },\n isInline(editor, value) {\n return editor.isInline(value);\n },\n isNormalizing(editor) {\n return editor.isNormalizing();\n },\n isSelectable(editor, value) {\n return editor.isSelectable(value);\n },\n isStart(editor, point, at) {\n return editor.isStart(point, at);\n },\n isVoid(editor, value) {\n return editor.isVoid(value);\n },\n last(editor, at) {\n return editor.last(at);\n },\n leaf(editor, at, options) {\n return editor.leaf(at, options);\n },\n levels(editor, options) {\n return editor.levels(options);\n },\n marks(editor) {\n return editor.getMarks();\n },\n next(editor, options) {\n return editor.next(options);\n },\n node(editor, at, options) {\n return editor.node(at, options);\n },\n nodes(editor, options) {\n return editor.nodes(options);\n },\n normalize(editor, options) {\n editor.normalize(options);\n },\n parent(editor, at, options) {\n return editor.parent(at, options);\n },\n path(editor, at, options) {\n return editor.path(at, options);\n },\n pathRef(editor, path, options) {\n return editor.pathRef(path, options);\n },\n pathRefs(editor) {\n return editor.pathRefs();\n },\n point(editor, at, options) {\n return editor.point(at, options);\n },\n pointRef(editor, point, options) {\n return editor.pointRef(point, options);\n },\n pointRefs(editor) {\n return editor.pointRefs();\n },\n positions(editor, options) {\n return editor.positions(options);\n },\n previous(editor, options) {\n return editor.previous(options);\n },\n range(editor, at, to) {\n return editor.range(at, to);\n },\n rangeRef(editor, range, options) {\n return editor.rangeRef(range, options);\n },\n rangeRefs(editor) {\n return editor.rangeRefs();\n },\n removeMark(editor, key) {\n editor.removeMark(key);\n },\n setNormalizing(editor, isNormalizing) {\n editor.setNormalizing(isNormalizing);\n },\n start(editor, at) {\n return editor.start(at);\n },\n string(editor, at, options) {\n return editor.string(at, options);\n },\n unhangRange(editor, range, options) {\n return editor.unhangRange(range, options);\n },\n void(editor, options) {\n return editor.void(options);\n },\n withoutNormalizing(editor, fn) {\n editor.withoutNormalizing(fn);\n },\n shouldMergeNodesRemovePrevNode: (editor, prevNode, curNode) => {\n return editor.shouldMergeNodesRemovePrevNode(prevNode, curNode);\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar Location = {\n isLocation(value) {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value);\n }\n};\n// eslint-disable-next-line no-redeclare\nvar Span = {\n isSpan(value) {\n return Array.isArray(value) && value.length === 2 && value.every(Path.isPath);\n }\n};\n\nfunction ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Point = {\n compare(point, another) {\n var result = Path.compare(point.path, another.path);\n if (result === 0) {\n if (point.offset < another.offset) return -1;\n if (point.offset > another.offset) return 1;\n return 0;\n }\n return result;\n },\n isAfter(point, another) {\n return Point.compare(point, another) === 1;\n },\n isBefore(point, another) {\n return Point.compare(point, another) === -1;\n },\n equals(point, another) {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return point.offset === another.offset && Path.equals(point.path, another.path);\n },\n isPoint(value) {\n return isPlainObject(value) && typeof value.offset === 'number' && Path.isPath(value.path);\n },\n transform(point, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return produce(point, p => {\n if (p === null) {\n return null;\n }\n var {\n affinity = 'forward'\n } = options;\n var {\n path,\n offset\n } = p;\n switch (op.type) {\n case 'insert_node':\n case 'move_node':\n {\n p.path = Path.transform(path, op, options);\n break;\n }\n case 'insert_text':\n {\n if (Path.equals(op.path, path) && (op.offset < offset || op.offset === offset && affinity === 'forward')) {\n p.offset += op.text.length;\n }\n break;\n }\n case 'merge_node':\n {\n if (Path.equals(op.path, path)) {\n p.offset += op.position;\n }\n p.path = Path.transform(path, op, options);\n break;\n }\n case 'remove_text':\n {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length);\n }\n break;\n }\n case 'remove_node':\n {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null;\n }\n p.path = Path.transform(path, op, options);\n break;\n }\n case 'split_node':\n {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null;\n } else if (op.position < offset || op.position === offset && affinity === 'forward') {\n p.offset -= op.position;\n p.path = Path.transform(path, op, _objectSpread$b(_objectSpread$b({}, options), {}, {\n affinity: 'forward'\n }));\n }\n } else {\n p.path = Path.transform(path, op, options);\n }\n break;\n }\n }\n });\n }\n};\n\nvar _scrubber = undefined;\n/**\n * This interface implements a stringify() function, which is used by Slate\n * internally when generating exceptions containing end user data. Developers\n * using Slate may call Scrubber.setScrubber() to alter the behavior of this\n * stringify() function.\n *\n * For example, to prevent the cleartext logging of 'text' fields within Nodes:\n *\n * import { Scrubber } from 'slate';\n * Scrubber.setScrubber((key, val) => {\n * if (key === 'text') return '...scrubbed...'\n * return val\n * });\n *\n */\n// eslint-disable-next-line no-redeclare\nvar Scrubber = {\n setScrubber(scrubber) {\n _scrubber = scrubber;\n },\n stringify(value) {\n return JSON.stringify(value, _scrubber);\n }\n};\n\nvar _excluded$2 = [\"text\"],\n _excluded2$2 = [\"anchor\", \"focus\", \"merge\"];\nfunction ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Text = {\n equals(text, another) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n loose = false\n } = options;\n function omitText(obj) {\n var rest = _objectWithoutProperties(obj, _excluded$2);\n return rest;\n }\n return isDeepEqual(loose ? omitText(text) : text, loose ? omitText(another) : another);\n },\n isText(value) {\n return isPlainObject(value) && typeof value.text === 'string';\n },\n isTextList(value) {\n return Array.isArray(value) && value.every(val => Text.isText(val));\n },\n isTextProps(props) {\n return props.text !== undefined;\n },\n matches(text, props) {\n for (var key in props) {\n if (key === 'text') {\n continue;\n }\n if (!text.hasOwnProperty(key) || text[key] !== props[key]) {\n return false;\n }\n }\n return true;\n },\n decorations(node, decorations) {\n var leaves = [_objectSpread$a({}, node)];\n for (var dec of decorations) {\n var {\n anchor,\n focus,\n merge: mergeDecoration\n } = dec,\n rest = _objectWithoutProperties(dec, _excluded2$2);\n var [start, end] = Range.edges(dec);\n var next = [];\n var leafEnd = 0;\n var decorationStart = start.offset;\n var decorationEnd = end.offset;\n var merge = mergeDecoration !== null && mergeDecoration !== void 0 ? mergeDecoration : Object.assign;\n for (var leaf of leaves) {\n var {\n length\n } = leaf.text;\n var leafStart = leafEnd;\n leafEnd += length;\n // If the range encompasses the entire leaf, add the range.\n if (decorationStart <= leafStart && leafEnd <= decorationEnd) {\n merge(leaf, rest);\n next.push(leaf);\n continue;\n }\n // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n if (decorationStart !== decorationEnd && (decorationStart === leafEnd || decorationEnd === leafStart) || decorationStart > leafEnd || decorationEnd < leafStart || decorationEnd === leafStart && leafStart !== 0) {\n next.push(leaf);\n continue;\n }\n // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n var middle = leaf;\n var before = void 0;\n var after = void 0;\n if (decorationEnd < leafEnd) {\n var off = decorationEnd - leafStart;\n after = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(off)\n });\n middle = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(0, off)\n });\n }\n if (decorationStart > leafStart) {\n var _off = decorationStart - leafStart;\n before = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(0, _off)\n });\n middle = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(_off)\n });\n }\n merge(middle, rest);\n if (before) {\n next.push(before);\n }\n next.push(middle);\n if (after) {\n next.push(after);\n }\n }\n leaves = next;\n }\n return leaves;\n }\n};\n\n/**\n * Get the default location to insert content into the editor.\n * By default, use the selection as the target location. But if there is\n * no selection, insert at the end of the document since that is such a\n * common use case when inserting from a non-selected state.\n */\nvar getDefaultInsertLocation = editor => {\n if (editor.selection) {\n return editor.selection;\n } else if (editor.children.length > 0) {\n return Editor.end(editor, []);\n } else {\n return [0];\n }\n};\n\nvar matchPath = (editor, path) => {\n var [node] = Editor.node(editor, path);\n return n => n === node;\n};\n\n// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n/**\n * Get the distance to the end of the first character in a string of text.\n */\nvar getCharacterDistance = function getCharacterDistance(str) {\n var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isLTR = !isRTL;\n var codepoints = isRTL ? codepointsIteratorRTL(str) : str;\n var left = CodepointType.None;\n var right = CodepointType.None;\n var distance = 0;\n // Evaluation of these conditions are deferred.\n var gb11 = null; // Is GB11 applicable?\n var gb12Or13 = null; // Is GB12 or GB13 applicable?\n for (var char of codepoints) {\n var code = char.codePointAt(0);\n if (!code) break;\n var type = getCodepointType(char, code);\n [left, right] = isLTR ? [right, type] : [type, left];\n if (intersects(left, CodepointType.ZWJ) && intersects(right, CodepointType.ExtPict)) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance));\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance));\n }\n if (!gb11) break;\n }\n if (intersects(left, CodepointType.RI) && intersects(right, CodepointType.RI)) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13;\n } else {\n if (isLTR) {\n gb12Or13 = true;\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(str.substring(0, str.length - distance));\n }\n }\n if (!gb12Or13) break;\n }\n if (left !== CodepointType.None && right !== CodepointType.None && isBoundaryPair(left, right)) {\n break;\n }\n distance += char.length;\n }\n return distance || 1;\n};\nvar SPACE = /\\s/;\nvar PUNCTUATION = /[\\u002B\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nvar CHAMELEON = /['\\u2018\\u2019]/;\n/**\n * Get the distance to the end of the first word in a string of text.\n */\nvar getWordDistance = function getWordDistance(text) {\n var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var dist = 0;\n var started = false;\n while (text.length > 0) {\n var charDist = getCharacterDistance(text, isRTL);\n var [char, remaining] = splitByCharacterDistance(text, charDist, isRTL);\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true;\n dist += charDist;\n } else if (!started) {\n dist += charDist;\n } else {\n break;\n }\n text = remaining;\n }\n return dist;\n};\n/**\n * Split a string in two parts at a given distance starting from the end when\n * `isRTL` is set to `true`.\n */\nvar splitByCharacterDistance = (str, dist, isRTL) => {\n if (isRTL) {\n var at = str.length - dist;\n return [str.slice(at, str.length), str.slice(0, at)];\n }\n return [str.slice(0, dist), str.slice(dist)];\n};\n/**\n * Check if a character is a word character. The `remaining` argument is used\n * because sometimes you must read subsequent characters to truly determine it.\n */\nvar isWordCharacter = function isWordCharacter(char, remaining) {\n var isRTL = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (SPACE.test(char)) {\n return false;\n }\n // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n if (CHAMELEON.test(char)) {\n var charDist = getCharacterDistance(remaining, isRTL);\n var [nextChar, nextRemaining] = splitByCharacterDistance(remaining, charDist, isRTL);\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true;\n }\n }\n if (PUNCTUATION.test(char)) {\n return false;\n }\n return true;\n};\n/**\n * Iterate on codepoints from right to left.\n */\nvar codepointsIteratorRTL = function* codepointsIteratorRTL(str) {\n var end = str.length - 1;\n for (var i = 0; i < str.length; i++) {\n var char1 = str.charAt(end - i);\n if (isLowSurrogate(char1.charCodeAt(0))) {\n var char2 = str.charAt(end - i - 1);\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1;\n i++;\n continue;\n }\n }\n yield char1;\n }\n};\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\nvar isHighSurrogate = charCode => {\n return charCode >= 0xd800 && charCode <= 0xdbff;\n};\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\nvar isLowSurrogate = charCode => {\n return charCode >= 0xdc00 && charCode <= 0xdfff;\n};\nvar CodepointType;\n(function (CodepointType) {\n CodepointType[CodepointType[\"None\"] = 0] = \"None\";\n CodepointType[CodepointType[\"Extend\"] = 1] = \"Extend\";\n CodepointType[CodepointType[\"ZWJ\"] = 2] = \"ZWJ\";\n CodepointType[CodepointType[\"RI\"] = 4] = \"RI\";\n CodepointType[CodepointType[\"Prepend\"] = 8] = \"Prepend\";\n CodepointType[CodepointType[\"SpacingMark\"] = 16] = \"SpacingMark\";\n CodepointType[CodepointType[\"L\"] = 32] = \"L\";\n CodepointType[CodepointType[\"V\"] = 64] = \"V\";\n CodepointType[CodepointType[\"T\"] = 128] = \"T\";\n CodepointType[CodepointType[\"LV\"] = 256] = \"LV\";\n CodepointType[CodepointType[\"LVT\"] = 512] = \"LVT\";\n CodepointType[CodepointType[\"ExtPict\"] = 1024] = \"ExtPict\";\n CodepointType[CodepointType[\"Any\"] = 2048] = \"Any\";\n})(CodepointType || (CodepointType = {}));\nvar reExtend = /^(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDEFD-\\uDEFF\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDE41\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4\\uDF00\\uDF01\\uDF36-\\uDF3A\\uDF40\\uDF42]|\\uD80D[\\uDC40\\uDC47-\\uDC55]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC8F\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD839[\\uDCEC-\\uDCEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])$/;\nvar rePrepend = /^(?:[\\u0600-\\u0605\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u0D4E]|\\uD804[\\uDCBD\\uDCCD\\uDDC2\\uDDC3]|\\uD806[\\uDD3F\\uDD41\\uDE3A\\uDE84-\\uDE89]|\\uD807\\uDD46)$/;\nvar reSpacingMark = /^(?:[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BF\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0\\u0CC1\\u0CC3\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0D02\\u0D03\\u0D3F\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82\\u0D83\\u0DD0\\u0DD1\\u0DD8-\\u0DDE\\u0DF2\\u0DF3\\u0E33\\u0EB3\\u0F3E\\u0F3F\\u0F7F\\u1031\\u103B\\u103C\\u1056\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]|\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB1\\uDCB2\\uDCB9\\uDCBB\\uDCBC\\uDCBE\\uDCC1\\uDDB0\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD31-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD66\\uDD6D])$/;\nvar reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/;\nvar reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/;\nvar reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/;\nvar reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/;\nvar reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/;\nvar reExtPict = /^(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])$/;\nvar getCodepointType = (char, code) => {\n var type = CodepointType.Any;\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend;\n }\n if (code === 0x200d) {\n type |= CodepointType.ZWJ;\n }\n if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n type |= CodepointType.RI;\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend;\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark;\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L;\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V;\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T;\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV;\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT;\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict;\n }\n return type;\n};\nfunction intersects(x, y) {\n return (x & y) !== 0;\n}\nvar NonBoundaryPairs = [\n// GB6\n[CodepointType.L, CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT],\n// GB7\n[CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n// GB8\n[CodepointType.LVT | CodepointType.T, CodepointType.T],\n// GB9\n[CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n// GB9a\n[CodepointType.Any, CodepointType.SpacingMark],\n// GB9b\n[CodepointType.Prepend, CodepointType.Any],\n// GB11\n[CodepointType.ZWJ, CodepointType.ExtPict],\n// GB12 and GB13\n[CodepointType.RI, CodepointType.RI]];\nfunction isBoundaryPair(left, right) {\n return NonBoundaryPairs.findIndex(r => intersects(left, r[0]) && intersects(right, r[1])) === -1;\n}\nvar endingEmojiZWJ = /(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDEFD-\\uDEFF\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDE41\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4\\uDF00\\uDF01\\uDF36-\\uDF3A\\uDF40\\uDF42]|\\uD80D[\\uDC40\\uDC47-\\uDC55]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC8F\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD839[\\uDCEC-\\uDCEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])*\\u200D$/;\nvar endsWithEmojiZWJ = str => {\n return str.search(endingEmojiZWJ) !== -1;\n};\nvar endingRIs = /(?:\\uD83C[\\uDDE6-\\uDDFF])+$/g;\nvar endsWithOddNumberOfRIs = str => {\n var match = str.match(endingRIs);\n if (match === null) {\n return false;\n } else {\n // A RI is represented by a surrogate pair.\n var numRIs = match[0].length / 2;\n return numRIs % 2 === 1;\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar TextTransforms = {\n delete(editor, options) {\n editor.delete(options);\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options);\n },\n insertText(editor, text) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n voids = false\n } = options;\n var {\n at = getDefaultInsertLocation(editor)\n } = options;\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var end = Range.end(at);\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n var start = Range.start(at);\n var startRef = Editor.pointRef(editor, start);\n var endRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at,\n voids\n });\n var startPoint = startRef.unref();\n var endPoint = endRef.unref();\n at = startPoint || endPoint;\n Transforms.setSelection(editor, {\n anchor: at,\n focus: at\n });\n }\n }\n if (!voids && Editor.void(editor, {\n at\n }) || Editor.elementReadOnly(editor, {\n at\n })) {\n return;\n }\n var {\n path,\n offset\n } = at;\n if (text.length > 0) editor.apply({\n type: 'insert_text',\n path,\n offset,\n text\n });\n });\n }\n};\n\nfunction ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Transforms = _objectSpread$9(_objectSpread$9(_objectSpread$9(_objectSpread$9({}, GeneralTransforms), NodeTransforms), SelectionTransforms), TextTransforms);\n\n// perf\nvar BATCHING_DIRTY_PATHS = new WeakMap();\nvar isBatchingDirtyPaths = editor => {\n return BATCHING_DIRTY_PATHS.get(editor) || false;\n};\nvar batchDirtyPaths = (editor, fn, update) => {\n var value = BATCHING_DIRTY_PATHS.get(editor) || false;\n BATCHING_DIRTY_PATHS.set(editor, true);\n try {\n fn();\n update();\n } finally {\n BATCHING_DIRTY_PATHS.set(editor, value);\n }\n};\n\n/**\n * update editor dirty paths\n *\n * @param newDirtyPaths: Path[]; new dirty paths\n * @param transform: (p: Path) => Path | null; how to transform existing dirty paths\n */\nfunction updateDirtyPaths(editor, newDirtyPaths, transform) {\n var oldDirtyPaths = DIRTY_PATHS.get(editor) || [];\n var oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set();\n var dirtyPaths;\n var dirtyPathKeys;\n var add = path => {\n if (path) {\n var key = path.join(',');\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key);\n dirtyPaths.push(path);\n }\n }\n };\n if (transform) {\n dirtyPaths = [];\n dirtyPathKeys = new Set();\n for (var path of oldDirtyPaths) {\n var newPath = transform(path);\n add(newPath);\n }\n } else {\n dirtyPaths = oldDirtyPaths;\n dirtyPathKeys = oldDirtyPathKeys;\n }\n for (var _path of newDirtyPaths) {\n add(_path);\n }\n DIRTY_PATHS.set(editor, dirtyPaths);\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys);\n}\n\nvar apply = (editor, op) => {\n for (var ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op);\n }\n for (var _ref of Editor.pointRefs(editor)) {\n PointRef.transform(_ref, op);\n }\n for (var _ref2 of Editor.rangeRefs(editor)) {\n RangeRef.transform(_ref2, op);\n }\n // update dirty paths\n if (!isBatchingDirtyPaths(editor)) {\n var transform = Path.operationCanTransformPath(op) ? p => Path.transform(p, op) : undefined;\n updateDirtyPaths(editor, editor.getDirtyPaths(op), transform);\n }\n Transforms.transform(editor, op);\n editor.operations.push(op);\n Editor.normalize(editor, {\n operation: op\n });\n // Clear any formats applied to the cursor if the selection changes.\n if (op.type === 'set_selection') {\n editor.marks = null;\n }\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true);\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false);\n editor.onChange({\n operation: op\n });\n editor.operations = [];\n });\n }\n};\n\n/**\n * Get the \"dirty\" paths generated from an operation.\n */\nvar getDirtyPaths = (editor, op) => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n {\n var {\n path\n } = op;\n return Path.levels(path);\n }\n case 'insert_node':\n {\n var {\n node,\n path: _path\n } = op;\n var levels = Path.levels(_path);\n var descendants = Text.isText(node) ? [] : Array.from(Node.nodes(node), _ref => {\n var [, p] = _ref;\n return _path.concat(p);\n });\n return [...levels, ...descendants];\n }\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n var ancestors = Path.ancestors(_path2);\n var previousPath = Path.previous(_path2);\n return [...ancestors, previousPath];\n }\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n if (Path.equals(_path3, newPath)) {\n return [];\n }\n var oldAncestors = [];\n var newAncestors = [];\n for (var ancestor of Path.ancestors(_path3)) {\n var p = Path.transform(ancestor, op);\n oldAncestors.push(p);\n }\n for (var _ancestor of Path.ancestors(newPath)) {\n var _p = Path.transform(_ancestor, op);\n newAncestors.push(_p);\n }\n var newParent = newAncestors[newAncestors.length - 1];\n var newIndex = newPath[newPath.length - 1];\n var resultPath = newParent.concat(newIndex);\n return [...oldAncestors, ...newAncestors, resultPath];\n }\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _ancestors = Path.ancestors(_path4);\n return [..._ancestors];\n }\n case 'split_node':\n {\n var {\n path: _path5\n } = op;\n var _levels = Path.levels(_path5);\n var nextPath = Path.next(_path5);\n return [..._levels, nextPath];\n }\n default:\n {\n return [];\n }\n }\n};\n\nvar getFragment = editor => {\n var {\n selection\n } = editor;\n if (selection) {\n return Node.fragment(editor, selection);\n }\n return [];\n};\n\nvar normalizeNode = (editor, entry) => {\n var [node, path] = entry;\n // There are no core normalizations for text nodes.\n if (Text.isText(node)) {\n return;\n }\n // Ensure that block and inline nodes have at least one text child.\n if (Element.isElement(node) && node.children.length === 0) {\n var child = {\n text: ''\n };\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true\n });\n return;\n }\n // Determine whether the node should have block or inline children.\n var shouldHaveInlines = Editor.isEditor(node) ? false : Element.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0]));\n // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n var n = 0;\n for (var i = 0; i < node.children.length; i++, n++) {\n var currentNode = Node.get(editor, path);\n if (Text.isText(currentNode)) continue;\n var _child = currentNode.children[n];\n var prev = currentNode.children[n - 1];\n var isLast = i === node.children.length - 1;\n var isInlineOrText = Text.isText(_child) || Element.isElement(_child) && editor.isInline(_child);\n // Only allow block nodes in the top-level children and parent blocks\n // that only contain block nodes. Similarly, only allow inline nodes in\n // other inline nodes, or parent blocks that only contain inlines and\n // text.\n if (isInlineOrText !== shouldHaveInlines) {\n if (isInlineOrText) {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n } else {\n Transforms.unwrapNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n }\n n--;\n } else if (Element.isElement(_child)) {\n // Ensure that inline nodes are surrounded by text nodes.\n if (editor.isInline(_child)) {\n if (prev == null || !Text.isText(prev)) {\n var newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true\n });\n n++;\n } else if (isLast) {\n var _newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, _newChild, {\n at: path.concat(n + 1),\n voids: true\n });\n n++;\n }\n }\n } else {\n // If the child is not a text node, and doesn't have a `children` field,\n // then we have an invalid node that will upset slate.\n //\n // eg: `{ type: 'some_node' }`.\n //\n // To prevent slate from breaking, we can add the `children` field,\n // and now that it is valid, we can to many more operations easily,\n // such as extend normalizers to fix erronous structure.\n if (!Text.isText(_child) && !('children' in _child)) {\n var elementChild = _child;\n elementChild.children = [];\n }\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(_child, prev, {\n loose: true\n })) {\n Transforms.mergeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n } else if (prev.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n - 1),\n voids: true\n });\n n--;\n } else if (_child.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n }\n }\n }\n }\n};\n\nvar shouldNormalize = (editor, _ref) => {\n var {\n iteration,\n initialDirtyPathsLength\n } = _ref;\n var maxIterations = initialDirtyPathsLength * 42; // HACK: better way?\n if (iteration > maxIterations) {\n throw new Error(\"Could not completely normalize the editor after \".concat(maxIterations, \" iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\"));\n }\n return true;\n};\n\nvar above = function above(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n var path = Editor.path(editor, at);\n var reverse = mode === 'lowest';\n for (var [n, p] of Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse\n })) {\n if (Text.isText(n)) continue;\n if (Range.isRange(at)) {\n if (Path.isAncestor(p, at.anchor.path) && Path.isAncestor(p, at.focus.path)) {\n return [n, p];\n }\n } else {\n if (!Path.equals(path, p)) {\n return [n, p];\n }\n }\n }\n};\n\nfunction ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar addMark = (editor, key, value) => {\n var {\n selection\n } = editor;\n if (selection) {\n var match = (node, path) => {\n if (!Text.isText(node)) {\n return false; // marks can only be applied to text\n }\n\n var [parentNode, parentPath] = Editor.parent(editor, path);\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode);\n };\n var expandedSelection = Range.isExpanded(selection);\n var markAcceptingVoidSelected = false;\n if (!expandedSelection) {\n var [selectedNode, selectedPath] = Editor.node(editor, selection);\n if (selectedNode && match(selectedNode, selectedPath)) {\n var [parentNode] = Editor.parent(editor, selectedPath);\n markAcceptingVoidSelected = parentNode && editor.markableVoid(parentNode);\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.setNodes(editor, {\n [key]: value\n }, {\n match,\n split: true,\n voids: true\n });\n } else {\n var marks = _objectSpread$8(_objectSpread$8({}, Editor.marks(editor) || {}), {}, {\n [key]: value\n });\n editor.marks = marks;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n};\n\nfunction ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar after = function after(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.point(editor, at, {\n edge: 'end'\n });\n var focus = Editor.end(editor, []);\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n for (var p of Editor.positions(editor, _objectSpread$7(_objectSpread$7({}, options), {}, {\n at: range\n }))) {\n if (d > distance) {\n break;\n }\n if (d !== 0) {\n target = p;\n }\n d++;\n }\n return target;\n};\n\nfunction ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar before = function before(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.start(editor, []);\n var focus = Editor.point(editor, at, {\n edge: 'start'\n });\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n for (var p of Editor.positions(editor, _objectSpread$6(_objectSpread$6({}, options), {}, {\n at: range,\n reverse: true\n }))) {\n if (d > distance) {\n break;\n }\n if (d !== 0) {\n target = p;\n }\n d++;\n }\n return target;\n};\n\nvar deleteBackward = (editor, unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit,\n reverse: true\n });\n }\n};\n\nvar deleteForward = (editor, unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit\n });\n }\n};\n\nvar deleteFragment = function deleteFragment(editor) {\n var {\n direction = 'forward'\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n selection\n } = editor;\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, {\n reverse: direction === 'backward'\n });\n }\n};\n\nvar edges = (editor, at) => {\n return [Editor.start(editor, at), Editor.end(editor, at)];\n};\n\nfunction ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar elementReadOnly = function elementReadOnly(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$5(_objectSpread$5({}, options), {}, {\n match: n => Element.isElement(n) && Editor.isElementReadOnly(editor, n)\n }));\n};\n\nvar end = (editor, at) => {\n return Editor.point(editor, at, {\n edge: 'end'\n });\n};\n\nvar first = (editor, at) => {\n var path = Editor.path(editor, at, {\n edge: 'start'\n });\n return Editor.node(editor, path);\n};\n\nvar fragment = (editor, at) => {\n var range = Editor.range(editor, at);\n return Node.fragment(editor, range);\n};\n\nfunction ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar getVoid = function getVoid(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$4(_objectSpread$4({}, options), {}, {\n match: n => Element.isElement(n) && Editor.isVoid(editor, n)\n }));\n};\n\nvar hasBlocks = (editor, element) => {\n return element.children.some(n => Element.isElement(n) && Editor.isBlock(editor, n));\n};\n\nvar hasInlines = (editor, element) => {\n return element.children.some(n => Text.isText(n) || Editor.isInline(editor, n));\n};\n\nvar hasPath = (editor, path) => {\n return Node.has(editor, path);\n};\n\nvar hasTexts = (editor, element) => {\n return element.children.every(n => Text.isText(n));\n};\n\nvar insertBreak = editor => {\n Transforms.splitNodes(editor, {\n always: true\n });\n};\n\nvar insertNode = (editor, node, options) => {\n Transforms.insertNodes(editor, node, options);\n};\n\nvar insertSoftBreak = editor => {\n Transforms.splitNodes(editor, {\n always: true\n });\n};\n\nfunction ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar insertText = function insertText(editor, text) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n selection,\n marks\n } = editor;\n if (selection) {\n if (marks) {\n var node = _objectSpread$3({\n text\n }, marks);\n Transforms.insertNodes(editor, node, {\n at: options.at,\n voids: options.voids\n });\n } else {\n Transforms.insertText(editor, text, options);\n }\n editor.marks = null;\n }\n};\n\nvar isBlock = (editor, value) => {\n return !editor.isInline(value);\n};\n\nvar isEdge = (editor, point, at) => {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at);\n};\n\nvar isEmpty = (editor, element) => {\n var {\n children\n } = element;\n var [first] = children;\n return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === '' && !editor.isVoid(element);\n};\n\nvar isEnd = (editor, point, at) => {\n var end = Editor.end(editor, at);\n return Point.equals(point, end);\n};\n\nvar isNormalizing = editor => {\n var isNormalizing = NORMALIZING.get(editor);\n return isNormalizing === undefined ? true : isNormalizing;\n};\n\nvar isStart = (editor, point, at) => {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false;\n }\n var start = Editor.start(editor, at);\n return Point.equals(point, start);\n};\n\nvar last = (editor, at) => {\n var path = Editor.path(editor, at, {\n edge: 'end'\n });\n return Editor.node(editor, path);\n};\n\nvar leaf = function leaf(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.leaf(editor, path);\n return [node, path];\n};\n\nfunction levels(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n var {\n match\n } = options;\n if (match == null) {\n match = () => true;\n }\n if (!at) {\n return;\n }\n var levels = [];\n var path = Editor.path(editor, at);\n for (var [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue;\n }\n levels.push([n, p]);\n if (!voids && Element.isElement(n) && Editor.isVoid(editor, n)) {\n break;\n }\n }\n if (reverse) {\n levels.reverse();\n }\n yield* levels;\n }();\n}\n\nvar _excluded$1 = [\"text\"],\n _excluded2$1 = [\"text\"];\nvar marks = function marks(editor) {\n var {\n marks,\n selection\n } = editor;\n if (!selection) {\n return null;\n }\n var {\n anchor,\n focus\n } = selection;\n if (marks) {\n return marks;\n }\n if (Range.isExpanded(selection)) {\n var isBackward = Range.isBackward(selection);\n if (isBackward) {\n [focus, anchor] = [anchor, focus];\n }\n /**\n * COMPAT: Make sure hanging ranges (caused by double clicking in Firefox)\n * do not adversely affect the returned marks.\n */\n var isEnd = Editor.isEnd(editor, anchor, anchor.path);\n if (isEnd) {\n var after = Editor.after(editor, anchor);\n if (after) {\n anchor = after;\n }\n }\n var [match] = Editor.nodes(editor, {\n match: Text.isText,\n at: {\n anchor,\n focus\n }\n });\n if (match) {\n var [_node] = match;\n var _rest = _objectWithoutProperties(_node, _excluded$1);\n return _rest;\n } else {\n return {};\n }\n }\n var {\n path\n } = anchor;\n var [node] = Editor.leaf(editor, path);\n if (anchor.offset === 0) {\n var prev = Editor.previous(editor, {\n at: path,\n match: Text.isText\n });\n var markedVoid = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isVoid(editor, n) && editor.markableVoid(n)\n });\n if (!markedVoid) {\n var block = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n)\n });\n if (prev && block) {\n var [prevNode, prevPath] = prev;\n var [, blockPath] = block;\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode;\n }\n }\n }\n }\n var rest = _objectWithoutProperties(node, _excluded2$1);\n return rest;\n};\n\nvar next = function next(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointAfterLocation = Editor.after(editor, at, {\n voids\n });\n if (!pointAfterLocation) return;\n var [, to] = Editor.last(editor, []);\n var span = [pointAfterLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the next node from the root node!\");\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n var [next] = Editor.nodes(editor, {\n at: span,\n match,\n mode,\n voids\n });\n return next;\n};\n\nvar node = function node(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.get(editor, path);\n return [node, path];\n};\n\nfunction nodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false,\n ignoreNonSelectable = false\n } = options;\n var {\n match\n } = options;\n if (!match) {\n match = () => true;\n }\n if (!at) {\n return;\n }\n var from;\n var to;\n if (Span.isSpan(at)) {\n from = at[0];\n to = at[1];\n } else {\n var first = Editor.path(editor, at, {\n edge: 'start'\n });\n var last = Editor.path(editor, at, {\n edge: 'end'\n });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n var nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: _ref => {\n var [node] = _ref;\n if (!Element.isElement(node)) return false;\n if (!voids && (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node))) return true;\n if (ignoreNonSelectable && !Editor.isSelectable(editor, node)) return true;\n return false;\n }\n });\n var matches = [];\n var hit;\n for (var [node, path] of nodeEntries) {\n if (ignoreNonSelectable && Element.isElement(node) && !Editor.isSelectable(editor, node)) {\n continue;\n }\n var isLower = hit && Path.compare(path, hit[1]) === 0;\n // In highest mode any node lower than the last hit is not a match.\n if (mode === 'highest' && isLower) {\n continue;\n }\n if (!match(node, path)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return;\n } else {\n continue;\n }\n }\n // If there's a match and it's lower than the last, update the hit.\n if (mode === 'lowest' && isLower) {\n hit = [node, path];\n continue;\n }\n // In lowest mode we emit the last hit, once it's guaranteed lowest.\n var emit = mode === 'lowest' ? hit : [node, path];\n if (emit) {\n if (universal) {\n matches.push(emit);\n } else {\n yield emit;\n }\n }\n hit = [node, path];\n }\n // Since lowest is always emitting one behind, catch up at the end.\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit);\n } else {\n yield hit;\n }\n }\n // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n if (universal) {\n yield* matches;\n }\n }();\n}\n\nvar normalize = function normalize(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n force = false,\n operation\n } = options;\n var getDirtyPaths = editor => {\n return DIRTY_PATHS.get(editor) || [];\n };\n var getDirtyPathKeys = editor => {\n return DIRTY_PATH_KEYS.get(editor) || new Set();\n };\n var popDirtyPath = editor => {\n var path = getDirtyPaths(editor).pop();\n var key = path.join(',');\n getDirtyPathKeys(editor).delete(key);\n return path;\n };\n if (!Editor.isNormalizing(editor)) {\n return;\n }\n if (force) {\n var allPaths = Array.from(Node.nodes(editor), _ref => {\n var [, p] = _ref;\n return p;\n });\n var allPathKeys = new Set(allPaths.map(p => p.join(',')));\n DIRTY_PATHS.set(editor, allPaths);\n DIRTY_PATH_KEYS.set(editor, allPathKeys);\n }\n if (getDirtyPaths(editor).length === 0) {\n return;\n }\n Editor.withoutNormalizing(editor, () => {\n /*\n Fix dirty elements with no children.\n editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\n Running an initial pass avoids the catch-22 race condition.\n */\n for (var dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n var entry = Editor.node(editor, dirtyPath);\n var [node, _] = entry;\n /*\n The default normalizer inserts an empty text node in this scenario, but it can be customised.\n So there is some risk here.\n As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\n by definition adding children to an empty node can't cause other paths to change.\n */\n if (Element.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry, {\n operation\n });\n }\n }\n }\n var dirtyPaths = getDirtyPaths(editor);\n var initialDirtyPathsLength = dirtyPaths.length;\n var iteration = 0;\n while (dirtyPaths.length !== 0) {\n if (!editor.shouldNormalize({\n dirtyPaths,\n iteration,\n initialDirtyPathsLength,\n operation\n })) {\n return;\n }\n var _dirtyPath = popDirtyPath(editor);\n // If the node doesn't exist in the tree, it does not need to be normalized.\n if (Node.has(editor, _dirtyPath)) {\n var _entry = Editor.node(editor, _dirtyPath);\n editor.normalizeNode(_entry, {\n operation\n });\n }\n iteration++;\n dirtyPaths = getDirtyPaths(editor);\n }\n });\n};\n\nvar parent = function parent(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var parentPath = Path.parent(path);\n var entry = Editor.node(editor, parentPath);\n return entry;\n};\n\nvar pathRef = function pathRef(editor, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: path,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pathRefs = Editor.pathRefs(editor);\n pathRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pathRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar pathRefs = editor => {\n var refs = PATH_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n PATH_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar path = function path(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n depth,\n edge\n } = options;\n if (Path.isPath(at)) {\n if (edge === 'start') {\n var [, firstPath] = Node.first(editor, at);\n at = firstPath;\n } else if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n at = lastPath;\n }\n }\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at);\n } else if (edge === 'end') {\n at = Range.end(at);\n } else {\n at = Path.common(at.anchor.path, at.focus.path);\n }\n }\n if (Point.isPoint(at)) {\n at = at.path;\n }\n if (depth != null) {\n at = at.slice(0, depth);\n }\n return at;\n};\n\nvar pointRef = function pointRef(editor, point) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: point,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pointRefs = Editor.pointRefs(editor);\n pointRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pointRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar pointRefs = editor => {\n var refs = POINT_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n POINT_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar point = function point(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n edge = 'start'\n } = options;\n if (Path.isPath(at)) {\n var path;\n if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n path = lastPath;\n } else {\n var [, firstPath] = Node.first(editor, at);\n path = firstPath;\n }\n var node = Node.get(editor, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the \".concat(edge, \" point in the node at path [\").concat(at, \"] because it has no \").concat(edge, \" text node.\"));\n }\n return {\n path,\n offset: edge === 'end' ? node.text.length : 0\n };\n }\n if (Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n return edge === 'start' ? start : end;\n }\n return at;\n};\n\nfunction positions(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false,\n ignoreNonSelectable = false\n } = options;\n if (!at) {\n return;\n }\n /**\n * Algorithm notes:\n *\n * Each step `distance` is dynamic depending on the underlying text\n * and the `unit` specified. Each step, e.g., a line or word, may\n * span multiple text nodes, so we iterate through the text both on\n * two levels in step-sync:\n *\n * `leafText` stores the text on a text leaf level, and is advanced\n * through using the counters `leafTextOffset` and `leafTextRemaining`.\n *\n * `blockText` stores the text on a block level, and is shortened\n * by `distance` every time it is advanced.\n *\n * We only maintain a window of one blockText and one leafText because\n * a block node always appears before all of its leaf nodes.\n */\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var first = reverse ? end : start;\n var isNewBlock = false;\n var blockText = '';\n var distance = 0; // Distance for leafText to catch up to blockText.\n var leafTextRemaining = 0;\n var leafTextOffset = 0;\n // Iterate through all nodes in range, grabbing entire textual content\n // of block nodes in blockText, and text nodes in leafText.\n // Exploits the fact that nodes are sequenced in such a way that we first\n // encounter the block node, then all of its text nodes, so when iterating\n // through the blockText and leafText we just need to remember a window of\n // one block node and leaf node, respectively.\n for (var [node, path] of Editor.nodes(editor, {\n at,\n reverse,\n voids,\n ignoreNonSelectable\n })) {\n /*\n * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\n */\n if (Element.isElement(node)) {\n // Void nodes are a special case, so by default we will always\n // yield their first point. If the `voids` option is set to true,\n // then we will iterate over their content.\n if (!voids && (editor.isVoid(node) || editor.isElementReadOnly(node))) {\n yield Editor.start(editor, path);\n continue;\n }\n // Inline element nodes are ignored as they don't themselves\n // contribute to `blockText` or `leafText` - their parent and\n // children do.\n if (editor.isInline(node)) continue;\n // Block element node - set `blockText` to its text content.\n if (Editor.hasInlines(editor, node)) {\n // We always exhaust block nodes before encountering a new one:\n // console.assert(blockText === '',\n // `blockText='${blockText}' - `+\n // `not exhausted before new block node`, path)\n // Ensure range considered is capped to `range`, in the\n // start/end edge cases where block extends beyond range.\n // Equivalent to this, but presumably more performant:\n // blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n // blockRange = Range.intersection(range, blockRange) // intersect\n // blockText = Editor.string(editor, blockRange, { voids })\n var e = Path.isAncestor(path, end.path) ? end : Editor.end(editor, path);\n var s = Path.isAncestor(path, start.path) ? start : Editor.start(editor, path);\n blockText = Editor.string(editor, {\n anchor: s,\n focus: e\n }, {\n voids\n });\n isNewBlock = true;\n }\n }\n /*\n * TEXT LEAF NODE - Iterate through text content, yielding\n * positions every `distance` offset according to `unit`.\n */\n if (Text.isText(node)) {\n var isFirst = Path.equals(path, first.path);\n // Proof that we always exhaust text nodes before encountering a new one:\n // console.assert(leafTextRemaining <= 0,\n // `leafTextRemaining=${leafTextRemaining} - `+\n // `not exhausted before new leaf text node`, path)\n // Reset `leafText` counters for new text node.\n if (isFirst) {\n leafTextRemaining = reverse ? first.offset : node.text.length - first.offset;\n leafTextOffset = first.offset; // Works for reverse too.\n } else {\n leafTextRemaining = node.text.length;\n leafTextOffset = reverse ? leafTextRemaining : 0;\n }\n // Yield position at the start of node (potentially).\n if (isFirst || isNewBlock || unit === 'offset') {\n yield {\n path,\n offset: leafTextOffset\n };\n isNewBlock = false;\n }\n // Yield positions every (dynamically calculated) `distance` offset.\n while (true) {\n // If `leafText` has caught up with `blockText` (distance=0),\n // and if blockText is exhausted, break to get another block node,\n // otherwise advance blockText forward by the new `distance`.\n if (distance === 0) {\n if (blockText === '') break;\n distance = calcDistance(blockText, unit, reverse);\n // Split the string at the previously found distance and use the\n // remaining string for the next iteration.\n blockText = splitByCharacterDistance(blockText, distance, reverse)[1];\n }\n // Advance `leafText` by the current `distance`.\n leafTextOffset = reverse ? leafTextOffset - distance : leafTextOffset + distance;\n leafTextRemaining = leafTextRemaining - distance;\n // If `leafText` is exhausted, break to get a new leaf node\n // and set distance to the overflow amount, so we'll (maybe)\n // catch up to blockText in the next leaf text node.\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining;\n break;\n }\n // Successfully walked `distance` offsets through `leafText`\n // to catch up with `blockText`, so we can reset `distance`\n // and yield this position in this node.\n distance = 0;\n yield {\n path,\n offset: leafTextOffset\n };\n }\n }\n }\n // Proof that upon completion, we've exahusted both leaf and block text:\n // console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n // console.assert(blockText === '', \"blockText wasn't exhausted\")\n // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n function calcDistance(text, unit, reverse) {\n if (unit === 'character') {\n return getCharacterDistance(text, reverse);\n } else if (unit === 'word') {\n return getWordDistance(text, reverse);\n } else if (unit === 'line' || unit === 'block') {\n return text.length;\n }\n return 1;\n }\n }();\n}\n\nvar previous = function previous(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointBeforeLocation = Editor.before(editor, at, {\n voids\n });\n if (!pointBeforeLocation) {\n return;\n }\n var [, to] = Editor.first(editor, []);\n // The search location is from the start of the document to the path of\n // the point before the location passed in\n var span = [pointBeforeLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the previous node from the root node!\");\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n var [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids\n });\n return previous;\n};\n\nvar rangeRef = function rangeRef(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: range,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var rangeRefs = Editor.rangeRefs(editor);\n rangeRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.rangeRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar rangeRefs = editor => {\n var refs = RANGE_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n RANGE_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar range = (editor, at, to) => {\n if (Range.isRange(at) && !to) {\n return at;\n }\n var start = Editor.start(editor, at);\n var end = Editor.end(editor, to || at);\n return {\n anchor: start,\n focus: end\n };\n};\n\nfunction ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar removeMark = (editor, key) => {\n var {\n selection\n } = editor;\n if (selection) {\n var match = (node, path) => {\n if (!Text.isText(node)) {\n return false; // marks can only be applied to text\n }\n\n var [parentNode, parentPath] = Editor.parent(editor, path);\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode);\n };\n var expandedSelection = Range.isExpanded(selection);\n var markAcceptingVoidSelected = false;\n if (!expandedSelection) {\n var [selectedNode, selectedPath] = Editor.node(editor, selection);\n if (selectedNode && match(selectedNode, selectedPath)) {\n var [parentNode] = Editor.parent(editor, selectedPath);\n markAcceptingVoidSelected = parentNode && editor.markableVoid(parentNode);\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.unsetNodes(editor, key, {\n match,\n split: true,\n voids: true\n });\n } else {\n var marks = _objectSpread$2({}, Editor.marks(editor) || {});\n delete marks[key];\n editor.marks = marks;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n};\n\nvar setNormalizing = (editor, isNormalizing) => {\n NORMALIZING.set(editor, isNormalizing);\n};\n\nvar start = (editor, at) => {\n return Editor.point(editor, at, {\n edge: 'start'\n });\n};\n\nvar string = function string(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var text = '';\n for (var [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids\n })) {\n var t = node.text;\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset);\n }\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset);\n }\n text += t;\n }\n return text;\n};\n\nvar unhangRange = function unhangRange(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var [start, end] = Range.edges(range);\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range) || Path.hasPrevious(end.path)) {\n return range;\n }\n var endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n voids\n });\n var blockPath = endBlock ? endBlock[1] : [];\n var first = Editor.start(editor, start);\n var before = {\n anchor: first,\n focus: end\n };\n var skip = true;\n for (var [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids\n })) {\n if (skip) {\n skip = false;\n continue;\n }\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = {\n path,\n offset: node.text.length\n };\n break;\n }\n }\n return {\n anchor: start,\n focus: end\n };\n};\n\nvar withoutNormalizing = (editor, fn) => {\n var value = Editor.isNormalizing(editor);\n Editor.setNormalizing(editor, false);\n try {\n fn();\n } finally {\n Editor.setNormalizing(editor, value);\n }\n Editor.normalize(editor);\n};\n\nvar shouldMergeNodesRemovePrevNode = (editor, _ref, _ref2) => {\n var [prevNode, prevPath] = _ref;\n // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n // if prevNode is first child in parent,don't remove it.\n return Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === '' && prevPath[prevPath.length - 1] !== 0;\n};\n\nvar deleteText = function deleteText(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var _Editor$void, _Editor$void2;\n var {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false\n } = options;\n var {\n at = editor.selection,\n hanging = false\n } = options;\n if (!at) {\n return;\n }\n var isCollapsed = false;\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n isCollapsed = true;\n at = at.anchor;\n }\n if (Point.isPoint(at)) {\n var furthestVoid = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n if (!voids && furthestVoid) {\n var [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n var opts = {\n unit,\n distance\n };\n var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n if (Range.isCollapsed(at)) {\n return;\n }\n if (!hanging) {\n var [, _end] = Range.edges(at);\n var endOfDoc = Editor.end(editor, []);\n if (!Point.equals(_end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n }\n var [start, end] = Range.edges(at);\n var startBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: start,\n voids\n });\n var endBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: end,\n voids\n });\n var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n var isSingleText = Path.equals(start.path, end.path);\n var startNonEditable = voids ? null : (_Editor$void = Editor.void(editor, {\n at: start,\n mode: 'highest'\n })) !== null && _Editor$void !== void 0 ? _Editor$void : Editor.elementReadOnly(editor, {\n at: start,\n mode: 'highest'\n });\n var endNonEditable = voids ? null : (_Editor$void2 = Editor.void(editor, {\n at: end,\n mode: 'highest'\n })) !== null && _Editor$void2 !== void 0 ? _Editor$void2 : Editor.elementReadOnly(editor, {\n at: end,\n mode: 'highest'\n });\n // If the start or end points are inside an inline void, nudge them out.\n if (startNonEditable) {\n var before = Editor.before(editor, start);\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start = before;\n }\n }\n if (endNonEditable) {\n var after = Editor.after(editor, end);\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after;\n }\n }\n // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n var matches = [];\n var lastPath;\n for (var entry of Editor.nodes(editor, {\n at,\n voids\n })) {\n var [node, path] = entry;\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n if (!voids && Element.isElement(node) && (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node)) || !Path.isCommon(path, start.path) && !Path.isCommon(path, end.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n var startRef = Editor.pointRef(editor, start);\n var endRef = Editor.pointRef(editor, end);\n var removedText = '';\n if (!isSingleText && !startNonEditable) {\n var _point = startRef.current;\n var [_node] = Editor.leaf(editor, _point);\n var {\n path: _path\n } = _point;\n var {\n offset\n } = start;\n var text = _node.text.slice(offset);\n if (text.length > 0) {\n editor.apply({\n type: 'remove_text',\n path: _path,\n offset,\n text\n });\n removedText = text;\n }\n }\n pathRefs.reverse().map(r => r.unref()).filter(r => r !== null).forEach(p => Transforms.removeNodes(editor, {\n at: p,\n voids\n }));\n if (!endNonEditable) {\n var _point2 = endRef.current;\n var [_node2] = Editor.leaf(editor, _point2);\n var {\n path: _path2\n } = _point2;\n var _offset = isSingleText ? start.offset : 0;\n var _text = _node2.text.slice(_offset, end.offset);\n if (_text.length > 0) {\n editor.apply({\n type: 'remove_text',\n path: _path2,\n offset: _offset,\n text: _text\n });\n removedText = _text;\n }\n }\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n // For Thai script, deleting N character(s) backward should delete\n // N code point(s) instead of an entire grapheme cluster.\n // Therefore, the remaining code points should be inserted back.\n if (isCollapsed && reverse && unit === 'character' && removedText.length > 1 && removedText.match(/[\\u0E00-\\u0E7F]+/)) {\n Transforms.insertText(editor, removedText.slice(0, removedText.length - distance));\n }\n var startUnref = startRef.unref();\n var endUnref = endRef.unref();\n var point = reverse ? startUnref || endUnref : endUnref || startUnref;\n if (options.at == null && point) {\n Transforms.select(editor, point);\n }\n });\n};\n\nvar insertFragment = function insertFragment(editor, fragment) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false\n } = options;\n var {\n at = getDefaultInsertLocation(editor),\n batchDirty = true\n } = options;\n if (!fragment.length) {\n return;\n }\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at);\n }\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n }\n // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n var inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Element.isElement(n) && Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n if (inlineElementMatch) {\n var [, _inlinePath] = inlineElementMatch;\n if (Editor.isEnd(editor, at, _inlinePath)) {\n var after = Editor.after(editor, _inlinePath);\n at = after;\n } else if (Editor.isStart(editor, at, _inlinePath)) {\n var before = Editor.before(editor, _inlinePath);\n at = before;\n }\n }\n var blockMatch = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at,\n voids\n });\n var [, blockPath] = blockMatch;\n var isBlockStart = Editor.isStart(editor, at, blockPath);\n var isBlockEnd = Editor.isEnd(editor, at, blockPath);\n var isBlockEmpty = isBlockStart && isBlockEnd;\n var mergeStart = !isBlockStart || isBlockStart && isBlockEnd;\n var mergeEnd = !isBlockEnd;\n var [, firstPath] = Node.first({\n children: fragment\n }, []);\n var [, lastPath] = Node.last({\n children: fragment\n }, []);\n var matches = [];\n var matcher = _ref => {\n var [n, p] = _ref;\n var isRoot = p.length === 0;\n if (isRoot) {\n return false;\n }\n if (isBlockEmpty) {\n return true;\n }\n if (mergeStart && Path.isAncestor(p, firstPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n if (mergeEnd && Path.isAncestor(p, lastPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n return true;\n };\n for (var entry of Node.nodes({\n children: fragment\n }, {\n pass: matcher\n })) {\n if (matcher(entry)) {\n matches.push(entry);\n }\n }\n var starts = [];\n var middles = [];\n var ends = [];\n var starting = true;\n var hasBlocks = false;\n for (var [node] of matches) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false;\n hasBlocks = true;\n middles.push(node);\n } else if (starting) {\n starts.push(node);\n } else {\n ends.push(node);\n }\n }\n var [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n var [, inlinePath] = inlineMatch;\n var isInlineStart = Editor.isStart(editor, at, inlinePath);\n var isInlineEnd = Editor.isEnd(editor, at, inlinePath);\n var middleRef = Editor.pathRef(editor, isBlockEnd && !ends.length ? Path.next(blockPath) : blockPath);\n var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.splitNodes(editor, {\n at,\n match: n => hasBlocks ? Element.isElement(n) && Editor.isBlock(editor, n) : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n always: hasBlocks && (!isBlockStart || starts.length > 0) && (!isBlockEnd || ends.length > 0),\n voids\n });\n var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.insertNodes(editor, starts, {\n at: startRef.current,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n batchDirty\n });\n if (isBlockEmpty && !starts.length && middles.length && !ends.length) {\n Transforms.delete(editor, {\n at: blockPath,\n voids\n });\n }\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n mode: 'lowest',\n voids,\n batchDirty\n });\n Transforms.insertNodes(editor, ends, {\n at: endRef.current,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n batchDirty\n });\n if (!options.at) {\n var path;\n if (ends.length > 0 && endRef.current) {\n path = Path.previous(endRef.current);\n } else if (middles.length > 0 && middleRef.current) {\n path = Path.previous(middleRef.current);\n } else if (startRef.current) {\n path = Path.previous(startRef.current);\n }\n if (path) {\n var _end = Editor.end(editor, path);\n Transforms.select(editor, _end);\n }\n }\n startRef.unref();\n middleRef.unref();\n endRef.unref();\n });\n};\n\nvar collapse = function collapse(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n edge = 'anchor'\n } = options;\n var {\n selection\n } = editor;\n if (!selection) {\n return;\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor);\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus);\n } else if (edge === 'start') {\n var [start] = Range.edges(selection);\n Transforms.select(editor, start);\n } else if (edge === 'end') {\n var [, end] = Range.edges(selection);\n Transforms.select(editor, end);\n }\n};\n\nvar deselect = editor => {\n var {\n selection\n } = editor;\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null\n });\n }\n};\n\nvar move = function move(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n selection\n } = editor;\n var {\n distance = 1,\n unit = 'character',\n reverse = false\n } = options;\n var {\n edge = null\n } = options;\n if (!selection) {\n return;\n }\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n var {\n anchor,\n focus\n } = selection;\n var opts = {\n distance,\n unit,\n ignoreNonSelectable: true\n };\n var props = {};\n if (edge == null || edge === 'anchor') {\n var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts);\n if (point) {\n props.anchor = point;\n }\n }\n if (edge == null || edge === 'focus') {\n var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts);\n if (_point) {\n props.focus = _point;\n }\n }\n Transforms.setSelection(editor, props);\n};\n\nvar select = (editor, target) => {\n var {\n selection\n } = editor;\n target = Editor.range(editor, target);\n if (selection) {\n Transforms.setSelection(editor, target);\n return;\n }\n if (!Range.isRange(target)) {\n throw new Error(\"When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: \".concat(Scrubber.stringify(target)));\n }\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target\n });\n};\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar setPoint = function setPoint(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n selection\n } = editor;\n var {\n edge = 'both'\n } = options;\n if (!selection) {\n return;\n }\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n var {\n anchor,\n focus\n } = selection;\n var point = edge === 'anchor' ? anchor : focus;\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: _objectSpread$1(_objectSpread$1({}, point), props)\n });\n};\n\nvar setSelection = (editor, props) => {\n var {\n selection\n } = editor;\n var oldProps = {};\n var newProps = {};\n if (!selection) {\n return;\n }\n for (var k in props) {\n if (k === 'anchor' && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k === 'focus' && props.focus != null && !Point.equals(props.focus, selection.focus) || k !== 'anchor' && k !== 'focus' && props[k] !== selection[k]) {\n oldProps[k] = selection[k];\n newProps[k] = props[k];\n }\n }\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps\n });\n }\n};\n\nvar insertNodes = function insertNodes(editor, nodes) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest',\n batchDirty = true\n } = options;\n var {\n at,\n match,\n select\n } = options;\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n if (nodes.length === 0) {\n return;\n }\n var [node] = nodes;\n if (!at) {\n at = getDefaultInsertLocation(editor);\n if (select !== false) {\n select = true;\n }\n }\n if (select == null) {\n select = false;\n }\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n }\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n);\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n);\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n }\n var [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids\n });\n if (entry) {\n var [, matchPath] = entry;\n var pathRef = Editor.pathRef(editor, matchPath);\n var isAtEnd = Editor.isEnd(editor, at, matchPath);\n Transforms.splitNodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var path = pathRef.unref();\n at = isAtEnd ? Path.next(path) : path;\n } else {\n return;\n }\n }\n var parentPath = Path.parent(at);\n var index = at[at.length - 1];\n if (!voids && Editor.void(editor, {\n at: parentPath\n })) {\n return;\n }\n if (batchDirty) {\n // PERF: batch update dirty paths\n // batched ops used to transform existing dirty paths\n var batchedOps = [];\n var newDirtyPaths = Path.levels(parentPath);\n batchDirtyPaths(editor, () => {\n var _loop = function _loop() {\n var path = parentPath.concat(index);\n index++;\n var op = {\n type: 'insert_node',\n path,\n node: _node\n };\n editor.apply(op);\n at = Path.next(at);\n batchedOps.push(op);\n if (!Text.isText) {\n newDirtyPaths.push(path);\n } else {\n newDirtyPaths.push(...Array.from(Node.nodes(_node), _ref => {\n var [, p] = _ref;\n return path.concat(p);\n }));\n }\n };\n for (var _node of nodes) {\n _loop();\n }\n }, () => {\n updateDirtyPaths(editor, newDirtyPaths, p => {\n var newPath = p;\n for (var op of batchedOps) {\n if (Path.operationCanTransformPath(op)) {\n newPath = Path.transform(newPath, op);\n if (!newPath) {\n return null;\n }\n }\n }\n return newPath;\n });\n });\n } else {\n for (var _node2 of nodes) {\n var _path = parentPath.concat(index);\n index++;\n editor.apply({\n type: 'insert_node',\n path: _path,\n node: _node2\n });\n at = Path.next(at);\n }\n }\n at = Path.previous(at);\n if (select) {\n var point = Editor.end(editor, at);\n if (point) {\n Transforms.select(editor, point);\n }\n }\n });\n};\n\nvar liftNodes = function liftNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!at) {\n return;\n }\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path.length < 2) {\n throw new Error(\"Cannot lift node at a path [\".concat(path, \"] because it has a depth of less than `2`.\"));\n }\n var parentNodeEntry = Editor.node(editor, Path.parent(path));\n var [parent, parentPath] = parentNodeEntry;\n var index = path[path.length - 1];\n var {\n length\n } = parent.children;\n if (length === 1) {\n var toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: toPath,\n voids\n });\n Transforms.removeNodes(editor, {\n at: parentPath,\n voids\n });\n } else if (index === 0) {\n Transforms.moveNodes(editor, {\n at: path,\n to: parentPath,\n voids\n });\n } else if (index === length - 1) {\n var _toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath,\n voids\n });\n } else {\n var splitPath = Path.next(path);\n var _toPath2 = Path.next(parentPath);\n Transforms.splitNodes(editor, {\n at: splitPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath2,\n voids\n });\n }\n }\n });\n};\n\nvar _excluded = [\"text\"],\n _excluded2 = [\"children\"];\nvar hasSingleChildNest = (editor, node) => {\n if (Element.isElement(node)) {\n var element = node;\n if (Editor.isVoid(editor, node)) {\n return true;\n } else if (element.children.length === 1) {\n return hasSingleChildNest(editor, element.children[0]);\n } else {\n return false;\n }\n } else if (Editor.isEditor(node)) {\n return false;\n } else {\n return true;\n }\n};\nvar mergeNodes = function mergeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection\n } = options;\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n match = n => parent.children.includes(n);\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n }\n var [current] = Editor.nodes(editor, {\n at,\n match,\n voids,\n mode\n });\n var prev = Editor.previous(editor, {\n at,\n match,\n voids,\n mode\n });\n if (!current || !prev) {\n return;\n }\n var [node, path] = current;\n var [prevNode, prevPath] = prev;\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n var newPath = Path.next(prevPath);\n var commonPath = Path.common(path, prevPath);\n var isPreviousSibling = Path.isSibling(path, prevPath);\n var levels = Array.from(Editor.levels(editor, {\n at: path\n }), _ref => {\n var [n] = _ref;\n return n;\n }).slice(commonPath.length).slice(0, -1);\n // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n var emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n)\n });\n var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n var properties;\n var position;\n // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n if (Text.isText(node) && Text.isText(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded);\n position = prevNode.text.length;\n properties = rest;\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded2);\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(\"Cannot merge the node at path [\".concat(path, \"] with the previous sibling because it is not the same kind: \").concat(Scrubber.stringify(node), \" \").concat(Scrubber.stringify(prevNode)));\n }\n // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, {\n at: path,\n to: newPath,\n voids\n });\n }\n // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n if (emptyRef) {\n Transforms.removeNodes(editor, {\n at: emptyRef.current,\n voids\n });\n }\n if (Editor.shouldMergeNodesRemovePrevNode(editor, prev, current)) {\n Transforms.removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties\n });\n }\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n};\n\nvar moveNodes = (editor, options) => {\n Editor.withoutNormalizing(editor, () => {\n var {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n var toRef = Editor.pathRef(editor, to);\n var targets = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(targets, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n var newPath = toRef.current;\n if (path.length !== 0) {\n editor.apply({\n type: 'move_node',\n path,\n newPath\n });\n }\n if (toRef.current && Path.isSibling(newPath, path) && Path.isAfter(newPath, path)) {\n // When performing a sibling move to a later index, the path at the destination is shifted\n // to before the insertion point instead of after. To ensure our group of nodes are inserted\n // in the correct order we increment toRef to account for that\n toRef.current = Path.next(toRef.current);\n }\n }\n toRef.unref();\n });\n};\n\nvar removeNodes = function removeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n var depths = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(depths, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path) {\n var [node] = Editor.node(editor, path);\n editor.apply({\n type: 'remove_node',\n path,\n node\n });\n }\n }\n });\n};\n\nvar setNodes = function setNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection,\n compare,\n merge\n } = options;\n var {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (split && Range.isRange(at)) {\n if (Range.isCollapsed(at) && Editor.leaf(editor, at.anchor)[0].text.length > 0) {\n // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n // set that won't get normalized away\n return;\n }\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n var [start, end] = Range.edges(at);\n var splitMode = mode === 'lowest' ? 'lowest' : 'highest';\n var endAtEndOfNode = Editor.isEnd(editor, end, end.path);\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode\n });\n var startAtStartOfNode = Editor.isStart(editor, start, start.path);\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp;\n }\n for (var [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n })) {\n var properties = {};\n // FIXME: is this correct?\n var newProperties = {};\n // You can't set properties on the editor node.\n if (path.length === 0) {\n continue;\n }\n var hasChanges = false;\n for (var k in props) {\n if (k === 'children' || k === 'text') {\n continue;\n }\n if (compare(props[k], node[k])) {\n hasChanges = true;\n // Omit new properties from the old properties list\n if (node.hasOwnProperty(k)) properties[k] = node[k];\n // Omit properties that have been removed from the new properties list\n if (merge) {\n if (props[k] != null) newProperties[k] = merge(node[k], props[k]);\n } else {\n if (props[k] != null) newProperties[k] = props[k];\n }\n }\n }\n if (hasChanges) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties\n });\n }\n }\n });\n};\n\n/**\n * Convert a range into a point by deleting it's content.\n */\nvar deleteRange = (editor, range) => {\n if (Range.isCollapsed(range)) {\n return range.anchor;\n } else {\n var [, end] = Range.edges(range);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at: range\n });\n return pointRef.unref();\n }\n};\nvar splitNodes = function splitNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection,\n height = 0,\n always = false\n } = options;\n if (match == null) {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (Range.isRange(at)) {\n at = deleteRange(editor, at);\n }\n // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n if (Path.isPath(at)) {\n var path = at;\n var point = Editor.point(editor, path);\n var [parent] = Editor.parent(editor, path);\n match = n => n === parent;\n height = point.path.length - path.length + 1;\n at = point;\n always = true;\n }\n if (!at) {\n return;\n }\n var beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward'\n });\n var afterRef;\n try {\n var [highest] = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n if (!highest) {\n return;\n }\n var voidMatch = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n var nudge = 0;\n if (!voids && voidMatch) {\n var [voidNode, voidPath] = voidMatch;\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n var after = Editor.after(editor, voidPath);\n if (!after) {\n var text = {\n text: ''\n };\n var afterPath = Path.next(voidPath);\n Transforms.insertNodes(editor, text, {\n at: afterPath,\n voids\n });\n after = Editor.point(editor, afterPath);\n }\n at = after;\n always = true;\n }\n var siblingHeight = at.path.length - voidPath.length;\n height = siblingHeight + 1;\n always = true;\n }\n afterRef = Editor.pointRef(editor, at);\n var depth = at.path.length - height;\n var [, highestPath] = highest;\n var lowestPath = at.path.slice(0, depth);\n var position = height === 0 ? at.offset : at.path[depth] + nudge;\n for (var [node, _path] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids\n })) {\n var split = false;\n if (_path.length < highestPath.length || _path.length === 0 || !voids && Element.isElement(node) && Editor.isVoid(editor, node)) {\n break;\n }\n var _point = beforeRef.current;\n var isEnd = Editor.isEnd(editor, _point, _path);\n if (always || !beforeRef || !Editor.isEdge(editor, _point, _path)) {\n split = true;\n var properties = Node.extractProps(node);\n editor.apply({\n type: 'split_node',\n path: _path,\n position,\n properties\n });\n }\n position = _path[_path.length - 1] + (split || isEnd ? 1 : 0);\n }\n if (options.at == null) {\n var _point2 = afterRef.current || Editor.end(editor, []);\n Transforms.select(editor, _point2);\n }\n } finally {\n var _afterRef;\n beforeRef.unref();\n (_afterRef = afterRef) === null || _afterRef === void 0 || _afterRef.unref();\n }\n });\n};\n\nvar unsetNodes = function unsetNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!Array.isArray(props)) {\n props = [props];\n }\n var obj = {};\n for (var key of props) {\n obj[key] = null;\n }\n Transforms.setNodes(editor, obj, options);\n};\n\nvar unwrapNodes = function unwrapNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null;\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n }\n // unwrapNode will call liftNode which does not support splitting the node when nested.\n // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n // that wrap target node. So we reverse the order.\n ).reverse();\n var _loop = function _loop() {\n var path = pathRef.unref();\n var [node] = Editor.node(editor, path);\n var range = Editor.range(editor, path);\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current, range);\n }\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids\n });\n };\n for (var pathRef of pathRefs) {\n _loop();\n }\n if (rangeRef) {\n rangeRef.unref();\n }\n });\n};\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar wrapNodes = function wrapNodes(editor, element) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at);\n } else if (editor.isInline(element)) {\n match = n => Element.isElement(n) && Editor.isInline(editor, n) || Text.isText(n);\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n }\n if (split && Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n Transforms.splitNodes(editor, {\n at: end,\n match,\n voids\n });\n Transforms.splitNodes(editor, {\n at: start,\n match,\n voids\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n var roots = Array.from(Editor.nodes(editor, {\n at,\n match: editor.isInline(element) ? n => Element.isElement(n) && Editor.isBlock(editor, n) : n => Editor.isEditor(n),\n mode: 'lowest',\n voids\n }));\n var _loop = function _loop() {\n var a = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at;\n if (!a) {\n return 0; // continue\n }\n var matches = Array.from(Editor.nodes(editor, {\n at: a,\n match,\n mode,\n voids\n }));\n if (matches.length > 0) {\n var [first] = matches;\n var last = matches[matches.length - 1];\n var [, firstPath] = first;\n var [, lastPath] = last;\n if (firstPath.length === 0 && lastPath.length === 0) {\n // if there's no matching parent - usually means the node is an editor - don't do anything\n return 0; // continue\n }\n var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath);\n var range = Editor.range(editor, firstPath, lastPath);\n var commonNodeEntry = Editor.node(editor, commonPath);\n var [commonNode] = commonNodeEntry;\n var depth = commonPath.length + 1;\n var wrapperPath = Path.next(lastPath.slice(0, depth));\n var wrapper = _objectSpread(_objectSpread({}, element), {}, {\n children: []\n });\n Transforms.insertNodes(editor, wrapper, {\n at: wrapperPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: range,\n match: n => Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids\n });\n }\n },\n _ret;\n for (var [, rootPath] of roots) {\n _ret = _loop();\n if (_ret === 0) continue;\n }\n });\n};\n\n/**\n * Create a new Slate `Editor` object.\n */\nvar createEditor = () => {\n var editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isElementReadOnly: () => false,\n isInline: () => false,\n isSelectable: () => true,\n isVoid: () => false,\n markableVoid: () => false,\n onChange: () => {},\n // Core\n apply: function apply$1() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return apply(editor, ...args);\n },\n // Editor\n addMark: function addMark$1() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return addMark(editor, ...args);\n },\n deleteBackward: function deleteBackward$1() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return deleteBackward(editor, ...args);\n },\n deleteForward: function deleteForward$1() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return deleteForward(editor, ...args);\n },\n deleteFragment: function deleteFragment$1() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n return deleteFragment(editor, ...args);\n },\n getFragment: function getFragment$1() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n return getFragment(editor, ...args);\n },\n insertBreak: function insertBreak$1() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n return insertBreak(editor, ...args);\n },\n insertSoftBreak: function insertSoftBreak$1() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n return insertSoftBreak(editor, ...args);\n },\n insertFragment: function insertFragment$1() {\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n return insertFragment(editor, ...args);\n },\n insertNode: function insertNode$1() {\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n return insertNode(editor, ...args);\n },\n insertText: function insertText$1() {\n for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n args[_key11] = arguments[_key11];\n }\n return insertText(editor, ...args);\n },\n normalizeNode: function normalizeNode$1() {\n for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n args[_key12] = arguments[_key12];\n }\n return normalizeNode(editor, ...args);\n },\n removeMark: function removeMark$1() {\n for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {\n args[_key13] = arguments[_key13];\n }\n return removeMark(editor, ...args);\n },\n getDirtyPaths: function getDirtyPaths$1() {\n for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {\n args[_key14] = arguments[_key14];\n }\n return getDirtyPaths(editor, ...args);\n },\n shouldNormalize: function shouldNormalize$1() {\n for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {\n args[_key15] = arguments[_key15];\n }\n return shouldNormalize(editor, ...args);\n },\n // Editor interface\n above: function above$1() {\n for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {\n args[_key16] = arguments[_key16];\n }\n return above(editor, ...args);\n },\n after: function after$1() {\n for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {\n args[_key17] = arguments[_key17];\n }\n return after(editor, ...args);\n },\n before: function before$1() {\n for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {\n args[_key18] = arguments[_key18];\n }\n return before(editor, ...args);\n },\n collapse: function collapse$1() {\n for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {\n args[_key19] = arguments[_key19];\n }\n return collapse(editor, ...args);\n },\n delete: function _delete() {\n for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {\n args[_key20] = arguments[_key20];\n }\n return deleteText(editor, ...args);\n },\n deselect: function deselect$1() {\n for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {\n args[_key21] = arguments[_key21];\n }\n return deselect(editor, ...args);\n },\n edges: function edges$1() {\n for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {\n args[_key22] = arguments[_key22];\n }\n return edges(editor, ...args);\n },\n elementReadOnly: function elementReadOnly$1() {\n for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {\n args[_key23] = arguments[_key23];\n }\n return elementReadOnly(editor, ...args);\n },\n end: function end$1() {\n for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {\n args[_key24] = arguments[_key24];\n }\n return end(editor, ...args);\n },\n first: function first$1() {\n for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {\n args[_key25] = arguments[_key25];\n }\n return first(editor, ...args);\n },\n fragment: function fragment$1() {\n for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {\n args[_key26] = arguments[_key26];\n }\n return fragment(editor, ...args);\n },\n getMarks: function getMarks() {\n for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {\n args[_key27] = arguments[_key27];\n }\n return marks(editor, ...args);\n },\n hasBlocks: function hasBlocks$1() {\n for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {\n args[_key28] = arguments[_key28];\n }\n return hasBlocks(editor, ...args);\n },\n hasInlines: function hasInlines$1() {\n for (var _len29 = arguments.length, args = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {\n args[_key29] = arguments[_key29];\n }\n return hasInlines(editor, ...args);\n },\n hasPath: function hasPath$1() {\n for (var _len30 = arguments.length, args = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {\n args[_key30] = arguments[_key30];\n }\n return hasPath(editor, ...args);\n },\n hasTexts: function hasTexts$1() {\n for (var _len31 = arguments.length, args = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {\n args[_key31] = arguments[_key31];\n }\n return hasTexts(editor, ...args);\n },\n insertNodes: function insertNodes$1() {\n for (var _len32 = arguments.length, args = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {\n args[_key32] = arguments[_key32];\n }\n return insertNodes(editor, ...args);\n },\n isBlock: function isBlock$1() {\n for (var _len33 = arguments.length, args = new Array(_len33), _key33 = 0; _key33 < _len33; _key33++) {\n args[_key33] = arguments[_key33];\n }\n return isBlock(editor, ...args);\n },\n isEdge: function isEdge$1() {\n for (var _len34 = arguments.length, args = new Array(_len34), _key34 = 0; _key34 < _len34; _key34++) {\n args[_key34] = arguments[_key34];\n }\n return isEdge(editor, ...args);\n },\n isEmpty: function isEmpty$1() {\n for (var _len35 = arguments.length, args = new Array(_len35), _key35 = 0; _key35 < _len35; _key35++) {\n args[_key35] = arguments[_key35];\n }\n return isEmpty(editor, ...args);\n },\n isEnd: function isEnd$1() {\n for (var _len36 = arguments.length, args = new Array(_len36), _key36 = 0; _key36 < _len36; _key36++) {\n args[_key36] = arguments[_key36];\n }\n return isEnd(editor, ...args);\n },\n isNormalizing: function isNormalizing$1() {\n for (var _len37 = arguments.length, args = new Array(_len37), _key37 = 0; _key37 < _len37; _key37++) {\n args[_key37] = arguments[_key37];\n }\n return isNormalizing(editor, ...args);\n },\n isStart: function isStart$1() {\n for (var _len38 = arguments.length, args = new Array(_len38), _key38 = 0; _key38 < _len38; _key38++) {\n args[_key38] = arguments[_key38];\n }\n return isStart(editor, ...args);\n },\n last: function last$1() {\n for (var _len39 = arguments.length, args = new Array(_len39), _key39 = 0; _key39 < _len39; _key39++) {\n args[_key39] = arguments[_key39];\n }\n return last(editor, ...args);\n },\n leaf: function leaf$1() {\n for (var _len40 = arguments.length, args = new Array(_len40), _key40 = 0; _key40 < _len40; _key40++) {\n args[_key40] = arguments[_key40];\n }\n return leaf(editor, ...args);\n },\n levels: function levels$1() {\n for (var _len41 = arguments.length, args = new Array(_len41), _key41 = 0; _key41 < _len41; _key41++) {\n args[_key41] = arguments[_key41];\n }\n return levels(editor, ...args);\n },\n liftNodes: function liftNodes$1() {\n for (var _len42 = arguments.length, args = new Array(_len42), _key42 = 0; _key42 < _len42; _key42++) {\n args[_key42] = arguments[_key42];\n }\n return liftNodes(editor, ...args);\n },\n mergeNodes: function mergeNodes$1() {\n for (var _len43 = arguments.length, args = new Array(_len43), _key43 = 0; _key43 < _len43; _key43++) {\n args[_key43] = arguments[_key43];\n }\n return mergeNodes(editor, ...args);\n },\n move: function move$1() {\n for (var _len44 = arguments.length, args = new Array(_len44), _key44 = 0; _key44 < _len44; _key44++) {\n args[_key44] = arguments[_key44];\n }\n return move(editor, ...args);\n },\n moveNodes: function moveNodes$1() {\n for (var _len45 = arguments.length, args = new Array(_len45), _key45 = 0; _key45 < _len45; _key45++) {\n args[_key45] = arguments[_key45];\n }\n return moveNodes(editor, ...args);\n },\n next: function next$1() {\n for (var _len46 = arguments.length, args = new Array(_len46), _key46 = 0; _key46 < _len46; _key46++) {\n args[_key46] = arguments[_key46];\n }\n return next(editor, ...args);\n },\n node: function node$1() {\n for (var _len47 = arguments.length, args = new Array(_len47), _key47 = 0; _key47 < _len47; _key47++) {\n args[_key47] = arguments[_key47];\n }\n return node(editor, ...args);\n },\n nodes: function nodes$1() {\n for (var _len48 = arguments.length, args = new Array(_len48), _key48 = 0; _key48 < _len48; _key48++) {\n args[_key48] = arguments[_key48];\n }\n return nodes(editor, ...args);\n },\n normalize: function normalize$1() {\n for (var _len49 = arguments.length, args = new Array(_len49), _key49 = 0; _key49 < _len49; _key49++) {\n args[_key49] = arguments[_key49];\n }\n return normalize(editor, ...args);\n },\n parent: function parent$1() {\n for (var _len50 = arguments.length, args = new Array(_len50), _key50 = 0; _key50 < _len50; _key50++) {\n args[_key50] = arguments[_key50];\n }\n return parent(editor, ...args);\n },\n path: function path$1() {\n for (var _len51 = arguments.length, args = new Array(_len51), _key51 = 0; _key51 < _len51; _key51++) {\n args[_key51] = arguments[_key51];\n }\n return path(editor, ...args);\n },\n pathRef: function pathRef$1() {\n for (var _len52 = arguments.length, args = new Array(_len52), _key52 = 0; _key52 < _len52; _key52++) {\n args[_key52] = arguments[_key52];\n }\n return pathRef(editor, ...args);\n },\n pathRefs: function pathRefs$1() {\n for (var _len53 = arguments.length, args = new Array(_len53), _key53 = 0; _key53 < _len53; _key53++) {\n args[_key53] = arguments[_key53];\n }\n return pathRefs(editor, ...args);\n },\n point: function point$1() {\n for (var _len54 = arguments.length, args = new Array(_len54), _key54 = 0; _key54 < _len54; _key54++) {\n args[_key54] = arguments[_key54];\n }\n return point(editor, ...args);\n },\n pointRef: function pointRef$1() {\n for (var _len55 = arguments.length, args = new Array(_len55), _key55 = 0; _key55 < _len55; _key55++) {\n args[_key55] = arguments[_key55];\n }\n return pointRef(editor, ...args);\n },\n pointRefs: function pointRefs$1() {\n for (var _len56 = arguments.length, args = new Array(_len56), _key56 = 0; _key56 < _len56; _key56++) {\n args[_key56] = arguments[_key56];\n }\n return pointRefs(editor, ...args);\n },\n positions: function positions$1() {\n for (var _len57 = arguments.length, args = new Array(_len57), _key57 = 0; _key57 < _len57; _key57++) {\n args[_key57] = arguments[_key57];\n }\n return positions(editor, ...args);\n },\n previous: function previous$1() {\n for (var _len58 = arguments.length, args = new Array(_len58), _key58 = 0; _key58 < _len58; _key58++) {\n args[_key58] = arguments[_key58];\n }\n return previous(editor, ...args);\n },\n range: function range$1() {\n for (var _len59 = arguments.length, args = new Array(_len59), _key59 = 0; _key59 < _len59; _key59++) {\n args[_key59] = arguments[_key59];\n }\n return range(editor, ...args);\n },\n rangeRef: function rangeRef$1() {\n for (var _len60 = arguments.length, args = new Array(_len60), _key60 = 0; _key60 < _len60; _key60++) {\n args[_key60] = arguments[_key60];\n }\n return rangeRef(editor, ...args);\n },\n rangeRefs: function rangeRefs$1() {\n for (var _len61 = arguments.length, args = new Array(_len61), _key61 = 0; _key61 < _len61; _key61++) {\n args[_key61] = arguments[_key61];\n }\n return rangeRefs(editor, ...args);\n },\n removeNodes: function removeNodes$1() {\n for (var _len62 = arguments.length, args = new Array(_len62), _key62 = 0; _key62 < _len62; _key62++) {\n args[_key62] = arguments[_key62];\n }\n return removeNodes(editor, ...args);\n },\n select: function select$1() {\n for (var _len63 = arguments.length, args = new Array(_len63), _key63 = 0; _key63 < _len63; _key63++) {\n args[_key63] = arguments[_key63];\n }\n return select(editor, ...args);\n },\n setNodes: function setNodes$1() {\n for (var _len64 = arguments.length, args = new Array(_len64), _key64 = 0; _key64 < _len64; _key64++) {\n args[_key64] = arguments[_key64];\n }\n return setNodes(editor, ...args);\n },\n setNormalizing: function setNormalizing$1() {\n for (var _len65 = arguments.length, args = new Array(_len65), _key65 = 0; _key65 < _len65; _key65++) {\n args[_key65] = arguments[_key65];\n }\n return setNormalizing(editor, ...args);\n },\n setPoint: function setPoint$1() {\n for (var _len66 = arguments.length, args = new Array(_len66), _key66 = 0; _key66 < _len66; _key66++) {\n args[_key66] = arguments[_key66];\n }\n return setPoint(editor, ...args);\n },\n setSelection: function setSelection$1() {\n for (var _len67 = arguments.length, args = new Array(_len67), _key67 = 0; _key67 < _len67; _key67++) {\n args[_key67] = arguments[_key67];\n }\n return setSelection(editor, ...args);\n },\n splitNodes: function splitNodes$1() {\n for (var _len68 = arguments.length, args = new Array(_len68), _key68 = 0; _key68 < _len68; _key68++) {\n args[_key68] = arguments[_key68];\n }\n return splitNodes(editor, ...args);\n },\n start: function start$1() {\n for (var _len69 = arguments.length, args = new Array(_len69), _key69 = 0; _key69 < _len69; _key69++) {\n args[_key69] = arguments[_key69];\n }\n return start(editor, ...args);\n },\n string: function string$1() {\n for (var _len70 = arguments.length, args = new Array(_len70), _key70 = 0; _key70 < _len70; _key70++) {\n args[_key70] = arguments[_key70];\n }\n return string(editor, ...args);\n },\n unhangRange: function unhangRange$1() {\n for (var _len71 = arguments.length, args = new Array(_len71), _key71 = 0; _key71 < _len71; _key71++) {\n args[_key71] = arguments[_key71];\n }\n return unhangRange(editor, ...args);\n },\n unsetNodes: function unsetNodes$1() {\n for (var _len72 = arguments.length, args = new Array(_len72), _key72 = 0; _key72 < _len72; _key72++) {\n args[_key72] = arguments[_key72];\n }\n return unsetNodes(editor, ...args);\n },\n unwrapNodes: function unwrapNodes$1() {\n for (var _len73 = arguments.length, args = new Array(_len73), _key73 = 0; _key73 < _len73; _key73++) {\n args[_key73] = arguments[_key73];\n }\n return unwrapNodes(editor, ...args);\n },\n void: function _void() {\n for (var _len74 = arguments.length, args = new Array(_len74), _key74 = 0; _key74 < _len74; _key74++) {\n args[_key74] = arguments[_key74];\n }\n return getVoid(editor, ...args);\n },\n withoutNormalizing: function withoutNormalizing$1() {\n for (var _len75 = arguments.length, args = new Array(_len75), _key75 = 0; _key75 < _len75; _key75++) {\n args[_key75] = arguments[_key75];\n }\n return withoutNormalizing(editor, ...args);\n },\n wrapNodes: function wrapNodes$1() {\n for (var _len76 = arguments.length, args = new Array(_len76), _key76 = 0; _key76 < _len76; _key76++) {\n args[_key76] = arguments[_key76];\n }\n return wrapNodes(editor, ...args);\n },\n shouldMergeNodesRemovePrevNode: function shouldMergeNodesRemovePrevNode$1() {\n for (var _len77 = arguments.length, args = new Array(_len77), _key77 = 0; _key77 < _len77; _key77++) {\n args[_key77] = arguments[_key77];\n }\n return shouldMergeNodesRemovePrevNode(editor, ...args);\n }\n };\n return editor;\n};\n\nexport { Editor, Element, Location, Node, Operation, Path, PathRef, Point, PointRef, Range, RangeRef, Scrubber, Span, Text, Transforms, above, addMark, after, apply, before, collapse, createEditor, deleteBackward, deleteForward, deleteFragment, deleteText, deselect, edges, elementReadOnly, end, first, fragment, getDirtyPaths, getFragment, getVoid, hasBlocks, hasInlines, hasPath, hasTexts, insertBreak, insertFragment, insertNode, insertNodes, insertSoftBreak, insertText, isBlock, isEdge, isEditor, isEmpty, isEnd, isNormalizing, isStart, last, leaf, levels, liftNodes, marks, mergeNodes, move, moveNodes, next, node, nodes, normalize, normalizeNode, parent, path, pathRef, pathRefs, point, pointRef, pointRefs, positions, previous, range, rangeRef, rangeRefs, removeMark, removeNodes, select, setNodes, setNormalizing, setPoint, setSelection, shouldMergeNodesRemovePrevNode, shouldNormalize, splitNodes, start, string, unhangRange, unsetNodes, unwrapNodes, withoutNormalizing, wrapNodes };\n//# sourceMappingURL=index.es.js.map\n","// src/create-editor.ts\nimport { bindFirst } from \"@udecode/utils\";\nimport {\n apply,\n createEditor as createSlateEditor,\n getDirtyPaths,\n hasPath,\n insertSoftBreak,\n normalizeNode,\n setNormalizing,\n shouldMergeNodesRemovePrevNode,\n shouldNormalize\n} from \"slate\";\n\n// src/interfaces/element.ts\nimport { Element as SlateElement } from \"slate\";\nvar ElementApi = {\n ...SlateElement\n};\n\n// src/interfaces/location-ref.ts\nimport { PointRef as SlatePointRef, RangeRef as SlateRangeRef } from \"slate\";\n\n// src/interfaces/path.ts\nimport { Path as SlatePath } from \"slate\";\nvar PathApi = {\n ...SlatePath,\n child: (path2, index) => path2.concat([index]),\n firstChild: (path2) => PathApi.child(path2, 0),\n lastIndex: (path2) => path2.at(-1) ?? -1,\n next: (path2) => {\n try {\n return SlatePath.next(path2);\n } catch {\n return path2;\n }\n },\n parent: (path2) => {\n try {\n return SlatePath.parent(path2);\n } catch {\n return path2;\n }\n },\n previous: (path2) => {\n if (path2.length === 0) return;\n const last2 = path2.at(-1);\n if (last2 <= 0) return;\n return path2.slice(0, -1).concat(last2 - 1);\n }\n};\n\n// src/interfaces/location-ref.ts\nvar PathRefApi = {\n transform(ref, op) {\n const { affinity, current } = ref;\n if (current == null) {\n return;\n }\n const path2 = PathApi.transform(current, op, { affinity });\n ref.current = path2;\n if (path2 == null) {\n ref.unref();\n }\n }\n};\nvar PointRefApi = SlatePointRef;\nvar RangeRefApi = SlateRangeRef;\n\n// src/interfaces/location.ts\nimport { Location as SlateLocation, Span as SlateSpan } from \"slate\";\n\n// src/interfaces/node.ts\nimport { Node as SlateNode } from \"slate\";\n\n// src/internal/editor-extension/node-extension.ts\nimport { isEditor } from \"slate\";\nvar NodeExtension = {\n *children(root, path2, options = {}) {\n const { from, reverse = false, to } = options;\n const ancestor = NodeApi.ancestor(root, path2);\n if (!ancestor) return;\n const { children } = ancestor;\n let index = reverse ? children.length - 1 : 0;\n const endIndex = to ?? (reverse ? 0 : children.length);\n if (from !== void 0) {\n index = from;\n }\n while (reverse ? index >= endIndex : index < endIndex) {\n const child = NodeApi.child(ancestor, index);\n const childPath = path2.concat(index);\n yield [child, childPath];\n index = reverse ? index - 1 : index + 1;\n }\n },\n firstChild(root, path2) {\n const children = NodeApi.children(root, path2);\n const firstChild = children.next().value;\n return firstChild;\n },\n firstText(root, options) {\n const texts = NodeApi.texts(root, options);\n const firstText = texts.next().value;\n return firstText;\n },\n isEditor: (value) => isEditor(value),\n isLastChild(root, path2) {\n if (path2.length === 0) return false;\n const parent2 = NodeApi.parent(root, path2);\n if (!parent2) return false;\n const index = path2.at(-1);\n return index === parent2.children.length - 1;\n },\n lastChild(root, path2) {\n const children = NodeApi.children(root, path2, { reverse: true });\n const lastChild = children.next().value;\n return lastChild;\n }\n};\n\n// src/interfaces/text.ts\nimport {\n Text as SlateText\n} from \"slate\";\nvar TextApi = SlateText;\n\n// src/interfaces/node.ts\nvar NodeApi = {\n ...SlateNode,\n ancestor: (...args) => {\n try {\n return SlateNode.ancestor(...args);\n } catch {\n }\n },\n common: (...args) => {\n try {\n return SlateNode.common(...args);\n } catch {\n }\n },\n descendant: (...args) => {\n try {\n return SlateNode.descendant(...args);\n } catch {\n }\n },\n first: (...args) => {\n try {\n return SlateNode.first(...args);\n } catch {\n }\n },\n fragment: (...args) => {\n try {\n return SlateNode.fragment(...args);\n } catch {\n return [];\n }\n },\n get: (...args) => {\n try {\n return SlateNode.get(...args);\n } catch {\n }\n },\n hasSingleChild: (node2) => {\n if (TextApi.isText(node2)) return true;\n return node2.children.length === 1 && NodeApi.hasSingleChild(node2.children[0]);\n },\n isAncestor: ElementApi.isAncestor,\n isDescendant: (node2) => ElementApi.isElement(node2) || TextApi.isText(node2),\n last: (...args) => {\n try {\n return SlateNode.last(...args);\n } catch {\n }\n },\n leaf: (...args) => {\n try {\n return SlateNode.leaf(...args);\n } catch {\n }\n },\n parent: (...args) => {\n try {\n return SlateNode.parent(...args);\n } catch {\n }\n },\n ...NodeExtension\n};\n\n// src/interfaces/location.ts\nvar LocationApi = {\n ...SlateLocation,\n isAt: (value) => LocationApi.isLocation(value) || NodeApi.isNode(value)\n};\nvar SpanApi = SlateSpan;\n\n// src/interfaces/operation.ts\nimport { Operation as SlateOperation } from \"slate\";\nvar OperationApi = SlateOperation;\n\n// src/interfaces/point.ts\nimport { Point as SlatePoint } from \"slate\";\n\n// src/interfaces/range.ts\nimport { Range as SlateRange } from \"slate\";\nvar RangeApi = {\n ...SlateRange,\n contains: (range2, target) => {\n const [targetStart, targetEnd] = RangeApi.edges(target);\n return RangeApi.includes(range2, targetStart) && RangeApi.includes(range2, targetEnd);\n },\n isCollapsed: (range2) => !!range2 && SlateRange.isCollapsed(range2),\n isExpanded: (range2) => !!range2 && SlateRange.isExpanded(range2)\n};\n\n// src/interfaces/point.ts\nvar PointApi = {\n ...SlatePoint,\n get: (at, { focus: focus2 } = {}) => {\n let point2;\n if (RangeApi.isRange(at)) point2 = focus2 ? at.focus : at.anchor;\n if (PointApi.isPoint(at)) point2 = at;\n if (PathApi.isPath(at)) point2 = { offset: 0, path: at };\n return point2;\n }\n};\n\n// src/internal/dom-editor/blur.ts\nimport { DOMEditor } from \"slate-dom\";\nvar blur = (editor) => DOMEditor.blur(editor);\n\n// src/internal/dom-editor/deselectDOM.ts\nimport { DOMEditor as DOMEditor2 } from \"slate-dom\";\nvar deselectDOM = (editor) => DOMEditor2.deselect(editor);\n\n// src/internal/dom-editor/findDocumentOrShadowRoot.ts\nimport { DOMEditor as DOMEditor3 } from \"slate-dom\";\nvar findDocumentOrShadowRoot = (editor) => {\n try {\n return DOMEditor3.findDocumentOrShadowRoot(editor);\n } catch {\n }\n};\n\n// src/internal/dom-editor/findEventRange.ts\nimport { DOMEditor as DOMEditor4 } from \"slate-dom\";\nvar findEventRange = (editor, event) => {\n try {\n return DOMEditor4.findEventRange(editor, event);\n } catch {\n }\n};\n\n// src/internal/dom-editor/findKey.ts\nimport { DOMEditor as DOMEditor5 } from \"slate-dom\";\nvar findKey = (editor, node2) => {\n try {\n return DOMEditor5.findKey(editor, node2);\n } catch {\n }\n};\n\n// src/internal/dom-editor/findPath.ts\nimport { DOMEditor as DOMEditor6 } from \"slate-dom\";\nvar findPath = (editor, node2, options) => {\n const findNodePath = () => {\n const nodeEntry = editor.api.node({\n ...options,\n at: [],\n match: (n) => n === node2\n });\n return nodeEntry?.[1];\n };\n if (options) {\n return findNodePath();\n }\n try {\n return DOMEditor6.findPath(editor, node2);\n } catch {\n return findNodePath();\n }\n};\n\n// src/internal/dom-editor/focus.ts\nimport { DOMEditor as DOMEditor7 } from \"slate-dom\";\nvar focus = (editor, { at, edge, retries = 5 } = {}) => {\n const reselect = (at2) => {\n editor.tf.withoutNormalizing(() => {\n editor.tf.deselect();\n editor.tf.select(at2);\n });\n };\n if (edge) {\n const target = edge === \"startEditor\" || edge === \"endEditor\" ? [] : at ?? editor.selection;\n if (target) {\n reselect(\n edge === \"start\" ? editor.api.start(target) : editor.api.end(target)\n );\n }\n } else if (at) {\n reselect(at);\n }\n try {\n DOMEditor7.focus(editor, { retries });\n } catch (error) {\n console.error(error);\n }\n};\n\n// src/internal/dom-editor/getWindow.ts\nimport { DOMEditor as DOMEditor8 } from \"slate-dom\";\nvar getWindow = (editor) => {\n try {\n return DOMEditor8.getWindow(editor);\n } catch {\n }\n};\n\n// src/internal/dom-editor/hasDOMNode.ts\nimport { DOMEditor as DOMEditor9 } from \"slate-dom\";\nvar hasDOMNode = (editor, target, options) => {\n try {\n return DOMEditor9.hasDOMNode(editor, target, options);\n } catch {\n }\n return false;\n};\n\n// src/internal/dom-editor/hasEditableTarget.ts\nimport { DOMEditor as DOMEditor10 } from \"slate-dom\";\nvar hasEditableTarget = (editor, target) => {\n try {\n return DOMEditor10.hasEditableTarget(editor, target);\n } catch {\n }\n return false;\n};\n\n// src/internal/dom-editor/hasRange.ts\nimport { DOMEditor as DOMEditor11 } from \"slate-dom\";\nvar hasRange = (editor, range2) => {\n try {\n return DOMEditor11.hasRange(editor, range2);\n } catch {\n }\n return false;\n};\n\n// src/internal/dom-editor/hasSelectableTarget.ts\nimport { DOMEditor as DOMEditor12 } from \"slate-dom\";\nvar hasSelectableTarget = (editor, target) => {\n try {\n return DOMEditor12.hasSelectableTarget(editor, target);\n } catch {\n }\n return false;\n};\n\n// src/internal/dom-editor/hasTarget.ts\nimport { DOMEditor as DOMEditor13 } from \"slate-dom\";\nvar hasTarget = (editor, target) => {\n try {\n return DOMEditor13.hasTarget(editor, target);\n } catch {\n }\n return false;\n};\n\n// src/internal/dom-editor/isComposing.ts\nimport { DOMEditor as DOMEditor14 } from \"slate-dom\";\nvar isComposing = (editor) => DOMEditor14.isComposing(editor);\n\n// src/internal/dom-editor/isFocused.ts\nimport { DOMEditor as DOMEditor15 } from \"slate-dom\";\nvar isFocused = (editor) => DOMEditor15.isFocused(editor);\n\n// src/internal/dom-editor/isReadOnly.ts\nimport { DOMEditor as DOMEditor16 } from \"slate-dom\";\nvar isReadOnly = (editor) => DOMEditor16.isReadOnly(editor);\n\n// src/internal/dom-editor/isTargetInsideNonReadonlyVoid.ts\nimport { DOMEditor as DOMEditor17 } from \"slate-dom\";\nvar isTargetInsideNonReadonlyVoid = (editor, target) => {\n try {\n return DOMEditor17.isTargetInsideNonReadonlyVoid(editor, target);\n } catch {\n }\n return false;\n};\n\n// src/internal/dom-editor/toDOMNode.ts\nimport { DOMEditor as DOMEditor18 } from \"slate-dom\";\nvar toDOMNode = (editor, node2) => {\n try {\n return DOMEditor18.toDOMNode(editor, node2);\n } catch {\n }\n};\n\n// src/internal/dom-editor/toDOMPoint.ts\nimport { DOMEditor as DOMEditor19 } from \"slate-dom\";\nvar toDOMPoint = (editor, point2) => {\n try {\n return DOMEditor19.toDOMPoint(editor, point2);\n } catch {\n }\n};\n\n// src/internal/dom-editor/toDOMRange.ts\nimport { DOMEditor as DOMEditor20 } from \"slate-dom\";\nvar toDOMRange = (editor, range2) => {\n try {\n return DOMEditor20.toDOMRange(editor, range2);\n } catch {\n }\n};\n\n// src/internal/dom-editor/toSlateNode.ts\nimport { DOMEditor as DOMEditor21 } from \"slate-dom\";\nvar toSlateNode = (editor, domNode) => {\n try {\n return DOMEditor21.toSlateNode(editor, domNode);\n } catch {\n }\n};\n\n// src/internal/dom-editor/toSlatePoint.ts\nimport { DOMEditor as DOMEditor22 } from \"slate-dom\";\nvar toSlatePoint = (editor, domPoint, options) => {\n try {\n return DOMEditor22.toSlatePoint(editor, domPoint, options);\n } catch {\n }\n};\n\n// src/internal/dom-editor/toSlateRange.ts\nimport { DOMEditor as DOMEditor23 } from \"slate-dom\";\nvar toSlateRange = (editor, domRange, options) => {\n try {\n return DOMEditor23.toSlateRange(editor, domRange, options);\n } catch {\n }\n};\n\n// src/internal/editor/above.ts\nimport { above as aboveBase } from \"slate\";\n\n// src/utils/getAt.ts\nimport isPlainObject from \"lodash/isPlainObject.js\";\nvar getAt = (editor, at) => {\n if (at && isPlainObject(at) && NodeApi.isNode(at)) {\n return editor.api.findPath(at);\n }\n return at ?? void 0;\n};\n\n// src/utils/match.ts\nfunction castArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nvar match = (obj, path2, predicate) => {\n if (!predicate) return true;\n if (typeof predicate === \"object\") {\n return Object.entries(predicate).every(([key, value]) => {\n const values = castArray(value);\n return values.includes(obj[key]);\n });\n }\n return predicate(obj, path2);\n};\nvar getMatch = (editor, { id, block: block2, empty, match: matchObjOrFn, text } = {}) => {\n let hasMatch = false;\n let matchFn = () => true;\n if (text !== void 0) {\n hasMatch = true;\n matchFn = combineMatch(matchFn, (n) => TextApi.isText(n) === text);\n }\n if (empty !== void 0) {\n hasMatch = true;\n matchFn = combineMatch(matchFn, (n) => {\n return TextApi.isText(n) ? n.text.length > 0 === !empty : editor.api.isEmpty(n) === empty;\n });\n }\n if (block2 !== void 0) {\n hasMatch = true;\n matchFn = combineMatch(matchFn, (n) => editor.api.isBlock(n) === block2);\n }\n if (id !== void 0) {\n hasMatch = true;\n matchFn = combineMatch(matchFn, (n) => {\n return id === true && !!n.id || n.id === id;\n });\n }\n if (typeof matchObjOrFn === \"object\") {\n hasMatch = true;\n matchFn = combineMatch(matchFn, (n, p) => match(n, p, matchObjOrFn));\n } else if (typeof matchObjOrFn === \"function\") {\n hasMatch = true;\n matchFn = combineMatch(matchFn, matchObjOrFn);\n }\n return hasMatch ? matchFn : void 0;\n};\nvar getQueryOptions = (editor, { id, empty, match: match2, text, ...options } = {}) => {\n const { at, block: block2 } = options;\n return {\n ...options,\n at: getAt(editor, at),\n match: getMatch(editor, { id, block: block2, empty, match: match2, text })\n };\n};\nvar combineMatch = (match1, match2) => {\n return (node2, path2) => {\n return match1(node2, path2) && (!match2 || match2(node2, path2));\n };\n};\nvar combineMatchOptions = (editor, match1, options) => {\n return (node2, path2) => {\n const match2 = getMatch(editor, options);\n return (!match1 || match1(node2, path2)) && (!match2 || match2(node2, path2));\n };\n};\n\n// src/internal/editor/above.ts\nvar above = (editor, options) => {\n try {\n return aboveBase(editor, getQueryOptions(editor, options));\n } catch (error) {\n return void 0;\n }\n};\n\n// src/internal/editor/addMark.ts\nimport { addMark as addMarkBase } from \"slate\";\nvar addMark = (editor, key, value) => addMarkBase(editor, key, value);\n\n// src/internal/editor/createPathRef.ts\nimport { pathRef } from \"slate\";\nvar createPathRef = (editor, at, options) => pathRef(editor, at, options);\n\n// src/internal/editor/createPointRef.ts\nimport { pointRef } from \"slate\";\nvar createPointRef = (editor, point2, options) => pointRef(editor, point2, options);\n\n// src/internal/editor/createRangeRef.ts\nimport { rangeRef } from \"slate\";\nvar createRangeRef = (editor, range2, options) => rangeRef(editor, range2, options);\n\n// src/internal/editor/deleteBackward.ts\nimport { deleteBackward as deleteBackwardBase } from \"slate\";\nvar deleteBackward = (editor, unit = \"character\") => {\n deleteBackwardBase(editor, unit);\n};\n\n// src/internal/editor/deleteForward.ts\nimport { deleteForward as deleteForwardBase } from \"slate\";\nvar deleteForward = (editor, unit = \"character\") => {\n deleteForwardBase(editor, unit);\n};\n\n// src/internal/editor/deleteFragment.ts\nimport { deleteFragment as deleteFragmentBase } from \"slate\";\nvar deleteFragment = (editor, options) => deleteFragmentBase(editor, options);\n\n// src/internal/editor/editor-node.ts\nimport { node as nodeBase } from \"slate\";\n\n// src/utils/assignLegacyTransforms.ts\nvar LEGACY_TRANSFORMS = /* @__PURE__ */ new Set([\n \"addMark\",\n \"apply\",\n \"blur\",\n \"collapse\",\n \"delete\",\n \"deleteBackward\",\n \"deleteForward\",\n \"deleteFragment\",\n \"deselect\",\n \"deselectDOM\",\n \"focus\",\n \"insertBreak\",\n \"insertData\",\n \"insertFragment\",\n \"insertFragmentData\",\n \"insertNode\",\n \"insertNodes\",\n \"insertSoftBreak\",\n \"insertText\",\n \"insertTextData\",\n \"liftNodes\",\n \"mergeNodes\",\n \"move\",\n \"moveNodes\",\n \"normalize\",\n \"normalizeNode\",\n \"redo\",\n \"removeMark\",\n \"removeNodes\",\n \"select\",\n \"setFragmentData\",\n \"setNodes\",\n \"setPoint\",\n \"setSelection\",\n \"setSplittingOnce\",\n \"splitNodes\",\n \"undo\",\n \"unsetNodes\",\n \"unwrapNodes\",\n \"withMerging\",\n \"withNewBatch\",\n \"withoutMerging\",\n \"withoutNormalizing\",\n \"withoutSaving\",\n \"wrapNodes\",\n \"writeHistory\"\n]);\nvar LEGACY_API = /* @__PURE__ */ new Set([\n \"above\",\n \"after\",\n \"before\",\n \"edges\",\n \"elementReadOnly\",\n \"end\",\n \"findDocumentOrShadowRoot\",\n \"findEventRange\",\n \"findKey\",\n \"findPath\",\n \"first\",\n \"fragment\",\n \"getDirtyPaths\",\n \"getFragment\",\n \"getMarks\",\n \"getWindow\",\n \"hasBlocks\",\n \"hasDOMNode\",\n \"hasEditableTarget\",\n \"hasInlines\",\n \"hasPath\",\n \"hasRange\",\n \"hasSelectableTarget\",\n \"hasTarget\",\n \"hasTexts\",\n \"highestBlock\",\n \"isBlock\",\n \"isComposing\",\n \"isEdge\",\n \"isElementReadOnly\",\n \"isEmpty\",\n \"isEnd\",\n \"isFocused\",\n \"isInline\",\n \"isMerging\",\n \"isNormalizing\",\n \"isReadOnly\",\n \"isSaving\",\n \"isSelectable\",\n \"isSplittingOnce\",\n \"isStart\",\n \"isTargetInsideNonReadonlyVoid\",\n \"isVoid\",\n \"last\",\n \"leaf\",\n \"levels\",\n \"markableVoid\",\n // 'marks',\n \"next\",\n \"node\",\n \"nodes\",\n \"normalize\",\n \"onChange\",\n \"operations\",\n \"parent\",\n \"path\",\n \"pathRef\",\n \"pathRefs\",\n \"point\",\n \"pointRef\",\n \"pointRefs\",\n \"positions\",\n \"previous\",\n \"range\",\n \"rangeRef\",\n \"rangeRefs\",\n \"selection\",\n \"setNormalizing\",\n \"shouldMergeNodesRemovePrevNode\",\n \"shouldNormalize\",\n \"start\",\n \"string\",\n \"toDOMNode\",\n \"toDOMPoint\",\n \"toDOMRange\",\n \"toSlateNode\",\n \"toSlatePoint\",\n \"toSlateRange\",\n \"unhangRange\",\n \"void\"\n]);\nvar assignLegacyTransforms = (editor, transforms) => {\n if (!transforms) return;\n const e = editor;\n const legacyTransforms = Object.entries(transforms).reduce(\n (acc, [key, value]) => {\n if (LEGACY_TRANSFORMS.has(key)) {\n acc[key] = value;\n }\n return acc;\n },\n {}\n );\n Object.assign(e, legacyTransforms);\n};\nvar assignLegacyApi = (editor, api) => {\n if (!api) return;\n const e = editor;\n const legacyApi = Object.entries(api).reduce(\n (acc, [key, value]) => {\n if (LEGACY_API.has(key)) {\n acc[key] = value;\n }\n return acc;\n },\n {}\n );\n Object.assign(e, legacyApi);\n if (api.marks) {\n e.getMarks = api.marks;\n }\n};\nvar syncLegacyMethods = (editor) => {\n const e = editor;\n LEGACY_API.forEach((key) => {\n if (e[key]) {\n if (key === \"getMarks\") {\n e.api.marks = e.getMarks;\n } else {\n e.api[key] = e[key];\n }\n }\n });\n LEGACY_TRANSFORMS.forEach((key) => {\n if (e[key]) {\n e.tf[key] = e[key];\n }\n });\n};\n\n// src/utils/deleteMerge.ts\nimport { Editor as EditorInterface } from \"slate\";\n\n// src/internal/editor/getEndPoint.ts\nimport { end } from \"slate\";\nvar getEndPoint = (editor, at, options = {}) => {\n try {\n if (options.previous) {\n const prevEntry = editor.api.previous({ at: getAt(editor, at) });\n if (!prevEntry) return;\n return end(editor, prevEntry[1]);\n }\n return end(editor, getAt(editor, at));\n } catch {\n }\n};\n\n// src/internal/editor/getLeafNode.ts\nimport { leaf } from \"slate\";\nvar getLeafNode = (editor, at, options) => {\n try {\n return leaf(editor, getAt(editor, at), options);\n } catch {\n }\n};\n\n// src/internal/editor/getPointAfter.ts\nimport { after } from \"slate\";\nvar getPointAfter = (editor, at, options) => {\n try {\n return after(editor, getAt(editor, at), options);\n } catch {\n }\n};\n\n// src/internal/editor/getPointBefore.ts\nimport castArray2 from \"lodash/castArray.js\";\nimport map from \"lodash/map.js\";\nimport { before as beforeBase } from \"slate\";\nvar getPointBefore = (editor, at, options) => {\n if (!options || !options.match && !options.matchString) {\n try {\n return beforeBase(editor, getAt(editor, at), options);\n } catch {\n }\n return;\n }\n const unitOffset = !options.unit || options.unit === \"offset\";\n const matchStrings = options.matchString ? castArray2(options.matchString) : [\"\"];\n const matchByRegex = options.matchByRegex ?? false;\n let point2;\n matchStrings.some((matchString) => {\n let beforeAt = at;\n let previousBeforePoint = editor.api.point(at, { edge: \"end\" });\n const stackLength = matchString.length + 1;\n const stack = Array.from({ length: stackLength });\n let count = 0;\n while (true) {\n const beforePoint = beforeBase(\n editor,\n getAt(editor, beforeAt),\n options\n );\n if (!beforePoint) {\n if (options.matchBlockStart) {\n point2 = previousBeforePoint;\n }\n return;\n }\n if (editor.api.isAt({\n at: {\n anchor: beforePoint,\n focus: previousBeforePoint\n },\n blocks: true\n })) {\n if (options.matchBlockStart) {\n point2 = previousBeforePoint;\n }\n return;\n }\n const beforeString = editor.api.string({\n anchor: beforePoint,\n focus: previousBeforePoint\n });\n let beforeStringToMatch = beforeString;\n if (unitOffset && stackLength) {\n stack.unshift({\n point: beforePoint,\n text: beforeString\n });\n stack.pop();\n beforeStringToMatch = map(stack.slice(0, -1), \"text\").join(\"\");\n }\n const isMatched = matchByRegex ? !!matchString.match(beforeStringToMatch) : beforeStringToMatch === matchString;\n if (isMatched || options.match?.({ at, beforePoint, beforeString: beforeStringToMatch })) {\n if (options.afterMatch) {\n if (stackLength && unitOffset) {\n point2 = stack.at(-1)?.point;\n return !!point2;\n }\n point2 = previousBeforePoint;\n return true;\n }\n point2 = beforePoint;\n return true;\n }\n previousBeforePoint = beforePoint;\n beforeAt = beforePoint;\n count += 1;\n if (!options.skipInvalid && (!matchString || count >= matchString.length))\n return;\n }\n });\n return point2;\n};\n\n// src/internal/editor/getStartPoint.ts\nimport { start } from \"slate\";\nvar getStartPoint = (editor, at, options = {}) => {\n try {\n if (options.next) {\n const nextEntry = editor.api.next({ at: getAt(editor, at) });\n if (!nextEntry) return;\n return start(editor, nextEntry[1]);\n }\n return start(editor, getAt(editor, at));\n } catch {\n }\n};\n\n// src/internal/editor/getVoidNode.ts\nimport { getVoid } from \"slate\";\nvar getVoidNode = (editor, options) => getVoid(editor, {\n ...options,\n at: getAt(editor, options?.at)\n});\n\n// src/internal/editor/isBlock.ts\nimport { isBlock as isBlockBase } from \"slate\";\nvar isBlock = (editor, value) => ElementApi.isElement(value) && isBlockBase(editor, value);\n\n// src/internal/editor/nodes.ts\nfunction* nodes(editor, options = {}) {\n options = getQueryOptions(editor, options);\n const {\n ignoreNonSelectable = false,\n mode = \"all\",\n reverse = false,\n universal = false,\n voids = false\n } = options;\n const at = getAt(editor, options.at) ?? editor.selection;\n let match2 = getMatch(editor, options);\n if (!match2) {\n match2 = () => true;\n }\n if (!at) {\n return;\n }\n let from;\n let to;\n if (SpanApi.isSpan(at)) {\n from = at[0];\n to = at[1];\n } else {\n const first2 = editor.api.path(at, { edge: \"start\" });\n const last2 = editor.api.path(at, { edge: \"end\" });\n from = reverse ? last2 : first2;\n to = reverse ? first2 : last2;\n if (!first2 || !last2) {\n return;\n }\n }\n const nodeEntries = NodeApi.nodes(editor, {\n from,\n pass: ([node2]) => {\n if (!ElementApi.isElement(node2)) return false;\n if (!voids && (editor.api.isVoid(node2) || editor.api.isElementReadOnly(node2))) {\n return true;\n }\n if (ignoreNonSelectable && !editor.api.isSelectable(node2)) {\n return true;\n }\n return false;\n },\n reverse,\n to\n });\n const matches = [];\n let hit;\n for (const [node2, path2] of nodeEntries) {\n if (ignoreNonSelectable && ElementApi.isElement(node2) && !editor.api.isSelectable(node2)) {\n continue;\n }\n const isLower = hit && PathApi.compare(path2, hit[1]) === 0;\n if (mode === \"highest\" && isLower) {\n continue;\n }\n if (!match2(node2, path2)) {\n if (universal && !isLower && TextApi.isText(node2)) {\n return;\n } else {\n continue;\n }\n }\n if (mode === \"lowest\" && isLower) {\n hit = [node2, path2];\n continue;\n }\n const emit = mode === \"lowest\" ? hit : [node2, path2];\n if (emit) {\n if (universal) {\n matches.push(emit);\n } else {\n yield emit;\n }\n }\n hit = [node2, path2];\n }\n if (mode === \"lowest\" && hit) {\n if (universal) {\n matches.push(hit);\n } else {\n yield hit;\n }\n }\n if (universal) {\n yield* matches;\n }\n}\n\n// src/internal/editor/withoutNormalizing.ts\nimport { withoutNormalizing as withoutNormalizingBase } from \"slate\";\nvar withoutNormalizing = (editor, fn) => {\n let normalized = false;\n withoutNormalizingBase(editor, () => {\n normalized = !!fn();\n });\n return normalized;\n};\n\n// src/internal/transforms/select.ts\nimport { select as selectBase } from \"slate\";\nvar select = (editor, target, options = {}) => {\n const { edge, focus: focus2, next: next2, previous: previous2 } = options;\n if (focus2) {\n editor.tf.focus();\n }\n if (next2 || previous2) {\n const at2 = getAt(editor, target) ?? editor.selection;\n if (!at2) return;\n const path2 = editor.api.path(at2);\n if (!path2) return;\n const point2 = previous2 ? editor.api.end(path2, { previous: true }) : editor.api.start(path2, { next: true });\n if (!point2) return;\n selectBase(editor, point2);\n return;\n }\n if (edge) {\n const at2 = getAt(editor, target) ?? editor.selection;\n if (!at2) return;\n const path2 = PathApi.isPath(at2) ? at2 : editor.api.node({ at: at2, block: true })?.[1];\n if (!path2) return;\n const point2 = edge === \"end\" ? editor.api.end(path2) : editor.api.start(path2);\n if (!point2) return;\n selectBase(editor, point2);\n return;\n }\n const at = getAt(editor, target);\n if (!at) return;\n selectBase(editor, at);\n};\n\n// src/utils/deleteMerge.ts\nvar deleteMerge = (editor, options = {}) => {\n const e = editor;\n withoutNormalizing(e, () => {\n const {\n distance = 1,\n reverse = false,\n unit = \"character\",\n voids = false\n } = options;\n let { at = e.selection, hanging = false } = options;\n if (!at) {\n return;\n }\n if (RangeApi.isRange(at) && RangeApi.isCollapsed(at)) {\n at = at.anchor;\n }\n if (PointApi.isPoint(at)) {\n const furthestVoid = getVoidNode(e, { at, mode: \"highest\" });\n if (!voids && furthestVoid) {\n const [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n const opts = { distance, unit };\n const target = reverse ? getPointBefore(e, at, opts) || getStartPoint(e, []) : getPointAfter(e, at, opts) || getEndPoint(e, []);\n at = { anchor: at, focus: target };\n hanging = true;\n }\n }\n if (PathApi.isPath(at)) {\n e.tf.removeNodes({ at, voids });\n return;\n }\n if (RangeApi.isCollapsed(at)) {\n return;\n }\n if (!hanging) {\n at = EditorInterface.unhangRange(e, at, { voids });\n }\n let [start2, end2] = RangeApi.edges(at);\n const startBlock = e.api.above({\n at: start2,\n match: (n) => isBlock(e, n),\n voids\n });\n const endBlock = e.api.above({\n at: end2,\n match: (n) => isBlock(e, n),\n voids\n });\n const isAcrossBlocks = startBlock && endBlock && !PathApi.equals(startBlock[1], endBlock[1]);\n const isSingleText = PathApi.equals(start2.path, end2.path);\n const startVoid = voids ? null : getVoidNode(e, { at: start2, mode: \"highest\" });\n const endVoid = voids ? null : getVoidNode(e, { at: end2, mode: \"highest\" });\n if (startVoid) {\n const before = getPointBefore(e, start2);\n if (before && startBlock && PathApi.isAncestor(startBlock[1], before.path)) {\n start2 = before;\n }\n }\n if (endVoid) {\n const after2 = getPointAfter(e, end2);\n if (after2 && endBlock && PathApi.isAncestor(endBlock[1], after2.path)) {\n end2 = after2;\n }\n }\n const matches = [];\n let lastPath;\n const _nodes = nodes(e, { at, voids });\n for (const entry of _nodes) {\n const [node2, path2] = entry;\n if (lastPath && PathApi.compare(path2, lastPath) === 0) {\n continue;\n }\n if (!voids && e.api.isVoid(node2) || !PathApi.isCommon(path2, start2.path) && !PathApi.isCommon(path2, end2.path)) {\n matches.push(entry);\n lastPath = path2;\n }\n }\n const pathRefs2 = Array.from(matches, ([, p]) => createPathRef(e, p));\n const startRef = createPointRef(e, start2);\n const endRef = createPointRef(e, end2);\n if (!isSingleText && !startVoid) {\n const point3 = startRef.current;\n const [node2] = getLeafNode(e, point3);\n const { path: path2 } = point3;\n const { offset } = start2;\n const text = node2.text.slice(offset);\n e.apply({ offset, path: path2, text, type: \"remove_text\" });\n }\n for (const pathRef2 of pathRefs2) {\n const path2 = pathRef2.unref();\n e.tf.removeNodes({ at: path2, voids });\n }\n if (!endVoid) {\n const point3 = endRef.current;\n const [node2] = getLeafNode(e, point3);\n const { path: path2 } = point3;\n const offset = isSingleText ? start2.offset : 0;\n const text = node2.text.slice(offset, end2.offset);\n e.apply({ offset, path: path2, text, type: \"remove_text\" });\n }\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n e.tf.mergeNodes({\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n const point2 = endRef.unref() || startRef.unref();\n if (options.at == null && point2) {\n select(e, point2);\n }\n });\n};\n\n// src/utils/queryEditor.ts\nimport castArray3 from \"lodash/castArray.js\";\nvar queryEditor = (editor, {\n allow,\n at = editor.selection || [],\n exclude,\n filter,\n selectionAtBlockEnd,\n selectionAtBlockStart\n} = {}) => {\n if (filter && !filter(editor) || selectionAtBlockStart && !editor.api.isAt({ start: true }) || selectionAtBlockEnd && !editor.api.isAt({ end: true })) {\n return false;\n }\n const allows = castArray3(allow);\n if (allows.length > 0 && !editor.api.some({ at, match: { type: allows } })) {\n return false;\n }\n const excludes = castArray3(exclude);\n if (excludes.length > 0 && editor.api.some({ at, match: { type: excludes } })) {\n return false;\n }\n return true;\n};\n\n// src/utils/queryNode.ts\nfunction castArray4(value) {\n return Array.isArray(value) ? value : [value];\n}\nvar queryNode = (entry, { allow, exclude, filter, level, maxLevel } = {}) => {\n if (!entry) return false;\n const [node2, path2] = entry;\n if (level) {\n const levels2 = castArray4(level);\n if (!levels2.includes(path2.length)) {\n return false;\n }\n }\n if (maxLevel && path2.length > maxLevel) {\n return false;\n }\n if (filter && !filter(entry)) {\n return false;\n }\n if (allow) {\n const allows = castArray4(allow);\n if (allows.length > 0 && !allows.includes(node2.type)) {\n return false;\n }\n }\n if (exclude) {\n const excludes = castArray4(exclude);\n if (excludes.length > 0 && excludes.includes(node2.type)) {\n return false;\n }\n }\n return true;\n};\n\n// src/internal/editor/editor-node.ts\nvar node = (editor, atOrOptions, nodeOptions) => {\n try {\n if (LocationApi.isAt(atOrOptions)) {\n const at = getAt(editor, atOrOptions);\n return nodeBase(editor, at, nodeOptions);\n }\n const options = atOrOptions;\n const nodeEntries = editor.api.nodes(options);\n return nodeEntries.next().value;\n } catch {\n return void 0;\n }\n};\n\n// src/internal/editor/editor-path.ts\nimport { path as pathBase } from \"slate\";\nvar path = (editor, at, options) => {\n try {\n return pathBase(editor, getAt(editor, at), options);\n } catch {\n }\n};\n\n// src/internal/editor/getEdgePoints.ts\nimport { edges } from \"slate\";\nvar getEdgePoints = (editor, at) => {\n try {\n return edges(editor, getAt(editor, at));\n } catch {\n }\n};\n\n// src/internal/editor/getEditorString.ts\nimport { string } from \"slate\";\nvar getEditorString = (editor, at = editor.selection, options) => {\n if (!at) return \"\";\n try {\n return string(editor, getAt(editor, at), options);\n } catch {\n return \"\";\n }\n};\n\n// src/internal/editor/getFirstNode.ts\nimport { first } from \"slate\";\nvar getFirstNode = (editor, at) => {\n try {\n return first(editor, getAt(editor, at));\n } catch {\n }\n};\n\n// src/internal/editor/getFragment.ts\nimport { fragment, getFragment as getFragmentBase } from \"slate\";\nvar unwrapStructuralNodes = (nodes2, { structuralTypes } = {}) => {\n const unwrap = (nodes3, acc = []) => {\n nodes3.forEach((node2) => {\n if (structuralTypes?.includes(node2.type)) {\n return unwrap(node2.children, acc);\n }\n acc.push(node2);\n });\n return acc;\n };\n return unwrap(nodes2);\n};\nvar getFragment = (editor, at, options) => {\n if (at === null) return [];\n try {\n const result = at === void 0 ? getFragmentBase(editor) : fragment(editor, getAt(editor, at));\n if (result.length > 0 && options?.structuralTypes) {\n return unwrapStructuralNodes(result, options);\n }\n return result;\n } catch {\n return [];\n }\n};\n\n// src/internal/editor/getLevels.ts\nimport { levels } from \"slate\";\nvar getLevels = (editor, options) => {\n return levels(editor, getQueryOptions(editor, options));\n};\n\n// src/internal/editor/getMarks.ts\nimport { marks } from \"slate\";\nvar getMarks = (editor) => marks(editor);\n\n// src/internal/editor/getPathRefs.ts\nimport { pathRefs } from \"slate\";\nvar getPathRefs = (editor) => pathRefs(editor);\n\n// src/internal/editor/getPoint.ts\nimport { point } from \"slate\";\nvar getPoint = (editor, at, options) => {\n try {\n return point(editor, getAt(editor, at), options);\n } catch {\n }\n};\n\n// src/internal/editor/getPointRefs.ts\nimport { pointRefs } from \"slate\";\nvar getPointRefs = (editor) => pointRefs(editor);\n\n// src/internal/editor/getPositions.ts\nimport { positions } from \"slate\";\nvar getPositions = (editor, options) => positions(editor, {\n ...options,\n at: getAt(editor, options?.at)\n});\n\n// src/internal/editor/getRangeRefs.ts\nimport { rangeRefs } from \"slate\";\nvar getRangeRefs = (editor) => rangeRefs(editor);\n\n// src/internal/editor/hasBlocks.ts\nimport { hasBlocks as hasBlocksBase } from \"slate\";\nvar hasBlocks = (editor, element) => hasBlocksBase(editor, element);\n\n// src/internal/editor/hasInlines.ts\nimport { hasInlines as hasInlinesBase } from \"slate\";\nvar hasInlines = (editor, element) => hasInlinesBase(editor, element);\n\n// src/internal/editor/hasTexts.ts\nimport { hasTexts as hasTextsBase } from \"slate\";\nvar hasTexts = (editor, element) => hasTextsBase(editor, element);\n\n// src/internal/editor/insertBreak.ts\nimport { insertBreak as insertBreakBase } from \"slate\";\nvar insertBreak = (editor) => insertBreakBase(editor);\n\n// src/internal/editor/insertNode.ts\nvar insertNode = (editor, node2, options) => editor.tf.insertNodes(node2, options);\n\n// src/internal/editor/isEdgePoint.ts\nimport { isEdge } from \"slate\";\nvar isEdgePoint = (editor, point2, at) => isEdge(editor, point2, at);\n\n// src/internal/editor/isEditorNormalizing.ts\nimport { isNormalizing } from \"slate\";\nvar isEditorNormalizing = (editor) => isNormalizing(editor);\n\n// src/internal/editor/isElementReadOnly.ts\nimport { elementReadOnly } from \"slate\";\nvar isElementReadOnly = (editor, options) => elementReadOnly(editor, options);\n\n// src/internal/editor/isEmpty.ts\nimport { isEmpty as isEmptyBase } from \"slate\";\nvar isEmpty = (editor, target = [], options) => {\n if (target === null) return true;\n if (PathApi.isPath(target) && target.length === 0 || NodeApi.isEditor(target)) {\n return editor.children.length === 1 && isEmptyBase(editor, editor.children[0]);\n }\n if (options?.after) {\n const blockAbove = editor.api.block({ above: true, at: target });\n if (!blockAbove) return false;\n const point2 = editor.api.point(target);\n const selectionParentEntry = editor.api.parent(target);\n if (!selectionParentEntry) return false;\n const [, selectionParentPath] = selectionParentEntry;\n if (!editor.api.isEnd(point2, selectionParentPath)) return false;\n const siblingNodes = Array.from(\n NodeApi.children(editor, blockAbove[1], {\n from: PathApi.lastIndex(point2.path) + 1\n })\n ).map(([node2]) => node2);\n if (siblingNodes.length > 0) {\n for (const siblingNode of siblingNodes) {\n if (TextApi.isText(siblingNode) && siblingNode.text) {\n return false;\n }\n }\n } else {\n return editor.api.isEnd(point2, blockAbove[1]);\n }\n return true;\n }\n if (PathApi.isPath(target)) {\n return isEmptyBase(editor, editor.api.node(target)?.[0]);\n }\n if (options?.block) {\n const block2 = editor.api.block({ at: target });\n if (!block2) return false;\n target = block2[0];\n }\n if (!NodeApi.isNode(target)) {\n const nodes2 = editor.api.nodes({ at: target, ...options });\n for (const node2 of nodes2) {\n if (!isEmptyBase(editor, node2[0])) {\n return false;\n }\n }\n return true;\n }\n return isEmptyBase(editor, target);\n};\n\n// src/internal/editor/isEndPoint.ts\nimport { isEnd } from \"slate\";\nvar isEndPoint = (editor, point2, at) => !!point2 && isEnd(editor, point2, at);\n\n// src/internal/editor/isStartPoint.ts\nimport { isStart } from \"slate\";\nvar isStartPoint = (editor, point2, at) => !!point2 && isStart(editor, point2, at);\n\n// src/internal/editor/last.ts\nimport { last as lastBase } from \"slate\";\nvar getNodeAtLevel = (editor, [node2, path2], level) => {\n const levelPath = path2.slice(0, level + 1);\n const entry = editor.api.node(levelPath);\n if (!entry) return [node2, path2];\n return entry;\n};\nvar last = (editor, at, options = {}) => {\n try {\n const { level } = options;\n const lastNodeEntry = lastBase(\n editor,\n getAt(editor, at)\n );\n if (lastNodeEntry && typeof level === \"number\") {\n if (editor.children.length === 0) {\n return;\n }\n return getNodeAtLevel(editor, lastNodeEntry, level);\n }\n return lastNodeEntry;\n } catch {\n }\n};\n\n// src/internal/editor/next.ts\nvar next = (editor, options = {}) => {\n const {\n from = \"after\",\n mode = from === \"child\" ? \"all\" : \"lowest\",\n voids = false\n } = options;\n let match2 = getMatch(editor, options);\n const at = getAt(editor, options.at) ?? editor.selection;\n if (!at) {\n return;\n }\n let start2;\n if (from === \"child\" && PathApi.isPath(at)) {\n const path2 = PathApi.firstChild(at);\n const fromNode = editor.api.node(path2);\n if (fromNode) {\n start2 = path2;\n match2 = combineMatch((n, p) => {\n return !PathApi.isAncestor(p, at) && !PathApi.equals(p, at);\n }, match2);\n }\n }\n if (!start2) {\n const pointAfterLocation = editor.api.after(at, { voids });\n if (!pointAfterLocation) return;\n start2 = pointAfterLocation.path;\n }\n const [, to] = editor.api.last([]);\n const span = [start2, to];\n if (PathApi.isPath(at) && at.length === 0) {\n return;\n }\n if (match2 == null) {\n if (PathApi.isPath(at)) {\n const [parent2] = editor.api.parent(at);\n match2 = (n) => parent2.children.includes(n);\n } else {\n match2 = () => true;\n }\n }\n const [next2] = editor.api.nodes({ at: span, match: match2, mode, voids });\n return next2;\n};\n\n// src/internal/editor/normalizeEditor.ts\nimport { normalize } from \"slate\";\nvar normalizeEditor = (editor, options) => normalize(editor, options);\n\n// src/internal/editor/parent.ts\nimport { parent as parentBase } from \"slate\";\nvar parent = (editor, at, options) => {\n try {\n return parentBase(editor, getAt(editor, at), options);\n } catch {\n }\n};\n\n// src/internal/editor/previous.ts\nvar previousBase = (editor, options) => {\n const { from = \"after\", mode = \"lowest\", voids = false } = options;\n let match2 = getMatch(editor, options);\n const at = getAt(editor, options.at) ?? editor.selection;\n if (!at) {\n return;\n }\n let start2;\n if (from === \"parent\" && PathApi.isPath(at) && at.length > 1) {\n start2 = at;\n match2 = combineMatch((n, p) => {\n return !PathApi.isAfter(p, at) && !PathApi.equals(p, at);\n }, match2);\n }\n if (!start2) {\n const pointBeforeLocation = editor.api.before(at, { voids });\n if (!pointBeforeLocation) return;\n start2 = pointBeforeLocation.path;\n }\n const [, to] = editor.api.first([]);\n const span = [start2, to];\n if (PathApi.isPath(at) && at.length === 0) {\n return;\n }\n if (match2 == null) {\n if (PathApi.isPath(at)) {\n const [parent2] = editor.api.parent(at);\n match2 = (n) => parent2.children.includes(n);\n } else {\n match2 = () => true;\n }\n }\n const [previous2] = editor.api.nodes({\n at: span,\n match: match2,\n mode,\n reverse: true,\n voids\n });\n return previous2;\n};\nvar previous = (editor, options) => {\n const getPrevious = (o) => {\n try {\n return previousBase(editor, o);\n } catch {\n }\n };\n if (options?.sibling) {\n const path2 = getQueryOptions(editor, options).at;\n if (!path2) return;\n const previousPath = PathApi.previous(path2);\n if (!previousPath) return;\n const previousNode = editor.api.node(previousPath);\n return previousNode;\n }\n if (!(options?.id && options?.block)) {\n return getPrevious(options);\n }\n const block2 = editor.api.node({\n id: options.id,\n at: []\n });\n if (!block2) return;\n return getPrevious({ at: block2[1], block: true });\n};\n\n// src/internal/editor/range.ts\nimport { range as rangeBase } from \"slate\";\nvar range = (editor, at, to, options) => {\n let from = getAt(editor, at);\n if (RangeApi.isRange(from) && !to) {\n return from;\n }\n if (from === \"start\") {\n const path2 = editor.api.block({ at: to })?.[1];\n if (!path2) return;\n const anchor = editor.api.start(path2);\n if (!anchor) return;\n const focus2 = PointApi.get(to);\n if (!focus2) return;\n return { anchor, focus: focus2 };\n }\n if (to && from === \"before\") {\n const anchor = editor.api.before(to, options?.before);\n from = anchor ?? getAt(editor, to);\n }\n return rangeBase(editor, from, getAt(editor, to));\n};\n\n// src/internal/editor/removeEditorMark.ts\nimport { removeMark } from \"slate\";\nvar removeEditorMark = (editor, key) => removeMark(editor, key);\n\n// src/internal/editor/unhangRange.ts\nimport { unhangRange as unhangRangeBase } from \"slate\";\nvar unhangRange = (editor, range2, options = {}) => {\n const { character, unhang = true, voids } = options;\n if (!RangeApi.isRange(range2)) return range2;\n if (character) {\n let [start2, end2] = RangeApi.edges(range2);\n if (!PathApi.equals(start2.path, end2.path)) {\n if (end2.offset === 0) {\n const pointAfter = editor.api.after(start2);\n if (pointAfter) {\n end2 = pointAfter;\n }\n } else {\n const pointBefore = editor.api.before(end2);\n if (pointBefore) {\n start2 = pointBefore;\n }\n }\n }\n return { anchor: start2, focus: end2 };\n }\n if (unhang) {\n return unhangRangeBase(editor, range2, { voids });\n }\n return range2;\n};\n\n// src/internal/editor-extension/edge-blocks.ts\nvar edgeBlocks = (editor, { at: _at, ...options } = {}) => {\n const at = _at ?? editor.selection;\n if (!at) return null;\n const [start2, end2] = editor.api.edges(at ?? editor.selection);\n const startBlock = editor.api.block({\n at: start2,\n ...options\n });\n if (!startBlock) return null;\n const endBlock = editor.api.block({\n at: end2,\n ...options\n });\n if (!endBlock) return null;\n return [startBlock, endBlock];\n};\n\n// src/internal/editor-extension/editor-block.ts\nvar block = (editor, { above: above2, highest, ...options } = {}) => {\n if (highest) {\n const target = options.at ?? editor.selection;\n if (!target) return;\n const index = editor.api.path(target)?.[0];\n if (index === void 0) return;\n return editor.api.node([index]);\n }\n if (above2) {\n return editor.api.above({\n ...options,\n block: true\n });\n }\n return editor.api.node({\n ...options,\n block: true,\n mode: \"lowest\"\n });\n};\n\n// src/internal/editor-extension/editor-blocks.ts\nvar blocks = (editor, options) => {\n return [\n ...editor.api.nodes({\n ...options,\n block: true\n })\n ];\n};\n\n// src/internal/editor-extension/editor-descendant.ts\nvar descendant = (editor, options) => {\n try {\n const {\n at = editor.selection,\n match: _match,\n reverse = false,\n voids = false\n } = options;\n if (!at) return;\n let from;\n let to;\n if (SpanApi.isSpan(at)) {\n [from, to] = at;\n } else if (RangeApi.isRange(at)) {\n const first2 = editor.api.path(at, { edge: \"start\" });\n const last2 = editor.api.path(at, { edge: \"end\" });\n from = reverse ? last2 : first2;\n to = reverse ? first2 : last2;\n }\n let root = [editor, []];\n if (PathApi.isPath(at)) {\n root = editor.api.node(at);\n }\n const nodeEntries = NodeApi.descendants(root[0], {\n from,\n pass: ([n]) => voids ? false : editor.api.isVoid(n),\n reverse,\n to\n });\n for (const [node2, path2] of nodeEntries) {\n if (match(node2, path2, _match)) {\n return [node2, at.concat(path2)];\n }\n }\n } catch (error) {\n return void 0;\n }\n};\n\n// src/internal/editor-extension/editor-mark.ts\nvar mark = (editor, key) => {\n const marks2 = editor.api.marks();\n return marks2?.[key];\n};\n\n// src/internal/editor-extension/hasMark.ts\nvar hasMark = (editor, key) => {\n return !!editor.api.mark(key);\n};\n\n// src/internal/editor-extension/is-selected.ts\nvar isSelected = (editor, target, options = {}) => {\n const { contains = false } = options;\n if (!editor.selection) return false;\n const range2 = RangeApi.isRange(target) ? target : editor.api.range(target);\n if (!range2) return false;\n if (contains) {\n return RangeApi.contains(editor.selection, range2);\n }\n return !!RangeApi.intersection(editor.selection, range2);\n};\n\n// src/internal/editor-extension/isAt.ts\nvar isAt = (editor, {\n at = editor.selection,\n block: block2,\n blocks: blocks2,\n end: end2,\n start: start2,\n text,\n word,\n ...options\n} = {}) => {\n if (!at) return false;\n if (PointApi.isPoint(at)) {\n if (word && end2) {\n const after2 = editor.api.after(at);\n if (!after2) return true;\n const afterRange = editor.api.range(at, after2);\n const afterText = editor.api.string(afterRange);\n return /^(?:\\s|$)/.test(afterText);\n }\n return false;\n }\n if (RangeApi.isRange(at)) {\n const [startPoint, endPoint] = RangeApi.edges(at);\n if (text) {\n return PathApi.equals(startPoint.path, endPoint.path);\n }\n const startBlock = editor.api.block({\n at: startPoint,\n ...options\n });\n const endBlock = editor.api.block({\n at: endPoint,\n ...options\n });\n if (blocks2) {\n if (!startBlock && !endBlock) return false;\n if (!startBlock || !endBlock) return true;\n return !PathApi.equals(startBlock[1], endBlock[1]);\n }\n if (!startBlock || !endBlock) return false;\n if (block2) {\n return PathApi.equals(startBlock[1], endBlock[1]);\n }\n if (start2) {\n return editor.api.isStart(startPoint, startBlock[1]) || RangeApi.isExpanded(at) && editor.api.isStart(endPoint, startBlock[1]);\n }\n if (end2) {\n return editor.api.isEnd(endPoint, endBlock[1]);\n }\n }\n return false;\n};\n\n// src/internal/editor-extension/isEditorEnd.ts\nvar isEditorEnd = (editor) => {\n if (editor.selection) {\n const point2 = editor.selection.focus;\n const endPoint = editor.api.end([]);\n return endPoint.offset === 0 && editor.api.isEnd(point2, point2) && PathApi.equals(PathApi.next(PathApi.parent(point2.path)), endPoint.path);\n }\n return false;\n};\n\n// src/internal/editor-extension/isText.ts\nvar isText = (editor, at) => {\n const node2 = editor.api.node(at)?.[0];\n return TextApi.isText(node2);\n};\n\n// src/internal/editor-extension/nodes-range.ts\nvar nodesRange = (editor, nodes2) => {\n if (nodes2.length === 0) return;\n const firstBlockPath = nodes2[0][1];\n const lastBlockPath = nodes2.at(-1)[1];\n return editor.api.range(firstBlockPath, lastBlockPath);\n};\n\n// src/internal/editor-extension/prop.ts\nfunction prop({\n key,\n defaultValue,\n getProp,\n mode = \"block\",\n nodes: nodes2\n}) {\n if (nodes2.length === 0) return defaultValue;\n const getNodeValue = getProp ?? ((node2) => {\n return node2[key];\n });\n let value;\n for (const node2 of nodes2) {\n if (mode === \"block\" || mode === \"all\") {\n const nodeValue = getNodeValue(node2);\n if (nodeValue !== void 0) {\n if (value === void 0) {\n value = nodeValue;\n } else if (value !== nodeValue) {\n return;\n }\n if (mode === \"block\") continue;\n } else if (mode === \"block\") {\n return defaultValue;\n }\n }\n if (mode === \"text\" || mode === \"all\") {\n const textEntries = Array.from(NodeApi.texts(node2));\n for (const [text] of textEntries) {\n const textValue = getNodeValue(text);\n if (textValue !== void 0) {\n if (value === void 0) {\n value = textValue;\n } else if (value !== textValue) {\n return;\n }\n } else if (mode === \"text\") {\n return defaultValue;\n }\n }\n }\n }\n return value;\n}\n\n// src/internal/editor-extension/some.ts\nvar some = (editor, options) => {\n return !!editor.api.node(options);\n};\n\n// src/internal/transforms/collapseSelection.ts\nimport { collapse } from \"slate\";\nvar collapseSelection = (editor, options) => {\n collapse(editor, options);\n};\n\n// src/internal/transforms/deleteText.ts\nimport { deleteText as deleteTextBase } from \"slate\";\nvar deleteText = (editor, options) => {\n deleteTextBase(editor, {\n ...options,\n at: getAt(editor, options?.at)\n });\n};\n\n// src/internal/transforms/deselect.ts\nimport { deselect as deselectBase } from \"slate\";\nvar deselect = (editor) => {\n deselectBase(editor);\n};\n\n// src/internal/transforms/insertFragment.ts\nimport { insertFragment as insertFragmentBase } from \"slate\";\nvar insertFragment = (editor, fragment2, options) => {\n insertFragmentBase(editor, fragment2, {\n ...options,\n at: getAt(editor, options?.at)\n });\n};\n\n// src/internal/transforms/insertNodes.ts\nimport { insertNodes as insertNodesBase } from \"slate\";\nvar insertNodes = (editor, nodes2, { nextBlock, removeEmpty, ...options } = {}) => {\n options = getQueryOptions(editor, options);\n editor.tf.withoutNormalizing(() => {\n if (removeEmpty) {\n const blockEntry = editor.api.above({ at: options.at });\n if (blockEntry) {\n const queryNodeOptions = removeEmpty === true ? {\n allow: [\"p\"]\n } : removeEmpty;\n const { filter } = queryNodeOptions;\n queryNodeOptions.filter = ([node2, path2]) => {\n if (NodeApi.string(node2)) return false;\n const children = node2.children;\n if (children.some((n) => editor.api.isInline(n))) return false;\n return !filter || filter([node2, path2]);\n };\n if (queryNode(blockEntry, queryNodeOptions)) {\n editor.tf.removeNodes({ at: blockEntry[1] });\n nextBlock = false;\n }\n }\n }\n if (nextBlock) {\n const { at = editor.selection } = options;\n if (at) {\n const endPoint = editor.api.end(at);\n const blockEntry = editor.api.above({\n at: endPoint,\n block: true\n });\n if (blockEntry) {\n options.at = PathApi.next(blockEntry[1]);\n }\n }\n }\n insertNodesBase(editor, nodes2, options);\n });\n};\n\n// src/internal/transforms/insertText.ts\nimport { Transforms } from \"slate\";\nvar insertText = (editor, text, { marks: marks2 = true, ...options } = {}) => {\n const at = getAt(editor, options.at);\n if (at) {\n Transforms.insertText(editor, text, { ...options, at });\n return;\n }\n if (editor.selection) {\n if (marks2 && editor.marks) {\n const node2 = { text, ...editor.marks };\n editor.tf.insertNodes(node2, {\n voids: options.voids\n });\n editor.marks = null;\n } else {\n Transforms.insertText(editor, text, options);\n }\n }\n};\n\n// src/internal/transforms/liftNodes.ts\nimport { liftNodes as liftNodesBase } from \"slate\";\nvar liftNodes = (editor, options) => {\n return liftNodesBase(editor, getQueryOptions(editor, options));\n};\n\n// src/internal/transforms/mergeNodes.ts\nvar mergeNodes = (editor, options = {}) => {\n options = getQueryOptions(editor, options);\n editor.tf.withoutNormalizing(() => {\n let { at = editor.selection, match: match2 } = options;\n const {\n hanging = false,\n mergeNode,\n mode = \"lowest\",\n removeEmptyAncestor,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n if (PathApi.isPath(at)) {\n const [parent2] = editor.api.parent(at);\n match2 = (n) => parent2.children.includes(n);\n } else {\n match2 = (n) => editor.api.isBlock(n);\n }\n }\n if (!hanging && RangeApi.isRange(at)) {\n at = editor.api.unhangRange(at);\n }\n if (RangeApi.isRange(at)) {\n if (RangeApi.isCollapsed(at)) {\n at = at.anchor;\n } else {\n const [, end2] = RangeApi.edges(at);\n const pointRef2 = editor.api.pointRef(end2);\n editor.tf.delete({ at });\n at = pointRef2.unref();\n if (options.at == null) {\n editor.tf.select(at);\n }\n }\n }\n const _nodes = editor.api.nodes({ at, match: match2, mode, voids });\n const [current] = Array.from(_nodes);\n const prev = editor.api.previous({ at, match: match2, mode, voids });\n if (!current || !prev) {\n return;\n }\n const [node2, path2] = current;\n const [prevNode, prevPath] = prev;\n if (path2.length === 0 || prevPath.length === 0) {\n return;\n }\n const newPath = PathApi.next(prevPath);\n const commonPath = PathApi.common(path2, prevPath);\n const isPreviousSibling = PathApi.isSibling(path2, prevPath);\n const _levels = editor.api.levels({ at: path2 });\n const levels2 = new Set(\n Array.from(_levels, ([n]) => n).slice(commonPath.length).slice(0, -1)\n );\n const emptyAncestor = editor.api.above({\n at: path2,\n match: (n) => levels2.has(n) && ElementApi.isElement(n) && NodeApi.hasSingleChild(n),\n mode: \"highest\"\n });\n const emptyRef = emptyAncestor && editor.api.pathRef(emptyAncestor[1]);\n let properties;\n let position;\n if (TextApi.isText(node2) && TextApi.isText(prevNode)) {\n const { text, ...rest } = node2;\n position = prevNode.text.length;\n properties = rest;\n } else if (ElementApi.isElement(node2) && ElementApi.isElement(prevNode)) {\n const { children, ...rest } = node2;\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new TypeError(\n `Cannot merge the node at path [${path2}] with the previous sibling because it is not the same kind: ${JSON.stringify(\n node2\n )} ${JSON.stringify(prevNode)}`\n );\n }\n if (!isPreviousSibling && // DIFF\n !mergeNode) {\n editor.tf.moveNodes({ at: path2, to: newPath, voids });\n }\n if (emptyRef) {\n if (removeEmptyAncestor) {\n const emptyPath = emptyRef.current;\n emptyPath && removeEmptyAncestor(editor, { at: emptyPath });\n } else {\n editor.tf.removeNodes({ at: emptyRef.current, voids });\n }\n }\n if (mergeNode) {\n mergeNode(editor, { at: path2, to: newPath });\n } else if (ElementApi.isElement(prevNode) && editor.api.isEmpty(prevNode) || TextApi.isText(prevNode) && prevNode.text === \"\") {\n editor.tf.removeNodes({ at: prevPath, voids });\n } else {\n editor.tf.apply({\n path: newPath,\n position,\n properties,\n type: \"merge_node\"\n });\n }\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n};\n\n// src/internal/transforms/moveNodes.ts\nimport { moveNodes as moveNodesBase } from \"slate\";\nvar moveNodes = (editor, { children, fromIndex = 0, ...opt }) => {\n const options = getQueryOptions(editor, opt);\n let moved = false;\n if (children) {\n if (!options.at) return moved;\n const entry = editor.api.node(options.at);\n if (!entry) return moved;\n const [node2, path2] = entry;\n if (!editor.api.isBlock(node2)) return moved;\n for (let i = node2.children.length - 1; i >= fromIndex; i--) {\n const childPath = [...path2, i];\n const childNode = NodeApi.get(editor, childPath);\n if (!options.match || childNode && options.match(childNode, childPath)) {\n moveNodesBase(editor, {\n ...options,\n at: childPath\n });\n moved = true;\n }\n }\n return moved;\n }\n return moveNodesBase(editor, options);\n};\n\n// src/internal/transforms/moveSelection.ts\nimport { move } from \"slate\";\nvar moveSelection = (editor, options) => {\n move(editor, options);\n};\n\n// src/internal/transforms/removeNodes.ts\nimport { removeNodes as removeNodesBase } from \"slate\";\nvar removeNodes = (editor, { children, previousEmptyBlock, ...opt } = {}) => {\n const options = getQueryOptions(editor, opt);\n editor.tf.withoutNormalizing(() => {\n if (previousEmptyBlock) {\n const entry = editor.api.block({ at: options.at });\n if (!entry) return;\n const prevEntry = editor.api.previous({\n at: entry[1],\n sibling: true\n });\n if (!prevEntry) return;\n const [prevNode, prevPath] = prevEntry;\n if (editor.api.isEmpty(prevNode)) {\n editor.tf.removeNodes({ at: prevPath });\n }\n return;\n }\n if (children && options.at) {\n for (const [, childPath] of NodeApi.children(editor, options.at, {\n reverse: true\n })) {\n editor.tf.removeNodes({ ...options, at: childPath });\n }\n return;\n }\n return removeNodesBase(editor, getQueryOptions(editor, options));\n });\n};\n\n// src/internal/transforms/setNodes.ts\nimport { setNodes as setNodesBase } from \"slate\";\nvar setNodes = (editor, props, { marks: marks2, ...options } = {}) => {\n if (marks2) {\n let at = getAt(editor, options.at) ?? editor.selection;\n if (!at) return;\n if (PathApi.isPath(at)) {\n at = editor.api.range(at);\n }\n if (!RangeApi.isRange(at)) return;\n const match2 = (node2, path2) => {\n if (!TextApi.isText(node2)) return false;\n const parentEntry = editor.api.parent(path2);\n if (!parentEntry) return false;\n const [parentNode] = parentEntry;\n return !editor.api.isVoid(parentNode) || editor.api.markableVoid(parentNode);\n };\n const isExpandedRange = RangeApi.isExpanded(at);\n let markAcceptingVoidSelected = false;\n if (!isExpandedRange) {\n const selectedEntry = editor.api.node(at);\n if (!selectedEntry) return;\n const [selectedNode, selectedPath] = selectedEntry;\n if (selectedNode && match2(selectedNode, selectedPath)) {\n const parentEntry = editor.api.parent(selectedPath);\n if (!parentEntry) return;\n const [parentNode] = parentEntry;\n markAcceptingVoidSelected = parentNode && editor.api.markableVoid(parentNode);\n }\n }\n if (isExpandedRange || markAcceptingVoidSelected) {\n return setNodesBase(\n editor,\n props,\n getQueryOptions(editor, {\n ...options,\n at,\n match: match2,\n split: true,\n voids: true\n })\n );\n }\n }\n return setNodesBase(\n editor,\n props,\n getQueryOptions(editor, options)\n );\n};\n\n// src/internal/transforms/setPoint.ts\nimport { setPoint as setPointBase } from \"slate\";\nvar setPoint = (editor, props, options) => {\n setPointBase(editor, props, options);\n};\n\n// src/internal/transforms/setSelection.ts\nimport { setSelection as setSelectionBase } from \"slate\";\nvar setSelection = (editor, props) => {\n setSelectionBase(editor, props);\n};\n\n// src/internal/transforms/splitNodes.ts\nimport { splitNodes as splitNodesBase } from \"slate\";\nvar splitNodes = (editor, options) => {\n return splitNodesBase(editor, getQueryOptions(editor, options));\n};\n\n// src/internal/transforms/unsetNodes.ts\nimport { unsetNodes as unsetNodesBase } from \"slate\";\nvar unsetNodes = (editor, props, options) => {\n return unsetNodesBase(\n editor,\n props,\n getQueryOptions(editor, options)\n );\n};\n\n// src/internal/transforms/unwrapNodes.ts\nimport { unwrapNodes as unwrapNodesBase } from \"slate\";\nvar unwrapNodes = (editor, options) => {\n unwrapNodesBase(editor, getQueryOptions(editor, options));\n};\n\n// src/internal/transforms/wrapNodes.ts\nimport { wrapNodes as wrapNodesBase } from \"slate\";\nvar wrapNodes = (editor, element, { children, ...opt } = {}) => {\n const options = getQueryOptions(editor, opt);\n if (options.at) {\n options.at = editor.api.unhangRange(options.at, options);\n }\n if (children) {\n const path2 = editor.api.path(options.at);\n if (!path2) return;\n const node2 = NodeApi.get(editor, path2);\n if (!node2?.children) return;\n editor.tf.withoutNormalizing(() => {\n const firstChildPath = PathApi.firstChild(path2);\n wrapNodesBase(editor, element, {\n ...options,\n at: firstChildPath\n });\n if (node2.children.length > 1) {\n editor.tf.moveNodes({\n at: path2,\n children: true,\n fromIndex: 1,\n to: PathApi.child(firstChildPath, 1)\n });\n }\n });\n return;\n }\n wrapNodesBase(editor, element, options);\n};\n\n// src/internal/transforms-extension/addMarks.ts\nimport castArray5 from \"lodash/castArray.js\";\nvar addMarks = (editor, marks2, { remove } = {}) => {\n if (!editor.selection) return;\n editor.tf.withoutNormalizing(() => {\n editor.tf.removeMarks([\n ...castArray5(remove),\n ...Object.keys(marks2)\n ]);\n Object.entries(marks2).forEach(([key, value]) => {\n editor.tf.addMark(key, value);\n });\n });\n};\n\n// src/internal/transforms-extension/duplicateNodes.ts\nvar duplicateNodes = (editor, { block: block2, nodes: nodes2, ...options } = {}) => {\n const at = getAt(editor, options.at) ?? editor.selection;\n if (!at) return;\n const entries = nodes2 ?? (block2 ? editor.api.blocks({ at }) : []);\n if (entries.length === 0) return;\n const lastEntry = entries.at(-1);\n const insertPath = PathApi.next(lastEntry[1]);\n const nodesToInsert = entries.map(([node2]) => node2);\n editor.tf.insertNodes(nodesToInsert, {\n at: insertPath,\n ...options\n });\n};\n\n// src/internal/transforms-extension/removeMarks.ts\nimport castArray6 from \"lodash/castArray.js\";\nvar removeMarks = (editor, keys, { at, shouldChange = true, ...options } = {}) => {\n const selection = at ?? editor.selection;\n if (!selection) return;\n const match2 = (node2, path2) => {\n if (!TextApi.isText(node2)) {\n return false;\n }\n const [parentNode] = editor.api.parent(path2);\n return !editor.api.isVoid(parentNode) || editor.api.markableVoid(parentNode);\n };\n const expandedSelection = RangeApi.isExpanded(selection);\n let markAcceptingVoidSelected = false;\n if (!expandedSelection) {\n const [selectedNode, selectedPath] = editor.api.node(selection);\n if (selectedNode && match2(selectedNode, selectedPath)) {\n const [parentNode] = editor.api.parent(selectedPath);\n markAcceptingVoidSelected = parentNode && editor.api.markableVoid(parentNode);\n }\n }\n if (keys && (expandedSelection || markAcceptingVoidSelected)) {\n const props = castArray6(keys);\n editor.tf.unsetNodes(props, {\n at: selection,\n match: match2,\n split: true,\n voids: true,\n ...options\n });\n } else if (!at) {\n const marks2 = { ...editor.api.marks() };\n if (keys) {\n castArray6(keys).forEach((k) => {\n delete marks2[k];\n });\n editor.marks = marks2;\n } else {\n editor.marks = {};\n }\n shouldChange && editor.api.onChange();\n }\n};\n\n// src/internal/transforms-extension/replaceNodes.ts\nvar replaceNodes = (editor, nodes2, {\n at,\n children,\n removeNodes: removeOptions,\n ...options\n}) => {\n editor.tf.withoutNormalizing(() => {\n if (children) {\n if (!at) return;\n at = getAt(editor, at);\n const path2 = editor.api.path(at);\n if (!path2) return;\n editor.tf.removeNodes({\n ...removeOptions,\n at: path2,\n children: true\n });\n editor.tf.insertNodes(nodes2, {\n ...options,\n at: path2.concat([0])\n });\n } else {\n editor.tf.removeNodes({ ...removeOptions, at });\n editor.tf.insertNodes(nodes2, {\n ...options,\n at\n });\n }\n });\n};\n\n// src/internal/transforms-extension/reset.ts\nvar reset = (editor, options = {}) => {\n editor.tf.replaceNodes(editor.api.create.value(), {\n at: [],\n children: true,\n ...options\n });\n if (!options.children) {\n editor.operations = [];\n editor.marks = null;\n if (editor.history?.undos) {\n editor.history.undos = [];\n editor.history.redos = [];\n }\n }\n};\n\n// src/internal/transforms-extension/toggleBlock.ts\nvar toggleBlock = (editor, type, {\n defaultType: defaultTypeProp,\n someOptions,\n wrap,\n ...options\n} = {}) => {\n const at = options.at ?? editor.selection;\n if (!at) return;\n const isActive = editor.api.some({\n at,\n ...someOptions,\n match: { type }\n });\n if (wrap) {\n if (isActive) {\n editor.tf.unwrapNodes({ at, match: { type } });\n } else {\n editor.tf.wrapNodes({ children: [], type }, { at });\n }\n return;\n }\n const defaultType = defaultTypeProp ?? editor.api.create.block().type ?? \"p\";\n if (isActive && type === defaultType) return;\n editor.tf.setNodes(\n {\n type: isActive ? defaultType : type\n },\n { at, ...options }\n );\n};\n\n// src/internal/transforms-extension/toggleMark.ts\nimport castArray7 from \"lodash/castArray.js\";\nvar toggleMark = (editor, key, { remove } = {}) => {\n if (!editor.selection) return;\n editor.tf.withoutNormalizing(() => {\n if (editor.api.hasMark(key)) {\n editor.tf.removeMark(key);\n return;\n }\n editor.tf.removeMarks([...castArray7(remove), key]);\n editor.tf.addMark(key, true);\n });\n};\n\n// src/slate-history/history.ts\nimport { isPlainObject as isPlainObject2 } from \"is-plain-object\";\nvar SAVING = /* @__PURE__ */ new WeakMap();\nvar MERGING = /* @__PURE__ */ new WeakMap();\nvar SPLITTING_ONCE = /* @__PURE__ */ new WeakMap();\nvar HistoryApi = {\n /** Check if a value is a `History` object. */\n isHistory(value) {\n return isPlainObject2(value) && Array.isArray(value.redos) && Array.isArray(value.undos) && (value.redos.length === 0 || OperationApi.isOperationList(value.redos[0].operations)) && (value.undos.length === 0 || OperationApi.isOperationList(value.undos[0].operations));\n },\n /** Get the merge flag's current value. */\n isMerging(editor) {\n return MERGING.get(editor);\n },\n /** Get the splitting once flag's current value. */\n isSaving(editor) {\n return SAVING.get(editor);\n },\n isSplittingOnce(editor) {\n return SPLITTING_ONCE.get(editor);\n },\n /** Get the saving flag's current value. */\n redo(editor) {\n editor.redo();\n },\n /** Redo to the previous saved state. */\n setSplittingOnce(editor, value) {\n SPLITTING_ONCE.set(editor, value);\n },\n /** Undo to the previous saved state. */\n undo(editor) {\n editor.undo();\n },\n /**\n * Apply a series of changes inside a synchronous `fn`, These operations will\n * be merged into the previous history.\n */\n withMerging(editor, fn) {\n const prev = editor.api.isMerging();\n MERGING.set(editor, true);\n fn();\n MERGING.set(editor, prev);\n },\n /**\n * Apply a series of changes inside a synchronous `fn`, ensuring that the\n * first operation starts a new batch in the history. Subsequent operations\n * will be merged as usual.\n */\n withNewBatch(editor, fn) {\n const prev = editor.api.isMerging();\n MERGING.set(editor, true);\n SPLITTING_ONCE.set(editor, true);\n fn();\n MERGING.set(editor, prev);\n SPLITTING_ONCE.delete(editor);\n },\n /**\n * Apply a series of changes inside a synchronous `fn`, without merging any of\n * the new operations into previous save point in the history.\n */\n withoutMerging(editor, fn) {\n const prev = editor.api.isMerging();\n MERGING.set(editor, false);\n fn();\n MERGING.set(editor, prev);\n },\n /**\n * Apply a series of changes inside a synchronous `fn`, without saving any of\n * their operations into the history.\n */\n withoutSaving(editor, fn) {\n const prev = editor.api.isSaving();\n SAVING.set(editor, false);\n fn();\n SAVING.set(editor, prev);\n }\n};\n\n// src/create-editor.ts\nvar noop = (name, returnValue) => () => {\n console.warn(\n `[OVERRIDE_MISSING] The method editor.${name}() has not been implemented or overridden. This may cause unexpected behavior. Please ensure that all required editor methods are properly defined.`\n );\n return returnValue;\n};\nvar createEditor = ({\n children,\n selection\n} = {}) => {\n const editor = createSlateEditor();\n if (children) {\n editor.children = children;\n }\n if (selection) {\n editor.selection = selection;\n }\n Object.assign(editor, {\n apply: bindFirst(apply, editor),\n isElementReadOnly: editor.isElementReadOnly,\n isInline: editor.isInline,\n isSelectable: editor.isSelectable,\n isVoid: editor.isVoid,\n markableVoid: editor.markableVoid,\n onChange: editor.onChange\n });\n Object.assign(editor, {\n addMark: bindFirst(addMark, editor),\n deleteBackward: bindFirst(deleteBackward, editor),\n deleteForward: bindFirst(deleteForward, editor),\n deleteFragment: bindFirst(deleteFragment, editor),\n getDirtyPaths: bindFirst(getDirtyPaths, editor),\n getFragment: bindFirst(getFragment, editor),\n insertBreak: bindFirst(insertBreak, editor),\n insertFragment: bindFirst(insertFragment, editor),\n insertNode: bindFirst(insertNode, editor),\n insertSoftBreak: bindFirst(insertSoftBreak, editor),\n insertText: bindFirst(insertText, editor),\n normalizeNode: bindFirst(normalizeNode, editor),\n removeMark: bindFirst(removeEditorMark, editor),\n shouldNormalize: bindFirst(shouldNormalize, editor)\n });\n Object.assign(editor, {\n above: bindFirst(above, editor),\n after: bindFirst(getPointAfter, editor),\n before: bindFirst(getPointBefore, editor),\n collapse: bindFirst(collapseSelection, editor),\n delete: bindFirst(deleteText, editor),\n deselect: bindFirst(deselect, editor),\n deselectDOM: bindFirst(deselectDOM, editor),\n edges: bindFirst(getEdgePoints, editor),\n elementReadOnly: bindFirst(isElementReadOnly, editor),\n end: bindFirst(getEndPoint, editor),\n first: bindFirst(getFirstNode, editor),\n fragment: bindFirst(getFragment, editor),\n getMarks: bindFirst(getMarks, editor),\n hasBlocks: bindFirst(hasBlocks, editor),\n hasInlines: bindFirst(hasInlines, editor),\n hasPath: bindFirst(hasPath, editor),\n hasTexts: bindFirst(hasTexts, editor),\n insertNodes: bindFirst(insertNodes, editor),\n isBlock: bindFirst(isBlock, editor),\n isEdge: bindFirst(isEdgePoint, editor),\n isEmpty: bindFirst(isEmpty, editor),\n isEnd: bindFirst(isEndPoint, editor),\n isNormalizing: bindFirst(isEditorNormalizing, editor),\n isStart: bindFirst(isStartPoint, editor),\n last: bindFirst(last, editor),\n leaf: bindFirst(getLeafNode, editor),\n levels: bindFirst(getLevels, editor),\n liftNodes: bindFirst(liftNodes, editor),\n mergeNodes: bindFirst(mergeNodes, editor),\n move: bindFirst(moveSelection, editor),\n moveNodes: bindFirst(moveNodes, editor),\n next: bindFirst(next, editor),\n node: bindFirst(node, editor),\n nodes: bindFirst(nodes, editor),\n normalize: bindFirst(normalizeEditor, editor),\n parent: bindFirst(parent, editor),\n path: bindFirst(path, editor),\n pathRef: bindFirst(createPathRef, editor),\n pathRefs: bindFirst(getPathRefs, editor),\n point: bindFirst(getPoint, editor),\n pointRef: bindFirst(createPointRef, editor),\n pointRefs: bindFirst(getPointRefs, editor),\n positions: bindFirst(getPositions, editor),\n previous: bindFirst(previous, editor),\n range: bindFirst(range, editor),\n rangeRef: bindFirst(createRangeRef, editor),\n rangeRefs: bindFirst(getRangeRefs, editor),\n removeNodes: bindFirst(removeNodes, editor),\n select: bindFirst(select, editor),\n setNodes: bindFirst(setNodes, editor),\n setNormalizing: bindFirst(setNormalizing, editor),\n setPoint: bindFirst(setPoint, editor),\n setSelection: bindFirst(setSelection, editor),\n shouldMergeNodesRemovePrevNode: bindFirst(\n shouldMergeNodesRemovePrevNode,\n editor\n ),\n splitNodes: bindFirst(splitNodes, editor),\n start: bindFirst(getStartPoint, editor),\n string: bindFirst(getEditorString, editor),\n unhangRange: bindFirst(unhangRange, editor),\n unsetNodes: bindFirst(unsetNodes, editor),\n unwrapNodes: bindFirst(unwrapNodes, editor),\n void: bindFirst(getVoidNode, editor),\n withoutNormalizing: bindFirst(withoutNormalizing, editor),\n wrapNodes: bindFirst(wrapNodes, editor)\n });\n Object.assign(editor, {\n history: { redos: [], undos: [] },\n redo: noop(\"redo\"),\n undo: noop(\"undo\"),\n writeHistory: noop(\"writeHistory\")\n });\n Object.assign(editor, {\n insertData: noop(\"insertData\"),\n insertFragmentData: noop(\"insertFragmentData\", false),\n insertTextData: noop(\"insertTextData\", false),\n setFragmentData: noop(\"setFragmentData\")\n });\n const api = {\n block: bindFirst(block, editor),\n blocks: bindFirst(blocks, editor),\n create: {\n block: (props) => ({ children: [{ text: \"\" }], type: \"p\", ...props }),\n value: () => [api.create.block()]\n },\n descendant: bindFirst(descendant, editor),\n edgeBlocks: bindFirst(edgeBlocks, editor),\n findDocumentOrShadowRoot: bindFirst(findDocumentOrShadowRoot, editor),\n findEventRange: bindFirst(findEventRange, editor),\n findKey: bindFirst(findKey, editor),\n findPath: bindFirst(findPath, editor),\n getWindow: bindFirst(getWindow, editor),\n hasDOMNode: bindFirst(hasDOMNode, editor),\n hasEditableTarget: bindFirst(hasEditableTarget, editor),\n hasMark: bindFirst(hasMark, editor),\n hasRange: bindFirst(hasRange, editor),\n hasSelectableTarget: bindFirst(hasSelectableTarget, editor),\n hasTarget: bindFirst(hasTarget, editor),\n isAt: bindFirst(isAt, editor),\n isCollapsed: () => RangeApi.isCollapsed(editor.selection),\n isComposing: bindFirst(isComposing, editor),\n isEditorEnd: bindFirst(isEditorEnd, editor),\n isExpanded: () => RangeApi.isExpanded(editor.selection),\n isFocused: bindFirst(isFocused, editor),\n isMerging: bindFirst(HistoryApi.isMerging, editor),\n isReadOnly: bindFirst(isReadOnly, editor),\n isSaving: bindFirst(HistoryApi.isSaving, editor),\n isSelected: bindFirst(isSelected, editor),\n isSplittingOnce: bindFirst(HistoryApi.isSplittingOnce, editor),\n isTargetInsideNonReadonlyVoid: bindFirst(\n isTargetInsideNonReadonlyVoid,\n editor\n ),\n isText: bindFirst(isText, editor),\n mark: bindFirst(mark, editor),\n nodesRange: bindFirst(nodesRange, editor),\n prop,\n some: bindFirst(some, editor),\n toDOMNode: bindFirst(toDOMNode, editor),\n toDOMPoint: bindFirst(toDOMPoint, editor),\n toDOMRange: bindFirst(toDOMRange, editor),\n toSlateNode: bindFirst(toSlateNode, editor),\n toSlatePoint: bindFirst(toSlatePoint, editor),\n toSlateRange: bindFirst(toSlateRange, editor)\n };\n const transforms = {\n addMarks: bindFirst(addMarks, editor),\n blur: bindFirst(blur, editor),\n deselectDOM: bindFirst(deselectDOM, editor),\n duplicateNodes: bindFirst(duplicateNodes, editor),\n focus: bindFirst(focus, editor),\n removeMarks: bindFirst(removeMarks, editor),\n replaceNodes: bindFirst(replaceNodes, editor),\n reset: bindFirst(reset, editor),\n setSplittingOnce: bindFirst(HistoryApi.setSplittingOnce, editor),\n toggleBlock: bindFirst(toggleBlock, editor),\n toggleMark: bindFirst(toggleMark, editor),\n withMerging: bindFirst(HistoryApi.withMerging, editor),\n withNewBatch: bindFirst(HistoryApi.withNewBatch, editor),\n withoutMerging: bindFirst(HistoryApi.withoutMerging, editor),\n withoutSaving: bindFirst(HistoryApi.withoutSaving, editor)\n };\n editor.api = api;\n editor.tf = transforms;\n editor.transforms = transforms;\n syncLegacyMethods(editor);\n return editor;\n};\n\n// src/slate-dom.ts\nimport { withDOM } from \"slate-dom\";\nimport { TRIPLE_CLICK } from \"slate-dom\";\nimport {\n applyStringDiff,\n mergeStringDiffs,\n normalizePoint,\n normalizeRange,\n normalizeStringDiff,\n targetRange,\n verifyDiffState\n} from \"slate-dom\";\nimport {\n getActiveElement,\n getDefaultView,\n getSelection,\n hasShadowRoot,\n isAfter,\n isBefore,\n isDOMElement,\n isDOMNode,\n isDOMSelection,\n isPlainTextOnlyPaste,\n isTrackedMutation,\n normalizeDOMPoint\n} from \"slate-dom\";\nimport {\n CAN_USE_DOM,\n HAS_BEFORE_INPUT_SUPPORT,\n IS_ANDROID,\n IS_CHROME,\n IS_FIREFOX,\n IS_FIREFOX_LEGACY,\n IS_IOS,\n IS_UC_MOBILE,\n IS_WEBKIT,\n IS_WECHATBROWSER\n} from \"slate-dom\";\nimport { isElementDecorationsEqual, isTextDecorationsEqual } from \"slate-dom\";\n\n// src/slate-history/with-history.ts\nvar withHistory = (editor) => {\n const e = editor;\n const { apply: apply2 } = e;\n e.history = { redos: [], undos: [] };\n e.redo = () => {\n const { history } = e;\n const { redos } = history;\n if (redos.length > 0) {\n const batch = redos.at(-1);\n if (batch.selectionBefore) {\n e.tf.setSelection(batch.selectionBefore);\n }\n e.tf.withoutSaving(() => {\n e.tf.withoutNormalizing(() => {\n for (const op of batch.operations) {\n e.apply(op);\n }\n });\n });\n history.redos.pop();\n e.writeHistory(\"undos\", batch);\n }\n };\n e.undo = () => {\n const { history } = e;\n const { undos } = history;\n if (undos.length > 0) {\n const batch = undos.at(-1);\n e.tf.withoutSaving(() => {\n e.tf.withoutNormalizing(() => {\n const inverseOps = batch.operations.map(OperationApi.inverse).reverse();\n for (const op of inverseOps) {\n e.apply(op);\n }\n if (batch.selectionBefore) {\n e.tf.setSelection(batch.selectionBefore);\n }\n });\n });\n e.writeHistory(\"redos\", batch);\n history.undos.pop();\n }\n };\n e.apply = (op) => {\n const { history, operations } = e;\n const { undos } = history;\n const lastBatch = undos.at(-1);\n const lastOp = lastBatch?.operations.at(-1);\n let save = e.api.isSaving();\n let merge = e.api.isMerging();\n if (save == null) {\n save = shouldSave(op, lastOp);\n }\n if (save) {\n if (merge == null) {\n if (lastBatch == null) {\n merge = false;\n } else if (operations.length > 0) {\n merge = true;\n } else {\n merge = shouldMerge(op, lastOp);\n }\n }\n if (e.api.isSplittingOnce()) {\n merge = false;\n e.tf.setSplittingOnce(void 0);\n }\n if (lastBatch && merge) {\n lastBatch.operations.push(op);\n } else {\n const batch = {\n operations: [op],\n selectionBefore: e.selection\n };\n e.writeHistory(\"undos\", batch);\n }\n while (undos.length > 100) {\n undos.shift();\n }\n history.redos = [];\n }\n apply2(op);\n };\n e.writeHistory = (stack, batch) => {\n e.history[stack].push(batch);\n };\n return e;\n};\nvar shouldMerge = (op, prev) => {\n if (prev && op.type === \"insert_text\" && prev.type === \"insert_text\" && op.offset === prev.offset + prev.text.length && PathApi.equals(op.path, prev.path)) {\n return true;\n }\n if (prev && op.type === \"remove_text\" && prev.type === \"remove_text\" && op.offset + op.text.length === prev.offset && PathApi.equals(op.path, prev.path)) {\n return true;\n }\n return false;\n};\nvar shouldSave = (op, _) => {\n if (op.type === \"set_selection\") {\n return false;\n }\n return true;\n};\nexport {\n CAN_USE_DOM,\n ElementApi,\n HAS_BEFORE_INPUT_SUPPORT,\n HistoryApi,\n IS_ANDROID,\n IS_CHROME,\n IS_FIREFOX,\n IS_FIREFOX_LEGACY,\n IS_IOS,\n IS_UC_MOBILE,\n IS_WEBKIT,\n IS_WECHATBROWSER,\n LocationApi,\n NodeApi,\n OperationApi,\n PathApi,\n PathRefApi,\n PointApi,\n PointRefApi,\n RangeApi,\n RangeRefApi,\n SpanApi,\n TRIPLE_CLICK,\n TextApi,\n applyStringDiff,\n assignLegacyApi,\n assignLegacyTransforms,\n combineMatch,\n combineMatchOptions,\n createEditor,\n deleteMerge,\n getActiveElement,\n getAt,\n getDefaultView,\n getMatch,\n getQueryOptions,\n getSelection,\n hasShadowRoot,\n isAfter,\n isBefore,\n isDOMElement,\n isDOMNode,\n isDOMSelection,\n isElementDecorationsEqual,\n isPlainTextOnlyPaste,\n isTextDecorationsEqual,\n isTrackedMutation,\n match,\n mergeStringDiffs,\n normalizeDOMPoint,\n normalizePoint,\n normalizeRange,\n normalizeStringDiff,\n queryEditor,\n queryNode,\n syncLegacyMethods,\n targetRange,\n verifyDiffState,\n withDOM,\n withHistory\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// src/internal/HotkeysProvider.tsx\nimport React2, {\n createContext as createContext2,\n useCallback,\n useContext as useContext2,\n useState\n} from \"react\";\n\n// src/internal/BoundHotkeysProxyProvider.tsx\nimport React, { createContext, useContext } from \"react\";\nvar BoundHotkeysProxyProvider = createContext(void 0);\nvar useBoundHotkeysProxy = () => {\n return useContext(BoundHotkeysProxyProvider);\n};\nfunction BoundHotkeysProxyProviderProvider({\n addHotkey,\n children,\n removeHotkey\n}) {\n return /* @__PURE__ */ React.createElement(BoundHotkeysProxyProvider.Provider, { value: { addHotkey, removeHotkey } }, children);\n}\n\n// src/internal/deepEqual.ts\nfunction deepEqual(x, y) {\n return x && y && typeof x === \"object\" && typeof y === \"object\" ? Object.keys(x).length === Object.keys(y).length && Object.keys(x).reduce(\n (isEqual, key) => isEqual && deepEqual(x[key], y[key]),\n true\n ) : x === y;\n}\n\n// src/internal/HotkeysProvider.tsx\nvar HotkeysContext = createContext2({\n activeScopes: [],\n // This array has to be empty instead of containing '*' as default, to check if the provider is set or not\n disableScope: () => {\n },\n enableScope: () => {\n },\n hotkeys: [],\n toggleScope: () => {\n }\n});\nvar useHotkeysContext = () => {\n return useContext2(HotkeysContext);\n};\nvar HotkeysProvider = ({\n children,\n initiallyActiveScopes = [\"*\"]\n}) => {\n const [internalActiveScopes, setInternalActiveScopes] = useState(\n initiallyActiveScopes\n );\n const [boundHotkeys, setBoundHotkeys] = useState([]);\n const enableScope = useCallback((scope) => {\n setInternalActiveScopes((prev) => {\n if (prev.includes(\"*\")) {\n return [scope];\n }\n return Array.from(/* @__PURE__ */ new Set([...prev, scope]));\n });\n }, []);\n const disableScope = useCallback((scope) => {\n setInternalActiveScopes((prev) => {\n return prev.filter((s) => s !== scope);\n });\n }, []);\n const toggleScope = useCallback((scope) => {\n setInternalActiveScopes((prev) => {\n if (prev.includes(scope)) {\n return prev.filter((s) => s !== scope);\n } else {\n if (prev.includes(\"*\")) {\n return [scope];\n }\n return Array.from(/* @__PURE__ */ new Set([...prev, scope]));\n }\n });\n }, []);\n const addBoundHotkey = useCallback((hotkey) => {\n setBoundHotkeys((prev) => [...prev, hotkey]);\n }, []);\n const removeBoundHotkey = useCallback((hotkey) => {\n setBoundHotkeys((prev) => prev.filter((h) => !deepEqual(h, hotkey)));\n }, []);\n return /* @__PURE__ */ React2.createElement(\n HotkeysContext.Provider,\n {\n value: {\n activeScopes: internalActiveScopes,\n disableScope,\n enableScope,\n hotkeys: boundHotkeys,\n toggleScope\n }\n },\n /* @__PURE__ */ React2.createElement(\n BoundHotkeysProxyProviderProvider,\n {\n addHotkey: addBoundHotkey,\n removeHotkey: removeBoundHotkey\n },\n children\n )\n );\n};\n\n// src/internal/parseHotkeys.ts\nvar reservedModifierKeywords = /* @__PURE__ */ new Set([\n \"shift\",\n \"alt\",\n \"meta\",\n \"mod\",\n \"ctrl\",\n \"control\"\n]);\nvar mappedKeys = {\n AltLeft: \"alt\",\n AltRight: \"alt\",\n ControlLeft: \"ctrl\",\n ControlRight: \"ctrl\",\n MetaLeft: \"meta\",\n MetaRight: \"meta\",\n OSLeft: \"meta\",\n OSRight: \"meta\",\n ShiftLeft: \"shift\",\n ShiftRight: \"shift\",\n down: \"arrowdown\",\n esc: \"escape\",\n left: \"arrowleft\",\n return: \"enter\",\n right: \"arrowright\",\n up: \"arrowup\"\n};\nfunction mapKey(key) {\n return (mappedKeys[key.trim()] || key.trim()).toLowerCase().replace(/key|digit|numpad/, \"\");\n}\nfunction isHotkeyModifier(key) {\n return reservedModifierKeywords.has(key);\n}\nfunction parseKeysHookInput(keys, delimiter = \",\") {\n return keys.toLowerCase().split(delimiter);\n}\nfunction parseHotkey(hotkey, splitKey = \"+\", useKey = false, description) {\n const keys = hotkey.toLocaleLowerCase().split(splitKey).map((k) => mapKey(k));\n const modifiers = {\n alt: keys.includes(\"alt\"),\n ctrl: keys.includes(\"ctrl\") || keys.includes(\"control\"),\n meta: keys.includes(\"meta\"),\n mod: keys.includes(\"mod\"),\n shift: keys.includes(\"shift\"),\n useKey\n };\n const singleCharKeys = keys.filter((k) => !reservedModifierKeywords.has(k));\n return __spreadProps(__spreadValues({}, modifiers), {\n description,\n keys: singleCharKeys\n });\n}\n\n// src/internal/isHotkeyPressed.ts\n(() => {\n if (typeof document !== \"undefined\") {\n document.addEventListener(\"keydown\", (e) => {\n if (e.code === void 0) {\n return;\n }\n pushToCurrentlyPressedKeys([mapKey(e.code)]);\n });\n document.addEventListener(\"keyup\", (e) => {\n if (e.code === void 0) {\n return;\n }\n removeFromCurrentlyPressedKeys([mapKey(e.code)]);\n });\n }\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"blur\", () => {\n currentlyPressedKeys.clear();\n });\n }\n})();\nvar currentlyPressedKeys = /* @__PURE__ */ new Set();\nfunction isReadonlyArray(value) {\n return Array.isArray(value);\n}\nfunction isHotkeyPressed(key, delimiter = \",\") {\n const hotkeyArray = isReadonlyArray(key) ? key : key.split(delimiter);\n return hotkeyArray.every(\n (hotkey) => currentlyPressedKeys.has(hotkey.trim().toLowerCase())\n );\n}\nfunction pushToCurrentlyPressedKeys(key) {\n const hotkeyArray = Array.isArray(key) ? key : [key];\n if (currentlyPressedKeys.has(\"meta\")) {\n currentlyPressedKeys.forEach(\n (key2) => !isHotkeyModifier(key2) && currentlyPressedKeys.delete(key2.toLowerCase())\n );\n }\n hotkeyArray.forEach(\n (hotkey) => currentlyPressedKeys.add(hotkey.toLowerCase())\n );\n}\nfunction removeFromCurrentlyPressedKeys(key) {\n const hotkeyArray = Array.isArray(key) ? key : [key];\n if (key === \"meta\") {\n currentlyPressedKeys.clear();\n } else {\n hotkeyArray.forEach(\n (hotkey) => currentlyPressedKeys.delete(hotkey.toLowerCase())\n );\n }\n}\n\n// src/internal/key.ts\nvar Key = {\n /** Changes the input mode on an external audio/video receiver (AVR) unit. */\n AVRInput: \"AVRInput\",\n /** Toggles the power on an external AVR unit. */\n AVRPower: \"AVRPower\",\n /**\n * The Accept, Commit, or OK key or button. Accepts the currently selected\n * option or input method sequence conversion.\n */\n Accept: \"Accept\",\n /** The numeric keypad's addition key, +. */\n Add: \"Add\",\n /** The Again key. Redoes or repeats a previous action. */\n Again: \"Again\",\n /**\n * The All Candidates key, which starts multi-candidate mode, in which\n * multiple candidates are displayed for the ongoing input.\n */\n AllCandidates: \"AllCandidates\",\n /** The Alphanumeric key. */\n Alphanumeric: \"Alphanumeric\",\n /**\n * The Alt (Alternative) key. This is the Option ⌥ key on Mac, or the Alt key\n * on Windows.\n */\n Alt: \"Alt\",\n /**\n * The AltGr or AltGraph (Alternate Graphics) key. Enables the ISO Level 3\n * shift modifier (where Shift is the level 2 modifier).\n */\n AltGraph: \"AltGraph\",\n /**\n * Presents a list of recently-used applications which lets the user change\n * apps quickly.\n */\n AppSwitch: \"AppSwitch\",\n /** The down arrow key. */\n ArrowDown: \"ArrowDown\",\n /** The left arrow key. */\n ArrowLeft: \"ArrowLeft\",\n /** The right arrow key. */\n ArrowRight: \"ArrowRight\",\n /** The up arrow key. */\n ArrowUp: \"ArrowUp\",\n /** The Attn (Attention) key. */\n Attn: \"Attn\",\n /** Adjusts audio balance toward the left. */\n AudioBalanceLeft: \"AudioBalanceLeft\",\n /** Adjusts audio balance twoard the right. */\n AudioBalanceRight: \"AudioBalanceRight\",\n /**\n * Reduces bass boosting or cycles downward through bass boost modes or\n * states.\n */\n AudioBassBoostDown: \"AudioBassBoostDown\",\n /** Toggles bass boosting on and off. */\n AudioBassBoostToggle: \"AudioBassBoostToggle\",\n /**\n * Increases the amoung of bass boosting, or cycles upward through a set of\n * bass boost modes or states.\n */\n AudioBassBoostUp: \"AudioBassBoostUp\",\n /** Decreases the amount of bass. */\n AudioBassDown: \"AudioBassDown\",\n /** Increases the amount of bass. */\n AudioBassUp: \"AudioBassUp\",\n /** Adjusts the audio fader toward the front. */\n AudioFaderFront: \"AudioFaderFront\",\n /** Adjustts the audio fader toward the rear. */\n AudioFaderRear: \"AudioFaderRear\",\n /** Selects the next available surround sound mode. */\n AudioSurroundModeNext: \"AudioSurroundModeNext\",\n /** Decreases the amount of treble. */\n AudioTrebleDown: \"AudioTrebleDown\",\n /** Increases the amount of treble. */\n AudioTrebleUp: \"AudioTrebleUp\",\n /** Decreases the audio volume. */\n AudioVolumeDown: \"AudioVolumeDown\",\n /** Mutes the audio. */\n AudioVolumeMute: \"AudioVolumeMute\",\n /** Increases the audio volume. */\n AudioVolumeUp: \"AudioVolumeUp\",\n /** The Backspace key. This key is labeled Delete on Mac keyboards. */\n Backspace: \"Backspace\",\n /**\n * The Brightness Down key. Typically used to reduce the brightness of the\n * display.\n */\n BrightnessDown: \"BrightnessDown\",\n /** The Brightness Up key. Typically increases the brightness of the display. */\n BrightnessUp: \"BrightnessUp\",\n /**\n * Navigates to the previous content or page in the current Web view's\n * history.\n */\n BrowserBack: \"BrowserBack\",\n /** Opens the user's list of bookmarks/favorites. */\n BrowserFavorites: \"BrowserFavorites\",\n /** Navigates to the next content or page in the current Web view's history. */\n BrowserForward: \"BrowserForward\",\n /** Navigates to the user's preferred home page. */\n BrowserHome: \"BrowserHome\",\n /** Refreshes the current page or contentl. */\n BrowserRefresh: \"BrowserRefresh\",\n /**\n * Activates the user's preferred search engine or the search interface within\n * their browser.\n */\n BrowserSearch: \"BrowserSearch\",\n /** Stops loading the currently displayed Web view or content. */\n BrowserStop: \"BrowserStop\",\n /** The Call key; dials the number which has been entered. */\n Call: \"Call\",\n /** The Camera key; activates the camera. */\n Camera: \"Camera\",\n /** The Focus key; focuses the camera. */\n CameraFocus: \"CameraFocus\",\n /** The Cancel key. */\n Cancel: \"Cancel\",\n /**\n * The Caps Lock key. Toggles the capital character lock on and off for\n * subsequent input.\n */\n CapsLock: \"CapsLock\",\n /** Switches to the previous channel. */\n ChannelDown: \"ChannelDown\",\n /** Switches to the next channel. */\n ChannelUp: \"ChannelUp\",\n /** The Clear key. Removes the currently selected input. */\n Clear: \"Clear\",\n /** Closes the current document or message. Must not exit the application. */\n Close: \"Close\",\n /** Toggles closed captioning on and off. */\n ClosedCaptionToggle: \"ClosedCaptionToggle\",\n /**\n * The Code Input key, which enables code input mode, which lets the user\n * enter characters by typing their code points (their Unicode character\n * numbers, typically).\n */\n CodeInput: \"CodeInput\",\n /**\n * General-purpose media function key, color-coded red; this has index 0 among\n * the colored keys.\n */\n ColorF0Red: \"ColorF0Red\",\n /**\n * General-purpose media funciton key, color-coded green; this has index 1\n * among the colored keys.\n */\n ColorF1Green: \"ColorF1Green\",\n /**\n * General-purpose media funciton key, color-coded yellow; this has index 2\n * among the colored keys.\n */\n ColorF2Yellow: \"ColorF2Yellow\",\n /**\n * General-purpose media funciton key, color-coded blue; this has index 3\n * among the colored keys.\n */\n ColorF3Blue: \"ColorF3Blue\",\n /**\n * General-purpose media funciton key, color-coded grey; this has index 4\n * among the colored keys.\n */\n ColorF4Grey: \"ColorF4Grey\",\n /**\n * General-purpose media funciton key, color-coded brown; this has index 5\n * among the colored keys.\n */\n ColorF5Brown: \"ColorF5Brown\",\n /** The Compose key. */\n Compose: \"Compose\",\n /**\n * Shows the context menu. Typically found between the Windows (or OS) key and\n * the Control key on the right side of the keyboard.\n */\n ContextMenu: \"ContextMenu\",\n /** The Control, Ctrl, or Ctl key. Allows typing control characters. */\n Control: \"Control\",\n /**\n * The Convert key, which instructs the IME to convert the current input\n * method sequence into the resulting character.\n */\n Convert: \"Convert\",\n /** The Copy key (on certain extended keyboards). */\n Copy: \"Copy\",\n /** The Cursor Select key, CrSel. */\n CrSel: \"CrSel\",\n /** The Cut key (on certain extended keyboards). */\n Cut: \"Cut\",\n /** Switches the input source to the Digital Video Recorder (DVR). */\n DVR: \"DVR\",\n /**\n * A dead \"combining\" key; that is, a key which is used in tandem with other\n * keys to generate accented and other modified characters. If pressed by\n * itself, it doesn't generate a character. If you wish to identify which\n * specific dead key was pressed (in cases where more than one exists), you\n * can do so by examining the KeyboardEvent's associated compositionupdate\n * event's data property.\n */\n Dead: \"Dead\",\n /**\n * The decimal point key (typically . or , depending on the region. In newer\n * browsers, this value to simply be the character generated by the decimal\n * key (one of those two characters). [1]\n */\n Decimal: \"Decimal\",\n /** The Delete key, Del. */\n Delete: \"Delete\",\n /**\n * Adjusts the brightness of the device by toggling between two brightness\n * levels or by cycling among multiple brightness levels.\n */\n Dimmer: \"Dimmer\",\n /** Cycles among video sources. */\n DisplaySwap: \"DisplaySwap\",\n /** The numeric keypad's division key, /. */\n Divide: \"Divide\",\n /**\n * The Eisu key. This key's purpose is defined by the IME, but may be used to\n * close the IME.\n */\n Eisu: \"Eisu\",\n /**\n * The Eject key. Ejects removable media (or toggles an optical storage device\n * tray open and closed).\n */\n Eject: \"Eject\",\n /** The End key. Moves to the end of content. */\n End: \"End\",\n /** The End Call or Hang Up button. */\n EndCall: \"EndCall\",\n /** The Enter or ↵ key (sometimes labeled Return). */\n Enter: \"Enter\",\n /**\n * Erase to End of Field. Deletes all characters from the current cursor\n * position to the end of the current field.\n */\n EraseEof: \"EraseEof\",\n /**\n * The Esc (Escape) key. Typically used as an exit, cancel, or \"escape this\n * operation\" button. Historically, the Escape character was used to signal\n * the start of a special control sequence of characters called an \"escape\n * sequence.\"\n */\n Escape: \"Escape\",\n /** The ExSel (Extend Selection) key. */\n ExSel: \"ExSel\",\n /** The Execute key. */\n Execute: \"Execute\",\n /** The Exit button, which exits the curreent application or menu. */\n Exit: \"Exit\",\n /** The first general-purpose function key, F1. */\n F1: \"F1\",\n /** The F2 key. */\n F2: \"F2\",\n /** The F3 key. */\n F3: \"F3\",\n /** The F4 key. */\n F4: \"F4\",\n /** The F5 key. */\n F5: \"F5\",\n /** The F6 key. */\n F6: \"F6\",\n /** The F7 key. */\n F7: \"F7\",\n /** The F8 key. */\n F8: \"F8\",\n /** The F9 key. */\n F9: \"F9\",\n /** The F10 key. */\n F10: \"F10\",\n /** The F11 key. */\n F11: \"F11\",\n /** The F12 key. */\n F12: \"F12\",\n /** The F13 key. */\n F13: \"F13\",\n /** The F14 key. */\n F14: \"F14\",\n /** The F15 key. */\n F15: \"F15\",\n /** The F16 key. */\n F16: \"F16\",\n /** The F17 key. */\n F17: \"F17\",\n /** The F18 key. */\n F18: \"F18\",\n /** The F19 key. */\n F19: \"F19\",\n /** The F20 key. */\n F20: \"F20\",\n /** Clears the program or content stored in the first favorites list slot. */\n FavoriteClear0: \"FavoriteClear0\",\n /** Clears the program or content stored in the second favorites list slot. */\n FavoriteClear1: \"FavoriteClear1\",\n /** Clears the program or content stored in the third favorites list slot. */\n FavoriteClear2: \"FavoriteClear2\",\n /** Clears the program or content stored in the fourth favorites list slot. */\n FavoriteClear3: \"FavoriteClear3\",\n /**\n * Selects (recalls) the program or content stored in the first favorites list\n * slot.\n */\n FavoriteRecall0: \"FavoriteRecall0\",\n /**\n * Selects (recalls) the program or content stored in the second favorites\n * list slot.\n */\n FavoriteRecall1: \"FavoriteRecall1\",\n /**\n * Selects (recalls) the program or content stored in the third favorites list\n * slot.\n */\n FavoriteRecall2: \"FavoriteRecall2\",\n /**\n * Selects (recalls) the program or content stored in the fourth favorites\n * list slot.\n */\n FavoriteRecall3: \"FavoriteRecall3\",\n /** Stores the current program or content into the first favorites list slot. */\n FavoriteStore0: \"FavoriteStore0\",\n /** Stores the current program or content into the second favorites list slot. */\n FavoriteStore1: \"FavoriteStore1\",\n /** Stores the current program or content into the third favorites list slot. */\n FavoriteStore2: \"FavoriteStore2\",\n /** Stores the current program or content into the fourth favorites list slot. */\n FavoriteStore3: \"FavoriteStore3\",\n /**\n * The Final (Final Mode) key is used on some Asian keyboards to enter final\n * mode when using IMEs.\n */\n FinalMode: \"FinalMode\",\n /**\n * The Find key. Opens an interface (typically a dialog box) for performing a\n * find/search operation.\n */\n Find: \"Find\",\n /** The Finish key. */\n Finish: \"Finish\",\n /**\n * The Fn (Function modifier) key. Used to allow generating function key\n * (F1-F15, for instance) characters on keyboards without a dedicated function\n * key area. Often handled in hardware so that events aren't generated for\n * this key.\n */\n Fn: \"Fn\",\n /**\n * The FnLock or F-Lock (Function Lock) key.Toggles the function key mode\n * described by \"Fn\" on and off. Often handled in hardware so that events\n * aren't generated for this key.\n */\n FnLock: \"FnLock\",\n /** The Back button. */\n GoBack: \"GoBack\",\n /**\n * The Home button, which takes the user to the phone's main screen (usually\n * an application launcher).\n */\n GoHome: \"GoHome\",\n /**\n * Switches to the first character group on an ISO/IEC 9995 keyboard. Each key\n * may have multiple groups of characters, each in its own column. Pressing\n * this key instructs the device to interpret keypresses as coming from the\n * first column on subsequent keystrokes.\n */\n GroupFirst: \"GroupFirst\",\n /** Switches to the last character group on an ISO/IEC 9995 keyboard. */\n GroupLast: \"GroupLast\",\n /** Switches to the next character group on an ISO/IEC 9995 keyboard. */\n GroupNext: \"GroupNext\",\n /** Switches to the previous character group on an ISO/IEC 9995 keyboard. */\n GroupPrevious: \"GroupPrevious\",\n /** Toggles the display of the program or content guide. */\n Guide: \"Guide\",\n /**\n * If the guide is currently displayed, this button tells the guide to display\n * the next day's content.\n */\n GuideNextDay: \"GuideNextDay\",\n /**\n * If the guide is currently displayed, this button tells the guide to display\n * the previous day's content.\n */\n GuidePreviousDay: \"GuidePreviousDay\",\n /**\n * The Hangul (Korean character set) mode key, which toggles between Hangul\n * and English entry modes.\n */\n HangulMode: \"HangulMode\",\n /**\n * Selects the Hanja mode, for converting Hangul characters to the more\n * specific Hanja characters.\n */\n HanjaMode: \"HanjaMode\",\n /** The Hankaku (half-width characters) key. */\n Hankaku: \"Hankaku\",\n /**\n * The Headset Hook key. This is typically actually a button on the headset\n * which is used to hang up calls and play or pause media.\n */\n HeadsetHook: \"HeadsetHook\",\n /** The Help key. Opens or toggles the display of help information. */\n Help: \"Help\",\n /**\n * The Hibernate key. This saves the state of the computer to disk and then\n * shuts down; the computer can be returned to its previous state by restoring\n * the saved state information.\n */\n Hibernate: \"Hibernate\",\n /** The Hiragana key; selects Kana characters mode. */\n Hiragana: \"Hiragana\",\n /** Toggles between the Hiragana and Katakana writing systems. */\n HiraganaKatakana: \"HiraganaKatakana\",\n /** The Home key. Moves to the start of content. */\n Home: \"Home\",\n /** The Hyper key. */\n Hyper: \"Hyper\",\n /**\n * Toggles the display of information about the currently selected content,\n * program, or media.\n */\n Info: \"Info\",\n /** The Insert key, Ins. Toggles between inserting and overwriting text. */\n Insert: \"Insert\",\n /**\n * Tellls the device to perform an instant replay (typically some form of\n * jumping back a short amount of time then playing it again, possibly but not\n * usually in slow motion).\n */\n InstantReplay: \"InstantReplay\",\n /**\n * Selects the Junja mode, in which Korean is represented using single-byte\n * Latin characters.\n */\n JunjaMode: \"JunjaMode\",\n /** The Kana Mode (Kana Lock) key. */\n KanaMode: \"KanaMode\",\n /**\n * The Kanji Mode key. Enables entering Japanese text using the ideographic\n * characters of Chinese origin.\n */\n KanjiMode: \"KanjiMode\",\n /** The Katakana key. */\n Katakana: \"Katakana\",\n /** The 11 key found on certain media numeric keypads. */\n Key11: \"Key11\",\n /** The 12 key found on certain media numeric keypads. */\n Key12: \"Key12\",\n /** The Redial button, which redials the last-called number. */\n LastNumberRedial: \"LastNumberRedial\",\n /** The first generic application launcher button. */\n LaunchApplication1: \"LaunchApplication1\",\n /** The second generic application launcher button. */\n LaunchApplication2: \"LaunchApplication2\",\n /** The third generic application launcher button. */\n LaunchApplication3: \"LaunchApplication3\",\n /** The fourth generic application launcher button. */\n LaunchApplication4: \"LaunchApplication4\",\n /** The fifth generic application launcher button. */\n LaunchApplication5: \"LaunchApplication5\",\n /** The sixth generic application launcher button. */\n LaunchApplication6: \"LaunchApplication6\",\n /** The seventh generic application launcher button. */\n LaunchApplication7: \"LaunchApplication7\",\n /** The eighth generic application launcher button. */\n LaunchApplication8: \"LaunchApplication8\",\n /** The ninth generic application launcher button. */\n LaunchApplication9: \"LaunchApplication9\",\n /** The 10th generic application launcher button. */\n LaunchApplication10: \"LaunchApplication10\",\n /** The 11th generic application launcher button. */\n LaunchApplication11: \"LaunchApplication11\",\n /** The 12th generic application launcher button. */\n LaunchApplication12: \"LaunchApplication12\",\n /** The 13th generic application launcher button. */\n LaunchApplication13: \"LaunchApplication13\",\n /** The 14th generic application launcher button. */\n LaunchApplication14: \"LaunchApplication14\",\n /** The 15th generic application launcher button. */\n LaunchApplication15: \"LaunchApplication15\",\n /** The 16th generic application launcher button. */\n LaunchApplication16: \"LaunchApplication16\",\n /**\n * The Calculator key, often labeled with an icon such as . This is often used\n * as a generic application launcher key (APPCOMMAND_LAUNCH_APP2).\n */\n LaunchCalculator: \"LaunchCalculator\",\n /** The Calendar key, often labeled with an icon like . */\n LaunchCalendar: \"LaunchCalendar\",\n /** The Contacts key. */\n LaunchContacts: \"LaunchContacts\",\n /** The Mail key. This is often displayed as . */\n LaunchMail: \"LaunchMail\",\n /** The Media Player key. */\n LaunchMediaPlayer: \"LaunchMediaPlayer\",\n /** The Music Player key, often labeled with an icon such as . */\n LaunchMusicPlayer: \"LaunchMusicPlayer\",\n /**\n * The My Computer key on Windows keyboards. This is often used as a generic\n * application launcher key (APPCOMMAND_LAUNCH_APP1).\n */\n LaunchMyComputer: \"LaunchMyComputer\",\n /** The Phone key, to open the phone dialer application if one is present. */\n LaunchPhone: \"LaunchPhone\",\n /** The Screen Saver key. */\n LaunchScreenSaver: \"LaunchScreenSaver\",\n /**\n * The Spreadsheet key. This key may be labeled with an icon such as or that\n * of a specific spreadsheet application.\n */\n LaunchSpreadsheet: \"LaunchSpreadsheet\",\n /**\n * The Web Browser key. This key is frequently labeled with an icon such as or\n * the icon of a specific browser, depending on the device manufacturer.\n */\n LaunchWebBrowser: \"LaunchWebBrowser\",\n /** The WebCam key. Opens the webcam application. */\n LaunchWebCam: \"LaunchWebCam\",\n /**\n * The Word Processor key. This may be an icon of a specific word processor\n * application, or a generic document icon.\n */\n LaunchWordProcessor: \"LaunchWordProcessor\",\n /** Opens content liniked to the current program, if available and possible. */\n Link: \"Link\",\n /** Lists the current program. */\n ListProgram: \"ListProgram\",\n /** Toggles a display listing currently available live content or programs. */\n LiveContent: \"LiveContent\",\n /** Locks or unlocks the currently selected content or pgoram. */\n Lock: \"Lock\",\n /** The LogOff key. */\n LogOff: \"LogOff\",\n /** Opens the user interface to forward a message. */\n MailForward: \"MailForward\",\n /** Opens the user interface to reply to a message. */\n MailReply: \"MailReply\",\n /** Sends the current message. */\n MailSend: \"MailSend\",\n /**\n * A button which cycles among the notification modes: silent, vibrate, ring,\n * and so forth.\n */\n MannerMode: \"MannerMode\",\n /**\n * Presents a list of media applications, such as photo viewers, audio and\n * video players, and games. [1]\n */\n MediaApps: \"MediaApps\",\n /** The Audio Track key. */\n MediaAudioTrack: \"MediaAudioTrack\",\n /** Starts, continues, or increases the speed of fast forwarding the media. */\n MediaFastForward: \"MediaFastForward\",\n /** Jumps back to the last-viewed content, program, or other media. */\n MediaLast: \"MediaLast\",\n /**\n * Pauses the currently playing media. Some older applications use simply\n * \"Pause\" but this is not correct.\n */\n MediaPause: \"MediaPause\",\n /**\n * Starts or continues playing media at normal speed, if not already doing so.\n * Has no effect otherwise.\n */\n MediaPlay: \"MediaPlay\",\n /** Toggles between playing and pausing the current media. */\n MediaPlayPause: \"MediaPlayPause\",\n /** Starts or resumes recording media. */\n MediaRecord: \"MediaRecord\",\n /** Starts, continues, or increases the speed of rewinding the media. */\n MediaRewind: \"MediaRewind\",\n /** Skips backward to the previous content or program. */\n MediaSkipBackward: \"MediaSkipBackward\",\n /** Skips forward to the next content or program. */\n MediaSkipForward: \"MediaSkipForward\",\n /** Steps backward to the previous content or program. */\n MediaStepBackward: \"MediaStepBackward\",\n /** Steps forward to the next content or program. */\n MediaStepForward: \"MediaStepForward\",\n /**\n * Stops the current media activity (such as playing, recording, pausing,\n * forwarding, or rewinding). Has no effect if the media is currently stopped\n * already.\n */\n MediaStop: \"MediaStop\",\n /**\n * Top Menu button; opens the media's main menu, such as on a DVD or Blu-Ray\n * disc.\n */\n MediaTopMenu: \"MediaTopMenu\",\n /** Seeks to the next media or program track. */\n MediaTrackNext: \"MediaTrackNext\",\n /** Seeks to the previous media or program track. */\n MediaTrackPrevious: \"MediaTrackPrevious\",\n /**\n * The Meta key. Allows issuing special command inputs. This is the Windows\n * logo key, or the Command ⌘ key on Mac.\n */\n Meta: \"Meta\",\n /** Toggles the microphone on and off. */\n MicrophoneToggle: \"MicrophoneToggle\",\n /** Decreases the microphone's input volume. */\n MicrophoneVolumeDown: \"MicrophoneVolumeDown\",\n /** Mutes the microphone input. */\n MicrophoneVolumeMute: \"MicrophoneVolumeMute\",\n /** Increases the microphone's input volume. */\n MicrophoneVolumeUp: \"MicrophoneVolumeUp\",\n /** The Mod key. This is the Command ⌘ on Mac, or the Control key on Windows. */\n Mod: \"Mod\",\n /** The Mode Change key. Toggles or cycles among input modes of IMEs. */\n ModeChange: \"ModeChange\",\n /** The numeric keypad's multiplication key, *. */\n Multiply: \"Multiply\",\n /** Navigates into a submenu or option. */\n NavigateIn: \"NavigateIn\",\n /** Navigates to the next item. */\n NavigateNext: \"NavigateNext\",\n /** Navigates out of the current screen or menu. */\n NavigateOut: \"NavigateOut\",\n /** Navigates to the previous item. */\n NavigatePrevious: \"NavigatePrevious\",\n /** Creates a new document or message. */\n New: \"New\",\n /**\n * The Next Candidate function key. Selects the next possible match for the\n * ongoing input.\n */\n NextCandidate: \"NextCandidate\",\n /** Cycles to the next channel in the favorites list. */\n NextFavoriteChannel: \"NextFavoriteChannel\",\n /**\n * Cycles to the next saved user profile, if this feature is supported and\n * multiple profiles exist.\n */\n NextUserProfile: \"NextUserProfile\",\n /**\n * The NonConvert (\"Don't convert\") key. This accepts the current input method\n * sequence without running conversion when using an IME.\n */\n NonConvert: \"NonConvert\",\n /** The Notification key. */\n Notification: \"Notification\",\n /**\n * The NumLock (Number Lock) key. Toggles the numeric keypad between number\n * entry some other mode (often directional arrows).\n */\n NumLock: \"NumLock\",\n /**\n * Opens the user interface for selecting on demand content or programs to\n * watch.\n */\n OnDemand: \"OnDemand\",\n /** Opens an existing document or message. */\n Open: \"Open\",\n /**\n * The Page Down (or PgDn) key. Scrolls down or displays the next page of\n * content.\n */\n PageDown: \"PageDown\",\n /**\n * The Page Up (or PgUp) key. Scrolls up or displays the previous page of\n * content.\n */\n PageUp: \"PageUp\",\n /** Starts the process of pairing the remote with a device to be controlled. */\n Pairing: \"Pairing\",\n /** Paste from the clipboard. */\n Paste: \"Paste\",\n /**\n * The Pause key. Pauses the current application or state, if applicable. This\n * shouldn't be confused with the \"MediaPause\" key value, which is used for\n * media controllers, rather than to control applications and processes.\n */\n Pause: \"Pause\",\n /** A button to move the picture-in-picture view downward. */\n PinPDown: \"PinPDown\",\n /** A button to control moving the picture-in-picture view. */\n PinPMove: \"PinPMove\",\n /** Toggles display of th epicture-in-picture view on and off. */\n PinPToggle: \"PinPToggle\",\n /** A button to move the picture-in-picture view upward. */\n PinPUp: \"PinPUp\",\n /**\n * The Play key. Resumes a previously paused application, if applicable. This\n * shouldn't be confused with the \"MediaPlay\" key value, which is used for\n * media controllers, rather than to control applications and processes.\n */\n Play: \"Play\",\n /** Decreases the media playback rate. */\n PlaySpeedDown: \"PlaySpeedDown\",\n /** Returns the media playback rate to normal. */\n PlaySpeedReset: \"PlaySpeedReset\",\n /** Increases the media playback rate. */\n PlaySpeedUp: \"PlaySpeedUp\",\n /**\n * The Power button or key, to toggle power on and off. Not all systems pass\n * this key through to to the user agent.\n */\n Power: \"Power\",\n /** The PowerOff or PowerDown key. Shuts off the system. */\n PowerOff: \"PowerOff\",\n /**\n * The Previous Candidate key. Selects the previous possible match for the\n * ongoing input.\n */\n PreviousCandidate: \"PreviousCandidate\",\n /** Prints the current document or message. */\n Print: \"Print\",\n /**\n * The PrintScreen or PrtScr key. Sometimes SnapShot. Captures the screen and\n * prints it or saves it to disk.\n */\n PrintScreen: \"PrintScreen\",\n /** The Process key. Instructs the IME to process the conversion. */\n Process: \"Process\",\n /** The Props (Properties) key. */\n Props: \"Props\",\n /** Toggles random media (also known as \"shuffle mode\") on and off. */\n RandomToggle: \"RandomToggle\",\n /**\n * A code sent when the remote control's battery is low. This doesn't actually\n * correspond to a physical key at all.\n */\n RcLowBattery: \"RcLowBattery\",\n /** Cycles among the available media recording speeds. */\n RecordSpeedNext: \"RecordSpeedNext\",\n /** Redo the last action. */\n Redo: \"Redo\",\n /**\n * Toggles radio frequency (RF) input bypass mode on and off. RF bypass mode\n * passes RF input directly to the RF output without any processing or\n * filtering.\n */\n RfBypass: \"RfBypass\",\n /** The Romaji key; selects the Roman character set. */\n Romaji: \"Romaji\",\n /** Cycles among input modes on an external set-top box (STB). */\n STBInput: \"STBInput\",\n /** Toggles on and off an external STB. */\n STBPower: \"STBPower\",\n /** Saves the current document or message. */\n Save: \"Save\",\n /**\n * Toggles the channel scan mode on and off; this is a mode which flips\n * through channels automatically until the user stops the scan.\n */\n ScanChannelsToggle: \"ScanChannelsToggle\",\n /** Cycles through the available screen display modes. */\n ScreenModeNext: \"ScreenModeNext\",\n /** The Scroll Lock key. Toggles beteen scrolling and cursor movement modes. */\n ScrollLock: \"ScrollLock\",\n /** The Select key. */\n Select: \"Select\",\n /**\n * The numeric keypad's places separator character (in the United States, this\n * is a comma, but elsewhere it is frequently a period).\n */\n Separator: \"Separator\",\n /** Toggles display of the device's settings screen on and off. */\n Settings: \"Settings\",\n /**\n * The Shift key. Modifies keystrokes to allow typing upper (or other) case\n * letters, and to support typing punctuation and other special characters.\n */\n Shift: \"Shift\",\n /**\n * The Single Candidate key. Enables single candidate mode (as opposed to\n * multi-candidate mode); in this mode, only one candidate is displayed at a\n * time.\n */\n SingleCandidate: \"SingleCandidate\",\n /** The first general-purpose virtual function key. */\n Soft1: \"Soft1\",\n /** The second general-purpose virtual function key. */\n Soft2: \"Soft2\",\n /** The third general-purpose virtual function key. */\n Soft3: \"Soft3\",\n /** The fourth general-purpose virtual function key. */\n Soft4: \"Soft4\",\n /**\n * Presents a list of possible corrections for a word which was incorrectly\n * identified.\n */\n SpeechCorrectionList: \"SpeechCorrectionList\",\n /**\n * Toggles between dictation mode and command/control mode. This lets the\n * speech engine know whether to interpret spoken words as input text or as\n * commands.\n */\n SpeechInputToggle: \"SpeechInputToggle\",\n /** Starts spell checking the current document. */\n SpellCheck: \"SpellCheck\",\n /** Toggles split screen display mode on and off. */\n SplitScreenToggle: \"SplitScreenToggle\",\n /**\n * The Standby key; also known as Suspend or Sleep. This turns off the display\n * and puts the computer in a low power consumption mode, without completely\n * powering off.\n */\n Standby: \"Standby\",\n /** Toggles the display of subtitles on and off if they're available. */\n Subtitle: \"Subtitle\",\n /** The numeric keypad's subtraction key, -. */\n Subtract: \"Subtract\",\n /** The Super key. */\n Super: \"Super\",\n /** The Symbol modifier key (found on certain virtual keyboards). */\n Symbol: \"Symbol\",\n /** The Symbol Lock key. */\n SymbolLock: \"SymbolLock\",\n /** Switches into TV viewing mode. */\n TV: \"TV\",\n /** Toggles 3D TV mode on and off. */\n TV3DMode: \"TV3DMode\",\n /** Toggles between antenna and cable inputs. */\n TVAntennaCable: \"TVAntennaCable\",\n /** Toggles audio description mode on and off. */\n TVAudioDescription: \"TVAudioDescription\",\n /**\n * Decreases trhe audio description's mixing volume; reduces the volume of the\n * audio descriptions relative to the program sound.\n */\n TVAudioDescriptionMixDown: \"TVAudioDescriptionMixDown\",\n /**\n * Increases the audio description's mixing volume; increases the volume of\n * the audio descriptions relative to the program sound.\n */\n TVAudioDescriptionMixUp: \"TVAudioDescriptionMixUp\",\n /**\n * Displays or hides the media contents available for playback (this may be a\n * channel guide showing the currently airing programs, or a list of media\n * files to play).\n */\n TVContentsMenu: \"TVContentsMenu\",\n /** Displays or hides the TV's data service menu. */\n TVDataService: \"TVDataService\",\n /** Cycles the input mode on an external TV. */\n TVInput: \"TVInput\",\n /** Switches to the input \"Component 1.\" */\n TVInputComponent1: \"TVInputComponent1\",\n /** Switches to the input \"Component 2.\" */\n TVInputComponent2: \"TVInputComponent2\",\n /** Switches to the input \"Composite 1.\" */\n TVInputComposite1: \"TVInputComposite1\",\n /** Switches to the input \"Composite 2.\" */\n TVInputComposite2: \"TVInputComposite2\",\n /** Switches to the input \"HDMI 1.\" */\n TVInputHDMI1: \"TVInputHDMI1\",\n /** Switches to the input \"HDMI 2.\" */\n TVInputHDMI2: \"TVInputHDMI2\",\n /** Switches to the input \"HDMI 3.\" */\n TVInputHDMI3: \"TVInputHDMI3\",\n /** Switches to the input \"HDMI 4.\" */\n TVInputHDMI4: \"TVInputHDMI4\",\n /** Switches to the input \"VGA 1.\" */\n TVInputVGA1: \"TVInputVGA1\",\n /** The Media Context menu key. */\n TVMediaContext: \"TVMediaContext\",\n /** Toggle the TV's network connection on and off. */\n TVNetwork: \"TVNetwork\",\n /** Put the TV into number entry mode. */\n TVNumberEntry: \"TVNumberEntry\",\n /** The device's power button. */\n TVPower: \"TVPower\",\n /** Radio button. */\n TVRadioService: \"TVRadioService\",\n /** Satellite button. */\n TVSatellite: \"TVSatellite\",\n /** Broadcast Satellite button. */\n TVSatelliteBS: \"TVSatelliteBS\",\n /** Communication Satellite button. */\n TVSatelliteCS: \"TVSatelliteCS\",\n /** Toggles among available satellites. */\n TVSatelliteToggle: \"TVSatelliteToggle\",\n /**\n * Selects analog terrestrial television service (analog cable or antenna\n * reception).\n */\n TVTerrestrialAnalog: \"TVTerrestrialAnalog\",\n /**\n * Selects digital terrestrial television service (digital cable or antenna\n * receiption).\n */\n TVTerrestrialDigital: \"TVTerrestrialDigital\",\n /** Timer programming button. */\n TVTimer: \"TVTimer\",\n /** The Horizontal Tab key, Tab. */\n Tab: \"Tab\",\n /** Toggles display of teletext, if available. */\n Teletext: \"Teletext\",\n /** Undo the last action. */\n Undo: \"Undo\",\n /**\n * The user agent wasn't able to map the event's virtual keycode to a specific\n * key value. This can happen due to hardware or software constraints, or\n * because of constraints around the platform on which the user agent is\n * running.\n */\n Unidentified: \"Unidentified\",\n /** Cycles through the available video modes. */\n VideoModeNext: \"VideoModeNext\",\n /** The Voice Dial key. Initiates voice dialing. */\n VoiceDial: \"VoiceDial\",\n /**\n * The WakeUp key; used to wake the computer from the hibernation or standby\n * modes.\n */\n WakeUp: \"WakeUp\",\n /**\n * Causes the device to identify itself in some fashion, such as by flashing a\n * light, briefly changing the brightness of indicator lights, or emitting a\n * tone.\n */\n Wink: \"Wink\",\n /** The Zenkaku (full width) characters key. */\n Zenkaku: \"Zenkaku\",\n /** The Zenkaku/Hankaku (full width/half width) toggle key. */\n ZenkakuHanaku: \"ZenkakuHanaku\",\n /** The ZoomIn key. */\n ZoomIn: \"ZoomIn\",\n /** The ZoomOut key. */\n ZoomOut: \"ZoomOut\",\n /**\n * Toggles between full-screen and scaled content display, or otherwise change\n * the magnification level.\n */\n ZoomToggle: \"ZoomToggle\"\n};\n\n// src/internal/useRecordHotkeys.ts\nimport { useCallback as useCallback2, useState as useState2 } from \"react\";\nfunction useRecordHotkeys() {\n const [keys, setKeys] = useState2(/* @__PURE__ */ new Set());\n const [isRecording, setIsRecording] = useState2(false);\n const handler = useCallback2((event) => {\n if (event.code === void 0) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n setKeys((prev) => {\n const newKeys = new Set(prev);\n newKeys.add(mapKey(event.code));\n return newKeys;\n });\n }, []);\n const stop = useCallback2(() => {\n if (typeof document !== \"undefined\") {\n document.removeEventListener(\"keydown\", handler);\n setIsRecording(false);\n }\n }, [handler]);\n const start = useCallback2(() => {\n setKeys(/* @__PURE__ */ new Set());\n if (typeof document !== \"undefined\") {\n stop();\n document.addEventListener(\"keydown\", handler);\n setIsRecording(true);\n }\n }, [handler, stop]);\n const resetKeys = useCallback2(() => {\n setKeys(/* @__PURE__ */ new Set());\n }, []);\n return [keys, { isRecording, resetKeys, start, stop }];\n}\n\n// src/internal/useHotkeys.ts\nimport {\n useCallback as useCallback3,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef as useRef2,\n useState as useState3\n} from \"react\";\n\n// src/internal/useDeepEqualMemo.ts\nimport { useRef } from \"react\";\nfunction useDeepEqualMemo(value) {\n const ref = useRef();\n if (!deepEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n\n// src/internal/validators.ts\nfunction maybePreventDefault(e, hotkey, preventDefault) {\n if (typeof preventDefault === \"function\" && preventDefault(e, hotkey) || preventDefault === true) {\n e.preventDefault();\n }\n}\nfunction isHotkeyEnabled(e, hotkey, enabled) {\n if (typeof enabled === \"function\") {\n return enabled(e, hotkey);\n }\n return enabled === true || enabled === void 0;\n}\nfunction isKeyboardEventTriggeredByInput(ev) {\n return isHotkeyEnabledOnTag(ev, [\"input\", \"textarea\", \"select\"]);\n}\nfunction isHotkeyEnabledOnTag({ target }, enabledOnTags = false) {\n const targetTagName = target && target.tagName;\n if (isReadonlyArray(enabledOnTags)) {\n return Boolean(\n targetTagName && (enabledOnTags == null ? void 0 : enabledOnTags.some(\n (tag) => tag.toLowerCase() === targetTagName.toLowerCase()\n ))\n );\n }\n return Boolean(targetTagName && enabledOnTags && enabledOnTags);\n}\nfunction isScopeActive(activeScopes, scopes) {\n if (activeScopes.length === 0 && scopes) {\n console.warn(\n 'A hotkey has the \"scopes\" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a '\n );\n return true;\n }\n if (!scopes) {\n return true;\n }\n return activeScopes.some((scope) => scopes.includes(scope)) || activeScopes.includes(\"*\");\n}\nvar isHotkeyMatchingKeyboardEvent = (e, hotkey, ignoreModifiers = false) => {\n const { alt, ctrl, keys, meta, mod, shift, useKey } = hotkey;\n const { altKey, code, ctrlKey, key: producedKey, metaKey, shiftKey } = e;\n const mappedCode = mapKey(code);\n if (useKey && (keys == null ? void 0 : keys.length) === 1 && keys.includes(producedKey)) {\n return true;\n }\n if (!(keys == null ? void 0 : keys.includes(mappedCode)) && ![\"alt\", \"control\", \"ctrl\", \"meta\", \"os\", \"shift\", \"unknown\"].includes(\n mappedCode\n )) {\n return false;\n }\n if (!ignoreModifiers) {\n if (alt !== altKey && mappedCode !== \"alt\") {\n return false;\n }\n if (shift !== shiftKey && mappedCode !== \"shift\") {\n return false;\n }\n if (mod) {\n if (!metaKey && !ctrlKey) {\n return false;\n }\n } else {\n if (meta !== metaKey && mappedCode !== \"meta\" && mappedCode !== \"os\") {\n return false;\n }\n if (ctrl !== ctrlKey && mappedCode !== \"ctrl\" && mappedCode !== \"control\") {\n return false;\n }\n }\n }\n if (keys && keys.length === 1 && keys.includes(mappedCode)) {\n return true;\n } else if (keys) {\n return isHotkeyPressed(keys);\n } else if (!keys) {\n return true;\n }\n return false;\n};\n\n// src/internal/useHotkeys.ts\nvar stopPropagation = (e) => {\n e.stopPropagation();\n e.preventDefault();\n e.stopImmediatePropagation();\n};\nvar useSafeLayoutEffect = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\nfunction useHotkeys(keys, callback, options, dependencies) {\n const [ref, setRef] = useState3(null);\n const hasTriggeredRef = useRef2(false);\n const _options = Array.isArray(options) ? Array.isArray(dependencies) ? void 0 : dependencies : options;\n const _keys = useMemo(() => {\n if (Array.isArray(keys) && keys.length > 0 && Array.isArray(keys[0])) {\n return keys.map(\n (keyCombo) => keyCombo.map((k) => k.toString()).join((_options == null ? void 0 : _options.splitKey) || \"+\")\n ).join((_options == null ? void 0 : _options.delimiter) || \",\");\n } else if (Array.isArray(keys)) {\n return keys.join((_options == null ? void 0 : _options.delimiter) || \",\");\n }\n return keys;\n }, [keys, _options == null ? void 0 : _options.splitKey, _options == null ? void 0 : _options.delimiter]);\n const _deps = Array.isArray(options) ? options : Array.isArray(dependencies) ? dependencies : void 0;\n const memoisedCB = useCallback3(callback, _deps != null ? _deps : []);\n const cbRef = useRef2(memoisedCB);\n cbRef.current = _deps ? memoisedCB : callback;\n const memoisedOptions = useDeepEqualMemo(_options);\n const { activeScopes } = useHotkeysContext();\n const proxy = useBoundHotkeysProxy();\n useSafeLayoutEffect(() => {\n if ((memoisedOptions == null ? void 0 : memoisedOptions.enabled) === false || !isScopeActive(activeScopes, memoisedOptions == null ? void 0 : memoisedOptions.scopes)) {\n return;\n }\n const listener = (e, isKeyUp = false) => {\n var _a;\n if (isKeyboardEventTriggeredByInput(e) && !isHotkeyEnabledOnTag(e, memoisedOptions == null ? void 0 : memoisedOptions.enableOnFormTags)) {\n return;\n }\n if (ref !== null) {\n const rootNode = ref.getRootNode();\n if ((rootNode instanceof Document || rootNode instanceof ShadowRoot) && rootNode.activeElement !== ref && !ref.contains(rootNode.activeElement)) {\n stopPropagation(e);\n return;\n }\n }\n if (((_a = e.target) == null ? void 0 : _a.isContentEditable) && !(memoisedOptions == null ? void 0 : memoisedOptions.enableOnContentEditable)) {\n return;\n }\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.delimiter).forEach((key) => {\n var _a2, _b, _c;\n const hotkey = parseHotkey(\n key,\n memoisedOptions == null ? void 0 : memoisedOptions.splitKey,\n memoisedOptions == null ? void 0 : memoisedOptions.useKey\n );\n if (isHotkeyMatchingKeyboardEvent(\n e,\n hotkey,\n memoisedOptions == null ? void 0 : memoisedOptions.ignoreModifiers\n ) || ((_a2 = hotkey.keys) == null ? void 0 : _a2.includes(\"*\"))) {\n if (((_b = memoisedOptions == null ? void 0 : memoisedOptions.ignoreEventWhenPrevented) != null ? _b : true) && e.defaultPrevented) {\n return;\n }\n if ((_c = memoisedOptions == null ? void 0 : memoisedOptions.ignoreEventWhen) == null ? void 0 : _c.call(memoisedOptions, e)) {\n return;\n }\n if (isKeyUp && hasTriggeredRef.current) {\n return;\n }\n if (!isHotkeyEnabled(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.enabled)) {\n stopPropagation(e);\n return;\n }\n cbRef.current(e, hotkey);\n maybePreventDefault(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.preventDefault);\n if (!isKeyUp) {\n hasTriggeredRef.current = true;\n }\n }\n });\n };\n const handleKeyDown = (event) => {\n if (event.code === void 0) {\n return;\n }\n pushToCurrentlyPressedKeys(mapKey(event.code));\n if ((memoisedOptions == null ? void 0 : memoisedOptions.keydown) === void 0 && (memoisedOptions == null ? void 0 : memoisedOptions.keyup) !== true || (memoisedOptions == null ? void 0 : memoisedOptions.keydown)) {\n listener(event);\n }\n };\n const handleKeyUp = (event) => {\n if (event.code === void 0) {\n return;\n }\n removeFromCurrentlyPressedKeys(mapKey(event.code));\n hasTriggeredRef.current = false;\n if (memoisedOptions == null ? void 0 : memoisedOptions.keyup) {\n listener(event, true);\n }\n };\n const domNode = ref || (_options == null ? void 0 : _options.document) || document;\n domNode.addEventListener(\"keyup\", handleKeyUp);\n domNode.addEventListener(\"keydown\", handleKeyDown);\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.delimiter).forEach(\n (key) => proxy.addHotkey(\n parseHotkey(\n key,\n memoisedOptions == null ? void 0 : memoisedOptions.splitKey,\n memoisedOptions == null ? void 0 : memoisedOptions.useKey,\n memoisedOptions == null ? void 0 : memoisedOptions.description\n )\n )\n );\n }\n return () => {\n domNode.removeEventListener(\"keyup\", handleKeyUp);\n domNode.removeEventListener(\"keydown\", handleKeyDown);\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.delimiter).forEach(\n (key) => proxy.removeHotkey(\n parseHotkey(\n key,\n memoisedOptions == null ? void 0 : memoisedOptions.splitKey,\n memoisedOptions == null ? void 0 : memoisedOptions.useKey,\n memoisedOptions == null ? void 0 : memoisedOptions.description\n )\n )\n );\n }\n };\n }, [ref, _keys, memoisedOptions, activeScopes]);\n return setRef;\n}\nexport {\n HotkeysProvider,\n Key,\n isHotkeyPressed,\n useHotkeys,\n useHotkeysContext,\n useRecordHotkeys\n};\n//# sourceMappingURL=index.mjs.map","// src/react/slate-react.ts\nimport {\n DefaultElement,\n DefaultPlaceholder,\n Editable,\n Slate\n} from \"slate-react\";\nimport {\n useComposing,\n useFocused,\n useReadOnly,\n useSelected\n} from \"slate-react\";\nimport { withReact } from \"slate-react\";\n\n// src/react/components/DefaultLeaf.tsx\nimport React from \"react\";\nimport { clsx as clsx2 } from \"clsx\";\n\n// src/lib/editor/withSlate.ts\nimport {\n createEditor\n} from \"@udecode/slate\";\nimport { nanoid } from \"nanoid\";\n\n// src/internal/utils/isFunction.ts\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/internal/utils/mergePlugins.ts\nimport mergeWith from \"lodash/mergeWith.js\";\nfunction mergePlugins(basePlugin, ...sourcePlugins) {\n return mergeWith(\n {},\n basePlugin,\n ...sourcePlugins,\n (objValue, srcValue, key) => {\n if (Array.isArray(srcValue)) {\n return srcValue;\n }\n if (key === \"options\") {\n return { ...objValue, ...srcValue };\n }\n }\n );\n}\n\n// src/lib/plugin/createSlatePlugin.ts\nfunction createSlatePlugin(config = {}) {\n let baseConfig;\n let initialExtension;\n if (isFunction(config)) {\n baseConfig = { key: \"\" };\n initialExtension = (editor) => config(editor);\n } else {\n baseConfig = config;\n }\n const key = baseConfig.key ?? \"\";\n const plugin = mergePlugins(\n {\n key,\n __apiExtensions: [],\n __configuration: null,\n __extensions: initialExtension ? [initialExtension] : [],\n __optionExtensions: [],\n api: {},\n dependencies: [],\n editor: {},\n inject: {},\n node: { type: key },\n options: {},\n override: {},\n parser: {},\n parsers: {},\n plugins: [],\n priority: 100,\n render: {},\n shortcuts: {},\n transforms: {},\n handlers: {}\n },\n config\n );\n plugin.configure = (config2) => {\n const newPlugin = { ...plugin };\n newPlugin.__configuration = (ctx) => isFunction(config2) ? config2(ctx) : config2;\n return createSlatePlugin(newPlugin);\n };\n plugin.configurePlugin = (p, config2) => {\n const newPlugin = { ...plugin };\n const configureNestedPlugin = (plugins) => {\n let found = false;\n const updatedPlugins = plugins.map((nestedPlugin) => {\n if (nestedPlugin.key === p.key) {\n found = true;\n return createSlatePlugin({\n ...nestedPlugin,\n __configuration: (ctx) => isFunction(config2) ? config2(ctx) : config2\n });\n }\n if (nestedPlugin.plugins && nestedPlugin.plugins.length > 0) {\n const result2 = configureNestedPlugin(nestedPlugin.plugins);\n if (result2.found) {\n found = true;\n return {\n ...nestedPlugin,\n plugins: result2.plugins\n };\n }\n }\n return nestedPlugin;\n });\n return { found, plugins: updatedPlugins };\n };\n const result = configureNestedPlugin(newPlugin.plugins);\n newPlugin.plugins = result.plugins;\n return createSlatePlugin(newPlugin);\n };\n plugin.extendEditorApi = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n { extension, isPluginSpecific: false }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extendOptions = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__optionExtensions = [\n ...newPlugin.__optionExtensions,\n extension\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extendApi = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n { extension, isPluginSpecific: true }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extendEditorTransforms = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n { extension, isPluginSpecific: false, isTransform: true }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extendTransforms = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n { extension, isPluginSpecific: true, isTransform: true }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.overrideEditor = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n {\n extension,\n isOverride: true,\n isPluginSpecific: false,\n isTransform: true\n }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extend = (extendConfig) => {\n let newPlugin = { ...plugin };\n if (isFunction(extendConfig)) {\n newPlugin.__extensions = [\n ...newPlugin.__extensions,\n extendConfig\n ];\n } else {\n newPlugin = mergePlugins(newPlugin, extendConfig);\n }\n return createSlatePlugin(newPlugin);\n };\n plugin.clone = () => mergePlugins(plugin);\n plugin.extendPlugin = (p, extendConfig) => {\n const newPlugin = { ...plugin };\n const extendNestedPlugin = (plugins) => {\n let found = false;\n const updatedPlugins = plugins.map((nestedPlugin) => {\n if (nestedPlugin.key === p.key) {\n found = true;\n return createSlatePlugin({\n ...nestedPlugin,\n __extensions: [\n ...nestedPlugin.__extensions,\n (ctx) => isFunction(extendConfig) ? extendConfig(ctx) : extendConfig\n ]\n });\n }\n if (nestedPlugin.plugins && nestedPlugin.plugins.length > 0) {\n const result2 = extendNestedPlugin(nestedPlugin.plugins);\n if (result2.found) {\n found = true;\n return {\n ...nestedPlugin,\n plugins: result2.plugins\n };\n }\n }\n return nestedPlugin;\n });\n return { found, plugins: updatedPlugins };\n };\n const result = extendNestedPlugin(newPlugin.plugins);\n newPlugin.plugins = result.plugins;\n if (!result.found) {\n newPlugin.plugins.push(\n createSlatePlugin({\n key: p.key,\n __extensions: [\n (ctx) => isFunction(extendConfig) ? extendConfig(ctx) : extendConfig\n ]\n })\n );\n }\n return createSlatePlugin(newPlugin);\n };\n return plugin;\n}\nfunction createTSlatePlugin(config = {}) {\n return createSlatePlugin(config);\n}\n\n// src/lib/plugin/getEditorPlugin.ts\nfunction getEditorPlugin(editor, p) {\n const plugin = editor.getPlugin(p);\n return {\n api: editor.api,\n editor,\n getOption: (key, ...args) => editor.getOption(plugin, key, ...args),\n getOptions: () => editor.getOptions(plugin),\n plugin,\n setOption: (keyOrOptions, value) => editor.setOption(plugin, keyOrOptions, value),\n setOptions: (options) => editor.setOptions(plugin, options),\n tf: editor.transforms,\n type: plugin.node.type\n };\n}\n\n// src/internal/plugin/resolvePlugin.ts\nimport merge from \"lodash/merge.js\";\nvar resolvePlugin = (editor, _plugin) => {\n let plugin = mergePlugins({}, _plugin);\n plugin.__resolved = true;\n if (plugin.__configuration) {\n const configResult = plugin.__configuration(\n getEditorPlugin(editor, plugin)\n );\n plugin = mergePlugins(plugin, configResult);\n delete plugin.__configuration;\n }\n if (plugin.__extensions && plugin.__extensions.length > 0) {\n plugin.__extensions.forEach((extension) => {\n plugin = mergePlugins(\n plugin,\n extension(getEditorPlugin(editor, plugin))\n );\n });\n plugin.__extensions = [];\n }\n const targetPluginToInject = plugin.inject?.targetPluginToInject;\n const targetPlugins = plugin.inject?.targetPlugins;\n if (targetPluginToInject && targetPlugins && targetPlugins.length > 0) {\n plugin.inject = plugin.inject || {};\n plugin.inject.plugins = merge(\n {},\n plugin.inject.plugins,\n Object.fromEntries(\n targetPlugins.map((targetPlugin) => {\n const injectedPlugin = targetPluginToInject({\n ...getEditorPlugin(editor, plugin),\n targetPlugin\n });\n return [targetPlugin, injectedPlugin];\n })\n )\n );\n }\n if (plugin.node?.component) {\n plugin.render.node = plugin.node.component;\n }\n if (plugin.render?.node) {\n plugin.node.component = plugin.render.node;\n }\n validatePlugin(editor, plugin);\n return plugin;\n};\nvar validatePlugin = (editor, plugin) => {\n if (!plugin.__extensions) {\n editor.api.debug.error(\n `Invalid plugin '${plugin.key}', you should use createSlatePlugin.`,\n \"USE_CREATE_PLUGIN\"\n );\n }\n if (plugin.node.isElement && plugin.node.isLeaf) {\n editor.api.debug.error(\n `Plugin ${plugin.key} cannot be both an element and a leaf.`,\n \"PLUGIN_NODE_TYPE\"\n );\n }\n};\n\n// src/lib/plugin/getSlatePlugin.ts\nfunction getSlatePlugin(editor, p) {\n let plugin = p;\n const editorPlugin = editor.plugins[p.key];\n if (!editorPlugin) {\n if (!plugin.node) {\n plugin = createSlatePlugin(plugin);\n }\n return plugin.__resolved ? plugin : resolvePlugin(editor, plugin);\n }\n return editorPlugin;\n}\nfunction getPluginType(editor, plugin) {\n const p = editor.getPlugin(plugin);\n return p.node.type ?? p.key ?? \"\";\n}\n\n// src/internal/plugin/pipeNormalizeInitialValue.ts\nvar pipeNormalizeInitialValue = (editor) => {\n editor.pluginList.forEach((p) => {\n p.normalizeInitialValue?.({\n ...getEditorPlugin(editor, p),\n value: editor.children\n });\n });\n};\n\n// src/internal/plugin/resolvePlugins.ts\nimport {\n assignLegacyApi,\n assignLegacyTransforms,\n syncLegacyMethods\n} from \"@udecode/slate\";\nimport { isDefined } from \"@udecode/utils\";\nimport merge2 from \"lodash/merge.js\";\nimport { createZustandStore } from \"zustand-x\";\nvar resolvePlugins = (editor, plugins = []) => {\n editor.pluginList = [];\n editor.plugins = {};\n editor.shortcuts = {};\n const resolvedPlugins = resolveAndSortPlugins(editor, plugins);\n applyPluginsToEditor(editor, resolvedPlugins);\n resolvePluginOverrides(editor);\n resolvePluginStores(editor);\n editor.pluginList.forEach((plugin) => {\n if (plugin.extendEditor) {\n editor = plugin.extendEditor(getEditorPlugin(editor, plugin));\n syncLegacyMethods(editor);\n }\n resolvePluginMethods(editor, plugin);\n });\n resolvePluginShortcuts(editor);\n return editor;\n};\nvar resolvePluginStores = (editor) => {\n editor.pluginList.forEach((plugin) => {\n let store = createZustandStore(plugin.options, {\n mutative: true,\n name: plugin.key\n });\n if (plugin.__optionExtensions && plugin.__optionExtensions.length > 0) {\n plugin.__optionExtensions.forEach((extension) => {\n const extendedOptions = extension(getEditorPlugin(editor, plugin));\n store = store.extendSelectors(() => extendedOptions);\n });\n }\n plugin.optionsStore = store;\n });\n};\nvar resolvePluginMethods = (editor, plugin) => {\n Object.entries(plugin.api).forEach(([apiKey, apiFunction]) => {\n editor.api[apiKey] = apiFunction;\n });\n if (plugin.__apiExtensions && plugin.__apiExtensions.length > 0) {\n plugin.__apiExtensions.forEach(\n ({ extension, isOverride, isPluginSpecific, isTransform }) => {\n const newExtensions = extension(getEditorPlugin(editor, plugin));\n if (isOverride) {\n if (newExtensions.api) {\n merge2(editor.api, newExtensions.api);\n merge2(plugin.api, newExtensions.api);\n assignLegacyApi(editor, editor.api);\n }\n if (newExtensions.transforms) {\n merge2(editor.transforms, newExtensions.transforms);\n merge2(plugin.transforms, newExtensions.transforms);\n assignLegacyTransforms(editor, newExtensions.transforms);\n }\n } else if (isTransform) {\n if (isPluginSpecific) {\n if (!editor.transforms[plugin.key]) {\n editor.transforms[plugin.key] = {};\n }\n if (!plugin.transforms[plugin.key]) {\n plugin.transforms[plugin.key] = {};\n }\n merge2(editor.transforms[plugin.key], newExtensions);\n merge2(plugin.transforms[plugin.key], newExtensions);\n } else {\n merge2(editor.transforms, newExtensions);\n merge2(plugin.transforms, newExtensions);\n assignLegacyTransforms(editor, newExtensions);\n }\n } else {\n if (isPluginSpecific) {\n if (!editor.api[plugin.key]) {\n editor.api[plugin.key] = {};\n }\n if (!plugin.api[plugin.key]) {\n plugin.api[plugin.key] = {};\n }\n merge2(editor.api[plugin.key], newExtensions);\n merge2(plugin.api[plugin.key], newExtensions);\n } else {\n merge2(editor.api, newExtensions);\n merge2(plugin.api, newExtensions);\n assignLegacyApi(editor, editor.api);\n }\n }\n }\n );\n delete plugin.__apiExtensions;\n }\n};\nvar resolvePluginShortcuts = (editor) => {\n const shortcutsByPriority = [];\n editor.pluginList.forEach((plugin) => {\n Object.entries(plugin.shortcuts).forEach(([key, hotkey]) => {\n if (hotkey === null) {\n const index = shortcutsByPriority.findIndex((item) => item.key === key);\n if (index !== -1) {\n shortcutsByPriority.splice(index, 1);\n }\n } else {\n const priority = hotkey.priority ?? plugin.priority;\n const existingIndex = shortcutsByPriority.findIndex(\n (item) => item.key === key\n );\n if (existingIndex === -1 || priority >= shortcutsByPriority[existingIndex].priority) {\n if (existingIndex !== -1) {\n shortcutsByPriority.splice(existingIndex, 1);\n }\n shortcutsByPriority.push({ key, hotkey, priority });\n }\n }\n });\n });\n shortcutsByPriority.sort((a, b) => b.hotkey.priority - a.hotkey.priority);\n editor.shortcuts = Object.fromEntries(\n shortcutsByPriority.map(({ key, hotkey }) => {\n const { priority, ...hotkeyWithoutPriority } = hotkey;\n return [key, hotkeyWithoutPriority];\n })\n );\n};\nvar flattenAndResolvePlugins = (editor, plugins) => {\n const pluginMap = /* @__PURE__ */ new Map();\n const processPlugin = (plugin) => {\n const resolvedPlugin = resolvePlugin(editor, plugin);\n const existingPlugin = pluginMap.get(resolvedPlugin.key);\n if (existingPlugin) {\n pluginMap.set(\n resolvedPlugin.key,\n mergePlugins(existingPlugin, resolvedPlugin)\n );\n } else {\n pluginMap.set(resolvedPlugin.key, resolvedPlugin);\n }\n if (resolvedPlugin.plugins && resolvedPlugin.plugins.length > 0) {\n resolvedPlugin.plugins.forEach(processPlugin);\n }\n };\n plugins.forEach(processPlugin);\n return pluginMap;\n};\nvar resolveAndSortPlugins = (editor, plugins) => {\n const pluginMap = flattenAndResolvePlugins(editor, plugins);\n const enabledPlugins = Array.from(pluginMap.values()).filter(\n (plugin) => plugin.enabled !== false\n );\n enabledPlugins.sort((a, b) => b.priority - a.priority);\n const orderedPlugins = [];\n const visited = /* @__PURE__ */ new Set();\n const visit = (plugin) => {\n if (visited.has(plugin.key)) return;\n visited.add(plugin.key);\n plugin.dependencies?.forEach((depKey) => {\n const depPlugin = pluginMap.get(depKey);\n if (depPlugin) {\n visit(depPlugin);\n } else {\n editor.api.debug.warn(\n `Plugin \"${plugin.key}\" depends on missing plugin \"${depKey}\"`,\n \"PLUGIN_DEPENDENCY_MISSING\"\n );\n }\n });\n orderedPlugins.push(plugin);\n };\n enabledPlugins.forEach(visit);\n return orderedPlugins;\n};\nvar applyPluginsToEditor = (editor, plugins) => {\n editor.pluginList = plugins;\n editor.plugins = Object.fromEntries(\n plugins.map((plugin) => [plugin.key, plugin])\n );\n};\nvar resolvePluginOverrides = (editor) => {\n const applyOverrides = (plugins) => {\n let overriddenPlugins = [...plugins];\n const enabledOverrides = {};\n const componentOverrides = {};\n const pluginOverrides = {};\n for (const plugin of plugins) {\n if (plugin.override.enabled) {\n Object.assign(enabledOverrides, plugin.override.enabled);\n }\n if (plugin.override.components) {\n Object.entries(plugin.override.components).forEach(\n ([key, component]) => {\n if (!componentOverrides[key] || plugin.priority > componentOverrides[key].priority) {\n componentOverrides[key] = {\n component,\n priority: plugin.priority\n };\n }\n }\n );\n }\n if (plugin.override.plugins) {\n Object.entries(plugin.override.plugins).forEach(([key, value]) => {\n pluginOverrides[key] = mergePlugins(pluginOverrides[key], value);\n if (value.enabled !== void 0) {\n enabledOverrides[key] = value.enabled;\n }\n });\n }\n }\n overriddenPlugins = overriddenPlugins.map((p) => {\n let updatedPlugin = { ...p };\n if (pluginOverrides[p.key]) {\n updatedPlugin = mergePlugins(updatedPlugin, pluginOverrides[p.key]);\n }\n if (componentOverrides[p.key] && (!p.render.node && !p.node.component || componentOverrides[p.key].priority > p.priority)) {\n updatedPlugin.render.node = componentOverrides[p.key].component;\n updatedPlugin.node.component = componentOverrides[p.key].component;\n }\n const enabled = enabledOverrides[p.key] ?? updatedPlugin.enabled;\n if (isDefined(enabled)) {\n updatedPlugin.enabled = enabled;\n }\n return updatedPlugin;\n });\n return overriddenPlugins.filter((p) => p.enabled !== false).map((plugin) => ({\n ...plugin,\n plugins: applyOverrides(plugin.plugins || [])\n }));\n };\n editor.pluginList = applyOverrides(editor.pluginList);\n editor.plugins = Object.fromEntries(\n editor.pluginList.map((plugin) => [plugin.key, plugin])\n );\n};\n\n// src/lib/plugins/AstPlugin.ts\nvar AstPlugin = createSlatePlugin({\n key: \"ast\",\n parser: {\n deserialize: ({ data }) => {\n const decoded = decodeURIComponent(window.atob(data));\n let parsed;\n try {\n parsed = JSON.parse(decoded);\n } catch {\n }\n return parsed;\n },\n format: \"application/x-slate-fragment\"\n }\n});\n\n// src/lib/plugins/DOMPlugin.ts\nvar DOMPlugin = createSlatePlugin({\n key: \"dom\"\n});\n\n// src/lib/plugins/HistoryPlugin.ts\nimport { withHistory } from \"@udecode/slate\";\nvar withPlateHistory = ({ editor }) => withHistory(editor);\nvar HistoryPlugin = createSlatePlugin({\n key: \"history\",\n extendEditor: withPlateHistory\n});\n\n// src/lib/plugins/InlineVoidPlugin.ts\nvar withInlineVoid = ({\n api: { isInline, isSelectable, isVoid, markableVoid },\n editor\n}) => {\n const voidTypes = [];\n const inlineTypes = [];\n const markableVoidTypes = [];\n const nonSelectableTypes = [];\n editor.pluginList.forEach((plugin) => {\n if (plugin.node.isInline) {\n inlineTypes.push(plugin.node.type);\n }\n if (plugin.node.isVoid) {\n voidTypes.push(plugin.node.type);\n }\n if (plugin.node.isMarkableVoid) {\n markableVoidTypes.push(plugin.node.type);\n }\n if (plugin.node.isSelectable === false) {\n nonSelectableTypes.push(plugin.node.type);\n }\n });\n return {\n api: {\n isInline(element) {\n return inlineTypes.includes(element.type) ? true : isInline(element);\n },\n isSelectable(element) {\n return nonSelectableTypes.includes(element.type) ? false : isSelectable(element);\n },\n isVoid(element) {\n return voidTypes.includes(element.type) ? true : isVoid(element);\n },\n markableVoid(element) {\n return markableVoidTypes.includes(element.type) ? true : markableVoid(element);\n }\n }\n };\n};\nvar InlineVoidPlugin = createSlatePlugin({\n key: \"inlineVoid\"\n}).overrideEditor(withInlineVoid);\n\n// src/internal/plugin/pipeInsertFragment.ts\nvar pipeInsertFragment = (editor, injectedPlugins, { fragment, ...options }) => {\n editor.tf.withoutNormalizing(() => {\n injectedPlugins.some((p) => {\n return p.parser?.preInsert?.({\n ...getEditorPlugin(editor, p),\n fragment,\n ...options\n }) === true;\n });\n editor.tf.insertFragment(fragment);\n });\n};\n\n// src/internal/plugin/pipeTransformData.ts\nvar pipeTransformData = (editor, plugins, { data, dataTransfer }) => {\n plugins.forEach((p) => {\n const transformData = p.parser?.transformData;\n if (!transformData) return;\n data = transformData({\n ...getEditorPlugin(editor, p),\n data,\n dataTransfer\n });\n });\n return data;\n};\n\n// src/internal/plugin/pipeTransformFragment.ts\nvar pipeTransformFragment = (editor, plugins, { fragment, ...options }) => {\n plugins.forEach((p) => {\n const transformFragment = p.parser?.transformFragment;\n if (!transformFragment) return;\n fragment = transformFragment({\n fragment,\n ...options,\n ...getEditorPlugin(editor, p)\n });\n });\n return fragment;\n};\n\n// src/lib/utils/applyDeepToNodes.ts\nimport {\n NodeApi,\n queryNode\n} from \"@udecode/slate\";\nvar applyDeepToNodes = ({\n apply,\n node,\n path = [],\n query,\n source\n}) => {\n const entry = [node, path];\n if (queryNode(entry, query)) {\n if (source instanceof Function) {\n apply(node, source());\n } else {\n apply(node, source);\n }\n }\n if (!NodeApi.isAncestor(node)) return;\n node.children.forEach((child, index) => {\n applyDeepToNodes({\n apply,\n node: child,\n path: path.concat([index]),\n query,\n source\n });\n });\n};\n\n// src/lib/utils/getInjectMatch.ts\nimport { ElementApi } from \"@udecode/slate\";\n\n// src/lib/utils/getKeysByTypes.ts\nvar getKeysByTypes = (editor, types) => {\n return Object.values(editor.plugins).filter((plugin) => types.includes(plugin.node.type)).map((plugin) => plugin.key);\n};\nvar getKeyByType = (editor, type) => {\n const plugin = Object.values(editor.plugins).find(\n (plugin2) => plugin2.node.type === type\n );\n return plugin?.key ?? type;\n};\n\n// src/lib/utils/getInjectMatch.ts\nvar getInjectMatch = (editor, plugin) => {\n return (node, path) => {\n const {\n inject: {\n excludeBelowPlugins,\n excludePlugins,\n isBlock: _isBlock,\n isElement: _isElement,\n isLeaf,\n maxLevel,\n targetPlugins\n }\n } = plugin;\n const element = ElementApi.isElement(node) ? node : void 0;\n if (_isElement && element) return false;\n if (_isBlock && (!element || !editor.api.isBlock(element))) return false;\n if (isLeaf && element) return false;\n if (element?.type) {\n if (excludePlugins?.includes(getKeyByType(editor, element.type))) {\n return false;\n }\n if (targetPlugins && !targetPlugins.includes(getKeyByType(editor, element.type))) {\n return false;\n }\n }\n if (excludeBelowPlugins || maxLevel) {\n if (maxLevel && path.length > maxLevel) {\n return false;\n }\n if (excludeBelowPlugins) {\n const excludeTypes = getKeysByTypes(editor, excludeBelowPlugins);\n const isBelow = editor.api.above({\n at: path,\n match: (n) => ElementApi.isElement(n) && excludeTypes.includes(n.type)\n });\n if (isBelow) return false;\n }\n }\n return true;\n };\n};\n\n// src/lib/utils/getInjectedPlugins.ts\nvar getInjectedPlugins = (editor, plugin) => {\n const injectedPlugins = [];\n [...editor.pluginList].reverse().forEach((p) => {\n const injectedPlugin = p.inject.plugins?.[plugin.key];\n if (injectedPlugin) injectedPlugins.push(injectedPlugin);\n });\n return [plugin, ...injectedPlugins];\n};\n\n// src/lib/utils/getPluginNodeProps.ts\nimport pick from \"lodash/pick.js\";\n\n// src/lib/static/utils/getNodeDataAttributes.ts\nimport { TextApi } from \"@udecode/slate\";\nimport kebabCase from \"lodash/kebabCase\";\nvar keyToDataAttribute = (key) => {\n return `data-slate-${kebabCase(key)}`;\n};\nvar getNodeDataAttributeKeys = (node) => {\n return Object.keys(node).filter(\n (key) => typeof node[key] !== \"object\" && (!TextApi.isText(node) || key !== \"text\")\n ).map((key) => keyToDataAttribute(key));\n};\n\n// src/internal/plugin/pipeInjectNodeProps.tsx\nimport clsx from \"clsx\";\n\n// src/internal/plugin/pluginInjectNodeProps.ts\nimport { isDefined as isDefined2 } from \"@udecode/utils\";\nvar pluginInjectNodeProps = (editor, plugin, nodeProps, getElementPath) => {\n const {\n key,\n inject: { nodeProps: injectNodeProps }\n } = plugin;\n const { element, text } = nodeProps;\n const node = element ?? text;\n if (!node) return;\n if (!injectNodeProps) return;\n const {\n classNames,\n defaultNodeValue,\n nodeKey = key,\n query,\n styleKey = nodeKey,\n transformClassName,\n transformNodeValue,\n transformProps,\n transformStyle,\n validNodeValues\n } = injectNodeProps;\n const injectMatch = getInjectMatch(editor, plugin);\n if (!injectMatch(node, getElementPath(node))) return;\n const queryResult = query?.({\n ...injectNodeProps,\n ...getEditorPlugin(editor, plugin),\n nodeProps\n });\n if (query && !queryResult) {\n return;\n }\n const nodeValue = node[nodeKey];\n if (!transformProps && (!isDefined2(nodeValue) || validNodeValues && !validNodeValues.includes(nodeValue) || nodeValue === defaultNodeValue)) {\n return;\n }\n const transformOptions = {\n ...nodeProps,\n ...getEditorPlugin(editor, plugin),\n nodeValue\n };\n const value = transformNodeValue?.(transformOptions) ?? nodeValue;\n transformOptions.value = value;\n let newProps = {};\n if (element && nodeKey) {\n newProps.className = `slate-${nodeKey}-${nodeValue}`;\n }\n if (classNames?.[nodeValue] || transformClassName) {\n newProps.className = transformClassName?.(transformOptions) ?? classNames?.[value];\n }\n if (styleKey) {\n newProps.style = transformStyle?.(transformOptions) ?? {\n [styleKey]: value\n };\n }\n if (transformProps) {\n newProps = transformProps({ ...transformOptions, props: newProps }) ?? newProps;\n }\n return newProps;\n};\n\n// src/internal/plugin/pipeInjectNodeProps.tsx\nvar pipeInjectNodeProps = (editor, nodeProps, getElementPath) => {\n editor.pluginList.forEach((plugin) => {\n if (plugin.inject.nodeProps) {\n const newProps = pluginInjectNodeProps(\n editor,\n plugin,\n nodeProps,\n getElementPath\n );\n if (!newProps) return;\n nodeProps = {\n ...nodeProps,\n ...newProps,\n className: clsx(nodeProps.className, newProps.className),\n style: {\n ...nodeProps.style,\n ...newProps.style\n }\n };\n }\n });\n return nodeProps;\n};\n\n// src/lib/static/utils/pipeDecorate.ts\nvar pipeDecorate = (editor, decorateProp) => {\n const relevantPlugins = editor.pluginList.filter((plugin) => plugin.decorate);\n if (relevantPlugins.length === 0 && !decorateProp) return;\n return (entry) => {\n let ranges = [];\n const addRanges = (newRanges) => {\n if (newRanges?.length) ranges = [...ranges, ...newRanges];\n };\n relevantPlugins.forEach((plugin) => {\n addRanges(\n plugin.decorate({\n ...getEditorPlugin(editor, plugin),\n entry\n })\n );\n });\n if (decorateProp) {\n addRanges(\n decorateProp({\n editor,\n entry\n })\n );\n }\n return ranges;\n };\n};\n\n// src/lib/static/deserialize/checkUtils.ts\nvar isSlateVoid = (element) => {\n return element.dataset.slateVoid === \"true\";\n};\nvar isSlatePluginNode = (element, pluginKey) => {\n return element.classList.contains(`slate-${pluginKey}`);\n};\n\n// src/lib/utils/getPluginNodeProps.ts\nvar getPluginNodeProps = ({\n attributes,\n node,\n plugin,\n props\n}) => {\n let newProps = {};\n if (plugin?.node.props) {\n newProps = (typeof plugin.node.props === \"function\" ? plugin.node.props(props) : plugin.node.props) ?? {};\n }\n if (!newProps.nodeProps && attributes && plugin) {\n newProps.nodeProps = pick(attributes, [\n ...plugin.node.dangerouslyAllowAttributes ?? [],\n ...node ? getNodeDataAttributeKeys(node) : []\n ]);\n }\n props = { ...props, ...newProps };\n if (props.nodeProps) {\n Object.keys(props.nodeProps).forEach((key) => {\n if (props.nodeProps?.[key] === void 0) {\n delete props.nodeProps?.[key];\n }\n });\n }\n return props;\n};\n\n// src/lib/utils/getSlateClass.ts\nvar getSlateClass = (type) => type ? `slate-${type}` : \"\";\n\n// src/lib/utils/mergeDeepToNodes.ts\nimport merge3 from \"lodash/merge.js\";\nvar mergeDeepToNodes = (options) => {\n applyDeepToNodes({ ...options, apply: merge3 });\n};\n\n// src/lib/utils/normalizeDescendantsToDocumentFragment.ts\nimport {\n ElementApi as ElementApi3,\n TextApi as TextApi3\n} from \"@udecode/slate\";\n\n// src/lib/plugins/debug/DebugPlugin.ts\nvar PlateError = class extends Error {\n constructor(message, type = \"DEFAULT\") {\n super(`[${type}] ${message}`);\n this.type = type;\n this.name = \"PlateError\";\n }\n};\nvar DebugPlugin = createTSlatePlugin({\n key: \"debug\",\n options: {\n isProduction: process.env.NODE_ENV === \"production\",\n logLevel: process.env.NODE_ENV === \"production\" ? \"error\" : \"log\",\n logger: {\n error: (message, type, details) => console.error(`${type ? `[${type}] ` : \"\"}${message}`, details),\n info: (message, type, details) => console.info(`${type ? `[${type}] ` : \"\"}${message}`, details),\n log: (message, type, details) => console.log(`${type ? `[${type}] ` : \"\"}${message}`, details),\n warn: (message, type, details) => console.warn(`${type ? `[${type}] ` : \"\"}${message}`, details)\n },\n throwErrors: true\n }\n}).extendEditorApi(({ getOptions }) => {\n const logLevels = [\"error\", \"warn\", \"info\", \"log\"];\n const log = (level, message, type, details) => {\n const options = getOptions();\n if (options.isProduction && level === \"log\") return;\n if (logLevels.indexOf(level) <= logLevels.indexOf(options.logLevel)) {\n if (level === \"error\" && options.throwErrors) {\n const error = message instanceof Error ? message : new PlateError(message, type);\n throw error;\n } else {\n options.logger[level]?.(message, type, details);\n }\n }\n };\n return {\n debug: {\n error: (message, type, details) => log(\"error\", message, type, details),\n info: (message, type, details) => log(\"info\", message, type, details),\n log: (message, type, details) => log(\"log\", message, type, details),\n warn: (message, type, details) => log(\"warn\", message, type, details)\n }\n };\n});\n\n// src/lib/plugins/html/HtmlPlugin.ts\nimport { bindFirst } from \"@udecode/utils\";\n\n// src/lib/plugins/html/utils/isHtmlElement.ts\nvar isHtmlElement = (node) => node.nodeType === Node.ELEMENT_NODE;\n\n// src/lib/plugins/html/utils/isHtmlText.ts\nvar isHtmlText = (node) => node.nodeType === Node.TEXT_NODE;\n\n// src/lib/plugins/html/utils/inlineTagNames.ts\nvar inlineTagNames = /* @__PURE__ */ new Set([\n \"A\",\n \"ABBR\",\n \"ACRONYM\",\n \"B\",\n \"BDI\",\n \"BDO\",\n \"BIG\",\n \"BR\",\n \"BUTTON\",\n \"CANVAS\",\n \"CITE\",\n \"CODE\",\n \"CONTENT\",\n \"DATA\",\n \"DEL\",\n \"DFN\",\n \"EM\",\n \"EMBED\",\n \"FONT\",\n \"I\",\n \"IFRAME\",\n \"IMG\",\n \"IMG\",\n \"INPUT\",\n \"INS\",\n \"KBD\",\n \"LABEL\",\n \"MAP\",\n \"MARK\",\n \"MARQUEE\",\n \"MENUITEM\",\n \"METER\",\n \"NOBR\",\n \"OBJECT\",\n \"OUTPUT\",\n \"PICTURE\",\n \"PORTAL\",\n \"PROGRESS\",\n \"Q\",\n \"S\",\n \"SAMP\",\n \"SELECT\",\n \"SHADOW\",\n \"SMALL\",\n \"SOURCE\",\n \"SPAN\",\n \"STRIKE\",\n \"STRONG\",\n \"SUB\",\n \"SUP\",\n \"TEXTAREA\",\n \"TIME\",\n \"TRACK\",\n \"TT\",\n \"U\",\n \"VAR\",\n \"VIDEO\",\n \"WBR\",\n \"math\",\n \"svg\"\n]);\n\n// src/lib/plugins/html/utils/isHtmlInlineElement.ts\nvar isHtmlInlineElement = (node) => {\n if (!isHtmlElement(node)) return false;\n const element = node;\n const tagNameIsInline = inlineTagNames.has(element.tagName);\n const displayProperty = element.style.display.split(\" \")[0];\n if (displayProperty === \"\") {\n return tagNameIsInline;\n }\n if (displayProperty.startsWith(\"inline\")) {\n return true;\n }\n if (displayProperty === \"inherit\" && element.parentElement) {\n return isHtmlInlineElement(element.parentElement);\n }\n if ([\"contents\", \"initial\", \"none\", \"revert\", \"revert-layer\", \"unset\"].includes(\n displayProperty\n )) {\n return tagNameIsInline;\n }\n return false;\n};\n\n// src/lib/plugins/html/utils/isHtmlBlockElement.ts\nvar isHtmlBlockElement = (node) => {\n if (!isHtmlElement(node)) return false;\n const element = node;\n return !isHtmlInlineElement(element);\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseString.ts\nvar collapseString = (text, {\n shouldCollapseWhiteSpace = true,\n trimEnd = \"collapse\",\n trimStart = \"collapse\",\n whiteSpaceIncludesNewlines = true\n} = {}) => {\n if (trimStart === \"all\") {\n text = text.replace(/^\\s+/, \"\");\n }\n if (trimEnd === \"single-newline\") {\n text = text.replace(/\\n$/, \"\");\n }\n if (shouldCollapseWhiteSpace) {\n if (whiteSpaceIncludesNewlines) {\n text = text.replaceAll(/\\s+/g, \" \");\n } else {\n text = text.replaceAll(/[^\\S\\n\\r]+/g, \" \");\n text = text.replaceAll(/^[^\\S\\n\\r]+/gm, \"\");\n text = text.replaceAll(/[^\\S\\n\\r]+$/gm, \"\");\n }\n }\n return text;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/isLastNonEmptyTextOfInlineFormattingContext.ts\nvar isLastNonEmptyTextOfInlineFormattingContext = (initialText) => {\n let currentNode = initialText;\n while (true) {\n if (currentNode.nextSibling) {\n currentNode = currentNode.nextSibling;\n } else {\n currentNode = currentNode.parentElement;\n if (currentNode && isHtmlBlockElement(currentNode)) {\n return true;\n }\n currentNode = currentNode?.nextSibling || null;\n }\n if (!currentNode) {\n return true;\n }\n if (isHtmlBlockElement(currentNode)) {\n return true;\n }\n if ((currentNode.textContent || \"\").length > 0) {\n return false;\n }\n }\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/stateTransforms.ts\nvar upsertInlineFormattingContext = (state) => {\n if (state.inlineFormattingContext) {\n state.inlineFormattingContext.atStart = false;\n } else {\n state.inlineFormattingContext = {\n atStart: true,\n lastHasTrailingWhiteSpace: false\n };\n }\n};\nvar endInlineFormattingContext = (state) => {\n state.inlineFormattingContext = null;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpaceText.ts\nvar collapseWhiteSpaceText = (text, state) => {\n const textContent = text.textContent || \"\";\n const isWhiteSpaceOnly = textContent.trim() === \"\";\n if (state.inlineFormattingContext || !isWhiteSpaceOnly) {\n upsertInlineFormattingContext(state);\n }\n const { whiteSpaceRule } = state;\n const trimStart = (() => {\n if (whiteSpaceRule !== \"normal\") return \"collapse\";\n if (!state.inlineFormattingContext || state.inlineFormattingContext.atStart || state.inlineFormattingContext.lastHasTrailingWhiteSpace)\n return \"all\";\n return \"collapse\";\n })();\n const trimEnd = (() => {\n if (whiteSpaceRule === \"normal\") return \"collapse\";\n if (isLastNonEmptyTextOfInlineFormattingContext(text))\n return \"single-newline\";\n return \"collapse\";\n })();\n const shouldCollapseWhiteSpace = {\n normal: true,\n pre: false,\n \"pre-line\": true\n }[whiteSpaceRule];\n const whiteSpaceIncludesNewlines = whiteSpaceRule !== \"pre-line\";\n const collapsedTextContent = collapseString(textContent || \"\", {\n shouldCollapseWhiteSpace,\n trimEnd,\n trimStart,\n whiteSpaceIncludesNewlines\n });\n if (state.inlineFormattingContext && shouldCollapseWhiteSpace) {\n state.inlineFormattingContext.lastHasTrailingWhiteSpace = collapsedTextContent.endsWith(\" \");\n }\n text.textContent = collapsedTextContent;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpaceNode.ts\nvar collapseWhiteSpaceNode = (node, state) => {\n if (isHtmlElement(node)) {\n collapseWhiteSpaceElement(node, state);\n return;\n }\n if (isHtmlText(node)) {\n collapseWhiteSpaceText(node, state);\n return;\n }\n collapseWhiteSpaceChildren(node, state);\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpaceChildren.ts\nvar collapseWhiteSpaceChildren = (node, state) => {\n const childNodes = Array.from(node.childNodes);\n for (const childNode of childNodes) {\n collapseWhiteSpaceNode(childNode, state);\n }\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/inferWhiteSpaceRule.ts\nvar inferWhiteSpaceRule = (element) => {\n const whiteSpaceProperty = element.style.whiteSpace;\n switch (whiteSpaceProperty) {\n case \"break-spaces\":\n case \"pre\":\n case \"pre-wrap\": {\n return \"pre\";\n }\n case \"normal\":\n case \"nowrap\": {\n return \"normal\";\n }\n case \"pre-line\": {\n return \"pre-line\";\n }\n }\n if (element.tagName === \"PRE\") {\n return \"pre\";\n }\n if (whiteSpaceProperty === \"initial\") {\n return \"normal\";\n }\n return null;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpaceElement.ts\nvar collapseWhiteSpaceElement = (element, state) => {\n const isInlineElement = isHtmlInlineElement(element);\n const previousWhiteSpaceRule = state.whiteSpaceRule;\n const inferredWhiteSpaceRule = inferWhiteSpaceRule(element);\n if (inferredWhiteSpaceRule) {\n state.whiteSpaceRule = inferredWhiteSpaceRule;\n }\n if (!isInlineElement) {\n endInlineFormattingContext(state);\n }\n collapseWhiteSpaceChildren(element, state);\n if (!isInlineElement) {\n endInlineFormattingContext(state);\n }\n state.whiteSpaceRule = previousWhiteSpaceRule;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpace.ts\nvar collapseWhiteSpace = (element) => {\n const clonedElement = element.cloneNode(true);\n const state = {\n inlineFormattingContext: null,\n whiteSpaceRule: \"normal\"\n };\n collapseWhiteSpaceElement(clonedElement, state);\n return clonedElement;\n};\n\n// src/lib/plugins/html/utils/htmlBodyToFragment.ts\nimport { jsx } from \"slate-hyperscript\";\n\n// src/lib/plugins/html/utils/deserializeHtmlNodeChildren.ts\nvar deserializeHtmlNodeChildren = (editor, node) => Array.from(node.childNodes).flatMap(\n deserializeHtmlNode(editor)\n);\n\n// src/lib/plugins/html/utils/htmlBodyToFragment.ts\nvar htmlBodyToFragment = (editor, element) => {\n if (element.nodeName === \"BODY\") {\n return jsx(\n \"fragment\",\n {},\n deserializeHtmlNodeChildren(editor, element)\n );\n }\n};\n\n// src/lib/plugins/html/utils/htmlBrToNewLine.ts\nvar htmlBrToNewLine = (node) => {\n if (node.nodeName === \"BR\") {\n return \"\\n\";\n }\n};\n\n// src/lib/plugins/html/utils/htmlElementToElement.ts\nimport { jsx as jsx2 } from \"slate-hyperscript\";\n\n// src/lib/plugins/html/utils/pluginDeserializeHtml.ts\nimport { isDefined as isDefined3 } from \"@udecode/utils\";\nimport castArray from \"lodash/castArray.js\";\n\n// src/lib/plugins/html/utils/getDataNodeProps.ts\nvar getDefaultNodeProps = ({\n element,\n type\n}) => {\n if (!isSlatePluginNode(element, type)) return;\n const dataAttributes = {};\n Object.entries(element.dataset).forEach(([key, value]) => {\n if (key.startsWith(\"slate\") && value && // Ignore slate default attributes\n ![\"slateInline\", \"slateLeaf\", \"slateNode\", \"slateVoid\"].includes(key)) {\n const attributeKey = key.slice(5).charAt(0).toLowerCase() + key.slice(6);\n if (value === void 0) return;\n let parsedValue = value;\n if (value === \"true\") parsedValue = true;\n else if (value === \"false\") parsedValue = false;\n else if (!Number.isNaN(Number(value))) parsedValue = Number(value);\n dataAttributes[attributeKey] = parsedValue;\n }\n });\n if (Object.keys(dataAttributes).length > 0) {\n return dataAttributes;\n }\n};\nvar getDataNodeProps = ({\n editor,\n element,\n plugin\n}) => {\n const toNodeProps = plugin.parsers.html?.deserializer?.toNodeProps;\n const disabledDefaultNodeProps = plugin.parsers.html?.deserializer?.disabledDefaultNodeProps ?? false;\n const defaultNodeProps = disabledDefaultNodeProps ? {} : getDefaultNodeProps({\n ...getEditorPlugin(editor, plugin),\n element\n });\n if (!toNodeProps) return defaultNodeProps;\n const customNodeProps = toNodeProps({\n ...getEditorPlugin(editor, plugin),\n element\n }) ?? {};\n return {\n ...defaultNodeProps,\n ...customNodeProps\n };\n};\n\n// src/lib/plugins/html/utils/pluginDeserializeHtml.ts\nvar getDeserializedWithStaticRules = (plugin) => {\n let deserializer = plugin.parsers?.html?.deserializer;\n const rules = deserializer?.rules ?? [];\n const hasSlateRule = rules.some(\n (rule) => rule.validClassName?.includes(`slate-${plugin.key}`)\n );\n const staticRules = hasSlateRule ? rules : [\n {\n validClassName: `slate-${plugin.key}`,\n validNodeName: \"*\"\n },\n ...rules\n ];\n if (!deserializer) deserializer = { rules: staticRules };\n deserializer.rules = staticRules;\n return deserializer;\n};\nvar pluginDeserializeHtml = (editor, plugin, {\n deserializeLeaf,\n element: el\n}) => {\n const {\n node: { isElement: isElementRoot, isLeaf: isLeafRoot }\n } = plugin;\n const deserializer = getDeserializedWithStaticRules(plugin);\n if (!deserializer) return;\n const {\n attributeNames,\n isElement: isElementRule,\n isLeaf: isLeafRule,\n query,\n rules\n } = deserializer;\n let { parse } = deserializer;\n const isElement = isElementRule || isElementRoot;\n const isLeaf = isLeafRule || isLeafRoot;\n if (!deserializeLeaf && !isElement) {\n return;\n }\n if (deserializeLeaf && !isLeaf) {\n return;\n }\n if (rules) {\n const isValid = rules.some(\n ({ validAttribute, validClassName, validNodeName = \"*\", validStyle }) => {\n if (validNodeName) {\n const validNodeNames = castArray(validNodeName);\n if (validNodeNames.length > 0 && !validNodeNames.includes(el.nodeName) && validNodeName !== \"*\")\n return false;\n }\n if (validClassName && !el.classList.contains(validClassName))\n return false;\n if (validStyle) {\n for (const [key, value] of Object.entries(validStyle)) {\n const values = castArray(value);\n if (!values.includes(el.style[key]) && value !== \"*\")\n return;\n if (value === \"*\" && !el.style[key]) return;\n const defaultNodeValue = plugin.inject.nodeProps?.defaultNodeValue;\n if (defaultNodeValue && defaultNodeValue === el.style[key]) {\n return false;\n }\n }\n }\n if (validAttribute) {\n if (typeof validAttribute === \"string\") {\n if (!el.getAttributeNames().includes(validAttribute)) return false;\n } else {\n for (const [attributeName, attributeValue] of Object.entries(\n validAttribute\n )) {\n const attributeValues = castArray(attributeValue);\n const elAttribute = el.getAttribute(attributeName);\n if (!isDefined3(elAttribute) || !attributeValues.includes(elAttribute))\n return false;\n }\n }\n }\n return true;\n }\n );\n if (!isValid) return;\n }\n if (query && !query({ ...getEditorPlugin(editor, plugin), element: el })) {\n return;\n }\n if (!parse)\n if (isElement) {\n parse = ({ type }) => ({ type });\n } else if (isLeaf) {\n parse = ({ type }) => ({ [type]: true });\n } else {\n return;\n }\n const parsedNode = parse({\n ...getEditorPlugin(editor, plugin),\n element: el,\n node: {}\n }) ?? {};\n const dataNodeProps = getDataNodeProps({\n editor,\n element: el,\n plugin\n });\n let node = {\n ...parsedNode,\n ...dataNodeProps\n };\n if (Object.keys(node).length === 0) return;\n const injectedPlugins = getInjectedPlugins(editor, plugin);\n injectedPlugins.forEach((injectedPlugin) => {\n const res = injectedPlugin.parsers?.html?.deserializer?.parse?.({\n ...getEditorPlugin(editor, plugin),\n element: el,\n node\n });\n if (res) {\n node = {\n ...node,\n ...res\n };\n }\n });\n if (attributeNames) {\n const elementAttributes = {};\n const elementAttributeNames = el.getAttributeNames();\n for (const elementAttributeName of elementAttributeNames) {\n if (attributeNames.includes(elementAttributeName)) {\n elementAttributes[elementAttributeName] = el.getAttribute(elementAttributeName);\n }\n }\n if (Object.keys(elementAttributes).length > 0) {\n node.attributes = elementAttributes;\n }\n }\n return { ...deserializer, node };\n};\n\n// src/lib/plugins/html/utils/pipeDeserializeHtmlElement.ts\nvar pipeDeserializeHtmlElement = (editor, element) => {\n let result;\n [...editor.pluginList].reverse().some((plugin) => {\n result = pluginDeserializeHtml(editor, plugin, { element });\n return !!result;\n });\n return result;\n};\n\n// src/lib/plugins/html/utils/htmlElementToElement.ts\nvar htmlElementToElement = (editor, element) => {\n const deserialized = pipeDeserializeHtmlElement(editor, element);\n if (deserialized) {\n const { node, withoutChildren } = deserialized;\n let descendants = node.children ?? deserializeHtmlNodeChildren(editor, element);\n if (descendants.length === 0 || withoutChildren || isSlateVoid(element)) {\n descendants = [{ text: \"\" }];\n }\n return jsx2(\"element\", node, descendants);\n }\n};\n\n// src/lib/plugins/html/utils/htmlElementToLeaf.ts\nimport { ElementApi as ElementApi2, TextApi as TextApi2 } from \"@udecode/slate\";\nimport { jsx as jsx3 } from \"slate-hyperscript\";\n\n// src/lib/plugins/html/utils/pipeDeserializeHtmlLeaf.ts\nvar pipeDeserializeHtmlLeaf = (editor, element) => {\n let node = {};\n [...editor.pluginList].reverse().forEach((plugin) => {\n const deserialized = pluginDeserializeHtml(editor, plugin, {\n deserializeLeaf: true,\n element\n });\n if (!deserialized) return;\n node = { ...node, ...deserialized.node };\n });\n return node;\n};\n\n// src/lib/plugins/html/utils/htmlElementToLeaf.ts\nvar htmlElementToLeaf = (editor, element) => {\n const node = pipeDeserializeHtmlLeaf(editor, element);\n return deserializeHtmlNodeChildren(editor, element).reduce(\n (arr, child) => {\n if (!child) return arr;\n if (ElementApi2.isElement(child)) {\n if (Object.keys(node).length > 0) {\n mergeDeepToNodes({\n node: child,\n query: {\n filter: ([n]) => TextApi2.isText(n)\n },\n source: node\n });\n }\n arr.push(child);\n } else {\n const attributes = { ...node };\n if (TextApi2.isText(child) && child.text) {\n Object.keys(attributes).forEach((key) => {\n if (attributes[key] && child[key]) {\n attributes[key] = child[key];\n }\n });\n }\n arr.push(jsx3(\"text\", attributes, child));\n }\n return arr;\n },\n []\n );\n};\n\n// src/lib/plugins/html/utils/htmlTextNodeToString.ts\nvar htmlTextNodeToString = (node) => {\n if (isHtmlText(node)) {\n if (node.parentElement?.dataset.platePreventDeserialization) return \"\";\n return node.textContent || \"\";\n }\n};\n\n// src/lib/plugins/html/utils/deserializeHtmlNode.ts\nvar deserializeHtmlNode = (editor) => (node) => {\n const textNode = htmlTextNodeToString(node);\n if (textNode) return textNode;\n if (!isHtmlElement(node)) return null;\n const breakLine = htmlBrToNewLine(node);\n if (breakLine) return breakLine;\n const fragment = htmlBodyToFragment(editor, node);\n if (fragment) return fragment;\n const element = htmlElementToElement(editor, node);\n if (element) return element;\n return htmlElementToLeaf(editor, node);\n};\n\n// src/lib/plugins/html/utils/deserializeHtmlElement.ts\nvar deserializeHtmlElement = (editor, element) => {\n return deserializeHtmlNode(editor)(element);\n};\n\n// src/lib/plugins/html/utils/htmlStringToDOMNode.ts\nvar htmlStringToDOMNode = (rawHtml) => {\n const node = document.createElement(\"body\");\n node.innerHTML = rawHtml;\n return node;\n};\n\n// src/lib/plugins/html/utils/deserializeHtml.ts\nvar deserializeHtml = (editor, {\n collapseWhiteSpace: shouldCollapseWhiteSpace = true,\n element\n}) => {\n if (typeof element === \"string\") {\n element = htmlStringToDOMNode(element);\n }\n if (shouldCollapseWhiteSpace) {\n element = collapseWhiteSpace(element);\n }\n const fragment = deserializeHtmlElement(editor, element);\n return normalizeDescendantsToDocumentFragment(editor, {\n descendants: fragment\n });\n};\n\n// src/lib/plugins/html/utils/parseHtmlDocument.ts\nvar parseHtmlDocument = (html) => {\n return new DOMParser().parseFromString(html, \"text/html\");\n};\n\n// src/lib/plugins/html/HtmlPlugin.ts\nvar HtmlPlugin = createSlatePlugin({\n key: \"html\"\n}).extendApi(({ editor }) => ({\n deserialize: bindFirst(deserializeHtml, editor)\n})).extend({\n parser: {\n deserialize: ({ api, data }) => {\n const document2 = parseHtmlDocument(data);\n return api.html.deserialize({\n element: document2.body\n });\n },\n format: \"text/html\"\n }\n});\n\n// src/lib/plugins/length/LengthPlugin.ts\nvar LengthPlugin = createTSlatePlugin({\n key: \"length\"\n}).overrideEditor(({ editor, getOptions, tf: { apply } }) => ({\n transforms: {\n apply(operation) {\n editor.tf.withoutNormalizing(() => {\n apply(operation);\n const options = getOptions();\n if (options.maxLength) {\n const length = editor.api.string([]).length;\n if (length > options.maxLength) {\n const overflowLength = length - options.maxLength;\n editor.tf.delete({\n distance: overflowLength,\n reverse: true,\n unit: \"character\"\n });\n }\n }\n });\n }\n }\n}));\n\n// src/lib/plugins/paragraph/BaseParagraphPlugin.ts\nvar BaseParagraphPlugin = createSlatePlugin({\n key: \"p\",\n node: {\n isElement: true\n },\n parsers: {\n html: {\n deserializer: {\n query: ({ element }) => element.style.fontFamily !== \"Consolas\",\n rules: [\n {\n validNodeName: \"P\"\n }\n ]\n }\n }\n }\n});\n\n// src/lib/plugins/slate-extension/SlateExtensionPlugin.ts\nvar SlateExtensionPlugin = createSlatePlugin({\n key: \"slateExtension\"\n}).overrideEditor(\n ({\n editor,\n tf: { apply, deleteBackward, deleteForward, deleteFragment }\n }) => {\n const resetMarks = () => {\n if (editor.api.isAt({ start: true })) {\n editor.tf.removeMarks();\n }\n };\n return {\n api: {\n create: {\n block: (node) => ({\n children: [{ text: \"\" }],\n type: editor.getType(BaseParagraphPlugin),\n ...node\n })\n }\n },\n transforms: {\n apply(operation) {\n if (operation.type === \"set_selection\") {\n const { properties } = operation;\n editor.prevSelection = properties;\n apply(operation);\n editor.currentKeyboardEvent = null;\n return;\n }\n apply(operation);\n },\n deleteBackward(unit) {\n deleteBackward(unit);\n resetMarks();\n },\n deleteForward(unit) {\n deleteForward(unit);\n resetMarks();\n },\n deleteFragment(options) {\n deleteFragment(options);\n resetMarks();\n }\n }\n };\n }\n).extendEditorTransforms(({ editor }) => ({\n setValue: (value) => {\n let children = value;\n if (typeof value === \"string\") {\n children = editor.api.html.deserialize({\n element: value\n });\n } else if (!value || value.length === 0) {\n children = editor.api.create.value();\n }\n editor.tf.replaceNodes(children, {\n at: [],\n children: true\n });\n }\n}));\n\n// src/lib/utils/normalizeDescendantsToDocumentFragment.ts\nvar isInlineNode = (editor) => (node) => TextApi3.isText(node) || ElementApi3.isElement(node) && editor.api.isInline(node);\nvar makeBlockLazy = (type) => () => ({\n children: [],\n type\n});\nvar hasDifferentChildNodes = (descendants, isInline) => {\n return descendants.some((descendant, index, arr) => {\n const prevDescendant = arr[index - 1];\n if (index !== 0) {\n return isInline(descendant) !== isInline(prevDescendant);\n }\n return false;\n });\n};\nvar normalizeDifferentNodeTypes = (descendants, isInline, makeDefaultBlock) => {\n const hasDifferentNodes = hasDifferentChildNodes(descendants, isInline);\n const { fragment } = descendants.reduce(\n (memo, node) => {\n if (hasDifferentNodes && isInline(node)) {\n let block = memo.precedingBlock;\n if (!block) {\n block = makeDefaultBlock();\n memo.precedingBlock = block;\n memo.fragment.push(block);\n }\n block.children.push(node);\n } else {\n memo.fragment.push(node);\n memo.precedingBlock = null;\n }\n return memo;\n },\n {\n fragment: [],\n precedingBlock: null\n }\n );\n return fragment;\n};\nvar normalizeEmptyChildren = (descendants) => {\n if (descendants.length === 0) {\n return [{ text: \"\" }];\n }\n return descendants;\n};\nvar normalize = (descendants, isInline, makeDefaultBlock) => {\n descendants = normalizeEmptyChildren(descendants);\n descendants = normalizeDifferentNodeTypes(\n descendants,\n isInline,\n makeDefaultBlock\n );\n descendants = descendants.map((node) => {\n if (ElementApi3.isElement(node)) {\n return {\n ...node,\n children: normalize(\n node.children,\n isInline,\n makeDefaultBlock\n )\n };\n }\n return node;\n });\n return descendants;\n};\nvar normalizeDescendantsToDocumentFragment = (editor, { descendants }) => {\n const isInline = isInlineNode(editor);\n const defaultType = editor.getType(BaseParagraphPlugin);\n const makeDefaultBlock = makeBlockLazy(defaultType);\n return normalize(descendants, isInline, makeDefaultBlock);\n};\n\n// src/lib/utils/pipeInsertDataQuery.ts\nvar pipeInsertDataQuery = (editor, plugins, { data, dataTransfer }) => plugins.every((p) => {\n const query = p.parser?.query;\n return !query || query({\n ...getEditorPlugin(editor, p),\n data,\n dataTransfer\n });\n});\n\n// src/lib/plugins/ParserPlugin.ts\nvar ParserPlugin = createSlatePlugin({\n key: \"parser\"\n}).overrideEditor(({ editor, tf: { insertData } }) => ({\n transforms: {\n insertData(dataTransfer) {\n const inserted = [...editor.pluginList].reverse().some((plugin) => {\n const parser = plugin.parser;\n if (!parser) return false;\n const injectedPlugins = getInjectedPlugins(editor, plugin);\n const { deserialize, format, mimeTypes } = parser;\n if (!format) return false;\n const formats = Array.isArray(format) ? format : [format];\n const mimeTypeList = mimeTypes || formats.map((fmt) => fmt.includes(\"/\") ? fmt : `text/${fmt}`);\n for (const mimeType of mimeTypeList) {\n let data = dataTransfer.getData(mimeType);\n if (!data) continue;\n if (!pipeInsertDataQuery(editor, injectedPlugins, {\n data,\n dataTransfer\n })) {\n continue;\n }\n data = pipeTransformData(editor, injectedPlugins, {\n data,\n dataTransfer\n });\n let fragment = deserialize?.({\n ...getEditorPlugin(editor, plugin),\n data,\n dataTransfer\n });\n if (!fragment?.length) continue;\n fragment = pipeTransformFragment(editor, injectedPlugins, {\n data,\n dataTransfer,\n fragment\n });\n if (fragment.length === 0) continue;\n pipeInsertFragment(editor, injectedPlugins, {\n data,\n dataTransfer,\n fragment\n });\n return true;\n }\n return false;\n });\n if (inserted) return;\n insertData(dataTransfer);\n }\n }\n}));\n\n// src/lib/plugins/getCorePlugins.ts\nvar getCorePlugins = ({\n maxLength,\n plugins = []\n}) => {\n let corePlugins = [\n DebugPlugin,\n SlateExtensionPlugin,\n DOMPlugin,\n HistoryPlugin,\n InlineVoidPlugin,\n ParserPlugin,\n maxLength ? LengthPlugin.configure({\n options: { maxLength }\n }) : LengthPlugin,\n HtmlPlugin,\n AstPlugin,\n BaseParagraphPlugin\n ];\n const customPluginsMap = new Map(\n plugins.map((plugin) => [plugin.key, plugin])\n );\n corePlugins = corePlugins.map((corePlugin) => {\n const customPlugin = customPluginsMap.get(corePlugin.key);\n if (customPlugin) {\n const index = plugins.findIndex((p) => p.key === corePlugin.key);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n return customPlugin;\n }\n return corePlugin;\n });\n return corePlugins;\n};\n\n// src/lib/editor/withSlate.ts\nvar withSlate = (e, {\n id,\n autoSelect,\n maxLength,\n plugins = [],\n rootPlugin,\n selection,\n shouldNormalizeEditor,\n value,\n ...pluginConfig\n} = {}) => {\n const editor = e;\n editor.id = id ?? editor.id;\n editor.key = editor.key ?? nanoid();\n editor.isFallback = false;\n editor.prevSelection = null;\n editor.currentKeyboardEvent = null;\n editor.getApi = () => editor.api;\n editor.getTransforms = () => editor.transforms;\n editor.getPlugin = (plugin) => getSlatePlugin(editor, plugin);\n editor.getType = (plugin) => getPluginType(editor, plugin);\n editor.getInjectProps = (plugin) => {\n return editor.getPlugin(plugin).inject?.nodeProps ?? {};\n };\n editor.getOptionsStore = (plugin) => {\n return editor.getPlugin(plugin).optionsStore;\n };\n editor.getOptions = (plugin) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) return editor.getPlugin(plugin).options;\n return editor.getOptionsStore(plugin).get.state();\n };\n editor.getOption = (plugin, key, ...args) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) return editor.getPlugin(plugin).options[key];\n const getter = store.get[key];\n if (getter) {\n return getter(...args);\n }\n editor.api.debug.error(\n `editor.getOption: ${key} option is not defined in plugin ${plugin.key}.`,\n \"OPTION_UNDEFINED\"\n );\n };\n editor.setOption = (plugin, key, value2) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) return;\n const setter = store.set[key];\n if (setter) {\n setter(value2);\n } else {\n editor.api.debug.error(\n `editor.setOption: ${key} option is not defined in plugin ${plugin.key}.`,\n \"OPTION_UNDEFINED\"\n );\n }\n };\n editor.setOptions = (plugin, options) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) return;\n if (typeof options === \"object\") {\n store.set.state((draft) => {\n Object.assign(draft, options);\n });\n } else if (typeof options === \"function\") {\n store.set.state(options);\n }\n };\n const corePlugins = getCorePlugins({\n maxLength,\n plugins\n });\n let rootPluginInstance = createSlatePlugin({\n key: \"root\",\n priority: 1e4,\n ...pluginConfig,\n plugins: [...corePlugins, ...plugins]\n });\n if (rootPlugin) {\n rootPluginInstance = rootPlugin(rootPluginInstance);\n }\n resolvePlugins(editor, [rootPluginInstance]);\n if (typeof value === \"string\") {\n editor.children = editor.api.html.deserialize({ element: value });\n } else if (typeof value === \"function\") {\n editor.children = value(editor);\n } else if (value) {\n editor.children = value;\n }\n if (!editor.children || editor.children?.length === 0) {\n editor.children = editor.api.create.value();\n }\n if (selection) {\n editor.selection = selection;\n } else if (autoSelect) {\n const edge = autoSelect === \"start\" ? \"start\" : \"end\";\n const target = edge === \"start\" ? editor.api.start([]) : editor.api.end([]);\n editor.tf.select(target);\n }\n if (editor.children.length > 0) {\n pipeNormalizeInitialValue(editor);\n }\n if (shouldNormalizeEditor) {\n editor.tf.normalize({ force: true });\n }\n return editor;\n};\n\n// src/lib/libs/zustand.ts\nimport { createZustandStore as createZustandStore2 } from \"zustand-x\";\n\n// src/react/plugin/toPlatePlugin.ts\nvar methodsToWrap = [\n \"configure\",\n \"configurePlugin\",\n \"extendEditorApi\",\n \"extendOptions\",\n \"extendApi\",\n \"extendEditorTransforms\",\n \"extendTransforms\",\n \"overrideEditor\",\n \"extend\",\n \"extendPlugin\"\n];\nfunction toPlatePlugin(basePlugin, extendConfig) {\n const plugin = { ...basePlugin };\n methodsToWrap.forEach((method) => {\n const originalMethod = plugin[method];\n plugin[method] = (...args) => {\n const slatePlugin = originalMethod(...args);\n return toPlatePlugin(slatePlugin);\n };\n });\n plugin.withComponent = (component) => {\n return plugin.extend({\n node: { component },\n render: { node: component }\n });\n };\n if (!extendConfig) return plugin;\n const extendedPlugin = plugin.extend(extendConfig);\n return extendedPlugin;\n}\nfunction toTPlatePlugin(basePlugin, extendConfig) {\n return toPlatePlugin(basePlugin, extendConfig);\n}\n\n// src/react/plugin/createPlatePlugin.ts\nvar createPlatePlugin = (config = {}) => {\n const plugin = createSlatePlugin(config);\n return toPlatePlugin(plugin);\n};\nfunction createTPlatePlugin(config = {}) {\n return createPlatePlugin(config);\n}\n\n// src/react/plugin/getEditorPlugin.ts\nfunction getEditorPlugin2(editor, plugin) {\n return {\n ...getEditorPlugin(editor, plugin),\n useOption: (key, ...args) => editor.useOption(plugin, key, ...args)\n };\n}\n\n// src/react/plugin/getPlugin.ts\nfunction getPlugin(editor, plugin) {\n return editor.plugins[plugin.key] ?? createPlatePlugin({ key: plugin.key });\n}\n\n// src/react/plugin/omitPluginContext.ts\nvar omitPluginContext = (ctx) => {\n const {\n api,\n editor,\n getOption,\n getOptions,\n plugin,\n setOption,\n setOptions,\n tf,\n type,\n useOption,\n ...rest\n } = ctx;\n return rest;\n};\n\n// src/react/components/DefaultLeaf.tsx\nvar useDefaultLeaf = (props) => {\n const { attributes, leaf, leafToAttributes, nodeProps, text, ...rootProps } = omitPluginContext(props);\n return {\n props: {\n ...attributes,\n ...rootProps,\n ...nodeProps,\n ...leafToAttributes?.(leaf),\n className: clsx2(props.className, nodeProps?.className)\n }\n };\n};\nfunction DefaultLeaf(props) {\n const { props: rootProps } = useDefaultLeaf(props);\n return /* @__PURE__ */ React.createElement(\"span\", { ...rootProps });\n}\n\n// src/react/components/EditorHotkeysEffect.tsx\nimport React14, { useEffect as useEffect2 } from \"react\";\nimport { useHotkeys } from \"@udecode/react-hotkeys\";\nimport { isDefined as isDefined5 } from \"@udecode/utils\";\n\n// src/react/stores/plate/PlateStore.ts\nvar EXPOSED_STORE_KEYS = [\n \"readOnly\",\n \"onChange\",\n \"decorate\",\n \"renderElement\",\n \"renderLeaf\"\n];\n\n// src/react/stores/plate/createPlateStore.ts\nimport React3 from \"react\";\nimport { atom as atom3, createStore } from \"jotai\";\n\n// src/react/libs/jotai.ts\nimport { atom } from \"jotai\";\nimport { createAtomStore } from \"jotai-x\";\n\n// src/react/stores/plate-controller/plateControllerStore.ts\nimport React2 from \"react\";\nimport { atom as atom2 } from \"jotai\";\nvar {\n PlateControllerProvider: PlateController,\n plateControllerStore,\n usePlateControllerStore\n} = createAtomStore(\n {\n activeId: atom2(null),\n editorStores: atom2({}),\n primaryEditorIds: atom2([])\n },\n {\n name: \"plateController\"\n }\n);\nvar usePlateControllerSelectors = () => usePlateControllerStore().get;\nvar usePlateControllerActions = () => usePlateControllerStore().set;\nvar usePlateControllerStates = () => usePlateControllerStore().use;\nvar usePlateControllerExists = () => !!usePlateControllerStore().store({ warnIfNoStore: false });\nvar usePlateControllerEditorStore = (idProp) => {\n const storeAtom = React2.useMemo(\n () => atom2((get) => {\n const editorStores = get(plateControllerStore.atom.editorStores);\n const forId = (id) => {\n if (!id) return null;\n return editorStores[id] ?? null;\n };\n if (idProp) return forId(idProp);\n const lookupOrder = [\n get(plateControllerStore.atom.activeId),\n ...get(plateControllerStore.atom.primaryEditorIds)\n ];\n for (const id of lookupOrder) {\n const store = forId(id);\n if (store) return store;\n }\n return null;\n }),\n [idProp]\n );\n return usePlateControllerSelectors().atom(storeAtom);\n};\n\n// src/react/stores/plate/createPlateStore.ts\nvar PLATE_SCOPE = \"plate\";\nvar GLOBAL_PLATE_SCOPE = Symbol(\"global-plate\");\nvar createPlateStore = ({\n id,\n containerRef = { current: null },\n decorate = null,\n editor,\n isMounted = false,\n primary = true,\n readOnly = null,\n renderElement = null,\n renderLeaf = null,\n scrollRef = { current: null },\n versionDecorate = 1,\n versionEditor = 1,\n versionSelection = 1,\n versionValue = 1,\n onChange = null,\n onSelectionChange = null,\n onValueChange = null,\n ...state\n} = {}) => createAtomStore(\n {\n containerRef,\n decorate,\n editor,\n isMounted,\n primary,\n readOnly,\n renderElement,\n renderLeaf,\n scrollRef,\n versionDecorate,\n versionEditor,\n versionSelection,\n versionValue,\n onChange,\n onSelectionChange,\n onValueChange,\n ...state\n },\n {\n extend: (atoms) => ({\n trackedEditor: atom3((get) => ({\n editor: get(atoms.editor),\n version: get(atoms.versionEditor)\n })),\n trackedSelection: atom3((get) => ({\n selection: get(atoms.editor).selection,\n version: get(atoms.versionSelection)\n })),\n trackedValue: atom3((get) => ({\n value: get(atoms.editor).children,\n version: get(atoms.versionValue)\n }))\n }),\n name: \"plate\"\n }\n);\nvar {\n PlateProvider: PlateStoreProvider,\n plateStore,\n usePlateStore\n} = createPlateStore();\nvar usePlateEditorStore = (id, { debugHookName = \"usePlateEditorStore\" } = {}) => {\n const localStore = usePlateStore(id).store({ warnIfNoStore: false }) ?? null;\n const [localStoreExists] = React3.useState(!!localStore);\n const store = localStoreExists ? localStore : (\n // eslint-disable-next-line react-hooks/rules-of-hooks\n usePlateControllerEditorStore(id)\n );\n const plateControllerExists = usePlateControllerExists();\n const fallbackStore = React3.useMemo(() => createStore(), []);\n if (!store) {\n if (plateControllerExists) {\n return fallbackStore;\n }\n throw new Error(\n `${debugHookName} must be used inside a Plate or PlateController`\n );\n }\n return store;\n};\nvar usePlateSelectors = (id, options) => {\n const store = usePlateEditorStore(id, {\n debugHookName: \"usePlateSelectors\",\n ...options\n });\n return usePlateStore({ store }).get;\n};\nvar usePlateActions = (id, options) => {\n const store = usePlateEditorStore(id, {\n debugHookName: \"usePlateActions\",\n ...options\n });\n return usePlateStore({ store }).set;\n};\nvar usePlateStates = (id, options) => {\n const store = usePlateEditorStore(id, {\n debugHookName: \"usePlateStates\",\n ...options\n });\n return usePlateStore({ store }).use;\n};\n\n// src/react/stores/plate/actions/useIncrementVersion.ts\nimport React4 from \"react\";\nvar useIncrementVersion = (key, id, options = {}) => {\n const previousVersionRef = React4.useRef(1);\n const set = usePlateActions(id, {\n debugHookName: \"useIncrementVersion\",\n ...options\n })[key]();\n return React4.useCallback(() => {\n const nextVersion = previousVersionRef.current + 1;\n set(nextVersion);\n previousVersionRef.current = nextVersion;\n }, [set]);\n};\n\n// src/react/stores/plate/actions/useRedecorate.ts\nimport React5 from \"react\";\nvar useRedecorate = (id, options = {}) => {\n const updateDecorate = useIncrementVersion(\"versionDecorate\", id, {\n debugHookName: \"useRedecorate\",\n ...options\n });\n return React5.useCallback(() => {\n updateDecorate();\n }, [updateDecorate]);\n};\n\n// src/react/stores/plate/selectors/useEditorContainerRef.ts\nvar useEditorContainerRef = (id) => {\n return usePlateSelectors(id, {\n debugHookName: \"useEditorContainerRef\"\n }).containerRef();\n};\nvar useEditorScrollRef = (id) => {\n return usePlateSelectors(id, {\n debugHookName: \"useEditorScrollRef\"\n }).scrollRef();\n};\nvar useScrollRef = (id) => {\n const scrollRef = useEditorScrollRef(id);\n const containerRef = useEditorContainerRef(id);\n return scrollRef.current ? scrollRef : containerRef;\n};\n\n// src/react/stores/plate/selectors/useEditorId.ts\nvar useEditorId = () => usePlateSelectors(void 0, { debugHookName: \"useEditorId\" }).editor().id;\n\n// src/react/stores/plate/selectors/useEditorMounted.ts\nvar useEditorMounted = (id, options = {}) => {\n return !!usePlateSelectors(id, {\n debugHookName: \"useEditorMounted\",\n ...options\n }).isMounted();\n};\n\n// src/react/editor/withPlate.ts\nimport { createEditor as createEditor2 } from \"@udecode/slate\";\n\n// src/react/plugins/SlateReactExtensionPlugin.ts\nimport { isDefined as isDefined4 } from \"@udecode/utils\";\nvar SlateReactExtensionPlugin = toPlatePlugin(SlateExtensionPlugin, {\n handlers: {\n onKeyDown: ({ editor, event }) => {\n event.persist();\n editor.currentKeyboardEvent = event;\n }\n }\n}).extendEditorApi(({ editor }) => ({\n redecorate: () => {\n editor.api.debug.warn(\n `The method editor.api.redecorate() has not been overridden. This may cause unexpected behavior. Please ensure that all required editor methods are properly defined.`,\n \"OVERRIDE_MISSING\"\n );\n }\n})).overrideEditor(({ editor, tf: { normalizeNode } }) => ({\n transforms: {\n normalizeNode(entry, options) {\n if (isDefined4(entry[0]._memo)) {\n editor.tf.unsetNodes(\"_memo\", { at: entry[1] });\n return;\n }\n normalizeNode(entry, options);\n }\n }\n}));\n\n// src/react/plugins/event-editor/EventEditorStore.ts\nvar EventEditorStore = createZustandStore2(\n {\n blur: null,\n focus: null,\n last: null\n },\n {\n mutative: true,\n name: \"event-editor\"\n }\n);\nvar eventEditorActions = EventEditorStore.set;\nvar eventEditorSelectors = EventEditorStore.get;\nvar useEventEditorSelectors = EventEditorStore.use;\n\n// src/react/plugins/event-editor/useFocusEditorEvents.ts\nimport { useEffect } from \"react\";\nvar FOCUS_EDITOR_EVENT = \"focus-editor-event\";\nvar BLUR_EDITOR_EVENT = \"blur-editor-event\";\nvar useFocusEditorEvents = ({\n editorRef,\n onEditorBlur,\n onEditorFocus\n}) => {\n useEffect(() => {\n const onFocusEditor = (event) => {\n const id = event.detail.id;\n if (!!onEditorFocus && editorRef && editorRef.id === id) {\n onEditorFocus();\n }\n };\n const onBlurEditor = (event) => {\n const id = event.detail.id;\n if (!!onEditorBlur && editorRef && editorRef.id === id) {\n onEditorBlur();\n }\n };\n document.addEventListener(FOCUS_EDITOR_EVENT, onFocusEditor);\n document.addEventListener(BLUR_EDITOR_EVENT, onBlurEditor);\n return () => {\n document.removeEventListener(FOCUS_EDITOR_EVENT, onFocusEditor);\n document.removeEventListener(BLUR_EDITOR_EVENT, onBlurEditor);\n };\n }, [editorRef, onEditorBlur, onEditorFocus]);\n};\n\n// src/react/plugins/event-editor/EventEditorPlugin.ts\nvar EventEditorPlugin = createPlatePlugin({\n key: \"eventEditor\",\n handlers: {\n onBlur: ({ editor }) => {\n const focus = eventEditorSelectors.focus();\n if (focus === editor.id) {\n eventEditorActions.focus(null);\n }\n eventEditorActions.blur(editor.id);\n document.dispatchEvent(\n new CustomEvent(BLUR_EDITOR_EVENT, {\n detail: { id: editor.id }\n })\n );\n },\n onFocus: ({ editor }) => {\n eventEditorActions.focus(editor.id);\n document.dispatchEvent(\n new CustomEvent(FOCUS_EDITOR_EVENT, {\n detail: { id: editor.id }\n })\n );\n }\n }\n});\n\n// src/react/plugins/event-editor/getEventPlateId.ts\nvar getEventPlateId = (id) => {\n if (id) return id;\n const focus = eventEditorSelectors.focus();\n if (focus) return focus;\n const blur = eventEditorSelectors.blur();\n if (blur) return blur;\n return eventEditorSelectors.last() ?? \"plate\";\n};\n\n// src/react/plugins/paragraph/ParagraphPlugin.tsx\nimport { Key } from \"@udecode/react-hotkeys\";\nvar ParagraphPlugin = toPlatePlugin(\n BaseParagraphPlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleParagraph: {\n keys: [\n [Key.Mod, Key.Alt, \"0\"],\n [Key.Mod, Key.Shift, \"0\"]\n ],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleBlock(type);\n }\n }\n }\n })\n);\n\n// src/react/plugins/react/withPlateReact.ts\nvar withPlateReact = ({ editor }) => {\n return withReact(editor);\n};\n\n// src/react/plugins/react/ReactPlugin.ts\nvar ReactPlugin = createSlatePlugin({\n key: \"dom\",\n extendEditor: withPlateReact\n}).extendEditorTransforms(({ editor }) => {\n const { reset } = editor.tf;\n return {\n reset(options) {\n const isFocused = editor.api.isFocused();\n reset(options);\n if (isFocused) {\n editor.tf.focus({ edge: \"startEditor\" });\n }\n }\n };\n});\n\n// src/react/editor/getPlateCorePlugins.ts\nvar getPlateCorePlugins = () => [\n SlateReactExtensionPlugin,\n ReactPlugin,\n EventEditorPlugin,\n ParagraphPlugin\n];\n\n// src/react/editor/withPlate.ts\nvar withPlate = (e, { plugins = [], ...options } = {}) => {\n const editor = withSlate(e, {\n ...options,\n plugins: [...getPlateCorePlugins(), ...plugins]\n });\n editor.useOptions = (plugin, selector, equalityFn) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) {\n return {};\n }\n return store.useStore(selector, equalityFn);\n };\n editor.useOption = (plugin, key, ...args) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) {\n return;\n }\n const useState = store?.use[key];\n if (useState) {\n return useState(...args);\n }\n editor.api.debug.error(\n `editor.useOption: ${key} option is not defined in plugin ${plugin.key}`,\n \"OPTION_UNDEFINED\"\n );\n };\n return editor;\n};\nvar createPlateEditor = ({\n editor = createEditor2(),\n ...options\n} = {}) => {\n return withPlate(editor, options);\n};\n\n// src/react/utils/createPlateFallbackEditor.ts\nvar createPlateFallbackEditor = (options = {}) => {\n const editor = createPlateEditor(options);\n editor.isFallback = true;\n editor.apply = () => {\n throw new Error(\n \"Cannot apply operations on the fallback editor. The fallback editor is used when a hook that depends on the Plate store was unable to locate a valid store. If you are using PlateController, use `useEditorMounted(id?: string)` or `!editor.isFallback` to ensure that a valid Plate store is available before attempting to call operations on the editor.\"\n );\n };\n return editor;\n};\n\n// src/react/utils/dom-attributes.ts\nvar DOM_HANDLERS = [\n // Clipboard Events\n \"onCopy\",\n \"onCopyCapture\",\n \"onCut\",\n \"onCutCapture\",\n \"onPaste\",\n \"onPasteCapture\",\n // Composition Events\n \"onCompositionEnd\",\n \"onCompositionEndCapture\",\n \"onCompositionStart\",\n \"onCompositionStartCapture\",\n \"onCompositionUpdate\",\n \"onCompositionUpdateCapture\",\n // Focus Events\n \"onFocus\",\n \"onFocusCapture\",\n \"onBlur\",\n \"onBlurCapture\",\n // Form Events\n \"onDOMBeforeInput\",\n \"onBeforeInput\",\n \"onBeforeInputCapture\",\n \"onInput\",\n \"onInputCapture\",\n \"onReset\",\n \"onResetCapture\",\n \"onSubmit\",\n \"onSubmitCapture\",\n \"onInvalid\",\n \"onInvalidCapture\",\n // Image Events\n \"onLoad\",\n \"onLoadCapture\",\n // Keyboard Events\n \"onKeyDown\",\n \"onKeyDownCapture\",\n \"onKeyPress\",\n \"onKeyPressCapture\",\n \"onKeyUp\",\n \"onKeyUpCapture\",\n // Media Events\n \"onAbort\",\n \"onAbortCapture\",\n \"onCanPlay\",\n \"onCanPlayCapture\",\n \"onCanPlayThrough\",\n \"onCanPlayThroughCapture\",\n \"onDurationChange\",\n \"onDurationChangeCapture\",\n \"onEmptied\",\n \"onEmptiedCapture\",\n \"onEncrypted\",\n \"onEncryptedCapture\",\n \"onEnded\",\n \"onEndedCapture\",\n \"onLoadedData\",\n \"onLoadedDataCapture\",\n \"onLoadedMetadata\",\n \"onLoadedMetadataCapture\",\n \"onLoadStart\",\n \"onLoadStartCapture\",\n \"onPause\",\n \"onPauseCapture\",\n \"onPlay\",\n \"onPlayCapture\",\n \"onPlaying\",\n \"onPlayingCapture\",\n \"onProgress\",\n \"onProgressCapture\",\n \"onRateChange\",\n \"onRateChangeCapture\",\n \"onSeeked\",\n \"onSeekedCapture\",\n \"onSeeking\",\n \"onSeekingCapture\",\n \"onStalled\",\n \"onStalledCapture\",\n \"onSuspend\",\n \"onSuspendCapture\",\n \"onTimeUpdate\",\n \"onTimeUpdateCapture\",\n \"onVolumeChange\",\n \"onVolumeChangeCapture\",\n \"onWaiting\",\n \"onWaitingCapture\",\n // MouseEvents\n \"onAuxClick\",\n \"onAuxClickCapture\",\n \"onClick\",\n \"onClickCapture\",\n \"onContextMenu\",\n \"onContextMenuCapture\",\n \"onDoubleClick\",\n \"onDoubleClickCapture\",\n \"onDrag\",\n \"onDragCapture\",\n \"onDragEnd\",\n \"onDragEndCapture\",\n \"onDragEnter\",\n \"onDragEnterCapture\",\n \"onDragExit\",\n \"onDragExitCapture\",\n \"onDragLeave\",\n \"onDragLeaveCapture\",\n \"onDragOver\",\n \"onDragOverCapture\",\n \"onDragStart\",\n \"onDragStartCapture\",\n \"onDrop\",\n \"onDropCapture\",\n \"onMouseDown\",\n \"onMouseDownCapture\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n \"onMouseMove\",\n \"onMouseMoveCapture\",\n \"onMouseOut\",\n \"onMouseOutCapture\",\n \"onMouseOver\",\n \"onMouseOverCapture\",\n \"onMouseUp\",\n \"onMouseUpCapture\",\n // Selection Events\n \"onSelect\",\n \"onSelectCapture\",\n // Touch Events\n \"onTouchCancel\",\n \"onTouchCancelCapture\",\n \"onTouchEnd\",\n \"onTouchEndCapture\",\n \"onTouchMove\",\n \"onTouchMoveCapture\",\n \"onTouchStart\",\n \"onTouchStartCapture\",\n // Pointer Events\n \"onPointerDown\",\n \"onPointerDownCapture\",\n \"onPointerMove\",\n \"onPointerUp\",\n \"onPointerUpCapture\",\n \"onPointerCancel\",\n \"onPointerCancelCapture\",\n \"onPointerEnter\",\n \"onPointerLeave\",\n \"onPointerOver\",\n \"onPointerOverCapture\",\n \"onPointerOut\",\n \"onPointerOutCapture\",\n \"onGotPointerCapture\",\n \"onGotPointerCaptureCapture\",\n \"onLostPointerCapture\",\n \"onLostPointerCaptureCapture\",\n // UI Events\n \"onScroll\",\n \"onScrollCapture\",\n // Wheel Events\n \"onWheel\",\n \"onWheelCapture\",\n // Animation Events\n \"onAnimationStart\",\n \"onAnimationStartCapture\",\n \"onAnimationEnd\",\n \"onAnimationEndCapture\",\n \"onAnimationIteration\",\n \"onAnimationIterationCapture\",\n // Transition Events\n \"onTransitionEnd\",\n \"onTransitionEndCapture\"\n];\n\n// src/react/utils/getRenderNodeProps.ts\nimport { clsx as clsx3 } from \"clsx\";\nvar getRenderNodeProps = ({\n attributes,\n editor,\n plugin,\n props\n}) => {\n props = getPluginNodeProps({\n attributes,\n plugin,\n props\n });\n const { className } = props;\n let nodeProps = {\n ...props,\n ...plugin ? getEditorPlugin2(editor, plugin) : {},\n className: clsx3(getSlateClass(plugin?.node.type), className)\n };\n nodeProps = pipeInjectNodeProps(\n editor,\n nodeProps,\n (node) => editor.api.findPath(node)\n );\n if (nodeProps.style && Object.keys(nodeProps.style).length === 0) {\n delete nodeProps.style;\n }\n return nodeProps;\n};\n\n// src/react/utils/pipeHandler.ts\nvar convertDomEventToSyntheticEvent = (domEvent) => {\n let propagationStopped = false;\n return {\n ...domEvent,\n bubbles: domEvent.bubbles,\n cancelable: domEvent.cancelable,\n currentTarget: domEvent.currentTarget,\n defaultPrevented: domEvent.defaultPrevented,\n eventPhase: domEvent.eventPhase,\n isDefaultPrevented: () => domEvent.defaultPrevented,\n isPropagationStopped: () => propagationStopped,\n isTrusted: domEvent.isTrusted,\n nativeEvent: domEvent,\n persist: () => {\n throw new Error(\n \"persist is not implemented for synthetic events created using convertDomEventToSyntheticEvent\"\n );\n },\n preventDefault: () => domEvent.preventDefault(),\n stopPropagation: () => {\n propagationStopped = true;\n domEvent.stopPropagation();\n },\n target: domEvent.target,\n timeStamp: domEvent.timeStamp,\n type: domEvent.type\n };\n};\nvar isEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n const shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.isPropagationStopped();\n};\nvar pipeHandler = (editor, {\n editableProps,\n handlerKey\n}) => {\n const propsHandler = editableProps?.[handlerKey];\n const relevantPlugins = editor.pluginList.filter(\n (plugin) => plugin.handlers?.[handlerKey]\n );\n if (relevantPlugins.length === 0 && !propsHandler) return;\n return (event) => {\n const isDomEvent = event instanceof Event;\n const handledEvent = isDomEvent ? convertDomEventToSyntheticEvent(event) : event;\n const eventIsHandled = relevantPlugins.some((plugin) => {\n const pluginHandler = plugin.handlers[handlerKey];\n const shouldTreatEventAsHandled = pluginHandler({\n ...getEditorPlugin2(editor, plugin),\n event: handledEvent\n });\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return false;\n });\n if (eventIsHandled) return true;\n return isEventHandled(handledEvent, propsHandler);\n };\n};\n\n// src/react/utils/pipeOnChange.ts\nvar pipeOnChange = (editor, value) => {\n return editor.pluginList.some((plugin) => {\n const handler = plugin.handlers.onChange;\n if (!handler) {\n return false;\n }\n const shouldTreatEventAsHandled = handler({\n ...getEditorPlugin2(editor, plugin),\n value\n });\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return false;\n });\n};\n\n// src/react/utils/pipeRenderElement.tsx\nimport React11 from \"react\";\n\n// src/react/hooks/useEditableProps.ts\nimport React8 from \"react\";\nimport { useMemoOnce } from \"@udecode/react-utils\";\nimport clsx4 from \"clsx\";\nimport omit from \"lodash/omit.js\";\nimport { useDeepCompareMemo } from \"use-deep-compare\";\n\n// src/react/utils/pipeRenderLeaf.tsx\nimport React7 from \"react\";\n\n// src/react/utils/pluginRenderLeaf.tsx\nimport React6 from \"react\";\nvar pluginRenderLeaf = (editor, plugin) => function render(nodeProps) {\n const {\n render: { node }\n } = plugin;\n const { children, leaf } = nodeProps;\n if (leaf[plugin.node.type ?? plugin.key]) {\n const Leaf = node ?? DefaultLeaf;\n const ctxProps = getRenderNodeProps({\n attributes: leaf.attributes,\n editor,\n plugin,\n props: nodeProps\n });\n return /* @__PURE__ */ React6.createElement(Leaf, { ...ctxProps }, children);\n }\n return children;\n};\n\n// src/react/utils/pipeRenderLeaf.tsx\nvar pipeRenderLeaf = (editor, renderLeafProp) => {\n const renderLeafs = [];\n editor.pluginList.forEach((plugin) => {\n if (plugin.node.isLeaf && plugin.key) {\n renderLeafs.push(pluginRenderLeaf(editor, plugin));\n }\n });\n return function render(props) {\n renderLeafs.forEach((renderLeaf) => {\n const newChildren = renderLeaf(props);\n if (newChildren !== void 0) {\n props.children = newChildren;\n }\n });\n if (renderLeafProp) {\n return renderLeafProp(props);\n }\n const ctxProps = getRenderNodeProps({\n attributes: props.attributes,\n editor,\n props\n });\n return /* @__PURE__ */ React7.createElement(DefaultLeaf, { ...ctxProps });\n };\n};\n\n// src/react/hooks/useEditableProps.ts\nvar useEditableProps = ({\n disabled,\n readOnly: readOnlyProp,\n ...editableProps\n} = {}) => {\n const { id } = editableProps;\n const editor = useEditorRef(id);\n const selectors = usePlateSelectors(id);\n const versionDecorate = selectors.versionDecorate();\n const storeReadOnly = selectors.readOnly();\n const storeDecorate = selectors.decorate();\n const storeRenderLeaf = selectors.renderLeaf();\n const storeRenderElement = selectors.renderElement();\n const decorateMemo = useMemoOnce(() => {\n return pipeDecorate(\n editor,\n storeDecorate ?? editableProps?.decorate\n );\n }, [editableProps?.decorate, editor, storeDecorate]);\n const decorate = useMemoOnce(() => {\n if (!versionDecorate || !decorateMemo) return;\n return (entry) => decorateMemo(entry);\n }, [decorateMemo, versionDecorate]);\n const renderElement = React8.useMemo(() => {\n return pipeRenderElement(\n editor,\n storeRenderElement ?? editableProps?.renderElement\n );\n }, [editableProps?.renderElement, editor, storeRenderElement]);\n const renderLeaf = React8.useMemo(() => {\n return pipeRenderLeaf(editor, storeRenderLeaf ?? editableProps?.renderLeaf);\n }, [editableProps?.renderLeaf, editor, storeRenderLeaf]);\n const props = useDeepCompareMemo(() => {\n const _props = {\n decorate,\n renderElement,\n renderLeaf\n };\n DOM_HANDLERS.forEach((handlerKey) => {\n const handler = pipeHandler(editor, {\n editableProps,\n handlerKey\n });\n if (handler) {\n _props[handlerKey] = handler;\n }\n });\n return _props;\n }, [decorate, editableProps, renderElement, renderLeaf]);\n const readOnly = storeReadOnly || readOnlyProp || disabled;\n return useDeepCompareMemo(\n () => ({\n ...omit(editableProps, [\n ...DOM_HANDLERS,\n \"renderElement\",\n \"renderLeaf\",\n \"decorate\"\n ]),\n ...props,\n \"aria-disabled\": disabled,\n className: clsx4(\n \"slate-editor\",\n \"ignore-click-outside/toolbar\",\n editableProps.className\n ),\n \"data-readonly\": readOnly,\n readOnly\n }),\n [editableProps, props, readOnly]\n );\n};\n\n// src/react/hooks/useNodePath.ts\nimport { useMemoizedSelector } from \"@udecode/react-utils\";\nimport { PathApi } from \"@udecode/slate\";\nvar useNodePath = (node) => {\n const editor = useEditorRef();\n return useMemoizedSelector(\n () => {\n return editor.api.findPath(node);\n },\n [editor, node],\n (a, b) => {\n return !!a && !!b && PathApi.equals(a, b);\n }\n );\n};\n\n// src/react/hooks/useSlateProps.ts\nimport React9 from \"react\";\nvar useSlateProps = ({\n id\n}) => {\n const editor = useEditorRef(id);\n const onChangeProp = usePlateSelectors(id).onChange();\n const onValueChangeProp = usePlateSelectors(id).onValueChange();\n const onSelectionChangeProp = usePlateSelectors(id).onSelectionChange();\n const onChange = React9.useCallback(\n (newValue) => {\n const eventIsHandled = pipeOnChange(editor, newValue);\n if (!eventIsHandled) {\n onChangeProp?.({ editor, value: newValue });\n }\n },\n [editor, onChangeProp]\n );\n const onValueChange = React9.useMemo(\n () => (value) => {\n onValueChangeProp?.({ editor, value });\n },\n [editor, onValueChangeProp]\n );\n const onSelectionChange = React9.useMemo(\n () => (selection) => {\n onSelectionChangeProp?.({ editor, selection });\n },\n [editor, onSelectionChangeProp]\n );\n return React9.useMemo(() => {\n return {\n key: editor.key,\n editor,\n initialValue: editor.children,\n value: editor.children,\n onChange,\n onSelectionChange,\n onValueChange\n };\n }, [editor, onChange, onSelectionChange, onValueChange]);\n};\n\n// src/react/utils/pluginRenderElement.tsx\nimport React10 from \"react\";\n\n// src/react/stores/element/useElementStore.ts\nvar SCOPE_ELEMENT = \"element\";\nvar initialState = {\n element: null,\n entry: null,\n path: null\n};\nvar { ElementProvider, elementStore, useElementStore } = createAtomStore(\n initialState,\n { name: \"element\" }\n);\n\n// src/react/utils/pluginRenderElement.tsx\nfunction ElementContent({\n editor,\n nodeProps,\n plugin\n}) {\n const element = useElement();\n const { children: _children } = nodeProps;\n const key = plugin.key;\n const Element = plugin.render?.node ?? DefaultElement;\n const aboveNodes = editor.pluginList.flatMap(\n (o) => o.render?.aboveNodes ?? []\n );\n const belowNodes = editor.pluginList.flatMap(\n (o) => o.render?.belowNodes ?? []\n );\n nodeProps = getRenderNodeProps({\n attributes: element.attributes,\n editor,\n plugin,\n props: nodeProps\n });\n let children = _children;\n belowNodes.forEach((withHOC2) => {\n const hoc = withHOC2({ ...nodeProps, key });\n if (hoc) {\n children = hoc({ ...nodeProps, children });\n }\n });\n let component = /* @__PURE__ */ React10.createElement(Element, { ...nodeProps }, children);\n aboveNodes.forEach((withHOC2) => {\n const hoc = withHOC2({ ...nodeProps, key });\n if (hoc) {\n component = hoc({ ...nodeProps, children: component });\n }\n });\n return component;\n}\nvar pluginRenderElement = (editor, plugin) => function render(nodeProps) {\n const { element, path } = nodeProps;\n if (element.type === plugin.node.type) {\n return /* @__PURE__ */ React10.createElement(\n ElementProvider,\n {\n element,\n entry: [element, path],\n path,\n scope: plugin.key\n },\n /* @__PURE__ */ React10.createElement(\n ElementContent,\n {\n editor,\n nodeProps,\n plugin\n }\n )\n );\n }\n};\n\n// src/react/utils/pipeRenderElement.tsx\nvar pipeRenderElement = (editor, renderElementProp) => {\n const renderElements = [];\n editor.pluginList.forEach((plugin) => {\n if (plugin.node.isElement) {\n renderElements.push(pluginRenderElement(editor, plugin));\n }\n });\n return function render(props) {\n let element;\n const path = useNodePath(props.element);\n renderElements.some((renderElement) => {\n element = renderElement({ ...props, path });\n return !!element;\n });\n if (element) return element;\n if (renderElementProp) {\n return renderElementProp({ ...props, path });\n }\n return /* @__PURE__ */ React11.createElement(DefaultElement, { attributes: props.attributes, element: props.element }, props.children);\n };\n};\n\n// src/react/stores/plate/selectors/useEditorRef.ts\nvar useEditorRef = (id, options = {}) => {\n return usePlateSelectors(id, {\n debugHookName: \"useEditorRef\",\n ...options\n }).editor() ?? createPlateFallbackEditor();\n};\n\n// src/react/stores/plate/selectors/useEditorPlugin.ts\nfunction useEditorPlugin(p, id) {\n const editor = useEditorRef(id);\n return getEditorPlugin2(editor, p);\n}\n\n// src/react/stores/plate/selectors/useEditorReadOnly.ts\nvar useEditorReadOnly = (id, options = {}) => {\n return !!usePlateSelectors(id, {\n debugHookName: \"useEditorReadOnly\",\n ...options\n }).readOnly();\n};\n\n// src/react/stores/plate/selectors/useEditorSelection.ts\nvar useEditorSelection = (id, options = {}) => usePlateSelectors(id, {\n debugHookName: \"useEditorSelection\",\n ...options\n}).trackedSelection().selection;\n\n// src/react/stores/plate/selectors/useEditorSelector.ts\nimport React12 from \"react\";\nimport { selectAtom } from \"jotai/utils\";\nvar useEditorSelector = (selector, deps, {\n id,\n equalityFn = (a, b) => a === b,\n ...storeOptions\n} = {}) => {\n const selectorAtom = React12.useMemo(\n () => selectAtom(\n plateStore.atom.trackedEditor,\n ({ editor }, prev) => selector(editor, prev),\n equalityFn\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps\n );\n return usePlateSelectors(id, {\n debugHookName: \"useEditorSelector\",\n ...storeOptions\n }).atom(selectorAtom);\n};\n\n// src/react/stores/plate/selectors/useEditorState.ts\nvar useEditorState = (id, options = {}) => {\n return usePlateSelectors(id, {\n debugHookName: \"useEditorState\",\n ...options\n }).trackedEditor().editor;\n};\n\n// src/react/stores/plate/selectors/useEditorValue.ts\nvar useEditorValue = (id, options = {}) => usePlateSelectors(id, {\n debugHookName: \"useEditorValue\",\n ...options\n}).trackedValue().value;\n\n// src/react/stores/plate/selectors/useEditorVersion.ts\nvar useEditorVersion = (id, options = {}) => {\n return usePlateSelectors(id, {\n debugHookName: \"useEditorVersion\",\n ...options\n }).versionEditor();\n};\n\n// src/react/stores/plate/selectors/useSelectionVersion.ts\nvar useSelectionVersion = (id, options = {}) => {\n return usePlateSelectors(id, {\n debugHookName: \"useSelectionVersion\",\n ...options\n }).versionSelection();\n};\n\n// src/react/stores/plate/selectors/useValueVersion.ts\nvar useValueVersion = (id, options = {}) => {\n return usePlateSelectors(id, {\n debugHookName: \"useValueVersion\",\n ...options\n }).versionValue();\n};\n\n// src/react/stores/element/useElement.ts\nvar useElement = (pluginKey = SCOPE_ELEMENT) => {\n const editor = useEditorRef();\n const value = useElementStore(pluginKey).get.element();\n if (!value) {\n editor.api.debug.warn(\n `useElement(${pluginKey}) hook must be used inside the node component's context`,\n \"USE_ELEMENT_CONTEXT\"\n );\n return {};\n }\n return value;\n};\n\n// src/react/stores/element/useElementSelector.ts\nimport React13 from \"react\";\nimport { selectAtom as selectAtom2 } from \"jotai/utils\";\nvar useElementSelector = (selector, deps, {\n key,\n equalityFn = (a, b) => a === b\n} = {}) => {\n const selectorAtom = React13.useMemo(\n () => selectAtom2(\n elementStore.atom.entry,\n (entry, prev) => selector(entry, prev),\n equalityFn\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps\n );\n return useElementStore(key).get.atom(selectorAtom);\n};\n\n// src/react/stores/element/usePath.ts\nvar usePath = (pluginKey) => {\n const editor = useEditorRef();\n const value = useElementStore(pluginKey).get.path();\n if (!value) {\n editor.api.debug.warn(\n `usePath(${pluginKey}) hook must be used inside the node component's context`,\n \"USE_ELEMENT_CONTEXT\"\n );\n return void 0;\n }\n return value;\n};\n\n// src/react/stores/event-editor/useEventPlateId.ts\nvar useEventPlateId = (id) => {\n const focus = useEventEditorSelectors.focus();\n const blur = useEventEditorSelectors.blur();\n const last = useEventEditorSelectors.last();\n const providerId = usePlateSelectors().editor().id;\n if (id) return id;\n if (focus) return focus;\n if (blur) return blur;\n return last ?? providerId ?? PLATE_SCOPE;\n};\n\n// src/react/components/EditorHotkeysEffect.tsx\nfunction EditorHotkeysEffect({\n id,\n editableRef\n}) {\n const editor = useEditorRef(id);\n return /* @__PURE__ */ React14.createElement(React14.Fragment, null, Object.entries(editor.shortcuts).map(([hotkeyString, hotkeyConfig]) => {\n if (!hotkeyConfig || !isDefined5(hotkeyConfig.keys) || !hotkeyConfig.handler) {\n return null;\n }\n return /* @__PURE__ */ React14.createElement(\n HotkeyEffect,\n {\n id,\n key: hotkeyString,\n editableRef,\n hotkeyConfig\n }\n );\n }));\n}\nfunction HotkeyEffect({\n id,\n editableRef,\n hotkeyConfig\n}) {\n const editor = useEditorRef(id);\n const { keys, handler, ...options } = hotkeyConfig;\n const setHotkeyRef = useHotkeys(\n keys,\n (event, eventDetails) => {\n handler({\n editor,\n event,\n eventDetails\n });\n },\n {\n enableOnContentEditable: true,\n ...options\n },\n []\n );\n useEffect2(() => {\n if (editableRef.current) {\n setHotkeyRef(editableRef.current);\n }\n }, [setHotkeyRef, editableRef]);\n return null;\n}\n\n// src/react/components/EditorMethodsEffect.ts\nimport React15 from \"react\";\nimport { useMemoOnce as useMemoOnce2 } from \"@udecode/react-utils\";\nvar EditorMethodsEffect = ({ id }) => {\n const editor = useEditorRef(id);\n const redecorate = useRedecorate(id);\n const plateStore2 = usePlateStore(id);\n const storeSetters = Object.fromEntries(\n EXPOSED_STORE_KEYS.map((key) => [key, plateStore2.set[key]()])\n );\n const memorizedStoreSetters = useMemoOnce2(\n () => storeSetters,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n React15.useEffect(() => {\n editor.api.redecorate = redecorate;\n editor.setPlateState = (optionKey, value) => {\n const setter = memorizedStoreSetters;\n setter[optionKey]?.(value);\n };\n }, [editor, redecorate, memorizedStoreSetters]);\n return null;\n};\n\n// src/react/components/EditorRefEffect.tsx\nimport React16 from \"react\";\nfunction EditorRefPluginEffect({\n id,\n plugin\n}) {\n const editor = useEditorRef(id);\n plugin.useHooks?.(getEditorPlugin2(editor, plugin));\n return null;\n}\nfunction EditorRefEffect({ id }) {\n const editor = usePlateSelectors(id).editor();\n const setIsMounted = usePlateActions(id).isMounted();\n React16.useEffect(() => {\n setIsMounted(true);\n return () => {\n setIsMounted(false);\n };\n }, [setIsMounted]);\n return /* @__PURE__ */ React16.createElement(React16.Fragment, null, editor.pluginList.map((plugin) => /* @__PURE__ */ React16.createElement(EditorRefPluginEffect, { id, key: plugin.key, plugin })));\n}\n\n// src/react/components/EditorStateEffect.tsx\nimport React17 from \"react\";\nimport { RangeApi } from \"@udecode/slate\";\nimport { useSlate } from \"slate-react\";\nvar EditorStateEffect = React17.memo(({ id }) => {\n const editorState = useSlate();\n const updateVersionEditor = useIncrementVersion(\"versionEditor\", id);\n React17.useEffect(() => {\n updateVersionEditor();\n });\n const updateVersionSelection = useIncrementVersion(\"versionSelection\", id);\n const prevSelectionRef = React17.useRef(editorState.selection);\n const sameSelection = isSelectionEqual(\n prevSelectionRef.current,\n editorState.selection\n );\n React17.useEffect(() => {\n if (!sameSelection) {\n updateVersionSelection();\n }\n prevSelectionRef.current = editorState.selection;\n }, [editorState.selection, sameSelection, updateVersionSelection]);\n return null;\n});\nvar isSelectionEqual = (a, b) => {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return RangeApi.equals(a, b);\n};\n\n// src/react/components/Plate.tsx\nimport React19, { useId } from \"react\";\n\n// src/internal/hooks/usePlateInstancesWarn.ts\nimport React18 from \"react\";\nfunction checkPlateInstances() {\n globalThis.__PLATE_INSTANCES__ = (globalThis.__PLATE_INSTANCES__ || 0) + 1;\n}\ncheckPlateInstances();\nfunction usePlateInstancesWarn(disabled) {\n React18.useEffect(() => {\n if (!disabled && globalThis.__PLATE_INSTANCES__ && globalThis.__PLATE_INSTANCES__ > 1) {\n console.warn(\n \"Detected multiple @udecode/plate-core instances!\\nChoose only one of these packages in your dependencies:\\n- @udecode/plate\\n- @udecode/plate-core\\n- @udecode/plate\\n\\n\"\n );\n }\n }, [disabled]);\n}\n\n// src/react/components/Plate.tsx\nfunction PlateInner({\n children,\n containerRef,\n decorate,\n editor,\n primary,\n readOnly,\n renderElement,\n renderLeaf,\n scrollRef,\n onChange,\n onSelectionChange,\n onValueChange\n}) {\n return /* @__PURE__ */ React19.createElement(\n PlateStoreProvider,\n {\n readOnly,\n onChange,\n onSelectionChange,\n onValueChange,\n containerRef,\n decorate,\n editor,\n primary,\n renderElement,\n renderLeaf,\n scope: editor.id,\n scrollRef\n },\n children\n );\n}\nfunction Plate(props) {\n const id = useId();\n const containerRef = React19.useRef(null);\n const scrollRef = React19.useRef(null);\n usePlateInstancesWarn(props.suppressInstanceWarning);\n if (!props.editor) return null;\n props.editor.uid = \"e-\" + id.replace(/:/g, \"\");\n return /* @__PURE__ */ React19.createElement(\n PlateInner,\n {\n key: props.editor.key,\n containerRef,\n scrollRef,\n ...props\n }\n );\n}\n\n// src/react/components/PlateContent.tsx\nimport React22, { useRef } from \"react\";\nimport { useComposedRef } from \"@udecode/react-utils\";\n\n// src/react/components/PlateControllerEffect.ts\nimport React20 from \"react\";\nimport { focusAtom } from \"jotai-optics\";\nvar PlateControllerEffect = ({\n id: idProp\n}) => {\n const idFromStore = useEditorId();\n const id = idProp ?? idFromStore;\n const currentStoreAtom = React20.useMemo(\n () => focusAtom(\n plateControllerStore.atom.editorStores,\n (optic) => optic.prop(id)\n ),\n [id]\n );\n const setCurrentStore = usePlateControllerActions().atom(currentStoreAtom, {\n warnIfNoStore: false\n });\n const store = usePlateStore(id).store();\n const primary = usePlateSelectors(id).primary();\n const setPrimaryEditorIds = usePlateControllerActions().primaryEditorIds({\n warnIfNoStore: false\n });\n const focused = useFocused();\n const setActiveId = usePlateControllerActions().activeId({\n warnIfNoStore: false\n });\n React20.useEffect(() => {\n setCurrentStore(store ?? null);\n return () => {\n setCurrentStore(null);\n setActiveId((activeId) => activeId === id ? null : activeId);\n };\n }, [store, setCurrentStore, setActiveId, id]);\n React20.useEffect(() => {\n if (primary) {\n setPrimaryEditorIds((ids) => [...ids, id]);\n return () => {\n setPrimaryEditorIds((ids) => ids.filter((i) => i !== id));\n };\n }\n }, [id, primary, setPrimaryEditorIds]);\n React20.useEffect(() => {\n if (id && focused) {\n setActiveId(id);\n }\n }, [id, focused, setActiveId]);\n return null;\n};\n\n// src/react/components/PlateSlate.tsx\nimport React21 from \"react\";\nfunction PlateSlate({\n id,\n children\n}) {\n const slateProps = useSlateProps({ id });\n const editor = useEditorRef(id);\n let aboveSlate = /* @__PURE__ */ React21.createElement(Slate, { ...slateProps }, children);\n editor.pluginList?.forEach((plugin) => {\n const {\n render: { aboveSlate: AboveSlate }\n } = plugin;\n if (AboveSlate) aboveSlate = /* @__PURE__ */ React21.createElement(AboveSlate, null, aboveSlate);\n });\n return aboveSlate;\n}\n\n// src/react/components/PlateContent.tsx\nvar PlateContent = React22.forwardRef(\n ({ autoFocusOnEditable, renderEditable, ...props }, ref) => {\n const { id } = props;\n const editor = useEditorRef(id);\n if (!editor) {\n throw new Error(\n \"Editor not found. Please ensure that PlateContent is rendered below Plate.\"\n );\n }\n const editableProps = useEditableProps(props);\n const editableRef = useRef(null);\n const combinedRef = useComposedRef(ref, editableRef);\n const editable = /* @__PURE__ */ React22.createElement(Editable, { ref: combinedRef, ...editableProps });\n let afterEditable = null;\n let beforeEditable = null;\n editor.pluginList.forEach((plugin) => {\n const {\n render: {\n afterEditable: AfterEditable,\n beforeEditable: BeforeEditable\n }\n } = plugin;\n if (AfterEditable) {\n afterEditable = /* @__PURE__ */ React22.createElement(React22.Fragment, null, afterEditable, /* @__PURE__ */ React22.createElement(AfterEditable, { ...editableProps }));\n }\n if (BeforeEditable) {\n beforeEditable = /* @__PURE__ */ React22.createElement(React22.Fragment, null, beforeEditable, /* @__PURE__ */ React22.createElement(BeforeEditable, { ...editableProps }));\n }\n });\n let aboveEditable = /* @__PURE__ */ React22.createElement(React22.Fragment, null, beforeEditable, renderEditable ? renderEditable(editable) : editable, /* @__PURE__ */ React22.createElement(EditorMethodsEffect, { id }), /* @__PURE__ */ React22.createElement(EditorHotkeysEffect, { id, editableRef }), /* @__PURE__ */ React22.createElement(EditorStateEffect, { id }), /* @__PURE__ */ React22.createElement(EditorRefEffect, { id }), /* @__PURE__ */ React22.createElement(PlateControllerEffect, { id }), afterEditable);\n editor.pluginList.forEach((plugin) => {\n const {\n render: { aboveEditable: AboveEditable }\n } = plugin;\n if (AboveEditable)\n aboveEditable = /* @__PURE__ */ React22.createElement(AboveEditable, null, aboveEditable);\n });\n const readOnly = props.readOnly ?? false;\n const prevReadOnly = React22.useRef(readOnly);\n React22.useEffect(() => {\n if (autoFocusOnEditable && prevReadOnly.current && !readOnly) {\n editor.tf.focus({ edge: \"endEditor\" });\n }\n prevReadOnly.current = readOnly;\n }, [autoFocusOnEditable, editor, readOnly]);\n return /* @__PURE__ */ React22.createElement(PlateSlate, { id }, aboveEditable);\n }\n);\nPlateContent.displayName = \"PlateContent\";\n\n// src/react/components/PlateTest.tsx\nimport React23 from \"react\";\n\n// src/react/editor/usePlateEditor.ts\nimport { useMemoOnce as useMemoOnce3 } from \"@udecode/react-utils\";\nfunction usePlateEditor(options = {}, deps = []) {\n return useMemoOnce3(\n () => {\n if (options.enabled === false) return null;\n const editor = createPlateEditor(options);\n return editor;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [options.id, options.enabled, ...deps]\n );\n}\n\n// src/react/components/PlateTest.tsx\nfunction PlateTest({\n editableProps,\n shouldNormalizeEditor,\n variant = \"wordProcessor\",\n ...props\n}) {\n const { id, editor: _editor, plugins } = props;\n let editor = _editor;\n if (editor && !editor.pluginList) {\n editor = createPlateEditor({\n id,\n editor,\n plugins,\n shouldNormalizeEditor\n });\n }\n return /* @__PURE__ */ React23.createElement(Plate, { ...props, editor }, /* @__PURE__ */ React23.createElement(\n PlateContent,\n {\n \"data-testid\": \"slate-content-editable\",\n \"data-variant\": variant,\n autoFocus: true,\n ...editableProps\n }\n ));\n}\n\n// src/react/components/withHOC.tsx\nimport React24 from \"react\";\nvar withHOC = (HOC, Component, hocProps, hocRef) => React24.forwardRef((props, componentRef) => /* @__PURE__ */ React24.createElement(HOC, { ...hocProps, ref: hocRef }, /* @__PURE__ */ React24.createElement(Component, { ...props, ref: componentRef })));\nexport {\n BLUR_EDITOR_EVENT,\n DOM_HANDLERS,\n DefaultElement,\n DefaultLeaf,\n DefaultPlaceholder,\n EXPOSED_STORE_KEYS,\n Editable,\n EditorHotkeysEffect,\n EditorMethodsEffect,\n EditorRefEffect,\n EditorRefPluginEffect,\n EditorStateEffect,\n ElementProvider,\n EventEditorPlugin,\n EventEditorStore,\n FOCUS_EDITOR_EVENT,\n GLOBAL_PLATE_SCOPE,\n PLATE_SCOPE,\n ParagraphPlugin,\n Plate,\n PlateContent,\n PlateController,\n PlateControllerEffect,\n PlateSlate,\n PlateStoreProvider,\n PlateTest,\n ReactPlugin,\n SCOPE_ELEMENT,\n Slate,\n SlateReactExtensionPlugin,\n atom,\n convertDomEventToSyntheticEvent,\n createAtomStore,\n createPlateEditor,\n createPlateFallbackEditor,\n createPlatePlugin,\n createPlateStore,\n createTPlatePlugin,\n elementStore,\n eventEditorActions,\n eventEditorSelectors,\n getEditorPlugin2 as getEditorPlugin,\n getEventPlateId,\n getPlateCorePlugins,\n getPlugin,\n getRenderNodeProps,\n isEventHandled,\n omitPluginContext,\n pipeHandler,\n pipeOnChange,\n pipeRenderElement,\n pipeRenderLeaf,\n plateControllerStore,\n plateStore,\n pluginRenderElement,\n pluginRenderLeaf,\n toPlatePlugin,\n toTPlatePlugin,\n useComposing,\n useEditableProps,\n useEditorContainerRef,\n useEditorId,\n useEditorMounted,\n useEditorPlugin,\n useEditorReadOnly,\n useEditorRef,\n useEditorScrollRef,\n useEditorSelection,\n useEditorSelector,\n useEditorState,\n useEditorValue,\n useEditorVersion,\n useElement,\n useElementSelector,\n useElementStore,\n useEventEditorSelectors,\n useEventPlateId,\n useFocusEditorEvents,\n useFocused,\n useIncrementVersion,\n useNodePath,\n usePath,\n usePlateActions,\n usePlateControllerActions,\n usePlateControllerEditorStore,\n usePlateControllerExists,\n usePlateControllerSelectors,\n usePlateControllerStates,\n usePlateControllerStore,\n usePlateEditor,\n usePlateEditorStore,\n usePlateSelectors,\n usePlateStates,\n usePlateStore,\n useReadOnly,\n useRedecorate,\n useScrollRef,\n useSelected,\n useSelectionVersion,\n useSlateProps,\n useValueVersion,\n withHOC,\n withPlate,\n withPlateReact,\n withReact\n};\n//# sourceMappingURL=index.mjs.map","// src/react/PlateElement.tsx\nimport React from \"react\";\nimport {\n omitPluginContext,\n usePlateStore\n} from \"@udecode/plate-core/react\";\nimport { Box, useComposedRef } from \"@udecode/react-utils\";\nimport { clsx } from \"clsx\";\nvar usePlateElement = (props) => {\n const {\n attributes,\n element,\n elementToAttributes,\n nodeProps,\n path,\n ...rootProps\n } = omitPluginContext(props);\n const mounted = usePlateStore().get.isMounted();\n const block = React.useMemo(\n () => mounted && !!element.id && props.editor.api.isBlock(element),\n [element, props.editor, mounted]\n );\n return {\n props: {\n ...attributes,\n ...rootProps,\n ...nodeProps,\n ...elementToAttributes?.(element),\n className: clsx(props.className, nodeProps?.className),\n \"data-block-id\": block ? element.id : void 0,\n style: {\n position: \"relative\",\n ...props.style,\n ...nodeProps?.style\n }\n },\n ref: useComposedRef(props.ref, attributes.ref)\n };\n};\nvar PlateElement = React.forwardRef(\n (props, ref) => {\n const { props: rootProps, ref: rootRef } = usePlateElement({\n ...props,\n ref\n });\n const { ...rest } = rootProps;\n return /* @__PURE__ */ React.createElement(Box, { ...rest, ref: rootRef });\n }\n);\nPlateElement.displayName = \"PlateElement\";\n\n// src/react/PlateLeaf.tsx\nimport React2 from \"react\";\nimport {\n omitPluginContext as omitPluginContext2\n} from \"@udecode/plate-core/react\";\nimport { Text, useComposedRef as useComposedRef2 } from \"@udecode/react-utils\";\nimport { clsx as clsx2 } from \"clsx\";\nvar usePlateLeaf = (props) => {\n const { attributes, leaf, leafToAttributes, nodeProps, text, ...rootProps } = omitPluginContext2(props);\n return {\n props: {\n ...attributes,\n ...rootProps,\n ...nodeProps,\n ...leafToAttributes?.(leaf),\n className: clsx2(props.className, nodeProps?.className)\n },\n ref: useComposedRef2(props.ref, attributes.ref)\n };\n};\nvar PlateLeaf = React2.forwardRef(\n (props, ref) => {\n const { props: rootProps, ref: rootRef } = usePlateLeaf({ ...props, ref });\n return /* @__PURE__ */ React2.createElement(Text, { ...rootProps, ref: rootRef });\n }\n);\nPlateLeaf.displayName = \"PlateLeaf\";\n\n// src/react/createNodeHOC.tsx\nimport React3 from \"react\";\nvar createNodeHOC = (HOC) => (Component, props) => function hoc(childrenProps) {\n return /* @__PURE__ */ React3.createElement(HOC, { ...{ ...childrenProps, ...props } }, /* @__PURE__ */ React3.createElement(Component, { ...childrenProps }));\n};\n\n// src/react/createNodesHOC.tsx\nimport castArray from \"lodash/castArray.js\";\nimport merge from \"lodash/merge.js\";\nvar createHOC = (withHOC) => {\n return (components, options) => {\n const _components = { ...components };\n const optionsByKey = {};\n const optionsList = castArray(options);\n optionsList.forEach(({ key, keys, ...opt }) => {\n const _keys = key ? [key] : keys ?? Object.keys(_components);\n _keys.forEach((_key) => {\n optionsByKey[_key] = merge(optionsByKey[_key], opt);\n });\n });\n Object.keys(optionsByKey).forEach((key) => {\n if (!_components[key]) return;\n _components[key] = withHOC(_components[key], optionsByKey[key]);\n });\n return _components;\n };\n};\nvar createNodesHOC = (HOC) => {\n return createHOC(createNodeHOC(HOC));\n};\nvar createNodesWithHOC = (withHOC) => {\n return createHOC(withHOC);\n};\n\n// src/react/useEditorString.ts\nimport { useEditorSelector } from \"@udecode/plate-core/react\";\nvar useEditorString = () => {\n return useEditorSelector((editor) => editor.api.string([]), []);\n};\n\n// src/react/useFormInputProps.ts\nvar useFormInputProps = (options) => {\n if (!options) return { props: {} };\n const { preventDefaultOnEnterKeydown } = options;\n const handleEnterKeydownCapture = (e) => {\n if (e.key === \"Enter\" || e.keyCode === 13) {\n e.preventDefault();\n }\n };\n return {\n props: {\n onKeyDownCapture: preventDefaultOnEnterKeydown ? (e) => handleEnterKeydownCapture(e) : void 0\n }\n };\n};\n\n// src/react/useMarkToolbarButton.ts\nimport { useEditorRef, useEditorSelector as useEditorSelector2 } from \"@udecode/plate-core/react\";\nvar useMarkToolbarButtonState = ({\n clear,\n nodeType\n}) => {\n const pressed = useEditorSelector2(\n (editor) => editor.api.hasMark(nodeType),\n [nodeType]\n );\n return {\n clear,\n nodeType,\n pressed\n };\n};\nvar useMarkToolbarButton = (state) => {\n const editor = useEditorRef();\n return {\n props: {\n pressed: state.pressed,\n onClick: () => {\n editor.tf.toggleMark(state.nodeType, { remove: state.clear });\n editor.tf.focus();\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/usePlaceholder.ts\nimport {\n useComposing,\n useEditorRef as useEditorRef2,\n useFocused,\n useSelected\n} from \"@udecode/plate-core/react\";\nimport { queryNode } from \"@udecode/slate\";\nvar usePlaceholderState = ({\n element,\n hideOnBlur = true,\n path,\n query\n}) => {\n const focused = useFocused();\n const selected = useSelected();\n const composing = useComposing();\n const editor = useEditorRef2();\n const isEmptyBlock = editor.api.isEmpty(element) && !composing;\n const enabled = isEmptyBlock && (!query || queryNode([element, path], query)) && (!hideOnBlur || editor.api.isCollapsed() && hideOnBlur && focused && selected);\n return {\n enabled\n };\n};\n\n// src/react/useRemoveNodeButton.ts\nimport { useEditorRef as useEditorRef3 } from \"@udecode/plate-core/react\";\nvar useRemoveNodeButton = ({ element }) => {\n const editor = useEditorRef3();\n return {\n props: {\n onClick: () => {\n const path = editor.api.findPath(element);\n editor.tf.removeNodes({ at: path });\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/useSelection.ts\nimport { useEditorSelector as useEditorSelector3 } from \"@udecode/plate-core/react\";\nfunction useSelectionCollapsed() {\n return useEditorSelector3((editor) => !editor.api.isExpanded(), []);\n}\nfunction useSelectionExpanded() {\n return useEditorSelector3((editor) => editor.api.isExpanded(), []);\n}\nfunction useSelectionWithinBlock() {\n return useEditorSelector3((editor) => editor.api.isAt({ block: true }), []);\n}\nfunction useSelectionAcrossBlocks() {\n return useEditorSelector3((editor) => editor.api.isAt({ blocks: true }), []);\n}\n\n// src/react/useSelectionFragment.ts\nimport { useEditorSelector as useEditorSelector4 } from \"@udecode/plate-core/react\";\nvar useSelectionFragment = (options) => {\n return useEditorSelector4((editor) => {\n return editor.api.fragment(editor.selection, options);\n }, []);\n};\nvar useSelectionFragmentProp = ({\n structuralTypes,\n ...options\n} = {}) => {\n return useEditorSelector4((editor) => {\n const fragment = editor.api.fragment(editor.selection, {\n structuralTypes\n });\n return editor.api.prop({ nodes: fragment, ...options });\n }, []);\n};\nexport {\n PlateElement,\n PlateLeaf,\n createNodeHOC,\n createNodesHOC,\n createNodesWithHOC,\n useEditorString,\n useFormInputProps,\n useMarkToolbarButton,\n useMarkToolbarButtonState,\n usePlaceholderState,\n usePlateElement,\n usePlateLeaf,\n useRemoveNodeButton,\n useSelectionAcrossBlocks,\n useSelectionCollapsed,\n useSelectionExpanded,\n useSelectionFragment,\n useSelectionFragmentProp,\n useSelectionWithinBlock\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/editor/withSlate.ts\nimport {\n createEditor\n} from \"@udecode/slate\";\nimport { nanoid } from \"nanoid\";\n\n// src/internal/utils/isFunction.ts\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/internal/utils/mergePlugins.ts\nimport mergeWith from \"lodash/mergeWith.js\";\nfunction mergePlugins(basePlugin, ...sourcePlugins) {\n return mergeWith(\n {},\n basePlugin,\n ...sourcePlugins,\n (objValue, srcValue, key) => {\n if (Array.isArray(srcValue)) {\n return srcValue;\n }\n if (key === \"options\") {\n return { ...objValue, ...srcValue };\n }\n }\n );\n}\n\n// src/lib/plugin/createSlatePlugin.ts\nfunction createSlatePlugin(config = {}) {\n let baseConfig;\n let initialExtension;\n if (isFunction(config)) {\n baseConfig = { key: \"\" };\n initialExtension = (editor) => config(editor);\n } else {\n baseConfig = config;\n }\n const key = baseConfig.key ?? \"\";\n const plugin = mergePlugins(\n {\n key,\n __apiExtensions: [],\n __configuration: null,\n __extensions: initialExtension ? [initialExtension] : [],\n __optionExtensions: [],\n api: {},\n dependencies: [],\n editor: {},\n inject: {},\n node: { type: key },\n options: {},\n override: {},\n parser: {},\n parsers: {},\n plugins: [],\n priority: 100,\n render: {},\n shortcuts: {},\n transforms: {},\n handlers: {}\n },\n config\n );\n plugin.configure = (config2) => {\n const newPlugin = { ...plugin };\n newPlugin.__configuration = (ctx) => isFunction(config2) ? config2(ctx) : config2;\n return createSlatePlugin(newPlugin);\n };\n plugin.configurePlugin = (p, config2) => {\n const newPlugin = { ...plugin };\n const configureNestedPlugin = (plugins) => {\n let found = false;\n const updatedPlugins = plugins.map((nestedPlugin) => {\n if (nestedPlugin.key === p.key) {\n found = true;\n return createSlatePlugin({\n ...nestedPlugin,\n __configuration: (ctx) => isFunction(config2) ? config2(ctx) : config2\n });\n }\n if (nestedPlugin.plugins && nestedPlugin.plugins.length > 0) {\n const result2 = configureNestedPlugin(nestedPlugin.plugins);\n if (result2.found) {\n found = true;\n return {\n ...nestedPlugin,\n plugins: result2.plugins\n };\n }\n }\n return nestedPlugin;\n });\n return { found, plugins: updatedPlugins };\n };\n const result = configureNestedPlugin(newPlugin.plugins);\n newPlugin.plugins = result.plugins;\n return createSlatePlugin(newPlugin);\n };\n plugin.extendEditorApi = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n { extension, isPluginSpecific: false }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extendOptions = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__optionExtensions = [\n ...newPlugin.__optionExtensions,\n extension\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extendApi = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n { extension, isPluginSpecific: true }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extendEditorTransforms = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n { extension, isPluginSpecific: false, isTransform: true }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extendTransforms = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n { extension, isPluginSpecific: true, isTransform: true }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.overrideEditor = (extension) => {\n const newPlugin = { ...plugin };\n newPlugin.__apiExtensions = [\n ...newPlugin.__apiExtensions,\n {\n extension,\n isOverride: true,\n isPluginSpecific: false,\n isTransform: true\n }\n ];\n return createSlatePlugin(newPlugin);\n };\n plugin.extend = (extendConfig) => {\n let newPlugin = { ...plugin };\n if (isFunction(extendConfig)) {\n newPlugin.__extensions = [\n ...newPlugin.__extensions,\n extendConfig\n ];\n } else {\n newPlugin = mergePlugins(newPlugin, extendConfig);\n }\n return createSlatePlugin(newPlugin);\n };\n plugin.clone = () => mergePlugins(plugin);\n plugin.extendPlugin = (p, extendConfig) => {\n const newPlugin = { ...plugin };\n const extendNestedPlugin = (plugins) => {\n let found = false;\n const updatedPlugins = plugins.map((nestedPlugin) => {\n if (nestedPlugin.key === p.key) {\n found = true;\n return createSlatePlugin({\n ...nestedPlugin,\n __extensions: [\n ...nestedPlugin.__extensions,\n (ctx) => isFunction(extendConfig) ? extendConfig(ctx) : extendConfig\n ]\n });\n }\n if (nestedPlugin.plugins && nestedPlugin.plugins.length > 0) {\n const result2 = extendNestedPlugin(nestedPlugin.plugins);\n if (result2.found) {\n found = true;\n return {\n ...nestedPlugin,\n plugins: result2.plugins\n };\n }\n }\n return nestedPlugin;\n });\n return { found, plugins: updatedPlugins };\n };\n const result = extendNestedPlugin(newPlugin.plugins);\n newPlugin.plugins = result.plugins;\n if (!result.found) {\n newPlugin.plugins.push(\n createSlatePlugin({\n key: p.key,\n __extensions: [\n (ctx) => isFunction(extendConfig) ? extendConfig(ctx) : extendConfig\n ]\n })\n );\n }\n return createSlatePlugin(newPlugin);\n };\n return plugin;\n}\nfunction createTSlatePlugin(config = {}) {\n return createSlatePlugin(config);\n}\n\n// src/lib/plugin/getEditorPlugin.ts\nfunction getEditorPlugin(editor, p) {\n const plugin = editor.getPlugin(p);\n return {\n api: editor.api,\n editor,\n getOption: (key, ...args) => editor.getOption(plugin, key, ...args),\n getOptions: () => editor.getOptions(plugin),\n plugin,\n setOption: (keyOrOptions, value) => editor.setOption(plugin, keyOrOptions, value),\n setOptions: (options) => editor.setOptions(plugin, options),\n tf: editor.transforms,\n type: plugin.node.type\n };\n}\n\n// src/internal/plugin/resolvePlugin.ts\nimport merge from \"lodash/merge.js\";\nvar resolvePlugin = (editor, _plugin) => {\n let plugin = mergePlugins({}, _plugin);\n plugin.__resolved = true;\n if (plugin.__configuration) {\n const configResult = plugin.__configuration(\n getEditorPlugin(editor, plugin)\n );\n plugin = mergePlugins(plugin, configResult);\n delete plugin.__configuration;\n }\n if (plugin.__extensions && plugin.__extensions.length > 0) {\n plugin.__extensions.forEach((extension) => {\n plugin = mergePlugins(\n plugin,\n extension(getEditorPlugin(editor, plugin))\n );\n });\n plugin.__extensions = [];\n }\n const targetPluginToInject = plugin.inject?.targetPluginToInject;\n const targetPlugins = plugin.inject?.targetPlugins;\n if (targetPluginToInject && targetPlugins && targetPlugins.length > 0) {\n plugin.inject = plugin.inject || {};\n plugin.inject.plugins = merge(\n {},\n plugin.inject.plugins,\n Object.fromEntries(\n targetPlugins.map((targetPlugin) => {\n const injectedPlugin = targetPluginToInject({\n ...getEditorPlugin(editor, plugin),\n targetPlugin\n });\n return [targetPlugin, injectedPlugin];\n })\n )\n );\n }\n if (plugin.node?.component) {\n plugin.render.node = plugin.node.component;\n }\n if (plugin.render?.node) {\n plugin.node.component = plugin.render.node;\n }\n validatePlugin(editor, plugin);\n return plugin;\n};\nvar validatePlugin = (editor, plugin) => {\n if (!plugin.__extensions) {\n editor.api.debug.error(\n `Invalid plugin '${plugin.key}', you should use createSlatePlugin.`,\n \"USE_CREATE_PLUGIN\"\n );\n }\n if (plugin.node.isElement && plugin.node.isLeaf) {\n editor.api.debug.error(\n `Plugin ${plugin.key} cannot be both an element and a leaf.`,\n \"PLUGIN_NODE_TYPE\"\n );\n }\n};\n\n// src/lib/plugin/getSlatePlugin.ts\nfunction getSlatePlugin(editor, p) {\n let plugin = p;\n const editorPlugin = editor.plugins[p.key];\n if (!editorPlugin) {\n if (!plugin.node) {\n plugin = createSlatePlugin(plugin);\n }\n return plugin.__resolved ? plugin : resolvePlugin(editor, plugin);\n }\n return editorPlugin;\n}\nfunction getPluginType(editor, plugin) {\n const p = editor.getPlugin(plugin);\n return p.node.type ?? p.key ?? \"\";\n}\nvar getPluginTypes = (editor, plugins) => plugins.map((plugin) => editor.getType(plugin));\n\n// src/internal/plugin/pipeNormalizeInitialValue.ts\nvar pipeNormalizeInitialValue = (editor) => {\n editor.pluginList.forEach((p) => {\n p.normalizeInitialValue?.({\n ...getEditorPlugin(editor, p),\n value: editor.children\n });\n });\n};\n\n// src/internal/plugin/resolvePlugins.ts\nimport {\n assignLegacyApi,\n assignLegacyTransforms,\n syncLegacyMethods\n} from \"@udecode/slate\";\nimport { isDefined } from \"@udecode/utils\";\nimport merge2 from \"lodash/merge.js\";\nimport { createZustandStore } from \"zustand-x\";\nvar resolvePlugins = (editor, plugins = []) => {\n editor.pluginList = [];\n editor.plugins = {};\n editor.shortcuts = {};\n const resolvedPlugins = resolveAndSortPlugins(editor, plugins);\n applyPluginsToEditor(editor, resolvedPlugins);\n resolvePluginOverrides(editor);\n resolvePluginStores(editor);\n editor.pluginList.forEach((plugin) => {\n if (plugin.extendEditor) {\n editor = plugin.extendEditor(getEditorPlugin(editor, plugin));\n syncLegacyMethods(editor);\n }\n resolvePluginMethods(editor, plugin);\n });\n resolvePluginShortcuts(editor);\n return editor;\n};\nvar resolvePluginStores = (editor) => {\n editor.pluginList.forEach((plugin) => {\n let store = createZustandStore(plugin.options, {\n mutative: true,\n name: plugin.key\n });\n if (plugin.__optionExtensions && plugin.__optionExtensions.length > 0) {\n plugin.__optionExtensions.forEach((extension) => {\n const extendedOptions = extension(getEditorPlugin(editor, plugin));\n store = store.extendSelectors(() => extendedOptions);\n });\n }\n plugin.optionsStore = store;\n });\n};\nvar resolvePluginMethods = (editor, plugin) => {\n Object.entries(plugin.api).forEach(([apiKey, apiFunction]) => {\n editor.api[apiKey] = apiFunction;\n });\n if (plugin.__apiExtensions && plugin.__apiExtensions.length > 0) {\n plugin.__apiExtensions.forEach(\n ({ extension, isOverride, isPluginSpecific, isTransform }) => {\n const newExtensions = extension(getEditorPlugin(editor, plugin));\n if (isOverride) {\n if (newExtensions.api) {\n merge2(editor.api, newExtensions.api);\n merge2(plugin.api, newExtensions.api);\n assignLegacyApi(editor, editor.api);\n }\n if (newExtensions.transforms) {\n merge2(editor.transforms, newExtensions.transforms);\n merge2(plugin.transforms, newExtensions.transforms);\n assignLegacyTransforms(editor, newExtensions.transforms);\n }\n } else if (isTransform) {\n if (isPluginSpecific) {\n if (!editor.transforms[plugin.key]) {\n editor.transforms[plugin.key] = {};\n }\n if (!plugin.transforms[plugin.key]) {\n plugin.transforms[plugin.key] = {};\n }\n merge2(editor.transforms[plugin.key], newExtensions);\n merge2(plugin.transforms[plugin.key], newExtensions);\n } else {\n merge2(editor.transforms, newExtensions);\n merge2(plugin.transforms, newExtensions);\n assignLegacyTransforms(editor, newExtensions);\n }\n } else {\n if (isPluginSpecific) {\n if (!editor.api[plugin.key]) {\n editor.api[plugin.key] = {};\n }\n if (!plugin.api[plugin.key]) {\n plugin.api[plugin.key] = {};\n }\n merge2(editor.api[plugin.key], newExtensions);\n merge2(plugin.api[plugin.key], newExtensions);\n } else {\n merge2(editor.api, newExtensions);\n merge2(plugin.api, newExtensions);\n assignLegacyApi(editor, editor.api);\n }\n }\n }\n );\n delete plugin.__apiExtensions;\n }\n};\nvar resolvePluginShortcuts = (editor) => {\n const shortcutsByPriority = [];\n editor.pluginList.forEach((plugin) => {\n Object.entries(plugin.shortcuts).forEach(([key, hotkey]) => {\n if (hotkey === null) {\n const index = shortcutsByPriority.findIndex((item) => item.key === key);\n if (index !== -1) {\n shortcutsByPriority.splice(index, 1);\n }\n } else {\n const priority = hotkey.priority ?? plugin.priority;\n const existingIndex = shortcutsByPriority.findIndex(\n (item) => item.key === key\n );\n if (existingIndex === -1 || priority >= shortcutsByPriority[existingIndex].priority) {\n if (existingIndex !== -1) {\n shortcutsByPriority.splice(existingIndex, 1);\n }\n shortcutsByPriority.push({ key, hotkey, priority });\n }\n }\n });\n });\n shortcutsByPriority.sort((a, b) => b.hotkey.priority - a.hotkey.priority);\n editor.shortcuts = Object.fromEntries(\n shortcutsByPriority.map(({ key, hotkey }) => {\n const { priority, ...hotkeyWithoutPriority } = hotkey;\n return [key, hotkeyWithoutPriority];\n })\n );\n};\nvar flattenAndResolvePlugins = (editor, plugins) => {\n const pluginMap = /* @__PURE__ */ new Map();\n const processPlugin = (plugin) => {\n const resolvedPlugin = resolvePlugin(editor, plugin);\n const existingPlugin = pluginMap.get(resolvedPlugin.key);\n if (existingPlugin) {\n pluginMap.set(\n resolvedPlugin.key,\n mergePlugins(existingPlugin, resolvedPlugin)\n );\n } else {\n pluginMap.set(resolvedPlugin.key, resolvedPlugin);\n }\n if (resolvedPlugin.plugins && resolvedPlugin.plugins.length > 0) {\n resolvedPlugin.plugins.forEach(processPlugin);\n }\n };\n plugins.forEach(processPlugin);\n return pluginMap;\n};\nvar resolveAndSortPlugins = (editor, plugins) => {\n const pluginMap = flattenAndResolvePlugins(editor, plugins);\n const enabledPlugins = Array.from(pluginMap.values()).filter(\n (plugin) => plugin.enabled !== false\n );\n enabledPlugins.sort((a, b) => b.priority - a.priority);\n const orderedPlugins = [];\n const visited = /* @__PURE__ */ new Set();\n const visit = (plugin) => {\n if (visited.has(plugin.key)) return;\n visited.add(plugin.key);\n plugin.dependencies?.forEach((depKey) => {\n const depPlugin = pluginMap.get(depKey);\n if (depPlugin) {\n visit(depPlugin);\n } else {\n editor.api.debug.warn(\n `Plugin \"${plugin.key}\" depends on missing plugin \"${depKey}\"`,\n \"PLUGIN_DEPENDENCY_MISSING\"\n );\n }\n });\n orderedPlugins.push(plugin);\n };\n enabledPlugins.forEach(visit);\n return orderedPlugins;\n};\nvar applyPluginsToEditor = (editor, plugins) => {\n editor.pluginList = plugins;\n editor.plugins = Object.fromEntries(\n plugins.map((plugin) => [plugin.key, plugin])\n );\n};\nvar resolvePluginOverrides = (editor) => {\n const applyOverrides = (plugins) => {\n let overriddenPlugins = [...plugins];\n const enabledOverrides = {};\n const componentOverrides = {};\n const pluginOverrides = {};\n for (const plugin of plugins) {\n if (plugin.override.enabled) {\n Object.assign(enabledOverrides, plugin.override.enabled);\n }\n if (plugin.override.components) {\n Object.entries(plugin.override.components).forEach(\n ([key, component]) => {\n if (!componentOverrides[key] || plugin.priority > componentOverrides[key].priority) {\n componentOverrides[key] = {\n component,\n priority: plugin.priority\n };\n }\n }\n );\n }\n if (plugin.override.plugins) {\n Object.entries(plugin.override.plugins).forEach(([key, value]) => {\n pluginOverrides[key] = mergePlugins(pluginOverrides[key], value);\n if (value.enabled !== void 0) {\n enabledOverrides[key] = value.enabled;\n }\n });\n }\n }\n overriddenPlugins = overriddenPlugins.map((p) => {\n let updatedPlugin = { ...p };\n if (pluginOverrides[p.key]) {\n updatedPlugin = mergePlugins(updatedPlugin, pluginOverrides[p.key]);\n }\n if (componentOverrides[p.key] && (!p.render.node && !p.node.component || componentOverrides[p.key].priority > p.priority)) {\n updatedPlugin.render.node = componentOverrides[p.key].component;\n updatedPlugin.node.component = componentOverrides[p.key].component;\n }\n const enabled = enabledOverrides[p.key] ?? updatedPlugin.enabled;\n if (isDefined(enabled)) {\n updatedPlugin.enabled = enabled;\n }\n return updatedPlugin;\n });\n return overriddenPlugins.filter((p) => p.enabled !== false).map((plugin) => ({\n ...plugin,\n plugins: applyOverrides(plugin.plugins || [])\n }));\n };\n editor.pluginList = applyOverrides(editor.pluginList);\n editor.plugins = Object.fromEntries(\n editor.pluginList.map((plugin) => [plugin.key, plugin])\n );\n};\n\n// src/lib/plugins/AstPlugin.ts\nvar AstPlugin = createSlatePlugin({\n key: \"ast\",\n parser: {\n deserialize: ({ data }) => {\n const decoded = decodeURIComponent(window.atob(data));\n let parsed;\n try {\n parsed = JSON.parse(decoded);\n } catch {\n }\n return parsed;\n },\n format: \"application/x-slate-fragment\"\n }\n});\n\n// src/lib/plugins/DOMPlugin.ts\nvar DOMPlugin = createSlatePlugin({\n key: \"dom\"\n});\n\n// src/lib/plugins/HistoryPlugin.ts\nimport { withHistory } from \"@udecode/slate\";\nvar withPlateHistory = ({ editor }) => withHistory(editor);\nvar HistoryPlugin = createSlatePlugin({\n key: \"history\",\n extendEditor: withPlateHistory\n});\n\n// src/lib/plugins/InlineVoidPlugin.ts\nvar withInlineVoid = ({\n api: { isInline, isSelectable, isVoid, markableVoid },\n editor\n}) => {\n const voidTypes = [];\n const inlineTypes = [];\n const markableVoidTypes = [];\n const nonSelectableTypes = [];\n editor.pluginList.forEach((plugin) => {\n if (plugin.node.isInline) {\n inlineTypes.push(plugin.node.type);\n }\n if (plugin.node.isVoid) {\n voidTypes.push(plugin.node.type);\n }\n if (plugin.node.isMarkableVoid) {\n markableVoidTypes.push(plugin.node.type);\n }\n if (plugin.node.isSelectable === false) {\n nonSelectableTypes.push(plugin.node.type);\n }\n });\n return {\n api: {\n isInline(element) {\n return inlineTypes.includes(element.type) ? true : isInline(element);\n },\n isSelectable(element) {\n return nonSelectableTypes.includes(element.type) ? false : isSelectable(element);\n },\n isVoid(element) {\n return voidTypes.includes(element.type) ? true : isVoid(element);\n },\n markableVoid(element) {\n return markableVoidTypes.includes(element.type) ? true : markableVoid(element);\n }\n }\n };\n};\nvar InlineVoidPlugin = createSlatePlugin({\n key: \"inlineVoid\"\n}).overrideEditor(withInlineVoid);\n\n// src/internal/plugin/pipeInsertFragment.ts\nvar pipeInsertFragment = (editor, injectedPlugins, { fragment, ...options }) => {\n editor.tf.withoutNormalizing(() => {\n injectedPlugins.some((p) => {\n return p.parser?.preInsert?.({\n ...getEditorPlugin(editor, p),\n fragment,\n ...options\n }) === true;\n });\n editor.tf.insertFragment(fragment);\n });\n};\n\n// src/internal/plugin/pipeTransformData.ts\nvar pipeTransformData = (editor, plugins, { data, dataTransfer }) => {\n plugins.forEach((p) => {\n const transformData = p.parser?.transformData;\n if (!transformData) return;\n data = transformData({\n ...getEditorPlugin(editor, p),\n data,\n dataTransfer\n });\n });\n return data;\n};\n\n// src/internal/plugin/pipeTransformFragment.ts\nvar pipeTransformFragment = (editor, plugins, { fragment, ...options }) => {\n plugins.forEach((p) => {\n const transformFragment = p.parser?.transformFragment;\n if (!transformFragment) return;\n fragment = transformFragment({\n fragment,\n ...options,\n ...getEditorPlugin(editor, p)\n });\n });\n return fragment;\n};\n\n// src/lib/utils/applyDeepToNodes.ts\nimport {\n NodeApi,\n queryNode\n} from \"@udecode/slate\";\nvar applyDeepToNodes = ({\n apply,\n node,\n path = [],\n query,\n source\n}) => {\n const entry = [node, path];\n if (queryNode(entry, query)) {\n if (source instanceof Function) {\n apply(node, source());\n } else {\n apply(node, source);\n }\n }\n if (!NodeApi.isAncestor(node)) return;\n node.children.forEach((child, index) => {\n applyDeepToNodes({\n apply,\n node: child,\n path: path.concat([index]),\n query,\n source\n });\n });\n};\n\n// src/lib/utils/defaultsDeepToNodes.ts\nimport defaults from \"lodash/defaults.js\";\nvar defaultsDeepToNodes = (options) => {\n applyDeepToNodes({ ...options, apply: defaults });\n};\n\n// src/lib/utils/getInjectMatch.ts\nimport { ElementApi } from \"@udecode/slate\";\n\n// src/lib/utils/getKeysByTypes.ts\nvar getKeysByTypes = (editor, types) => {\n return Object.values(editor.plugins).filter((plugin) => types.includes(plugin.node.type)).map((plugin) => plugin.key);\n};\nvar getKeyByType = (editor, type) => {\n const plugin = Object.values(editor.plugins).find(\n (plugin2) => plugin2.node.type === type\n );\n return plugin?.key ?? type;\n};\n\n// src/lib/utils/getInjectMatch.ts\nvar getInjectMatch = (editor, plugin) => {\n return (node, path) => {\n const {\n inject: {\n excludeBelowPlugins,\n excludePlugins,\n isBlock: _isBlock,\n isElement: _isElement,\n isLeaf,\n maxLevel,\n targetPlugins\n }\n } = plugin;\n const element = ElementApi.isElement(node) ? node : void 0;\n if (_isElement && element) return false;\n if (_isBlock && (!element || !editor.api.isBlock(element))) return false;\n if (isLeaf && element) return false;\n if (element?.type) {\n if (excludePlugins?.includes(getKeyByType(editor, element.type))) {\n return false;\n }\n if (targetPlugins && !targetPlugins.includes(getKeyByType(editor, element.type))) {\n return false;\n }\n }\n if (excludeBelowPlugins || maxLevel) {\n if (maxLevel && path.length > maxLevel) {\n return false;\n }\n if (excludeBelowPlugins) {\n const excludeTypes = getKeysByTypes(editor, excludeBelowPlugins);\n const isBelow = editor.api.above({\n at: path,\n match: (n) => ElementApi.isElement(n) && excludeTypes.includes(n.type)\n });\n if (isBelow) return false;\n }\n }\n return true;\n };\n};\n\n// src/lib/utils/getInjectedPlugins.ts\nvar getInjectedPlugins = (editor, plugin) => {\n const injectedPlugins = [];\n [...editor.pluginList].reverse().forEach((p) => {\n const injectedPlugin = p.inject.plugins?.[plugin.key];\n if (injectedPlugin) injectedPlugins.push(injectedPlugin);\n });\n return [plugin, ...injectedPlugins];\n};\n\n// src/lib/utils/getPluginNodeProps.ts\nimport pick from \"lodash/pick.js\";\n\n// src/lib/static/pipeRenderElementStatic.tsx\nimport React3 from \"react\";\n\n// src/lib/static/components/SlateElement.tsx\nimport React from \"react\";\nimport clsx from \"clsx\";\nvar SlateElement = (props) => {\n const { as, attributes, element, elementToAttributes, nodeProps, ...rest } = omitPluginContext(props);\n const block = !!element.id && props.editor.api.isBlock(element);\n const rootProps = {\n ...attributes,\n ...rest,\n ...nodeProps,\n ...elementToAttributes?.(element),\n className: clsx(props.className, nodeProps?.className),\n \"data-block-id\": block ? element.id : void 0,\n style: {\n position: \"relative\",\n ...props.style,\n ...nodeProps?.style\n }\n };\n const Element = as ?? \"div\";\n return /* @__PURE__ */ React.createElement(Element, { ...rootProps, ref: attributes.ref });\n};\n\n// src/lib/static/pluginRenderElementStatic.tsx\nimport React2 from \"react\";\n\n// src/lib/static/utils/getNodeDataAttributes.ts\nimport { TextApi } from \"@udecode/slate\";\nimport kebabCase from \"lodash/kebabCase\";\nvar keyToDataAttribute = (key) => {\n return `data-slate-${kebabCase(key)}`;\n};\nvar getNodeDataAttributes = (editor, plugin, node) => {\n const dataAttributes = Object.keys(node).reduce((acc, key) => {\n if (typeof node[key] === \"object\") return acc;\n const isElement = plugin.node.isElement;\n const isLeaf = plugin.node.isLeaf;\n if (isElement && key === \"children\") return acc;\n if (isLeaf && key === \"text\") return acc;\n const attributeName = keyToDataAttribute(key);\n return {\n ...acc,\n [attributeName]: node[key]\n };\n }, {});\n const customAttributes = plugin.node.toDataAttributes?.({\n ...plugin ? getEditorPlugin(editor, plugin) : {},\n node\n }) ?? {};\n return { ...dataAttributes, ...customAttributes };\n};\nvar getNodeDataAttributeKeys = (node) => {\n return Object.keys(node).filter(\n (key) => typeof node[key] !== \"object\" && (!TextApi.isText(node) || key !== \"text\")\n ).map((key) => keyToDataAttribute(key));\n};\n\n// src/lib/static/utils/getRenderNodeStaticProps.ts\nimport clsx3 from \"clsx\";\n\n// src/internal/plugin/pipeInjectNodeProps.tsx\nimport clsx2 from \"clsx\";\n\n// src/internal/plugin/pluginInjectNodeProps.ts\nimport { isDefined as isDefined2 } from \"@udecode/utils\";\nvar pluginInjectNodeProps = (editor, plugin, nodeProps, getElementPath) => {\n const {\n key,\n inject: { nodeProps: injectNodeProps }\n } = plugin;\n const { element, text } = nodeProps;\n const node = element ?? text;\n if (!node) return;\n if (!injectNodeProps) return;\n const {\n classNames,\n defaultNodeValue,\n nodeKey = key,\n query,\n styleKey = nodeKey,\n transformClassName,\n transformNodeValue,\n transformProps,\n transformStyle,\n validNodeValues\n } = injectNodeProps;\n const injectMatch = getInjectMatch(editor, plugin);\n if (!injectMatch(node, getElementPath(node))) return;\n const queryResult = query?.({\n ...injectNodeProps,\n ...getEditorPlugin(editor, plugin),\n nodeProps\n });\n if (query && !queryResult) {\n return;\n }\n const nodeValue = node[nodeKey];\n if (!transformProps && (!isDefined2(nodeValue) || validNodeValues && !validNodeValues.includes(nodeValue) || nodeValue === defaultNodeValue)) {\n return;\n }\n const transformOptions = {\n ...nodeProps,\n ...getEditorPlugin(editor, plugin),\n nodeValue\n };\n const value = transformNodeValue?.(transformOptions) ?? nodeValue;\n transformOptions.value = value;\n let newProps = {};\n if (element && nodeKey) {\n newProps.className = `slate-${nodeKey}-${nodeValue}`;\n }\n if (classNames?.[nodeValue] || transformClassName) {\n newProps.className = transformClassName?.(transformOptions) ?? classNames?.[value];\n }\n if (styleKey) {\n newProps.style = transformStyle?.(transformOptions) ?? {\n [styleKey]: value\n };\n }\n if (transformProps) {\n newProps = transformProps({ ...transformOptions, props: newProps }) ?? newProps;\n }\n return newProps;\n};\n\n// src/internal/plugin/pipeInjectNodeProps.tsx\nvar pipeInjectNodeProps = (editor, nodeProps, getElementPath) => {\n editor.pluginList.forEach((plugin) => {\n if (plugin.inject.nodeProps) {\n const newProps = pluginInjectNodeProps(\n editor,\n plugin,\n nodeProps,\n getElementPath\n );\n if (!newProps) return;\n nodeProps = {\n ...nodeProps,\n ...newProps,\n className: clsx2(nodeProps.className, newProps.className),\n style: {\n ...nodeProps.style,\n ...newProps.style\n }\n };\n }\n });\n return nodeProps;\n};\n\n// src/lib/static/utils/getRenderNodeStaticProps.ts\nvar getRenderNodeStaticProps = ({\n attributes,\n editor,\n node,\n plugin,\n props\n}) => {\n props = getPluginNodeProps({\n attributes,\n node,\n plugin,\n props\n });\n const { className } = props;\n let nodeProps = {\n ...props,\n ...plugin ? getEditorPlugin(editor, plugin) : {},\n className: clsx3(getSlateClass(plugin?.node.type), className)\n };\n nodeProps = pipeInjectNodeProps(\n editor,\n nodeProps,\n (node2) => editor.api.findPath(node2)\n );\n if (nodeProps.style && Object.keys(nodeProps.style).length === 0) {\n delete nodeProps.style;\n }\n return nodeProps;\n};\n\n// src/lib/static/pluginRenderElementStatic.tsx\nvar pluginRenderElementStatic = (editor, plugin, components) => function render(nodeProps) {\n if (nodeProps.element.type === plugin.node.type) {\n const element = nodeProps.element;\n const key = plugin.key;\n const Element = components?.[plugin.key] ?? SlateElement;\n let { children } = nodeProps;\n const aboveNodes = editor.pluginList.flatMap(\n (o) => o.render?.aboveNodes ?? []\n );\n const belowNodes = editor.pluginList.flatMap(\n (o) => o.render?.belowNodes ?? []\n );\n const dataAttributes = getNodeDataAttributes(editor, plugin, element);\n nodeProps = getRenderNodeStaticProps({\n attributes: {\n ...element.attributes,\n ...dataAttributes\n },\n editor,\n node: element,\n plugin,\n props: nodeProps\n });\n belowNodes.forEach((withHOC) => {\n const hoc = withHOC({ ...nodeProps, key });\n if (hoc) {\n children = hoc({ ...nodeProps, children });\n }\n });\n let component = /* @__PURE__ */ React2.createElement(Element, { ...nodeProps }, children);\n aboveNodes.forEach((withHOC) => {\n const hoc = withHOC({ ...nodeProps, key });\n if (hoc) {\n component = hoc({ ...nodeProps, children: component });\n }\n });\n return component;\n }\n};\n\n// src/lib/static/pipeRenderElementStatic.tsx\nvar pipeRenderElementStatic = (editor, {\n components,\n renderElement: renderElementProp\n}) => {\n const renderElements = [];\n editor.pluginList.forEach((plugin) => {\n if (plugin.node.isElement) {\n renderElements.push(\n pluginRenderElementStatic(editor, plugin, components)\n );\n }\n });\n return function render(props) {\n let element;\n renderElements.some((renderElement) => {\n element = renderElement(props);\n return !!element;\n });\n if (element) return element;\n if (renderElementProp) {\n return renderElementProp(props);\n }\n return /* @__PURE__ */ React3.createElement(\n SlateElement,\n {\n attributes: props.attributes,\n element: props.element,\n ...{}\n },\n props.children\n );\n };\n};\n\n// src/lib/static/pluginRenderLeafStatic.tsx\nimport React5 from \"react\";\n\n// src/lib/static/components/SlateLeaf.tsx\nimport React4 from \"react\";\nimport clsx4 from \"clsx\";\nfunction SlateLeaf(props) {\n const { as, attributes, leaf, leafToAttributes, nodeProps, text, ...rest } = omitPluginContext(props);\n const rootProps = {\n ...attributes,\n ...rest,\n ...nodeProps,\n ...leafToAttributes?.(leaf),\n className: clsx4(props.className, nodeProps?.className)\n };\n const Leaf = as ?? \"span\";\n return /* @__PURE__ */ React4.createElement(Leaf, { ...rootProps });\n}\n\n// src/lib/static/pluginRenderLeafStatic.tsx\nvar pluginRenderLeafStatic = (editor, plugin, components) => function render(nodeProps) {\n const { children, leaf } = nodeProps;\n if (leaf[plugin.node.type ?? plugin.key]) {\n const Leaf = components?.[plugin.key] ?? SlateLeaf;\n const dataAttributes = getNodeDataAttributes(editor, plugin, leaf);\n const ctxProps = getRenderNodeStaticProps({\n attributes: {\n ...leaf.attributes,\n ...dataAttributes\n },\n editor,\n node: leaf,\n plugin,\n props: nodeProps\n });\n return /* @__PURE__ */ React5.createElement(Leaf, { ...ctxProps }, children);\n }\n return children;\n};\nvar pipeRenderLeafStatic = (editor, {\n components,\n renderLeaf: renderLeafProp\n}) => {\n const renderLeafs = [];\n editor.pluginList.forEach((plugin) => {\n if (plugin.node.isLeaf && plugin.key) {\n renderLeafs.push(pluginRenderLeafStatic(editor, plugin, components));\n }\n });\n return function render(props) {\n renderLeafs.forEach((renderLeaf) => {\n const newChildren = renderLeaf(props);\n if (newChildren !== void 0) {\n props.children = newChildren;\n }\n });\n if (renderLeafProp) {\n return renderLeafProp(props);\n }\n const ctxProps = getRenderNodeStaticProps({\n attributes: props.attributes,\n editor,\n props\n });\n return /* @__PURE__ */ React5.createElement(SlateLeaf, { ...ctxProps });\n };\n};\n\n// src/lib/static/serializeHtml.tsx\nimport React7 from \"react\";\nimport { decode } from \"html-entities\";\n\n// src/lib/static/components/PlateStatic.tsx\nimport React6 from \"react\";\nimport {\n ElementApi as ElementApi2,\n RangeApi,\n TextApi as TextApi2,\n isElementDecorationsEqual,\n isTextDecorationsEqual\n} from \"@udecode/slate\";\nimport clsx5 from \"clsx\";\n\n// src/lib/static/utils/pipeDecorate.ts\nvar pipeDecorate = (editor, decorateProp) => {\n const relevantPlugins = editor.pluginList.filter((plugin) => plugin.decorate);\n if (relevantPlugins.length === 0 && !decorateProp) return;\n return (entry) => {\n let ranges = [];\n const addRanges = (newRanges) => {\n if (newRanges?.length) ranges = [...ranges, ...newRanges];\n };\n relevantPlugins.forEach((plugin) => {\n addRanges(\n plugin.decorate({\n ...getEditorPlugin(editor, plugin),\n entry\n })\n );\n });\n if (decorateProp) {\n addRanges(\n decorateProp({\n editor,\n entry\n })\n );\n }\n return ranges;\n };\n};\n\n// src/lib/static/components/PlateStatic.tsx\nfunction BaseElementStatic({\n components,\n decorate,\n decorations,\n editor,\n element = { children: [], type: \"\" }\n}) {\n const renderElement = pipeRenderElementStatic(editor, {\n components\n });\n const attributes = {\n \"data-slate-node\": \"element\",\n ref: null\n };\n let children = /* @__PURE__ */ React6.createElement(\n Children,\n {\n components,\n decorate,\n decorations,\n editor\n },\n element.children\n );\n if (editor.api.isVoid(element)) {\n attributes[\"data-slate-void\"] = true;\n children = /* @__PURE__ */ React6.createElement(\n \"span\",\n {\n style: {\n color: \"transparent\",\n height: \"0\",\n outline: \"none\",\n position: \"absolute\"\n },\n \"data-slate-spacer\": true\n },\n /* @__PURE__ */ React6.createElement(\n Children,\n {\n components,\n decorate,\n decorations,\n editor\n },\n element.children\n )\n );\n }\n if (editor.api.isInline(element)) {\n attributes[\"data-slate-inline\"] = true;\n }\n return /* @__PURE__ */ React6.createElement(React6.Fragment, null, renderElement?.({\n attributes,\n children,\n element\n }));\n}\nvar ElementStatic = React6.memo(BaseElementStatic, (prev, next) => {\n return (prev.element === next.element || prev.element._memo !== void 0 && prev.element._memo === next.element._memo) && isElementDecorationsEqual(prev.decorations, next.decorations);\n});\nfunction BaseLeafStatic({\n components,\n decorations,\n editor,\n leaf = { text: \"\" }\n}) {\n const renderLeaf = pipeRenderLeafStatic(editor, {\n components\n });\n const leaves = TextApi2.decorations(leaf, decorations);\n return /* @__PURE__ */ React6.createElement(\"span\", { \"data-slate-node\": \"text\" }, leaves.map((l, index) => {\n const leafElement = renderLeaf({\n attributes: { \"data-slate-leaf\": true },\n children: /* @__PURE__ */ React6.createElement(\"span\", { \"data-slate-string\": true }, l.text === \"\" ? \"\\uFEFF\" : l.text),\n leaf: l,\n text: l\n });\n return /* @__PURE__ */ React6.createElement(React6.Fragment, { key: index }, leafElement);\n }));\n}\nvar LeafStatic = React6.memo(BaseLeafStatic, (prev, next) => {\n return (\n // prev.leaf === next.leaf &&\n TextApi2.equals(next.leaf, prev.leaf) && isTextDecorationsEqual(next.decorations, prev.decorations)\n );\n});\nvar defaultDecorate = () => [];\nfunction Children({\n children = [],\n components,\n decorate = defaultDecorate,\n decorations = [],\n editor\n}) {\n return /* @__PURE__ */ React6.createElement(React6.Fragment, null, children.map((child, i) => {\n const p = editor.api.findPath(child);\n let ds = [];\n if (p) {\n const range = editor.api.range(p);\n ds = decorate([child, p]);\n for (const dec of decorations) {\n const d = RangeApi.intersection(dec, range);\n if (d) {\n ds.push(d);\n }\n }\n }\n return ElementApi2.isElement(child) ? /* @__PURE__ */ React6.createElement(\n ElementStatic,\n {\n key: i,\n components,\n decorate,\n decorations: ds,\n editor,\n element: child\n }\n ) : /* @__PURE__ */ React6.createElement(\n LeafStatic,\n {\n key: i,\n components,\n decorations: ds,\n editor,\n leaf: child\n }\n );\n }));\n}\nfunction PlateStatic(props) {\n const { className, components, editor, value, ...rest } = props;\n if (value) {\n editor.children = value;\n }\n const decorate = pipeDecorate(editor);\n let afterEditable = null;\n let beforeEditable = null;\n editor.pluginList.forEach((plugin) => {\n const {\n render: { afterEditable: AfterEditable, beforeEditable: BeforeEditable }\n } = plugin;\n if (AfterEditable) {\n afterEditable = /* @__PURE__ */ React6.createElement(React6.Fragment, null, afterEditable, /* @__PURE__ */ React6.createElement(AfterEditable, null));\n }\n if (BeforeEditable) {\n beforeEditable = /* @__PURE__ */ React6.createElement(React6.Fragment, null, beforeEditable, /* @__PURE__ */ React6.createElement(BeforeEditable, null));\n }\n });\n const content = /* @__PURE__ */ React6.createElement(\n \"div\",\n {\n className: clsx5(\"slate-editor\", className),\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n ...rest\n },\n /* @__PURE__ */ React6.createElement(\n Children,\n {\n components,\n decorate,\n decorations: [],\n editor\n },\n editor.children\n )\n );\n let aboveEditable = /* @__PURE__ */ React6.createElement(React6.Fragment, null, beforeEditable, content, afterEditable);\n editor.pluginList.forEach((plugin) => {\n const {\n render: { aboveEditable: AboveEditable }\n } = plugin;\n if (AboveEditable) {\n aboveEditable = /* @__PURE__ */ React6.createElement(AboveEditable, null, aboveEditable);\n }\n });\n return aboveEditable;\n}\n\n// src/lib/static/utils/stripHtmlClassNames.ts\nvar classAttrRegExp = / class=\"([^\"]*)\"/g;\nvar stripHtmlClassNames = (html, { preserveClassNames = [\"slate-\"] }) => {\n if (preserveClassNames.length === 0) {\n return html.replaceAll(classAttrRegExp, \"\");\n }\n const preserveRegExp = new RegExp(\n preserveClassNames.map((cn) => `^${cn}`).join(\"|\")\n );\n return html.replaceAll(\n classAttrRegExp,\n (match, className) => {\n const classesToKeep = className.split(/\\s+/).filter((cn) => preserveRegExp.test(cn));\n return classesToKeep.length === 0 ? \"\" : ` class=\"${classesToKeep.join(\" \")}\"`;\n }\n );\n};\n\n// src/lib/static/utils/stripSlateDataAttributes.ts\nvar stripSlateDataAttributes = (rawHtml) => rawHtml.replaceAll(/ data-slate(?:-node|-type|-leaf|-string)=\"[^\"]+\"/g, \"\").replaceAll(/ data-testid=\"[^\"]+\"/g, \"\");\n\n// src/lib/static/serializeHtml.tsx\nvar getReactDOMServer = async () => {\n const ReactDOMServer = (await import(\"react-dom/server\")).default;\n return ReactDOMServer;\n};\nvar renderComponentToHtml = (ReactDOMServer, Component, props) => {\n return decode(\n ReactDOMServer.renderToStaticMarkup(React7.createElement(Component, props))\n );\n};\nvar serializeHtml = async (editor, {\n components,\n editorComponent: EditorComponent = PlateStatic,\n preserveClassNames,\n props = {},\n stripClassNames = false,\n stripDataAttributes = false\n}) => {\n const ReactDOMServer = await getReactDOMServer();\n let htmlString = renderComponentToHtml(ReactDOMServer, EditorComponent, {\n components,\n editor,\n ...props\n });\n if (stripClassNames) {\n htmlString = stripHtmlClassNames(htmlString, {\n preserveClassNames\n });\n }\n if (stripDataAttributes) {\n htmlString = stripSlateDataAttributes(htmlString);\n }\n return htmlString;\n};\n\n// src/lib/static/deserialize/checkUtils.ts\nvar isSlateVoid = (element) => {\n return element.dataset.slateVoid === \"true\";\n};\nvar isSlateElement = (element) => {\n return element.dataset.slateNode === \"element\";\n};\nvar isSlateString = (element) => {\n return element.dataset.slateNode === \"text\";\n};\nvar isSlateLeaf = (element) => {\n return element.dataset.slateLeaf === \"true\";\n};\nvar isSlateNode = (element) => {\n return isSlateLeaf(element) || isSlateElement(element) || isSlateVoid(element) || isSlateString(element);\n};\nvar isSlatePluginElement = (element, pluginKey) => {\n return element.dataset.slateNode === \"element\" && element.classList.contains(`slate-${pluginKey}`);\n};\nvar isSlatePluginNode = (element, pluginKey) => {\n return element.classList.contains(`slate-${pluginKey}`);\n};\nvar getSlateElements = (element) => {\n return Array.from(element.querySelectorAll('[data-slate-node=\"element\"]'));\n};\n\n// src/lib/static/deserialize/htmlStringToEditorDOM.ts\nvar getEditorDOMFromHtmlString = (html) => {\n const node = document.createElement(\"body\");\n node.innerHTML = html;\n const editorNode = node.querySelector('[data-slate-editor=\"true\"]');\n return editorNode;\n};\n\n// src/lib/static/utils/createStaticString.ts\nimport React8 from \"react\";\nfunction createStaticString({ text }) {\n return React8.createElement(\n \"span\",\n { \"data-slate-string\": true },\n text === \"\" ? \"\\uFEFF\" : text\n );\n}\n\n// src/lib/utils/getPluginNodeProps.ts\nvar getPluginNodeProps = ({\n attributes,\n node,\n plugin,\n props\n}) => {\n let newProps = {};\n if (plugin?.node.props) {\n newProps = (typeof plugin.node.props === \"function\" ? plugin.node.props(props) : plugin.node.props) ?? {};\n }\n if (!newProps.nodeProps && attributes && plugin) {\n newProps.nodeProps = pick(attributes, [\n ...plugin.node.dangerouslyAllowAttributes ?? [],\n ...node ? getNodeDataAttributeKeys(node) : []\n ]);\n }\n props = { ...props, ...newProps };\n if (props.nodeProps) {\n Object.keys(props.nodeProps).forEach((key) => {\n if (props.nodeProps?.[key] === void 0) {\n delete props.nodeProps?.[key];\n }\n });\n }\n return props;\n};\n\n// src/lib/utils/getSlateClass.ts\nvar getSlateClass = (type) => type ? `slate-${type}` : \"\";\n\n// src/lib/utils/hotkeys.ts\nimport { IS_APPLE } from \"@udecode/utils\";\nimport { isKeyHotkey } from \"is-hotkey\";\nimport { isHotkey } from \"is-hotkey\";\nvar HOTKEYS = {\n bold: \"mod+b\",\n compose: [\"down\", \"left\", \"right\", \"up\", \"backspace\", \"enter\"],\n deleteBackward: \"shift?+backspace\",\n deleteForward: \"shift?+delete\",\n extendBackward: \"shift+left\",\n extendForward: \"shift+right\",\n insertSoftBreak: \"shift+enter\",\n italic: \"mod+i\",\n moveBackward: \"left\",\n moveForward: \"right\",\n moveWordBackward: \"ctrl+left\",\n moveWordForward: \"ctrl+right\",\n splitBlock: \"enter\",\n tab: \"tab\",\n undo: \"mod+z\",\n untab: \"shift+tab\"\n};\nvar APPLE_HOTKEYS = {\n deleteBackward: [\"ctrl+backspace\", \"ctrl+h\"],\n deleteForward: [\"ctrl+delete\", \"ctrl+d\"],\n deleteLineBackward: \"cmd+shift?+backspace\",\n deleteLineForward: [\"cmd+shift?+delete\", \"ctrl+k\"],\n deleteWordBackward: \"opt+shift?+backspace\",\n deleteWordForward: \"opt+shift?+delete\",\n extendLineBackward: \"opt+shift+up\",\n extendLineForward: \"opt+shift+down\",\n moveLineBackward: \"opt+up\",\n moveLineForward: \"opt+down\",\n moveWordBackward: \"opt+left\",\n moveWordForward: \"opt+right\",\n redo: \"cmd+shift+z\",\n transposeCharacter: \"ctrl+t\"\n};\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: \"ctrl+shift?+backspace\",\n deleteWordForward: \"ctrl+shift?+delete\",\n redo: [\"ctrl+y\", \"ctrl+shift+z\"]\n};\nvar createHotkey = (key) => {\n const generic = HOTKEYS[key];\n const apple = APPLE_HOTKEYS[key];\n const windows = WINDOWS_HOTKEYS[key];\n const isGeneric = generic && isKeyHotkey(generic);\n const isApple = apple && isKeyHotkey(apple);\n const isWindows = windows && isKeyHotkey(windows);\n return (event) => {\n if (isGeneric?.(event)) return true;\n if (IS_APPLE && isApple?.(event)) return true;\n if (!IS_APPLE && isWindows?.(event)) return true;\n return false;\n };\n};\nvar createComposing = (key) => (editor, event, {\n composing\n} = {}) => {\n if (!createHotkey(key)(event)) return false;\n if (!!composing !== editor.api.isComposing()) return false;\n return true;\n};\nvar Hotkeys = {\n isBold: createHotkey(\"bold\"),\n isCompose: createHotkey(\"compose\"),\n isDeleteBackward: createHotkey(\"deleteBackward\"),\n isDeleteForward: createHotkey(\"deleteForward\"),\n isDeleteLineBackward: createHotkey(\"deleteLineBackward\"),\n isDeleteLineForward: createHotkey(\"deleteLineForward\"),\n isDeleteWordBackward: createHotkey(\"deleteWordBackward\"),\n isDeleteWordForward: createHotkey(\"deleteWordForward\"),\n isExtendBackward: createHotkey(\"extendBackward\"),\n isExtendForward: createHotkey(\"extendForward\"),\n isExtendLineBackward: createHotkey(\"extendLineBackward\"),\n isExtendLineForward: createHotkey(\"extendLineForward\"),\n isItalic: createHotkey(\"italic\"),\n isMoveBackward: createHotkey(\"moveBackward\"),\n isMoveForward: createHotkey(\"moveForward\"),\n isMoveLineBackward: createHotkey(\"moveLineBackward\"),\n isMoveLineForward: createHotkey(\"moveLineForward\"),\n isMoveWordBackward: createHotkey(\"moveWordBackward\"),\n isMoveWordForward: createHotkey(\"moveWordForward\"),\n isRedo: createHotkey(\"redo\"),\n isSoftBreak: createHotkey(\"insertSoftBreak\"),\n isSplitBlock: createHotkey(\"splitBlock\"),\n isTab: createComposing(\"tab\"),\n isTransposeCharacter: createHotkey(\"transposeCharacter\"),\n isUndo: createHotkey(\"undo\"),\n isUntab: createComposing(\"untab\")\n};\n\n// src/lib/utils/isType.ts\nimport castArray from \"lodash/castArray.js\";\nvar isType = (editor, node, key) => {\n const keys = castArray(key);\n const types = [];\n keys.forEach((_key) => types.push(editor.getType({ key: _key })));\n return types.includes(node?.type);\n};\n\n// src/lib/utils/mergeDeepToNodes.ts\nimport merge3 from \"lodash/merge.js\";\nvar mergeDeepToNodes = (options) => {\n applyDeepToNodes({ ...options, apply: merge3 });\n};\n\n// src/lib/utils/normalizeDescendantsToDocumentFragment.ts\nimport {\n ElementApi as ElementApi4,\n TextApi as TextApi4\n} from \"@udecode/slate\";\n\n// src/lib/plugins/debug/DebugPlugin.ts\nvar PlateError = class extends Error {\n constructor(message, type = \"DEFAULT\") {\n super(`[${type}] ${message}`);\n this.type = type;\n this.name = \"PlateError\";\n }\n};\nvar DebugPlugin = createTSlatePlugin({\n key: \"debug\",\n options: {\n isProduction: process.env.NODE_ENV === \"production\",\n logLevel: process.env.NODE_ENV === \"production\" ? \"error\" : \"log\",\n logger: {\n error: (message, type, details) => console.error(`${type ? `[${type}] ` : \"\"}${message}`, details),\n info: (message, type, details) => console.info(`${type ? `[${type}] ` : \"\"}${message}`, details),\n log: (message, type, details) => console.log(`${type ? `[${type}] ` : \"\"}${message}`, details),\n warn: (message, type, details) => console.warn(`${type ? `[${type}] ` : \"\"}${message}`, details)\n },\n throwErrors: true\n }\n}).extendEditorApi(({ getOptions }) => {\n const logLevels = [\"error\", \"warn\", \"info\", \"log\"];\n const log = (level, message, type, details) => {\n const options = getOptions();\n if (options.isProduction && level === \"log\") return;\n if (logLevels.indexOf(level) <= logLevels.indexOf(options.logLevel)) {\n if (level === \"error\" && options.throwErrors) {\n const error = message instanceof Error ? message : new PlateError(message, type);\n throw error;\n } else {\n options.logger[level]?.(message, type, details);\n }\n }\n };\n return {\n debug: {\n error: (message, type, details) => log(\"error\", message, type, details),\n info: (message, type, details) => log(\"info\", message, type, details),\n log: (message, type, details) => log(\"log\", message, type, details),\n warn: (message, type, details) => log(\"warn\", message, type, details)\n }\n };\n});\n\n// src/lib/plugins/html/HtmlPlugin.ts\nimport { bindFirst } from \"@udecode/utils\";\n\n// src/lib/plugins/html/constants.ts\nvar CARRIAGE_RETURN = \"\\r\";\nvar LINE_FEED = \"\\n\";\nvar NO_BREAK_SPACE = \"\\xA0\";\nvar SPACE = \" \";\nvar TAB = \"\t\";\nvar ZERO_WIDTH_SPACE = \"\\u200B\";\n\n// src/lib/plugins/html/utils/isHtmlElement.ts\nvar isHtmlElement = (node) => node.nodeType === Node.ELEMENT_NODE;\n\n// src/lib/plugins/html/utils/traverseHtmlNode.ts\nvar traverseHtmlNode = (node, callback) => {\n const keepTraversing = callback(node);\n if (!keepTraversing) {\n return;\n }\n let child = node.firstChild;\n while (child) {\n const currentChild = child;\n const previousChild = child.previousSibling;\n child = child.nextSibling;\n traverseHtmlNode(currentChild, callback);\n if (\n // An unwrap was made. Need to compute the next child again.\n !currentChild.previousSibling && !currentChild.nextSibling && !currentChild.parentNode && child && previousChild !== child.previousSibling && child.parentNode\n ) {\n child = previousChild ? previousChild.nextSibling : node.firstChild;\n } else if (\n // A list was created. Need to compute the next child again.\n !currentChild.previousSibling && !currentChild.nextSibling && !currentChild.parentNode && child && !child.previousSibling && !child.nextSibling && !child.parentNode\n ) {\n if (previousChild) {\n child = previousChild.nextSibling ? previousChild.nextSibling.nextSibling : null;\n } else if (node.firstChild) {\n child = node.firstChild.nextSibling;\n }\n }\n }\n};\n\n// src/lib/plugins/html/utils/traverseHtmlElements.ts\nvar traverseHtmlElements = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlElement(node)) {\n return true;\n }\n return callback(node);\n });\n};\n\n// src/lib/plugins/html/utils/cleanHtmlBrElements.ts\nvar cleanHtmlBrElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element) => {\n if (element.tagName !== \"BR\") {\n return true;\n }\n const replacementTextNode = document.createTextNode(LINE_FEED);\n if (element.parentElement) {\n element.parentElement.replaceChild(replacementTextNode, element);\n }\n return false;\n });\n};\n\n// src/lib/plugins/html/utils/cleanHtmlCrLf.ts\nvar cleanHtmlCrLf = (html) => {\n return html.replaceAll(/\\r\\n|\\r/g, \"\\n\");\n};\n\n// src/lib/plugins/html/utils/cleanHtmlEmptyElements.ts\nvar ALLOWED_EMPTY_ELEMENTS = /* @__PURE__ */ new Set([\"BR\", \"IMG\", \"TD\", \"TH\"]);\nvar isEmpty = (element) => {\n return !ALLOWED_EMPTY_ELEMENTS.has(element.nodeName) && !element.innerHTML.trim();\n};\nvar removeIfEmpty = (element) => {\n if (isEmpty(element)) {\n const { parentElement } = element;\n element.remove();\n if (parentElement) {\n removeIfEmpty(parentElement);\n }\n }\n};\nvar cleanHtmlEmptyElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element) => {\n removeIfEmpty(element);\n return true;\n });\n};\n\n// src/lib/plugins/html/utils/replaceTagName.ts\nvar replaceTagName = (element, tagName) => {\n const newElement = document.createElement(tagName);\n newElement.innerHTML = element.innerHTML;\n for (const { name } of element.attributes) {\n const value = element.getAttribute(name);\n if (value) {\n newElement.setAttribute(name, value);\n }\n }\n if (element.parentNode) {\n element.parentNode.replaceChild(newElement, element);\n }\n return newElement;\n};\n\n// src/lib/plugins/html/utils/cleanHtmlFontElements.ts\nvar cleanHtmlFontElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element) => {\n if (element.tagName === \"FONT\") {\n if (element.textContent) {\n replaceTagName(element, \"span\");\n } else {\n element.remove();\n }\n }\n return true;\n });\n};\n\n// src/lib/plugins/html/utils/isHtmlFragmentHref.ts\nvar isHtmlFragmentHref = (href) => href.startsWith(\"#\");\n\n// src/lib/plugins/html/utils/unwrapHtmlElement.ts\nvar unwrapHtmlElement = (element) => {\n element.outerHTML = element.innerHTML;\n};\n\n// src/lib/plugins/html/utils/cleanHtmlLinkElements.ts\nvar cleanHtmlLinkElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element) => {\n if (element.tagName !== \"A\") {\n return true;\n }\n const href = element.getAttribute(\"href\");\n if (!href || isHtmlFragmentHref(href)) {\n unwrapHtmlElement(element);\n }\n if (href && element.querySelector(\"img\")) {\n for (const span of element.querySelectorAll(\"span\")) {\n if (!span.textContent) {\n unwrapHtmlElement(span);\n }\n }\n }\n return true;\n });\n};\n\n// src/lib/plugins/html/utils/isHtmlText.ts\nvar isHtmlText = (node) => node.nodeType === Node.TEXT_NODE;\n\n// src/lib/plugins/html/utils/traverseHtmlTexts.ts\nvar traverseHtmlTexts = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlText(node)) {\n return true;\n }\n return callback(node);\n });\n};\n\n// src/lib/plugins/html/utils/cleanHtmlTextNodes.ts\nvar cleanHtmlTextNodes = (rootNode) => {\n traverseHtmlTexts(rootNode, (textNode) => {\n if (/^\\n\\s*$/.test(textNode.data) && (textNode.previousElementSibling || textNode.nextElementSibling)) {\n textNode.remove();\n return true;\n }\n textNode.data = textNode.data.replaceAll(/\\n\\s*/g, \"\\n\");\n if (textNode.data.includes(CARRIAGE_RETURN) || textNode.data.includes(LINE_FEED) || textNode.data.includes(NO_BREAK_SPACE)) {\n const hasSpace = textNode.data.includes(SPACE);\n const hasNonWhitespace = /\\S/.test(textNode.data);\n const hasLineFeed = textNode.data.includes(LINE_FEED);\n if (!(hasSpace || hasNonWhitespace) && !hasLineFeed) {\n if (textNode.data === NO_BREAK_SPACE) {\n textNode.data = SPACE;\n return true;\n }\n textNode.remove();\n return true;\n }\n if (textNode.previousSibling && textNode.previousSibling.nodeName === \"BR\" && textNode.parentElement) {\n textNode.previousSibling.remove();\n const matches = /^[\\n\\r]+/.exec(textNode.data);\n const offset = matches ? matches[0].length : 0;\n textNode.data = textNode.data.slice(Math.max(0, offset)).replaceAll(new RegExp(LINE_FEED, \"g\"), SPACE).replaceAll(new RegExp(CARRIAGE_RETURN, \"g\"), SPACE);\n textNode.data = `\n${textNode.data}`;\n } else {\n textNode.data = textNode.data.replaceAll(new RegExp(LINE_FEED, \"g\"), SPACE).replaceAll(new RegExp(CARRIAGE_RETURN, \"g\"), SPACE);\n }\n }\n return true;\n });\n};\n\n// src/lib/plugins/html/utils/inlineTagNames.ts\nvar inlineTagNames = /* @__PURE__ */ new Set([\n \"A\",\n \"ABBR\",\n \"ACRONYM\",\n \"B\",\n \"BDI\",\n \"BDO\",\n \"BIG\",\n \"BR\",\n \"BUTTON\",\n \"CANVAS\",\n \"CITE\",\n \"CODE\",\n \"CONTENT\",\n \"DATA\",\n \"DEL\",\n \"DFN\",\n \"EM\",\n \"EMBED\",\n \"FONT\",\n \"I\",\n \"IFRAME\",\n \"IMG\",\n \"IMG\",\n \"INPUT\",\n \"INS\",\n \"KBD\",\n \"LABEL\",\n \"MAP\",\n \"MARK\",\n \"MARQUEE\",\n \"MENUITEM\",\n \"METER\",\n \"NOBR\",\n \"OBJECT\",\n \"OUTPUT\",\n \"PICTURE\",\n \"PORTAL\",\n \"PROGRESS\",\n \"Q\",\n \"S\",\n \"SAMP\",\n \"SELECT\",\n \"SHADOW\",\n \"SMALL\",\n \"SOURCE\",\n \"SPAN\",\n \"STRIKE\",\n \"STRONG\",\n \"SUB\",\n \"SUP\",\n \"TEXTAREA\",\n \"TIME\",\n \"TRACK\",\n \"TT\",\n \"U\",\n \"VAR\",\n \"VIDEO\",\n \"WBR\",\n \"math\",\n \"svg\"\n]);\n\n// src/lib/plugins/html/utils/isHtmlInlineElement.ts\nvar isHtmlInlineElement = (node) => {\n if (!isHtmlElement(node)) return false;\n const element = node;\n const tagNameIsInline = inlineTagNames.has(element.tagName);\n const displayProperty = element.style.display.split(\" \")[0];\n if (displayProperty === \"\") {\n return tagNameIsInline;\n }\n if (displayProperty.startsWith(\"inline\")) {\n return true;\n }\n if (displayProperty === \"inherit\" && element.parentElement) {\n return isHtmlInlineElement(element.parentElement);\n }\n if ([\"contents\", \"initial\", \"none\", \"revert\", \"revert-layer\", \"unset\"].includes(\n displayProperty\n )) {\n return tagNameIsInline;\n }\n return false;\n};\n\n// src/lib/plugins/html/utils/isHtmlBlockElement.ts\nvar isHtmlBlockElement = (node) => {\n if (!isHtmlElement(node)) return false;\n const element = node;\n return !isHtmlInlineElement(element);\n};\n\n// src/lib/plugins/html/utils/isHtmlTable.ts\nvar isHtmlTable = (element) => element.nodeName === \"TABLE\";\n\n// src/lib/plugins/html/utils/copyBlockMarksToSpanChild.ts\nvar copyBlockMarksToSpanChild = (rootNode) => {\n traverseHtmlElements(rootNode, (element) => {\n const el = element;\n const styleAttribute = element.getAttribute(\"style\");\n if (!styleAttribute) return true;\n if (isHtmlBlockElement(el) && !isHtmlTable(el)) {\n const {\n style: {\n backgroundColor,\n color,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textDecoration\n }\n } = el;\n if (backgroundColor || color || fontFamily || fontSize || fontStyle || fontWeight || textDecoration) {\n const span = document.createElement(\"span\");\n if (![\"inherit\", \"initial\"].includes(color)) {\n span.style.color = color;\n }\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n if (![\"inherit\", \"initial\", \"normal\"].includes(color)) {\n span.style.fontStyle = fontStyle;\n }\n if (![400, \"normal\"].includes(fontWeight)) {\n span.style.fontWeight = fontWeight;\n }\n span.style.textDecoration = textDecoration;\n span.innerHTML = el.innerHTML;\n element.innerHTML = span.outerHTML;\n }\n }\n return true;\n });\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseString.ts\nvar collapseString = (text, {\n shouldCollapseWhiteSpace = true,\n trimEnd = \"collapse\",\n trimStart = \"collapse\",\n whiteSpaceIncludesNewlines = true\n} = {}) => {\n if (trimStart === \"all\") {\n text = text.replace(/^\\s+/, \"\");\n }\n if (trimEnd === \"single-newline\") {\n text = text.replace(/\\n$/, \"\");\n }\n if (shouldCollapseWhiteSpace) {\n if (whiteSpaceIncludesNewlines) {\n text = text.replaceAll(/\\s+/g, \" \");\n } else {\n text = text.replaceAll(/[^\\S\\n\\r]+/g, \" \");\n text = text.replaceAll(/^[^\\S\\n\\r]+/gm, \"\");\n text = text.replaceAll(/[^\\S\\n\\r]+$/gm, \"\");\n }\n }\n return text;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/isLastNonEmptyTextOfInlineFormattingContext.ts\nvar isLastNonEmptyTextOfInlineFormattingContext = (initialText) => {\n let currentNode = initialText;\n while (true) {\n if (currentNode.nextSibling) {\n currentNode = currentNode.nextSibling;\n } else {\n currentNode = currentNode.parentElement;\n if (currentNode && isHtmlBlockElement(currentNode)) {\n return true;\n }\n currentNode = currentNode?.nextSibling || null;\n }\n if (!currentNode) {\n return true;\n }\n if (isHtmlBlockElement(currentNode)) {\n return true;\n }\n if ((currentNode.textContent || \"\").length > 0) {\n return false;\n }\n }\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/stateTransforms.ts\nvar upsertInlineFormattingContext = (state) => {\n if (state.inlineFormattingContext) {\n state.inlineFormattingContext.atStart = false;\n } else {\n state.inlineFormattingContext = {\n atStart: true,\n lastHasTrailingWhiteSpace: false\n };\n }\n};\nvar endInlineFormattingContext = (state) => {\n state.inlineFormattingContext = null;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpaceText.ts\nvar collapseWhiteSpaceText = (text, state) => {\n const textContent = text.textContent || \"\";\n const isWhiteSpaceOnly = textContent.trim() === \"\";\n if (state.inlineFormattingContext || !isWhiteSpaceOnly) {\n upsertInlineFormattingContext(state);\n }\n const { whiteSpaceRule } = state;\n const trimStart = (() => {\n if (whiteSpaceRule !== \"normal\") return \"collapse\";\n if (!state.inlineFormattingContext || state.inlineFormattingContext.atStart || state.inlineFormattingContext.lastHasTrailingWhiteSpace)\n return \"all\";\n return \"collapse\";\n })();\n const trimEnd = (() => {\n if (whiteSpaceRule === \"normal\") return \"collapse\";\n if (isLastNonEmptyTextOfInlineFormattingContext(text))\n return \"single-newline\";\n return \"collapse\";\n })();\n const shouldCollapseWhiteSpace = {\n normal: true,\n pre: false,\n \"pre-line\": true\n }[whiteSpaceRule];\n const whiteSpaceIncludesNewlines = whiteSpaceRule !== \"pre-line\";\n const collapsedTextContent = collapseString(textContent || \"\", {\n shouldCollapseWhiteSpace,\n trimEnd,\n trimStart,\n whiteSpaceIncludesNewlines\n });\n if (state.inlineFormattingContext && shouldCollapseWhiteSpace) {\n state.inlineFormattingContext.lastHasTrailingWhiteSpace = collapsedTextContent.endsWith(\" \");\n }\n text.textContent = collapsedTextContent;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpaceNode.ts\nvar collapseWhiteSpaceNode = (node, state) => {\n if (isHtmlElement(node)) {\n collapseWhiteSpaceElement(node, state);\n return;\n }\n if (isHtmlText(node)) {\n collapseWhiteSpaceText(node, state);\n return;\n }\n collapseWhiteSpaceChildren(node, state);\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpaceChildren.ts\nvar collapseWhiteSpaceChildren = (node, state) => {\n const childNodes = Array.from(node.childNodes);\n for (const childNode of childNodes) {\n collapseWhiteSpaceNode(childNode, state);\n }\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/inferWhiteSpaceRule.ts\nvar inferWhiteSpaceRule = (element) => {\n const whiteSpaceProperty = element.style.whiteSpace;\n switch (whiteSpaceProperty) {\n case \"break-spaces\":\n case \"pre\":\n case \"pre-wrap\": {\n return \"pre\";\n }\n case \"normal\":\n case \"nowrap\": {\n return \"normal\";\n }\n case \"pre-line\": {\n return \"pre-line\";\n }\n }\n if (element.tagName === \"PRE\") {\n return \"pre\";\n }\n if (whiteSpaceProperty === \"initial\") {\n return \"normal\";\n }\n return null;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpaceElement.ts\nvar collapseWhiteSpaceElement = (element, state) => {\n const isInlineElement = isHtmlInlineElement(element);\n const previousWhiteSpaceRule = state.whiteSpaceRule;\n const inferredWhiteSpaceRule = inferWhiteSpaceRule(element);\n if (inferredWhiteSpaceRule) {\n state.whiteSpaceRule = inferredWhiteSpaceRule;\n }\n if (!isInlineElement) {\n endInlineFormattingContext(state);\n }\n collapseWhiteSpaceChildren(element, state);\n if (!isInlineElement) {\n endInlineFormattingContext(state);\n }\n state.whiteSpaceRule = previousWhiteSpaceRule;\n};\n\n// src/lib/plugins/html/utils/collapse-white-space/collapseWhiteSpace.ts\nvar collapseWhiteSpace = (element) => {\n const clonedElement = element.cloneNode(true);\n const state = {\n inlineFormattingContext: null,\n whiteSpaceRule: \"normal\"\n };\n collapseWhiteSpaceElement(clonedElement, state);\n return clonedElement;\n};\n\n// src/lib/plugins/html/utils/htmlBodyToFragment.ts\nimport { jsx } from \"slate-hyperscript\";\n\n// src/lib/plugins/html/utils/deserializeHtmlNodeChildren.ts\nvar deserializeHtmlNodeChildren = (editor, node) => Array.from(node.childNodes).flatMap(\n deserializeHtmlNode(editor)\n);\n\n// src/lib/plugins/html/utils/htmlBodyToFragment.ts\nvar htmlBodyToFragment = (editor, element) => {\n if (element.nodeName === \"BODY\") {\n return jsx(\n \"fragment\",\n {},\n deserializeHtmlNodeChildren(editor, element)\n );\n }\n};\n\n// src/lib/plugins/html/utils/htmlBrToNewLine.ts\nvar htmlBrToNewLine = (node) => {\n if (node.nodeName === \"BR\") {\n return \"\\n\";\n }\n};\n\n// src/lib/plugins/html/utils/htmlElementToElement.ts\nimport { jsx as jsx2 } from \"slate-hyperscript\";\n\n// src/lib/plugins/html/utils/pluginDeserializeHtml.ts\nimport { isDefined as isDefined3 } from \"@udecode/utils\";\nimport castArray2 from \"lodash/castArray.js\";\n\n// src/lib/plugins/html/utils/getDataNodeProps.ts\nvar getDefaultNodeProps = ({\n element,\n type\n}) => {\n if (!isSlatePluginNode(element, type)) return;\n const dataAttributes = {};\n Object.entries(element.dataset).forEach(([key, value]) => {\n if (key.startsWith(\"slate\") && value && // Ignore slate default attributes\n ![\"slateInline\", \"slateLeaf\", \"slateNode\", \"slateVoid\"].includes(key)) {\n const attributeKey = key.slice(5).charAt(0).toLowerCase() + key.slice(6);\n if (value === void 0) return;\n let parsedValue = value;\n if (value === \"true\") parsedValue = true;\n else if (value === \"false\") parsedValue = false;\n else if (!Number.isNaN(Number(value))) parsedValue = Number(value);\n dataAttributes[attributeKey] = parsedValue;\n }\n });\n if (Object.keys(dataAttributes).length > 0) {\n return dataAttributes;\n }\n};\nvar getDataNodeProps = ({\n editor,\n element,\n plugin\n}) => {\n const toNodeProps = plugin.parsers.html?.deserializer?.toNodeProps;\n const disabledDefaultNodeProps = plugin.parsers.html?.deserializer?.disabledDefaultNodeProps ?? false;\n const defaultNodeProps = disabledDefaultNodeProps ? {} : getDefaultNodeProps({\n ...getEditorPlugin(editor, plugin),\n element\n });\n if (!toNodeProps) return defaultNodeProps;\n const customNodeProps = toNodeProps({\n ...getEditorPlugin(editor, plugin),\n element\n }) ?? {};\n return {\n ...defaultNodeProps,\n ...customNodeProps\n };\n};\n\n// src/lib/plugins/html/utils/pluginDeserializeHtml.ts\nvar getDeserializedWithStaticRules = (plugin) => {\n let deserializer = plugin.parsers?.html?.deserializer;\n const rules = deserializer?.rules ?? [];\n const hasSlateRule = rules.some(\n (rule) => rule.validClassName?.includes(`slate-${plugin.key}`)\n );\n const staticRules = hasSlateRule ? rules : [\n {\n validClassName: `slate-${plugin.key}`,\n validNodeName: \"*\"\n },\n ...rules\n ];\n if (!deserializer) deserializer = { rules: staticRules };\n deserializer.rules = staticRules;\n return deserializer;\n};\nvar pluginDeserializeHtml = (editor, plugin, {\n deserializeLeaf,\n element: el\n}) => {\n const {\n node: { isElement: isElementRoot, isLeaf: isLeafRoot }\n } = plugin;\n const deserializer = getDeserializedWithStaticRules(plugin);\n if (!deserializer) return;\n const {\n attributeNames,\n isElement: isElementRule,\n isLeaf: isLeafRule,\n query,\n rules\n } = deserializer;\n let { parse } = deserializer;\n const isElement = isElementRule || isElementRoot;\n const isLeaf = isLeafRule || isLeafRoot;\n if (!deserializeLeaf && !isElement) {\n return;\n }\n if (deserializeLeaf && !isLeaf) {\n return;\n }\n if (rules) {\n const isValid = rules.some(\n ({ validAttribute, validClassName, validNodeName = \"*\", validStyle }) => {\n if (validNodeName) {\n const validNodeNames = castArray2(validNodeName);\n if (validNodeNames.length > 0 && !validNodeNames.includes(el.nodeName) && validNodeName !== \"*\")\n return false;\n }\n if (validClassName && !el.classList.contains(validClassName))\n return false;\n if (validStyle) {\n for (const [key, value] of Object.entries(validStyle)) {\n const values = castArray2(value);\n if (!values.includes(el.style[key]) && value !== \"*\")\n return;\n if (value === \"*\" && !el.style[key]) return;\n const defaultNodeValue = plugin.inject.nodeProps?.defaultNodeValue;\n if (defaultNodeValue && defaultNodeValue === el.style[key]) {\n return false;\n }\n }\n }\n if (validAttribute) {\n if (typeof validAttribute === \"string\") {\n if (!el.getAttributeNames().includes(validAttribute)) return false;\n } else {\n for (const [attributeName, attributeValue] of Object.entries(\n validAttribute\n )) {\n const attributeValues = castArray2(attributeValue);\n const elAttribute = el.getAttribute(attributeName);\n if (!isDefined3(elAttribute) || !attributeValues.includes(elAttribute))\n return false;\n }\n }\n }\n return true;\n }\n );\n if (!isValid) return;\n }\n if (query && !query({ ...getEditorPlugin(editor, plugin), element: el })) {\n return;\n }\n if (!parse)\n if (isElement) {\n parse = ({ type }) => ({ type });\n } else if (isLeaf) {\n parse = ({ type }) => ({ [type]: true });\n } else {\n return;\n }\n const parsedNode = parse({\n ...getEditorPlugin(editor, plugin),\n element: el,\n node: {}\n }) ?? {};\n const dataNodeProps = getDataNodeProps({\n editor,\n element: el,\n plugin\n });\n let node = {\n ...parsedNode,\n ...dataNodeProps\n };\n if (Object.keys(node).length === 0) return;\n const injectedPlugins = getInjectedPlugins(editor, plugin);\n injectedPlugins.forEach((injectedPlugin) => {\n const res = injectedPlugin.parsers?.html?.deserializer?.parse?.({\n ...getEditorPlugin(editor, plugin),\n element: el,\n node\n });\n if (res) {\n node = {\n ...node,\n ...res\n };\n }\n });\n if (attributeNames) {\n const elementAttributes = {};\n const elementAttributeNames = el.getAttributeNames();\n for (const elementAttributeName of elementAttributeNames) {\n if (attributeNames.includes(elementAttributeName)) {\n elementAttributes[elementAttributeName] = el.getAttribute(elementAttributeName);\n }\n }\n if (Object.keys(elementAttributes).length > 0) {\n node.attributes = elementAttributes;\n }\n }\n return { ...deserializer, node };\n};\n\n// src/lib/plugins/html/utils/pipeDeserializeHtmlElement.ts\nvar pipeDeserializeHtmlElement = (editor, element) => {\n let result;\n [...editor.pluginList].reverse().some((plugin) => {\n result = pluginDeserializeHtml(editor, plugin, { element });\n return !!result;\n });\n return result;\n};\n\n// src/lib/plugins/html/utils/htmlElementToElement.ts\nvar htmlElementToElement = (editor, element) => {\n const deserialized = pipeDeserializeHtmlElement(editor, element);\n if (deserialized) {\n const { node, withoutChildren } = deserialized;\n let descendants = node.children ?? deserializeHtmlNodeChildren(editor, element);\n if (descendants.length === 0 || withoutChildren || isSlateVoid(element)) {\n descendants = [{ text: \"\" }];\n }\n return jsx2(\"element\", node, descendants);\n }\n};\n\n// src/lib/plugins/html/utils/htmlElementToLeaf.ts\nimport { ElementApi as ElementApi3, TextApi as TextApi3 } from \"@udecode/slate\";\nimport { jsx as jsx3 } from \"slate-hyperscript\";\n\n// src/lib/plugins/html/utils/pipeDeserializeHtmlLeaf.ts\nvar pipeDeserializeHtmlLeaf = (editor, element) => {\n let node = {};\n [...editor.pluginList].reverse().forEach((plugin) => {\n const deserialized = pluginDeserializeHtml(editor, plugin, {\n deserializeLeaf: true,\n element\n });\n if (!deserialized) return;\n node = { ...node, ...deserialized.node };\n });\n return node;\n};\n\n// src/lib/plugins/html/utils/htmlElementToLeaf.ts\nvar htmlElementToLeaf = (editor, element) => {\n const node = pipeDeserializeHtmlLeaf(editor, element);\n return deserializeHtmlNodeChildren(editor, element).reduce(\n (arr, child) => {\n if (!child) return arr;\n if (ElementApi3.isElement(child)) {\n if (Object.keys(node).length > 0) {\n mergeDeepToNodes({\n node: child,\n query: {\n filter: ([n]) => TextApi3.isText(n)\n },\n source: node\n });\n }\n arr.push(child);\n } else {\n const attributes = { ...node };\n if (TextApi3.isText(child) && child.text) {\n Object.keys(attributes).forEach((key) => {\n if (attributes[key] && child[key]) {\n attributes[key] = child[key];\n }\n });\n }\n arr.push(jsx3(\"text\", attributes, child));\n }\n return arr;\n },\n []\n );\n};\n\n// src/lib/plugins/html/utils/htmlTextNodeToString.ts\nvar htmlTextNodeToString = (node) => {\n if (isHtmlText(node)) {\n if (node.parentElement?.dataset.platePreventDeserialization) return \"\";\n return node.textContent || \"\";\n }\n};\n\n// src/lib/plugins/html/utils/deserializeHtmlNode.ts\nvar deserializeHtmlNode = (editor) => (node) => {\n const textNode = htmlTextNodeToString(node);\n if (textNode) return textNode;\n if (!isHtmlElement(node)) return null;\n const breakLine = htmlBrToNewLine(node);\n if (breakLine) return breakLine;\n const fragment = htmlBodyToFragment(editor, node);\n if (fragment) return fragment;\n const element = htmlElementToElement(editor, node);\n if (element) return element;\n return htmlElementToLeaf(editor, node);\n};\n\n// src/lib/plugins/html/utils/deserializeHtmlElement.ts\nvar deserializeHtmlElement = (editor, element) => {\n return deserializeHtmlNode(editor)(element);\n};\n\n// src/lib/plugins/html/utils/htmlStringToDOMNode.ts\nvar htmlStringToDOMNode = (rawHtml) => {\n const node = document.createElement(\"body\");\n node.innerHTML = rawHtml;\n return node;\n};\n\n// src/lib/plugins/html/utils/deserializeHtml.ts\nvar deserializeHtml = (editor, {\n collapseWhiteSpace: shouldCollapseWhiteSpace = true,\n element\n}) => {\n if (typeof element === \"string\") {\n element = htmlStringToDOMNode(element);\n }\n if (shouldCollapseWhiteSpace) {\n element = collapseWhiteSpace(element);\n }\n const fragment = deserializeHtmlElement(editor, element);\n return normalizeDescendantsToDocumentFragment(editor, {\n descendants: fragment\n });\n};\n\n// src/lib/plugins/html/utils/findHtmlElement.ts\nvar findHtmlElement = (rootNode, predicate) => {\n let res = null;\n traverseHtmlElements(rootNode, (node) => {\n if (predicate(node)) {\n res = node;\n return false;\n }\n return true;\n });\n return res;\n};\nvar someHtmlElement = (rootNode, predicate) => {\n return !!findHtmlElement(rootNode, predicate);\n};\n\n// src/lib/plugins/html/utils/getHtmlComments.ts\nvar acceptNode = () => NodeFilter.FILTER_ACCEPT;\nvar getHtmlComments = (node) => {\n const comments = [];\n const iterator = document.createNodeIterator(node, NodeFilter.SHOW_COMMENT, {\n acceptNode\n });\n let currentNode = iterator.nextNode();\n while (currentNode) {\n if (currentNode.nodeValue) {\n comments.push(currentNode.nodeValue);\n }\n currentNode = iterator.nextNode();\n }\n return comments;\n};\n\n// src/lib/plugins/html/utils/isHtmlComment.ts\nvar isHtmlComment = (node) => node.nodeType === Node.COMMENT_NODE;\n\n// src/lib/plugins/html/utils/isOlSymbol.ts\nvar isOlSymbol = (symbol) => {\n return /[\\da-np-z]\\S/.test(symbol.toLowerCase());\n};\n\n// src/lib/plugins/html/utils/parseHtmlDocument.ts\nvar parseHtmlDocument = (html) => {\n return new DOMParser().parseFromString(html, \"text/html\");\n};\n\n// src/lib/plugins/html/utils/parseHtmlElement.ts\nvar parseHtmlElement = (html) => {\n const { body } = parseHtmlDocument(html);\n return body.firstElementChild;\n};\n\n// src/lib/plugins/html/utils/postCleanHtml.ts\nvar postCleanHtml = (html) => {\n const cleanHtml = html.trim().replaceAll(new RegExp(ZERO_WIDTH_SPACE, \"g\"), \"\");\n return `${cleanHtml}`;\n};\n\n// src/lib/plugins/html/utils/removeHtmlSurroundings.ts\nvar removeBeforeHtml = (html) => {\n const index = html.indexOf(\" {\n const index = html.lastIndexOf(\"\");\n if (index === -1) {\n return html;\n }\n return html.slice(0, Math.max(0, index + \"\".length));\n};\nvar removeHtmlSurroundings = (html) => {\n return removeBeforeHtml(removeAfterHtml(html));\n};\n\n// src/lib/plugins/html/utils/preCleanHtml.ts\nvar cleaners = [removeHtmlSurroundings, cleanHtmlCrLf];\nvar preCleanHtml = (html) => {\n return cleaners.reduce((result, clean) => clean(result), html);\n};\n\n// src/lib/plugins/html/utils/traverseHtmlComments.ts\nvar traverseHtmlComments = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlComment(node)) {\n return true;\n }\n return callback(node);\n });\n};\n\n// src/lib/plugins/html/utils/removeHtmlNodesBetweenComments.ts\nvar removeHtmlNodesBetweenComments = (rootNode, start, end) => {\n const isClosingComment = (node) => isHtmlComment(node) && node.data === end;\n traverseHtmlComments(rootNode, (comment) => {\n if (comment.data === start) {\n let node = comment.nextSibling;\n comment.remove();\n while (node && !isClosingComment(node)) {\n const { nextSibling } = node;\n node.remove();\n node = nextSibling;\n }\n if (node && isClosingComment(node)) {\n node.remove();\n }\n }\n return true;\n });\n};\n\n// src/lib/plugins/html/HtmlPlugin.ts\nvar HtmlPlugin = createSlatePlugin({\n key: \"html\"\n}).extendApi(({ editor }) => ({\n deserialize: bindFirst(deserializeHtml, editor)\n})).extend({\n parser: {\n deserialize: ({ api, data }) => {\n const document2 = parseHtmlDocument(data);\n return api.html.deserialize({\n element: document2.body\n });\n },\n format: \"text/html\"\n }\n});\n\n// src/lib/plugins/length/LengthPlugin.ts\nvar LengthPlugin = createTSlatePlugin({\n key: \"length\"\n}).overrideEditor(({ editor, getOptions, tf: { apply } }) => ({\n transforms: {\n apply(operation) {\n editor.tf.withoutNormalizing(() => {\n apply(operation);\n const options = getOptions();\n if (options.maxLength) {\n const length = editor.api.string([]).length;\n if (length > options.maxLength) {\n const overflowLength = length - options.maxLength;\n editor.tf.delete({\n distance: overflowLength,\n reverse: true,\n unit: \"character\"\n });\n }\n }\n });\n }\n }\n}));\n\n// src/lib/plugins/paragraph/BaseParagraphPlugin.ts\nvar BaseParagraphPlugin = createSlatePlugin({\n key: \"p\",\n node: {\n isElement: true\n },\n parsers: {\n html: {\n deserializer: {\n query: ({ element }) => element.style.fontFamily !== \"Consolas\",\n rules: [\n {\n validNodeName: \"P\"\n }\n ]\n }\n }\n }\n});\n\n// src/lib/plugins/slate-extension/SlateExtensionPlugin.ts\nvar SlateExtensionPlugin = createSlatePlugin({\n key: \"slateExtension\"\n}).overrideEditor(\n ({\n editor,\n tf: { apply, deleteBackward, deleteForward, deleteFragment }\n }) => {\n const resetMarks = () => {\n if (editor.api.isAt({ start: true })) {\n editor.tf.removeMarks();\n }\n };\n return {\n api: {\n create: {\n block: (node) => ({\n children: [{ text: \"\" }],\n type: editor.getType(BaseParagraphPlugin),\n ...node\n })\n }\n },\n transforms: {\n apply(operation) {\n if (operation.type === \"set_selection\") {\n const { properties } = operation;\n editor.prevSelection = properties;\n apply(operation);\n editor.currentKeyboardEvent = null;\n return;\n }\n apply(operation);\n },\n deleteBackward(unit) {\n deleteBackward(unit);\n resetMarks();\n },\n deleteForward(unit) {\n deleteForward(unit);\n resetMarks();\n },\n deleteFragment(options) {\n deleteFragment(options);\n resetMarks();\n }\n }\n };\n }\n).extendEditorTransforms(({ editor }) => ({\n setValue: (value) => {\n let children = value;\n if (typeof value === \"string\") {\n children = editor.api.html.deserialize({\n element: value\n });\n } else if (!value || value.length === 0) {\n children = editor.api.create.value();\n }\n editor.tf.replaceNodes(children, {\n at: [],\n children: true\n });\n }\n}));\n\n// src/lib/utils/normalizeDescendantsToDocumentFragment.ts\nvar isInlineNode = (editor) => (node) => TextApi4.isText(node) || ElementApi4.isElement(node) && editor.api.isInline(node);\nvar makeBlockLazy = (type) => () => ({\n children: [],\n type\n});\nvar hasDifferentChildNodes = (descendants, isInline) => {\n return descendants.some((descendant, index, arr) => {\n const prevDescendant = arr[index - 1];\n if (index !== 0) {\n return isInline(descendant) !== isInline(prevDescendant);\n }\n return false;\n });\n};\nvar normalizeDifferentNodeTypes = (descendants, isInline, makeDefaultBlock) => {\n const hasDifferentNodes = hasDifferentChildNodes(descendants, isInline);\n const { fragment } = descendants.reduce(\n (memo, node) => {\n if (hasDifferentNodes && isInline(node)) {\n let block = memo.precedingBlock;\n if (!block) {\n block = makeDefaultBlock();\n memo.precedingBlock = block;\n memo.fragment.push(block);\n }\n block.children.push(node);\n } else {\n memo.fragment.push(node);\n memo.precedingBlock = null;\n }\n return memo;\n },\n {\n fragment: [],\n precedingBlock: null\n }\n );\n return fragment;\n};\nvar normalizeEmptyChildren = (descendants) => {\n if (descendants.length === 0) {\n return [{ text: \"\" }];\n }\n return descendants;\n};\nvar normalize = (descendants, isInline, makeDefaultBlock) => {\n descendants = normalizeEmptyChildren(descendants);\n descendants = normalizeDifferentNodeTypes(\n descendants,\n isInline,\n makeDefaultBlock\n );\n descendants = descendants.map((node) => {\n if (ElementApi4.isElement(node)) {\n return {\n ...node,\n children: normalize(\n node.children,\n isInline,\n makeDefaultBlock\n )\n };\n }\n return node;\n });\n return descendants;\n};\nvar normalizeDescendantsToDocumentFragment = (editor, { descendants }) => {\n const isInline = isInlineNode(editor);\n const defaultType = editor.getType(BaseParagraphPlugin);\n const makeDefaultBlock = makeBlockLazy(defaultType);\n return normalize(descendants, isInline, makeDefaultBlock);\n};\n\n// src/lib/utils/omitPluginContext.ts\nvar omitPluginContext = (ctx) => {\n const {\n api,\n editor,\n getOption,\n getOptions,\n plugin,\n setOption,\n setOptions,\n tf,\n type,\n ...rest\n } = ctx;\n return rest;\n};\n\n// src/lib/utils/overridePluginsByKey.ts\nimport defaultsDeep from \"lodash/defaultsDeep.js\";\nvar overridePluginsByKey = (plugin, overrideByKey = {}, nested = false) => {\n if (overrideByKey[plugin.key]) {\n const {\n __extensions: pluginOverridesExtensions,\n plugins: pluginOverridesPlugins,\n ...pluginOverrides\n } = overrideByKey[plugin.key];\n plugin = defaultsDeep({}, pluginOverrides, plugin);\n if (pluginOverridesExtensions) {\n plugin.__extensions = [\n ...plugin.__extensions || [],\n ...pluginOverridesExtensions\n ];\n }\n if (!nested) {\n pluginOverridesPlugins?.forEach((pOverrides) => {\n if (!plugin.plugins) plugin.plugins = [];\n const found = plugin.plugins.find((p) => p.key === pOverrides.key);\n if (!found) plugin.plugins.push(pOverrides);\n });\n }\n }\n if (plugin.plugins) {\n plugin.plugins = plugin.plugins.map(\n (p) => overridePluginsByKey(p, overrideByKey, true)\n );\n }\n return plugin;\n};\n\n// src/lib/utils/pipeInsertDataQuery.ts\nvar pipeInsertDataQuery = (editor, plugins, { data, dataTransfer }) => plugins.every((p) => {\n const query = p.parser?.query;\n return !query || query({\n ...getEditorPlugin(editor, p),\n data,\n dataTransfer\n });\n});\n\n// src/lib/utils/resolvePlugins.ts\nimport {\n assignLegacyApi as assignLegacyApi2,\n assignLegacyTransforms as assignLegacyTransforms2,\n syncLegacyMethods as syncLegacyMethods2\n} from \"@udecode/slate\";\nimport { isDefined as isDefined4 } from \"@udecode/utils\";\nimport merge4 from \"lodash/merge.js\";\nimport { createZustandStore as createZustandStore2 } from \"zustand-x\";\nvar resolvePlugins2 = (editor, plugins = []) => {\n editor.pluginList = [];\n editor.plugins = {};\n editor.shortcuts = {};\n const resolvedPlugins = resolveAndSortPlugins2(editor, plugins);\n applyPluginsToEditor2(editor, resolvedPlugins);\n resolvePluginOverrides2(editor);\n resolvePluginStores2(editor);\n editor.pluginList.forEach((plugin) => {\n if (plugin.extendEditor) {\n editor = plugin.extendEditor(getEditorPlugin(editor, plugin));\n syncLegacyMethods2(editor);\n }\n resolvePluginMethods2(editor, plugin);\n });\n resolvePluginShortcuts2(editor);\n return editor;\n};\nvar resolvePluginStores2 = (editor) => {\n editor.pluginList.forEach((plugin) => {\n let store = createZustandStore2(plugin.options, {\n mutative: true,\n name: plugin.key\n });\n if (plugin.__optionExtensions && plugin.__optionExtensions.length > 0) {\n plugin.__optionExtensions.forEach((extension) => {\n const extendedOptions = extension(getEditorPlugin(editor, plugin));\n store = store.extendSelectors(() => extendedOptions);\n });\n }\n plugin.optionsStore = store;\n });\n};\nvar resolvePluginMethods2 = (editor, plugin) => {\n Object.entries(plugin.api).forEach(([apiKey, apiFunction]) => {\n editor.api[apiKey] = apiFunction;\n });\n if (plugin.__apiExtensions && plugin.__apiExtensions.length > 0) {\n plugin.__apiExtensions.forEach(\n ({ extension, isOverride, isPluginSpecific, isTransform }) => {\n const newExtensions = extension(getEditorPlugin(editor, plugin));\n if (isOverride) {\n if (newExtensions.api) {\n merge4(editor.api, newExtensions.api);\n merge4(plugin.api, newExtensions.api);\n assignLegacyApi2(editor, editor.api);\n }\n if (newExtensions.transforms) {\n merge4(editor.transforms, newExtensions.transforms);\n merge4(plugin.transforms, newExtensions.transforms);\n assignLegacyTransforms2(editor, newExtensions.transforms);\n }\n } else if (isTransform) {\n if (isPluginSpecific) {\n if (!editor.transforms[plugin.key]) {\n editor.transforms[plugin.key] = {};\n }\n if (!plugin.transforms[plugin.key]) {\n plugin.transforms[plugin.key] = {};\n }\n merge4(editor.transforms[plugin.key], newExtensions);\n merge4(plugin.transforms[plugin.key], newExtensions);\n } else {\n merge4(editor.transforms, newExtensions);\n merge4(plugin.transforms, newExtensions);\n assignLegacyTransforms2(editor, newExtensions);\n }\n } else {\n if (isPluginSpecific) {\n if (!editor.api[plugin.key]) {\n editor.api[plugin.key] = {};\n }\n if (!plugin.api[plugin.key]) {\n plugin.api[plugin.key] = {};\n }\n merge4(editor.api[plugin.key], newExtensions);\n merge4(plugin.api[plugin.key], newExtensions);\n } else {\n merge4(editor.api, newExtensions);\n merge4(plugin.api, newExtensions);\n assignLegacyApi2(editor, editor.api);\n }\n }\n }\n );\n delete plugin.__apiExtensions;\n }\n};\nvar resolvePluginShortcuts2 = (editor) => {\n const shortcutsByPriority = [];\n editor.pluginList.forEach((plugin) => {\n Object.entries(plugin.shortcuts).forEach(([key, hotkey]) => {\n if (hotkey === null) {\n const index = shortcutsByPriority.findIndex((item) => item.key === key);\n if (index !== -1) {\n shortcutsByPriority.splice(index, 1);\n }\n } else {\n const priority = hotkey.priority ?? plugin.priority;\n const existingIndex = shortcutsByPriority.findIndex(\n (item) => item.key === key\n );\n if (existingIndex === -1 || priority >= shortcutsByPriority[existingIndex].priority) {\n if (existingIndex !== -1) {\n shortcutsByPriority.splice(existingIndex, 1);\n }\n shortcutsByPriority.push({ key, hotkey, priority });\n }\n }\n });\n });\n shortcutsByPriority.sort((a, b) => b.hotkey.priority - a.hotkey.priority);\n editor.shortcuts = Object.fromEntries(\n shortcutsByPriority.map(({ key, hotkey }) => {\n const { priority, ...hotkeyWithoutPriority } = hotkey;\n return [key, hotkeyWithoutPriority];\n })\n );\n};\nvar flattenAndResolvePlugins2 = (editor, plugins) => {\n const pluginMap = /* @__PURE__ */ new Map();\n const processPlugin = (plugin) => {\n const resolvedPlugin = resolvePlugin(editor, plugin);\n const existingPlugin = pluginMap.get(resolvedPlugin.key);\n if (existingPlugin) {\n pluginMap.set(\n resolvedPlugin.key,\n mergePlugins(existingPlugin, resolvedPlugin)\n );\n } else {\n pluginMap.set(resolvedPlugin.key, resolvedPlugin);\n }\n if (resolvedPlugin.plugins && resolvedPlugin.plugins.length > 0) {\n resolvedPlugin.plugins.forEach(processPlugin);\n }\n };\n plugins.forEach(processPlugin);\n return pluginMap;\n};\nvar resolveAndSortPlugins2 = (editor, plugins) => {\n const pluginMap = flattenAndResolvePlugins2(editor, plugins);\n const enabledPlugins = Array.from(pluginMap.values()).filter(\n (plugin) => plugin.enabled !== false\n );\n enabledPlugins.sort((a, b) => b.priority - a.priority);\n const orderedPlugins = [];\n const visited = /* @__PURE__ */ new Set();\n const visit = (plugin) => {\n if (visited.has(plugin.key)) return;\n visited.add(plugin.key);\n plugin.dependencies?.forEach((depKey) => {\n const depPlugin = pluginMap.get(depKey);\n if (depPlugin) {\n visit(depPlugin);\n } else {\n editor.api.debug.warn(\n `Plugin \"${plugin.key}\" depends on missing plugin \"${depKey}\"`,\n \"PLUGIN_DEPENDENCY_MISSING\"\n );\n }\n });\n orderedPlugins.push(plugin);\n };\n enabledPlugins.forEach(visit);\n return orderedPlugins;\n};\nvar applyPluginsToEditor2 = (editor, plugins) => {\n editor.pluginList = plugins;\n editor.plugins = Object.fromEntries(\n plugins.map((plugin) => [plugin.key, plugin])\n );\n};\nvar resolvePluginOverrides2 = (editor) => {\n const applyOverrides = (plugins) => {\n let overriddenPlugins = [...plugins];\n const enabledOverrides = {};\n const componentOverrides = {};\n const pluginOverrides = {};\n for (const plugin of plugins) {\n if (plugin.override.enabled) {\n Object.assign(enabledOverrides, plugin.override.enabled);\n }\n if (plugin.override.components) {\n Object.entries(plugin.override.components).forEach(\n ([key, component]) => {\n if (!componentOverrides[key] || plugin.priority > componentOverrides[key].priority) {\n componentOverrides[key] = {\n component,\n priority: plugin.priority\n };\n }\n }\n );\n }\n if (plugin.override.plugins) {\n Object.entries(plugin.override.plugins).forEach(([key, value]) => {\n pluginOverrides[key] = mergePlugins(pluginOverrides[key], value);\n if (value.enabled !== void 0) {\n enabledOverrides[key] = value.enabled;\n }\n });\n }\n }\n overriddenPlugins = overriddenPlugins.map((p) => {\n let updatedPlugin = { ...p };\n if (pluginOverrides[p.key]) {\n updatedPlugin = mergePlugins(updatedPlugin, pluginOverrides[p.key]);\n }\n if (componentOverrides[p.key] && (!p.render.node && !p.node.component || componentOverrides[p.key].priority > p.priority)) {\n updatedPlugin.render.node = componentOverrides[p.key].component;\n updatedPlugin.node.component = componentOverrides[p.key].component;\n }\n const enabled = enabledOverrides[p.key] ?? updatedPlugin.enabled;\n if (isDefined4(enabled)) {\n updatedPlugin.enabled = enabled;\n }\n return updatedPlugin;\n });\n return overriddenPlugins.filter((p) => p.enabled !== false).map((plugin) => ({\n ...plugin,\n plugins: applyOverrides(plugin.plugins || [])\n }));\n };\n editor.pluginList = applyOverrides(editor.pluginList);\n editor.plugins = Object.fromEntries(\n editor.pluginList.map((plugin) => [plugin.key, plugin])\n );\n};\n\n// src/lib/plugins/ParserPlugin.ts\nvar ParserPlugin = createSlatePlugin({\n key: \"parser\"\n}).overrideEditor(({ editor, tf: { insertData } }) => ({\n transforms: {\n insertData(dataTransfer) {\n const inserted = [...editor.pluginList].reverse().some((plugin) => {\n const parser = plugin.parser;\n if (!parser) return false;\n const injectedPlugins = getInjectedPlugins(editor, plugin);\n const { deserialize, format, mimeTypes } = parser;\n if (!format) return false;\n const formats = Array.isArray(format) ? format : [format];\n const mimeTypeList = mimeTypes || formats.map((fmt) => fmt.includes(\"/\") ? fmt : `text/${fmt}`);\n for (const mimeType of mimeTypeList) {\n let data = dataTransfer.getData(mimeType);\n if (!data) continue;\n if (!pipeInsertDataQuery(editor, injectedPlugins, {\n data,\n dataTransfer\n })) {\n continue;\n }\n data = pipeTransformData(editor, injectedPlugins, {\n data,\n dataTransfer\n });\n let fragment = deserialize?.({\n ...getEditorPlugin(editor, plugin),\n data,\n dataTransfer\n });\n if (!fragment?.length) continue;\n fragment = pipeTransformFragment(editor, injectedPlugins, {\n data,\n dataTransfer,\n fragment\n });\n if (fragment.length === 0) continue;\n pipeInsertFragment(editor, injectedPlugins, {\n data,\n dataTransfer,\n fragment\n });\n return true;\n }\n return false;\n });\n if (inserted) return;\n insertData(dataTransfer);\n }\n }\n}));\n\n// src/lib/plugins/getCorePlugins.ts\nvar getCorePlugins = ({\n maxLength,\n plugins = []\n}) => {\n let corePlugins = [\n DebugPlugin,\n SlateExtensionPlugin,\n DOMPlugin,\n HistoryPlugin,\n InlineVoidPlugin,\n ParserPlugin,\n maxLength ? LengthPlugin.configure({\n options: { maxLength }\n }) : LengthPlugin,\n HtmlPlugin,\n AstPlugin,\n BaseParagraphPlugin\n ];\n const customPluginsMap = new Map(\n plugins.map((plugin) => [plugin.key, plugin])\n );\n corePlugins = corePlugins.map((corePlugin) => {\n const customPlugin = customPluginsMap.get(corePlugin.key);\n if (customPlugin) {\n const index = plugins.findIndex((p) => p.key === corePlugin.key);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n return customPlugin;\n }\n return corePlugin;\n });\n return corePlugins;\n};\n\n// src/lib/editor/withSlate.ts\nvar withSlate = (e, {\n id,\n autoSelect,\n maxLength,\n plugins = [],\n rootPlugin,\n selection,\n shouldNormalizeEditor,\n value,\n ...pluginConfig\n} = {}) => {\n const editor = e;\n editor.id = id ?? editor.id;\n editor.key = editor.key ?? nanoid();\n editor.isFallback = false;\n editor.prevSelection = null;\n editor.currentKeyboardEvent = null;\n editor.getApi = () => editor.api;\n editor.getTransforms = () => editor.transforms;\n editor.getPlugin = (plugin) => getSlatePlugin(editor, plugin);\n editor.getType = (plugin) => getPluginType(editor, plugin);\n editor.getInjectProps = (plugin) => {\n return editor.getPlugin(plugin).inject?.nodeProps ?? {};\n };\n editor.getOptionsStore = (plugin) => {\n return editor.getPlugin(plugin).optionsStore;\n };\n editor.getOptions = (plugin) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) return editor.getPlugin(plugin).options;\n return editor.getOptionsStore(plugin).get.state();\n };\n editor.getOption = (plugin, key, ...args) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) return editor.getPlugin(plugin).options[key];\n const getter = store.get[key];\n if (getter) {\n return getter(...args);\n }\n editor.api.debug.error(\n `editor.getOption: ${key} option is not defined in plugin ${plugin.key}.`,\n \"OPTION_UNDEFINED\"\n );\n };\n editor.setOption = (plugin, key, value2) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) return;\n const setter = store.set[key];\n if (setter) {\n setter(value2);\n } else {\n editor.api.debug.error(\n `editor.setOption: ${key} option is not defined in plugin ${plugin.key}.`,\n \"OPTION_UNDEFINED\"\n );\n }\n };\n editor.setOptions = (plugin, options) => {\n const store = editor.getOptionsStore(plugin);\n if (!store) return;\n if (typeof options === \"object\") {\n store.set.state((draft) => {\n Object.assign(draft, options);\n });\n } else if (typeof options === \"function\") {\n store.set.state(options);\n }\n };\n const corePlugins = getCorePlugins({\n maxLength,\n plugins\n });\n let rootPluginInstance = createSlatePlugin({\n key: \"root\",\n priority: 1e4,\n ...pluginConfig,\n plugins: [...corePlugins, ...plugins]\n });\n if (rootPlugin) {\n rootPluginInstance = rootPlugin(rootPluginInstance);\n }\n resolvePlugins(editor, [rootPluginInstance]);\n if (typeof value === \"string\") {\n editor.children = editor.api.html.deserialize({ element: value });\n } else if (typeof value === \"function\") {\n editor.children = value(editor);\n } else if (value) {\n editor.children = value;\n }\n if (!editor.children || editor.children?.length === 0) {\n editor.children = editor.api.create.value();\n }\n if (selection) {\n editor.selection = selection;\n } else if (autoSelect) {\n const edge = autoSelect === \"start\" ? \"start\" : \"end\";\n const target = edge === \"start\" ? editor.api.start([]) : editor.api.end([]);\n editor.tf.select(target);\n }\n if (editor.children.length > 0) {\n pipeNormalizeInitialValue(editor);\n }\n if (shouldNormalizeEditor) {\n editor.tf.normalize({ force: true });\n }\n return editor;\n};\nvar createSlateEditor = ({\n editor = createEditor(),\n ...options\n} = {}) => {\n return withSlate(editor, options);\n};\n\n// src/lib/libs/nanoid.ts\nimport { nanoid as nanoid2 } from \"nanoid\";\n\n// src/lib/libs/zustand.ts\nimport { createZustandStore as createZustandStore3 } from \"zustand-x\";\nexport {\n AstPlugin,\n BaseParagraphPlugin,\n CARRIAGE_RETURN,\n DOMPlugin,\n DebugPlugin,\n ElementStatic,\n HistoryPlugin,\n Hotkeys,\n HtmlPlugin,\n InlineVoidPlugin,\n LINE_FEED,\n LeafStatic,\n LengthPlugin,\n NO_BREAK_SPACE,\n ParserPlugin,\n PlateError,\n PlateStatic,\n SPACE,\n SlateElement,\n SlateExtensionPlugin,\n SlateLeaf,\n TAB,\n ZERO_WIDTH_SPACE,\n applyDeepToNodes,\n applyPluginsToEditor2 as applyPluginsToEditor,\n cleanHtmlBrElements,\n cleanHtmlCrLf,\n cleanHtmlEmptyElements,\n cleanHtmlFontElements,\n cleanHtmlLinkElements,\n cleanHtmlTextNodes,\n collapseString,\n collapseWhiteSpace,\n collapseWhiteSpaceChildren,\n collapseWhiteSpaceElement,\n collapseWhiteSpaceNode,\n collapseWhiteSpaceText,\n copyBlockMarksToSpanChild,\n createHotkey,\n createSlateEditor,\n createSlatePlugin,\n createStaticString,\n createTSlatePlugin,\n createZustandStore3 as createZustandStore,\n defaultsDeepToNodes,\n deserializeHtml,\n deserializeHtmlElement,\n deserializeHtmlNode,\n deserializeHtmlNodeChildren,\n endInlineFormattingContext,\n findHtmlElement,\n getCorePlugins,\n getDataNodeProps,\n getEditorDOMFromHtmlString,\n getEditorPlugin,\n getHtmlComments,\n getInjectMatch,\n getInjectedPlugins,\n getKeyByType,\n getKeysByTypes,\n getNodeDataAttributeKeys,\n getNodeDataAttributes,\n getPluginNodeProps,\n getPluginType,\n getPluginTypes,\n getRenderNodeStaticProps,\n getSlateClass,\n getSlateElements,\n getSlatePlugin,\n htmlBodyToFragment,\n htmlBrToNewLine,\n htmlElementToElement,\n htmlElementToLeaf,\n htmlStringToDOMNode,\n htmlTextNodeToString,\n inferWhiteSpaceRule,\n inlineTagNames,\n isHotkey,\n isHtmlBlockElement,\n isHtmlComment,\n isHtmlElement,\n isHtmlFragmentHref,\n isHtmlInlineElement,\n isHtmlTable,\n isHtmlText,\n isLastNonEmptyTextOfInlineFormattingContext,\n isOlSymbol,\n isSlateElement,\n isSlateLeaf,\n isSlateNode,\n isSlatePluginElement,\n isSlatePluginNode,\n isSlateString,\n isSlateVoid,\n isType,\n keyToDataAttribute,\n mergeDeepToNodes,\n nanoid2 as nanoid,\n normalizeDescendantsToDocumentFragment,\n omitPluginContext,\n overridePluginsByKey,\n parseHtmlDocument,\n parseHtmlElement,\n pipeDecorate,\n pipeDeserializeHtmlElement,\n pipeDeserializeHtmlLeaf,\n pipeInsertDataQuery,\n pipeRenderElementStatic,\n pipeRenderLeafStatic,\n pluginDeserializeHtml,\n pluginRenderElementStatic,\n pluginRenderLeafStatic,\n postCleanHtml,\n preCleanHtml,\n removeHtmlNodesBetweenComments,\n removeHtmlSurroundings,\n replaceTagName,\n resolveAndSortPlugins2 as resolveAndSortPlugins,\n resolvePluginOverrides2 as resolvePluginOverrides,\n resolvePlugins2 as resolvePlugins,\n serializeHtml,\n someHtmlElement,\n stripHtmlClassNames,\n stripSlateDataAttributes,\n traverseHtmlComments,\n traverseHtmlElements,\n traverseHtmlNode,\n traverseHtmlTexts,\n unwrapHtmlElement,\n upsertInlineFormattingContext,\n withInlineVoid,\n withPlateHistory,\n withSlate\n};\n//# sourceMappingURL=index.mjs.map","// src/react/exit-break/ExitBreakPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/exit-break/BaseExitBreakPlugin.ts\nimport { createTSlatePlugin } from \"@udecode/plate\";\nvar BaseExitBreakPlugin = createTSlatePlugin({\n key: \"exitBreak\",\n options: {\n rules: [\n { hotkey: \"mod+enter\" },\n { before: true, hotkey: \"mod+shift+enter\" }\n ]\n }\n});\n\n// src/react/exit-break/onKeyDownExitBreak.ts\nimport { isHotkey, queryNode } from \"@udecode/plate\";\n\n// src/lib/exit-break/transforms/exitBreak.ts\nimport { BaseParagraphPlugin, PathApi } from \"@udecode/plate\";\n\n// src/lib/exit-break/queries/exitBreakAtEdges.ts\nvar exitBreakAtEdges = (editor, {\n end,\n start\n}) => {\n let queryEdge = false;\n let isEdge = false;\n let isStart = false;\n if (start || end) {\n queryEdge = true;\n if (start && editor.api.isAt({ start: true })) {\n isEdge = true;\n isStart = true;\n }\n if (end && editor.api.isAt({ end: true })) {\n isEdge = true;\n }\n if (isEdge && editor.api.isExpanded()) {\n editor.tf.deleteFragment();\n }\n }\n return {\n isEdge,\n isStart,\n queryEdge\n };\n};\n\n// src/lib/exit-break/transforms/exitBreak.ts\nvar exitBreak = (editor, {\n before,\n defaultType = editor.getType(BaseParagraphPlugin),\n level = 0,\n query = {},\n relative = false\n}) => {\n if (!editor.selection) return;\n const { isEdge, isStart, queryEdge } = exitBreakAtEdges(editor, query);\n if (isStart) before = true;\n if (queryEdge && !isEdge) return;\n const selectionPath = editor.api.path(editor.selection);\n const slicedPath = relative ? selectionPath.slice(0, -level) : selectionPath.slice(0, level + 1);\n const insertPath = before ? slicedPath : PathApi.next(slicedPath);\n editor.tf.insertNodes(\n editor.api.create.block({ children: [{ text: \"\" }], type: defaultType }),\n {\n at: insertPath,\n select: !isStart\n }\n );\n return true;\n};\n\n// src/react/exit-break/onKeyDownExitBreak.ts\nvar onKeyDownExitBreak = ({\n editor,\n event,\n getOptions\n}) => {\n const { rules = [] } = getOptions();\n if (event.defaultPrevented) return;\n const entry = editor.api.block();\n if (!entry) return;\n rules.forEach(({ hotkey, ...rule }) => {\n if (isHotkey(hotkey, event) && queryNode(entry, rule.query) && exitBreak(editor, rule)) {\n event.preventDefault();\n event.stopPropagation();\n }\n });\n};\n\n// src/react/exit-break/ExitBreakPlugin.tsx\nvar ExitBreakPlugin = toPlatePlugin(BaseExitBreakPlugin, {\n handlers: {\n onKeyDown: onKeyDownExitBreak\n }\n});\n\n// src/react/single-line/SingleLinePlugin.tsx\nimport { toPlatePlugin as toPlatePlugin2 } from \"@udecode/plate/react\";\n\n// src/lib/single-line/BaseSingleLinePlugin.ts\nimport { createSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/single-line/withSingleLine.ts\nvar withSingleLine = ({\n editor,\n tf: { normalizeNode }\n}) => ({\n transforms: {\n insertBreak() {\n return null;\n },\n normalizeNode(entry) {\n if (entry[1].length === 0 && editor.children.length > 1) {\n editor.tf.removeNodes({\n at: [],\n match: (node, path) => path.length === 1 && path[0] > 0,\n mode: \"highest\"\n });\n return;\n }\n normalizeNode(entry);\n }\n }\n});\n\n// src/lib/single-line/BaseSingleLinePlugin.ts\nvar BaseSingleLinePlugin = createSlatePlugin({\n key: \"singleLine\"\n}).overrideEditor(withSingleLine);\n\n// src/react/single-line/onKeyDownSingleLine.ts\nimport { Hotkeys } from \"@udecode/plate\";\nvar onKeyDownSingleLine = ({ event }) => {\n if (event.defaultPrevented) return;\n if (Hotkeys.isSplitBlock(event)) {\n event.preventDefault();\n }\n};\n\n// src/react/single-line/SingleLinePlugin.tsx\nvar SingleLinePlugin = toPlatePlugin2(BaseSingleLinePlugin, {\n handlers: {\n onKeyDown: onKeyDownSingleLine\n }\n});\n\n// src/react/soft-break/SoftBreakPlugin.tsx\nimport { toPlatePlugin as toPlatePlugin3 } from \"@udecode/plate/react\";\n\n// src/lib/soft-break/BaseSoftBreakPlugin.ts\nimport {\n createTSlatePlugin as createTSlatePlugin2\n} from \"@udecode/plate\";\nvar BaseSoftBreakPlugin = createTSlatePlugin2({\n key: \"softBreak\",\n options: {\n rules: [{ hotkey: \"shift+enter\" }]\n }\n});\n\n// src/react/soft-break/onKeyDownSoftBreak.ts\nimport { isHotkey as isHotkey2, queryNode as queryNode2 } from \"@udecode/plate\";\nvar onKeyDownSoftBreak = ({\n editor,\n event,\n getOptions\n}) => {\n const { rules = [] } = getOptions();\n if (event.defaultPrevented) return;\n const entry = editor.api.block();\n if (!entry) return;\n rules.forEach(({ hotkey, query }) => {\n if (isHotkey2(hotkey, event) && queryNode2(entry, query)) {\n event.preventDefault();\n event.stopPropagation();\n editor.tf.insertText(\"\\n\");\n }\n });\n};\n\n// src/react/soft-break/SoftBreakPlugin.tsx\nvar SoftBreakPlugin = toPlatePlugin3(BaseSoftBreakPlugin, {\n handlers: {\n onKeyDown: onKeyDownSoftBreak\n }\n});\nexport {\n ExitBreakPlugin,\n SingleLinePlugin,\n SoftBreakPlugin,\n onKeyDownExitBreak,\n onKeyDownSingleLine,\n onKeyDownSoftBreak\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseHeadingPlugin.ts\nimport {\n createSlatePlugin,\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/constants.ts\nvar HEADING_KEYS = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\"\n};\nvar HEADING_LEVELS = [\n HEADING_KEYS.h1,\n HEADING_KEYS.h2,\n HEADING_KEYS.h3,\n HEADING_KEYS.h4,\n HEADING_KEYS.h5,\n HEADING_KEYS.h6\n];\n\n// src/lib/BaseHeadingPlugin.ts\nvar BaseHeadingPlugin = createTSlatePlugin({\n key: \"heading\",\n options: {\n levels: [1, 2, 3, 4, 5, 6]\n }\n}).extend(({ plugin }) => {\n const {\n options: { levels }\n } = plugin;\n const plugins = [];\n const headingLevels = Array.isArray(levels) ? levels : Array.from({ length: levels || 6 }, (_, i) => i + 1);\n headingLevels.forEach((level) => {\n const plugin2 = createSlatePlugin({\n key: HEADING_LEVELS[level - 1],\n node: { isElement: true },\n parsers: {\n html: {\n deserializer: {\n rules: [\n {\n validNodeName: `H${level}`\n }\n ]\n }\n }\n }\n });\n plugins.push(plugin2);\n });\n return {\n plugins\n };\n});\n\n// src/lib/BaseTocPlugin.ts\nimport {\n createTSlatePlugin as createTSlatePlugin2\n} from \"@udecode/plate\";\nvar BaseTocPlugin = createTSlatePlugin2({\n key: \"toc\",\n node: { isElement: true, isVoid: true },\n options: {\n isScroll: true,\n topOffset: 80\n }\n});\n\n// src/lib/transforms/insertToc.ts\nvar insertToc = (editor, options) => {\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n type: editor.getType(BaseTocPlugin)\n },\n options\n );\n};\n\n// src/lib/utils/isHeading.ts\nvar isHeading = (node) => {\n return node.type && HEADING_LEVELS.includes(node.type);\n};\nexport {\n BaseHeadingPlugin,\n BaseTocPlugin,\n HEADING_KEYS,\n HEADING_LEVELS,\n insertToc,\n isHeading\n};\n//# sourceMappingURL=index.mjs.map","// src/react/AlignPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseAlignPlugin.ts\nimport { BaseParagraphPlugin, createSlatePlugin } from \"@udecode/plate\";\nvar BaseAlignPlugin = createSlatePlugin({\n key: \"align\",\n inject: {\n isBlock: true,\n nodeProps: {\n defaultNodeValue: \"start\",\n nodeKey: \"align\",\n styleKey: \"textAlign\",\n validNodeValues: [\"start\", \"left\", \"center\", \"right\", \"end\", \"justify\"]\n },\n targetPluginToInject: ({ editor, plugin }) => ({\n parsers: {\n html: {\n deserializer: {\n parse: ({ element, node }) => {\n if (element.style.textAlign) {\n node[editor.getType(plugin)] = element.style.textAlign;\n }\n }\n }\n }\n }\n }),\n targetPlugins: [BaseParagraphPlugin.key]\n }\n});\n\n// src/lib/transforms/setAlign.ts\nimport {\n getInjectMatch\n} from \"@udecode/plate\";\nvar setAlign = (editor, {\n setNodesOptions,\n value\n}) => {\n const { defaultNodeValue, nodeKey } = editor.getInjectProps(BaseAlignPlugin);\n const match = getInjectMatch(editor, editor.getPlugin(BaseAlignPlugin));\n if (value === defaultNodeValue) {\n editor.tf.unsetNodes(nodeKey, {\n match,\n ...setNodesOptions\n });\n } else {\n editor.tf.setNodes(\n { [nodeKey]: value },\n {\n match,\n ...setNodesOptions\n }\n );\n }\n};\n\n// src/react/AlignPlugin.tsx\nvar AlignPlugin = toPlatePlugin(BaseAlignPlugin);\n\n// src/react/useAlignDropdownMenu.ts\nimport { isDefined } from \"@udecode/plate\";\nimport { useEditorRef, useEditorSelector } from \"@udecode/plate/react\";\nvar useAlignDropdownMenuState = () => {\n const value = useEditorSelector((editor) => {\n let commonAlignment;\n const codeBlockEntries = editor.api.nodes({\n match: (n) => editor.api.isBlock(n)\n });\n const nodes = Array.from(codeBlockEntries);\n nodes.forEach(([node]) => {\n const align = node[BaseAlignPlugin.key] || \"start\";\n if (!isDefined(commonAlignment)) {\n commonAlignment = align;\n } else if (commonAlignment !== align) {\n commonAlignment = void 0;\n }\n });\n if (isDefined(commonAlignment)) {\n const nodeValue = commonAlignment;\n if (nodeValue === \"left\") return \"left\";\n if (nodeValue === \"center\") return \"center\";\n if (nodeValue === \"right\") return \"right\";\n if (nodeValue === \"end\") return \"end\";\n if (nodeValue === \"justify\") return \"justify\";\n }\n return \"start\";\n }, []);\n return {\n value\n };\n};\nvar useAlignDropdownMenu = ({\n value\n}) => {\n const editor = useEditorRef();\n return {\n radioGroupProps: {\n value,\n onValueChange: (newValue) => {\n setAlign(editor, {\n value: newValue\n });\n editor.tf.focus();\n }\n }\n };\n};\nexport {\n AlignPlugin,\n useAlignDropdownMenu,\n useAlignDropdownMenuState\n};\n//# sourceMappingURL=index.mjs.map","// src/react/AutoformatPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseAutoformatPlugin.ts\nimport { createTSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/transforms/autoformatBlock.ts\nimport {\n BaseParagraphPlugin,\n ElementApi\n} from \"@udecode/plate\";\nimport castArray2 from \"lodash/castArray.js\";\n\n// src/lib/utils/getMatchRange.ts\nimport castArray from \"lodash/castArray.js\";\nvar getMatchRange = ({\n match,\n trigger\n}) => {\n let start;\n let end;\n if (typeof match === \"object\") {\n start = match.start;\n end = match.end;\n } else {\n start = match;\n end = start.split(\"\").reverse().join(\"\");\n }\n const triggers = trigger ? castArray(trigger) : [end.slice(-1)];\n end = trigger ? end : end.slice(0, -1);\n return {\n end,\n start,\n triggers\n };\n};\n\n// src/lib/transforms/autoformatBlock.ts\nvar autoformatBlock = (editor, {\n allowSameTypeAbove = false,\n format,\n match: _match,\n matchByRegex = false,\n preFormat,\n text,\n trigger,\n triggerAtBlockStart = true,\n type = BaseParagraphPlugin.key\n}) => {\n const matches = castArray2(_match);\n for (const match of matches) {\n const { end, triggers } = getMatchRange({\n match: { end: match, start: \"\" },\n trigger\n });\n if (!triggers.includes(text)) continue;\n let matchRange;\n if (triggerAtBlockStart) {\n matchRange = editor.api.range(\"start\", editor.selection);\n const hasVoidNode = editor.api.some({\n at: matchRange,\n match: (n) => ElementApi.isElement(n) && editor.isVoid(n)\n });\n if (hasVoidNode) continue;\n const textFromBlockStart = editor.api.string(matchRange);\n const isMatched = matchByRegex ? !!textFromBlockStart.match(end) : end === textFromBlockStart;\n if (!isMatched) continue;\n } else {\n matchRange = editor.api.range(\"before\", editor.selection, {\n before: {\n matchByRegex,\n matchString: end\n }\n });\n if (!matchRange) continue;\n }\n if (!allowSameTypeAbove) {\n const isBelowSameBlockType = editor.api.some({ match: { type } });\n if (isBelowSameBlockType) continue;\n }\n if (match.length > 1) {\n editor.tf.delete({\n at: matchRange\n });\n }\n if (preFormat) {\n preFormat(editor);\n }\n if (format) {\n format(editor);\n } else {\n editor.tf.setNodes(\n { type },\n {\n match: (n) => editor.api.isBlock(n)\n }\n );\n }\n return true;\n }\n return false;\n};\n\n// src/lib/transforms/autoformatMark.ts\nimport castArray3 from \"lodash/castArray.js\";\n\n// src/lib/utils/isPreviousCharacterEmpty.ts\nvar isPreviousCharacterEmpty = (editor, at) => {\n const range = editor.api.range(\"before\", at);\n if (range) {\n const text = editor.api.string(range);\n if (text) {\n const noWhiteSpaceRegex = new RegExp(`\\\\S+`);\n return !noWhiteSpaceRegex.exec(text);\n }\n }\n return true;\n};\n\n// src/lib/utils/getMatchPoints.ts\nvar getMatchPoints = (editor, { end, start }) => {\n const selection = editor.selection;\n let beforeEndMatchPoint = selection.anchor;\n if (end) {\n beforeEndMatchPoint = editor.api.before(selection, {\n matchString: end\n });\n if (!beforeEndMatchPoint) return;\n }\n let afterStartMatchPoint;\n let beforeStartMatchPoint;\n if (start) {\n afterStartMatchPoint = editor.api.before(beforeEndMatchPoint, {\n afterMatch: true,\n matchString: start,\n skipInvalid: true\n });\n if (!afterStartMatchPoint) return;\n beforeStartMatchPoint = editor.api.before(beforeEndMatchPoint, {\n matchString: start,\n skipInvalid: true\n });\n if (!isPreviousCharacterEmpty(editor, beforeStartMatchPoint))\n return;\n }\n return {\n afterStartMatchPoint,\n beforeEndMatchPoint,\n beforeStartMatchPoint\n };\n};\n\n// src/lib/transforms/autoformatMark.ts\nvar autoformatMark = (editor, { ignoreTrim, match: _match, text, trigger, type }) => {\n if (!type) return false;\n const selection = editor.selection;\n const matches = castArray3(_match);\n for (const match of matches) {\n const { end, start, triggers } = getMatchRange({\n match,\n trigger\n });\n if (!triggers.includes(text)) continue;\n const matched = getMatchPoints(editor, { end, start });\n if (!matched) continue;\n const { afterStartMatchPoint, beforeEndMatchPoint, beforeStartMatchPoint } = matched;\n const matchRange = {\n anchor: afterStartMatchPoint,\n focus: beforeEndMatchPoint\n };\n if (!ignoreTrim) {\n const matchText = editor.api.string(matchRange);\n if (matchText.trim() !== matchText) continue;\n }\n if (end) {\n editor.tf.delete({\n at: {\n anchor: beforeEndMatchPoint,\n focus: selection.anchor\n }\n });\n }\n const marks = castArray3(type);\n editor.tf.select(matchRange);\n marks.forEach((mark) => {\n editor.tf.addMark(mark, true);\n });\n editor.tf.collapse({ edge: \"end\" });\n editor.tf.removeMarks(marks, { shouldChange: false });\n editor.tf.delete({\n at: {\n anchor: beforeStartMatchPoint,\n focus: afterStartMatchPoint\n }\n });\n return true;\n }\n return false;\n};\n\n// src/lib/transforms/autoformatText.ts\nimport castArray4 from \"lodash/castArray.js\";\nvar autoformatText = (editor, { format, match: _match, text, trigger }) => {\n const selection = editor.selection;\n const matches = castArray4(_match);\n for (const match of matches) {\n const { end, start, triggers } = getMatchRange({\n match: Array.isArray(format) ? match : {\n end: match,\n start: \"\"\n },\n trigger\n });\n if (!triggers.includes(text)) continue;\n const matched = getMatchPoints(editor, { end, start });\n if (!matched) continue;\n const { afterStartMatchPoint, beforeEndMatchPoint, beforeStartMatchPoint } = matched;\n if (end) {\n editor.tf.delete({\n at: {\n anchor: beforeEndMatchPoint,\n focus: selection.anchor\n }\n });\n }\n if (typeof format === \"function\") {\n format(editor, matched);\n } else {\n const formatEnd = Array.isArray(format) ? format[1] : format;\n editor.tf.insertText(formatEnd);\n if (beforeStartMatchPoint) {\n const formatStart = Array.isArray(format) ? format[0] : format;\n editor.tf.delete({\n at: {\n anchor: beforeStartMatchPoint,\n focus: afterStartMatchPoint\n }\n });\n editor.tf.insertText(formatStart, {\n at: beforeStartMatchPoint\n });\n }\n }\n return true;\n }\n return false;\n};\n\n// src/lib/withAutoformat.ts\nvar withAutoformat = ({\n editor,\n getOptions,\n tf: { insertText }\n}) => {\n return {\n transforms: {\n insertText(text) {\n if (!editor.api.isCollapsed()) return insertText(text);\n for (const rule of getOptions().rules) {\n const { insertTrigger, mode = \"text\", query } = rule;\n if (query && !query(editor, { ...rule, text })) continue;\n const autoformatter = {\n block: autoformatBlock,\n mark: autoformatMark,\n text: autoformatText\n };\n if (autoformatter[mode]?.(editor, {\n ...rule,\n text\n })) {\n return insertTrigger && insertText(text);\n }\n }\n insertText(text);\n }\n }\n };\n};\n\n// src/lib/BaseAutoformatPlugin.ts\nvar BaseAutoformatPlugin = createTSlatePlugin({\n key: \"autoformat\",\n options: {\n rules: []\n }\n}).overrideEditor(withAutoformat);\n\n// src/react/onKeyDownAutoformat.ts\nimport { RangeApi, isHotkey } from \"@udecode/plate\";\nvar onKeyDownAutoformat = ({\n editor,\n event,\n getOptions\n}) => {\n const { enableUndoOnDelete, rules } = getOptions();\n if (event.defaultPrevented) return false;\n if (!isHotkey(\"backspace\", { byKey: true }, event)) return false;\n if (!rules) return false;\n if (!enableUndoOnDelete) return false;\n const { selection } = editor;\n if (!selection || !editor.api.isCollapsed()) return;\n const [start, end] = RangeApi.edges(selection);\n const before = editor.api.before(end, {\n distance: 1,\n unit: \"character\"\n });\n if (!start) return false;\n if (!before) return false;\n const charRange = { anchor: before, focus: start };\n if (!charRange) return false;\n const char = editor.api.string(charRange);\n if (!char) return false;\n const matchers = [...rules].filter((rule2) => {\n const textRule = rule2;\n if (textRule) {\n return textRule.mode === \"text\" && textRule.format === char;\n }\n return false;\n });\n if (!matchers || matchers.length === 0) return false;\n event.preventDefault();\n editor.tf.deleteBackward();\n const rule = matchers[0];\n if (rule && typeof rule.match === \"string\") {\n editor.tf.insertText(rule.match);\n } else {\n const matchArray = rule.match;\n if (matchArray && matchArray.length > 0) {\n editor.tf.insertText(matchArray[0]);\n }\n }\n return true;\n};\n\n// src/react/AutoformatPlugin.tsx\nvar AutoformatPlugin = toPlatePlugin(BaseAutoformatPlugin, {\n handlers: {\n onKeyDown: onKeyDownAutoformat\n }\n});\nexport {\n AutoformatPlugin,\n onKeyDownAutoformat\n};\n//# sourceMappingURL=index.mjs.map","// src/react/BasicMarksPlugin.tsx\nimport { toPlatePlugin as toPlatePlugin8 } from \"@udecode/plate/react\";\n\n// src/lib/BaseBasicMarksPlugin.ts\nimport { createSlatePlugin as createSlatePlugin8 } from \"@udecode/plate\";\n\n// src/lib/BaseBoldPlugin.ts\nimport { createSlatePlugin, someHtmlElement } from \"@udecode/plate\";\nvar BaseBoldPlugin = createSlatePlugin({\n key: \"bold\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n query: ({ element }) => !someHtmlElement(\n element,\n (node) => node.style.fontWeight === \"normal\"\n ),\n rules: [\n { validNodeName: [\"STRONG\", \"B\"] },\n {\n validStyle: {\n fontWeight: [\"600\", \"700\", \"bold\"]\n }\n }\n ]\n }\n }\n }\n});\n\n// src/lib/BaseCodePlugin.ts\nimport { createSlatePlugin as createSlatePlugin2, findHtmlParentElement } from \"@udecode/plate\";\nvar BaseCodePlugin = createSlatePlugin2({\n key: \"code\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n query({ element }) {\n const blockAbove = findHtmlParentElement(element, \"P\");\n if (blockAbove?.style.fontFamily === \"Consolas\") return false;\n return !findHtmlParentElement(element, \"PRE\");\n },\n rules: [\n { validNodeName: [\"CODE\"] },\n { validStyle: { fontFamily: \"Consolas\" } }\n ]\n }\n }\n }\n});\n\n// src/lib/BaseItalicPlugin.ts\nimport { createSlatePlugin as createSlatePlugin3, someHtmlElement as someHtmlElement2 } from \"@udecode/plate\";\nvar BaseItalicPlugin = createSlatePlugin3({\n key: \"italic\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n query: ({ element }) => !someHtmlElement2(\n element,\n (node) => node.style.fontStyle === \"normal\"\n ),\n rules: [\n { validNodeName: [\"EM\", \"I\"] },\n { validStyle: { fontStyle: \"italic\" } }\n ]\n }\n }\n }\n});\n\n// src/lib/BaseStrikethroughPlugin.ts\nimport { createSlatePlugin as createSlatePlugin4, someHtmlElement as someHtmlElement3 } from \"@udecode/plate\";\nvar BaseStrikethroughPlugin = createSlatePlugin4({\n key: \"strikethrough\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n query: ({ element }) => !someHtmlElement3(\n element,\n (node) => node.style.textDecoration === \"none\"\n ),\n rules: [\n { validNodeName: [\"S\", \"DEL\", \"STRIKE\"] },\n { validStyle: { textDecoration: \"line-through\" } }\n ]\n }\n }\n }\n});\n\n// src/lib/BaseSubscriptPlugin.ts\nimport { createSlatePlugin as createSlatePlugin5 } from \"@udecode/plate\";\nvar BaseSubscriptPlugin = createSlatePlugin5({\n key: \"subscript\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n rules: [\n { validNodeName: [\"SUB\"] },\n { validStyle: { verticalAlign: \"sub\" } }\n ]\n }\n }\n }\n});\n\n// src/lib/BaseSuperscriptPlugin.ts\nimport { createSlatePlugin as createSlatePlugin6 } from \"@udecode/plate\";\nvar BaseSuperscriptPlugin = createSlatePlugin6({\n key: \"superscript\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n rules: [\n { validNodeName: [\"SUP\"] },\n { validStyle: { verticalAlign: \"super\" } }\n ]\n }\n }\n }\n});\n\n// src/lib/BaseUnderlinePlugin.ts\nimport { createSlatePlugin as createSlatePlugin7, someHtmlElement as someHtmlElement4 } from \"@udecode/plate\";\nvar BaseUnderlinePlugin = createSlatePlugin7({\n key: \"underline\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n query: ({ element }) => !someHtmlElement4(\n element,\n (node) => node.style.textDecoration === \"none\"\n ),\n rules: [\n { validNodeName: [\"U\"] },\n { validStyle: { textDecoration: [\"underline\"] } }\n ]\n }\n }\n }\n});\n\n// src/lib/BaseBasicMarksPlugin.ts\nvar BaseBasicMarksPlugin = createSlatePlugin8({\n key: \"basicMarks\",\n plugins: [\n BaseBoldPlugin,\n BaseCodePlugin,\n BaseItalicPlugin,\n BaseStrikethroughPlugin,\n BaseSubscriptPlugin,\n BaseSuperscriptPlugin,\n BaseUnderlinePlugin\n ]\n});\n\n// src/react/BoldPlugin.tsx\nimport { Key, toPlatePlugin } from \"@udecode/plate/react\";\nvar BoldPlugin = toPlatePlugin(BaseBoldPlugin, ({ editor, type }) => ({\n shortcuts: {\n toggleBold: {\n keys: [[Key.Mod, \"b\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleMark(type);\n }\n }\n }\n}));\n\n// src/react/CodePlugin.tsx\nimport { Key as Key2, toPlatePlugin as toPlatePlugin2 } from \"@udecode/plate/react\";\nvar CodePlugin = toPlatePlugin2(BaseCodePlugin, ({ editor, type }) => ({\n shortcuts: {\n toggleCode: {\n keys: [[Key2.Mod, \"e\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleMark(type);\n }\n }\n }\n}));\n\n// src/react/ItalicPlugin.tsx\nimport { Key as Key3, toPlatePlugin as toPlatePlugin3 } from \"@udecode/plate/react\";\nvar ItalicPlugin = toPlatePlugin3(\n BaseItalicPlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleItalic: {\n keys: [[Key3.Mod, \"i\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleMark(type);\n }\n }\n }\n })\n);\n\n// src/react/StrikethroughPlugin.tsx\nimport { Key as Key4, toPlatePlugin as toPlatePlugin4 } from \"@udecode/plate/react\";\nvar StrikethroughPlugin = toPlatePlugin4(\n BaseStrikethroughPlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleStrikethrough: {\n keys: [[Key4.Mod, Key4.Shift, \"x\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleMark(type);\n }\n }\n }\n })\n);\n\n// src/react/SubscriptPlugin.tsx\nimport { Key as Key6, toPlatePlugin as toPlatePlugin6 } from \"@udecode/plate/react\";\n\n// src/react/SuperscriptPlugin.tsx\nimport { Key as Key5, toPlatePlugin as toPlatePlugin5 } from \"@udecode/plate/react\";\nvar SuperscriptPlugin = toPlatePlugin5(\n BaseSuperscriptPlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleSuperscript: {\n keys: [[Key5.Mod, \".\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleMark(type, {\n remove: editor.getType(SubscriptPlugin)\n });\n }\n }\n }\n })\n);\n\n// src/react/SubscriptPlugin.tsx\nvar SubscriptPlugin = toPlatePlugin6(\n BaseSubscriptPlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleSubscript: {\n keys: [[Key6.Mod, \",\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleMark(type, {\n remove: editor.getType(SuperscriptPlugin)\n });\n }\n }\n }\n })\n);\n\n// src/react/UnderlinePlugin.tsx\nimport { Key as Key7, toPlatePlugin as toPlatePlugin7 } from \"@udecode/plate/react\";\nvar UnderlinePlugin = toPlatePlugin7(\n BaseUnderlinePlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleUnderline: {\n keys: [[Key7.Mod, \"u\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleMark(type);\n }\n }\n }\n })\n);\n\n// src/react/BasicMarksPlugin.tsx\nvar BasicMarksPlugin = toPlatePlugin8(BaseBasicMarksPlugin, {\n plugins: [\n BoldPlugin,\n CodePlugin,\n ItalicPlugin,\n StrikethroughPlugin,\n SubscriptPlugin,\n SuperscriptPlugin,\n UnderlinePlugin\n ]\n});\nexport {\n BasicMarksPlugin,\n BoldPlugin,\n CodePlugin,\n ItalicPlugin,\n StrikethroughPlugin,\n SubscriptPlugin,\n SuperscriptPlugin,\n UnderlinePlugin\n};\n//# sourceMappingURL=index.mjs.map","// src/react/BlockquotePlugin.tsx\nimport { Key, toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseBlockquotePlugin.ts\nimport { createSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/withBlockquote.ts\nvar withBlockquote = ({\n api: { shouldMergeNodesRemovePrevNode }\n}) => ({\n api: {\n shouldMergeNodesRemovePrevNode(prevNodeEntry, curNodeEntry) {\n const prevNode = prevNodeEntry[0];\n if (prevNode.type === BaseBlockquotePlugin.key) return false;\n return shouldMergeNodesRemovePrevNode(prevNodeEntry, curNodeEntry);\n }\n }\n});\n\n// src/lib/BaseBlockquotePlugin.ts\nvar BaseBlockquotePlugin = createSlatePlugin({\n key: \"blockquote\",\n node: { isElement: true },\n parsers: {\n html: {\n deserializer: {\n rules: [\n {\n validNodeName: \"BLOCKQUOTE\"\n }\n ]\n }\n }\n }\n}).overrideEditor(withBlockquote);\n\n// src/react/BlockquotePlugin.tsx\nvar BlockquotePlugin = toPlatePlugin(\n BaseBlockquotePlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleBlockquote: {\n keys: [[Key.Mod, Key.Shift, \"period\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleBlock(type);\n }\n }\n }\n })\n);\nexport {\n BlockquotePlugin\n};\n//# sourceMappingURL=index.mjs.map","// src/react/CaptionPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseCaptionPlugin.ts\nimport {\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/withCaption.ts\nimport {\n NodeApi,\n RangeApi,\n getPluginTypes,\n isHotkey\n} from \"@udecode/plate\";\nvar withCaption = ({\n editor,\n getOptions,\n tf: { apply }\n}) => {\n return {\n transforms: {\n apply(operation) {\n const { plugins } = getOptions();\n if (operation.type === \"set_selection\") {\n const newSelection = {\n ...editor.selection,\n ...operation.newProperties\n };\n if (editor.currentKeyboardEvent && isHotkey(\"up\", editor.currentKeyboardEvent) && newSelection && RangeApi.isCollapsed(newSelection)) {\n const types = getPluginTypes(editor, plugins);\n const entry = editor.api.above({\n at: newSelection,\n match: { type: types }\n });\n if (entry) {\n const [node] = entry;\n if (node.caption && NodeApi.string({ children: node.caption }).length > 0) {\n setTimeout(() => {\n editor.setOption(BaseCaptionPlugin, \"focusEndPath\", entry[1]);\n }, 0);\n }\n }\n }\n }\n apply(operation);\n }\n }\n };\n};\n\n// src/lib/BaseCaptionPlugin.ts\nvar BaseCaptionPlugin = createTSlatePlugin({\n key: \"caption\",\n options: {\n focusEndPath: null,\n focusStartPath: null,\n plugins: [],\n visibleId: null\n }\n}).extendOptions(({ getOptions }) => ({\n isVisible: (elementId) => getOptions().visibleId === elementId\n})).overrideEditor(withCaption);\n\n// src/react/onKeyDownCaption.ts\nimport { getPluginTypes as getPluginTypes2, isHotkey as isHotkey2 } from \"@udecode/plate\";\nvar onKeyDownCaption = ({\n editor,\n event,\n getOptions\n}) => {\n if (event.defaultPrevented) return;\n if (isHotkey2(\"down\", event)) {\n const types = getPluginTypes2(editor, getOptions().plugins);\n const entry = editor.api.block({\n match: { type: types }\n });\n if (!entry) return;\n editor.setOption(CaptionPlugin, \"focusEndPath\", entry[1]);\n }\n};\n\n// src/react/CaptionPlugin.tsx\nvar CaptionPlugin = toPlatePlugin(BaseCaptionPlugin, {\n handlers: {\n onKeyDown: onKeyDownCaption\n }\n});\n\n// src/react/components/Caption.tsx\nimport {\n createPrimitiveComponent,\n useEditorRef,\n useElement as useElement2,\n useReadOnly,\n useSelected\n} from \"@udecode/plate/react\";\n\n// src/react/hooks/useCaptionString.ts\nimport React from \"react\";\nimport { NodeApi as NodeApi2 } from \"@udecode/plate\";\nimport { useElement } from \"@udecode/plate/react\";\nvar useCaptionString = () => {\n const { caption: nodeCaption = [{ children: [{ text: \"\" }] }] } = useElement();\n return React.useMemo(() => {\n return NodeApi2.string(nodeCaption[0]) || \"\";\n }, [nodeCaption]);\n};\n\n// src/react/components/Caption.tsx\nvar useCaptionState = (options = {}) => {\n const editor = useEditorRef();\n const element = useElement2();\n const captionString = useCaptionString();\n const showCaption2 = editor.useOption(\n CaptionPlugin,\n \"isVisible\",\n element.id\n );\n const selected = useSelected();\n const _readOnly = useReadOnly();\n const readOnly = options.readOnly || _readOnly;\n const hidden = !showCaption2 && captionString.length === 0;\n return {\n captionString,\n hidden,\n readOnly,\n selected\n };\n};\nvar useCaption = (state) => {\n return {\n hidden: state.hidden\n };\n};\nvar Caption = createPrimitiveComponent(\n \"figcaption\"\n)({\n propsHook: useCaption,\n stateHook: useCaptionState\n});\n\n// src/react/components/CaptionButton.tsx\nimport { useEditorRef as useEditorRef2, useElement as useElement3 } from \"@udecode/plate/react\";\nvar useCaptionButtonState = () => {\n const editor = useEditorRef2();\n const element = useElement3();\n return { editor, element };\n};\nvar useCaptionButton = ({\n editor,\n element\n}) => {\n return {\n props: {\n onClick: () => {\n const path = editor.api.findPath(element);\n editor.setOption(BaseCaptionPlugin, \"visibleId\", element.id);\n setTimeout(() => {\n path && editor.setOption(BaseCaptionPlugin, \"focusEndPath\", path);\n }, 0);\n }\n }\n };\n};\n\n// src/react/components/CaptionTextarea.tsx\nimport React3, { useCallback, useState } from \"react\";\nimport { NodeApi as NodeApi3, PathApi, isHotkey as isHotkey3 } from \"@udecode/plate\";\nimport {\n createPrimitiveComponent as createPrimitiveComponent2,\n useEditorRef as useEditorRef3,\n useElement as useElement4,\n useReadOnly as useReadOnly2\n} from \"@udecode/plate/react\";\n\n// src/react/components/TextareaAutosize.tsx\nimport React2 from \"react\";\nimport ReactTextareaAutosize from \"react-textarea-autosize\";\nimport { useIsomorphicLayoutEffect } from \"@udecode/plate/react\";\nvar TextareaAutosize = React2.forwardRef((props, ref) => {\n const [isRerendered, setIsRerendered] = React2.useState(false);\n useIsomorphicLayoutEffect(() => setIsRerendered(true), []);\n return isRerendered ? /* @__PURE__ */ React2.createElement(ReactTextareaAutosize, { ...props, ref }) : null;\n});\nTextareaAutosize.displayName = \"TextareaAutosize\";\n\n// src/react/components/CaptionTextarea.tsx\nvar useCaptionTextareaFocus = (textareaRef) => {\n const editor = useEditorRef3();\n const element = useElement4();\n const focusCaptionPath = editor.useOption(CaptionPlugin, \"focusEndPath\");\n React3.useEffect(() => {\n if (focusCaptionPath && textareaRef.current) {\n const path = editor.api.findPath(element);\n if (path && PathApi.equals(path, focusCaptionPath)) {\n textareaRef.current.focus();\n editor.setOption(CaptionPlugin, \"focusEndPath\", null);\n }\n }\n }, [editor, element, focusCaptionPath, textareaRef]);\n};\nvar useCaptionTextareaState = () => {\n const element = useElement4();\n const editor = useEditorRef3();\n const [isComposing, setIsComposing] = useState(false);\n const [captionValue, setCaptionValue] = useState(() => {\n const nodeCaption = element.caption ?? [{ children: [{ text: \"\" }] }];\n return NodeApi3.string(nodeCaption[0]);\n });\n const updateEditorCaptionValue = useCallback(\n (newValue) => {\n editor.tf.setNodes(\n { caption: [{ text: newValue }] },\n { at: element }\n );\n },\n [editor, element]\n );\n const handleChange = useCallback(\n (e) => {\n const newValue = e.target.value;\n setCaptionValue(newValue);\n if (!isComposing) {\n updateEditorCaptionValue(newValue);\n }\n },\n [isComposing, updateEditorCaptionValue]\n );\n const handleCompositionStart = useCallback(() => {\n setIsComposing(true);\n }, []);\n const handleCompositionEnd = useCallback(\n (e) => {\n setIsComposing(false);\n const newValue = e.currentTarget.value;\n setCaptionValue(newValue);\n updateEditorCaptionValue(newValue);\n },\n [updateEditorCaptionValue]\n );\n const readOnly = useReadOnly2();\n const textareaRef = React3.useRef(null);\n useCaptionTextareaFocus(textareaRef);\n return {\n captionValue,\n element,\n readOnly,\n textareaRef,\n handleChange,\n handleCompositionEnd,\n handleCompositionStart\n };\n};\nvar useCaptionTextarea = ({\n captionValue,\n element,\n readOnly,\n textareaRef,\n handleChange,\n handleCompositionEnd,\n handleCompositionStart\n}) => {\n const editor = useEditorRef3();\n const onKeyDown = (e) => {\n if (isHotkey3(\"up\", e)) {\n const path = editor.api.findPath(element);\n if (!path) return;\n e.preventDefault();\n editor.tf.focus({ at: path });\n }\n if (isHotkey3(\"down\", e)) {\n const path = editor.api.findPath(element);\n if (!path) return;\n const nextNodePath = editor.api.after(path);\n if (!nextNodePath) return;\n e.preventDefault();\n editor.tf.focus({ at: nextNodePath });\n }\n };\n const onBlur = (e) => {\n const currentValue = e.target.value;\n if (currentValue.length === 0) {\n editor.setOption(CaptionPlugin, \"visibleId\", null);\n }\n };\n return {\n props: {\n readOnly,\n value: captionValue,\n onBlur,\n onChange: handleChange,\n onCompositionEnd: handleCompositionEnd,\n onCompositionStart: handleCompositionStart,\n onKeyDown\n },\n ref: textareaRef\n };\n};\nvar CaptionTextarea = createPrimitiveComponent2(TextareaAutosize)({\n propsHook: useCaptionTextarea,\n stateHook: useCaptionTextareaState\n});\n\n// src/react/utils/showCaption.ts\nvar showCaption = (editor, element) => {\n const path = editor.api.findPath(element);\n editor.setOption(CaptionPlugin, \"visibleId\", element.id);\n setTimeout(() => {\n path && editor.setOption(CaptionPlugin, \"focusEndPath\", path);\n }, 0);\n};\nexport {\n Caption,\n CaptionPlugin,\n CaptionTextarea,\n TextareaAutosize,\n onKeyDownCaption,\n showCaption,\n useCaption,\n useCaptionButton,\n useCaptionButtonState,\n useCaptionState,\n useCaptionString,\n useCaptionTextarea,\n useCaptionTextareaFocus,\n useCaptionTextareaState\n};\n//# sourceMappingURL=index.mjs.map","// src/react/CodeBlockPlugin.tsx\nimport { Key, toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseCodeBlockPlugin.ts\nimport {\n HtmlPlugin,\n createSlatePlugin,\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/queries/getCodeLineEntry.ts\nimport {\n ElementApi\n} from \"@udecode/plate\";\nvar getCodeLineEntry = (editor, { at = editor.selection } = {}) => {\n if (at && editor.api.some({\n at,\n match: { type: editor.getType(BaseCodeLinePlugin) }\n })) {\n const selectionParent = editor.api.parent(at);\n if (!selectionParent) return;\n const [, parentPath] = selectionParent;\n const codeLine = editor.api.above({\n at,\n match: { type: editor.getType(BaseCodeLinePlugin) }\n }) || editor.api.parent(parentPath);\n if (!codeLine) return;\n const [codeLineNode, codeLinePath] = codeLine;\n if (ElementApi.isElement(codeLineNode) && codeLineNode.type !== editor.getType(BaseCodeLinePlugin))\n return;\n const codeBlock = editor.api.parent(codeLinePath);\n if (!codeBlock) return;\n return {\n codeBlock,\n codeLine\n };\n }\n};\n\n// src/lib/queries/getIndentDepth.ts\nvar getIndentDepth = (editor, { codeLine }) => {\n const [, codeLinePath] = codeLine;\n const text = editor.api.string(codeLinePath);\n return text.search(/\\S|$/);\n};\n\n// src/lib/transforms/deleteStartSpace.ts\nvar deleteStartSpace = (editor, { codeLine }) => {\n const [, codeLinePath] = codeLine;\n const codeLineStart = editor.api.start(codeLinePath);\n const codeLineEnd = codeLineStart && editor.api.after(codeLineStart);\n const spaceRange = codeLineEnd && editor.api.range(codeLineStart, codeLineEnd);\n const spaceText = editor.api.string(spaceRange);\n if (/\\s/.test(spaceText)) {\n editor.tf.delete({ at: spaceRange });\n return true;\n }\n return false;\n};\n\n// src/lib/transforms/indentCodeLine.ts\nvar indentCodeLine = (editor, { codeLine, indentDepth = 2 }) => {\n const [, codeLinePath] = codeLine;\n const codeLineStart = editor.api.start(codeLinePath);\n const indent = \" \".repeat(indentDepth);\n if (!editor.api.isExpanded()) {\n const cursor = editor.selection?.anchor;\n const range = editor.api.range(codeLineStart, cursor);\n const text = editor.api.string(range);\n if (/\\S/.test(text)) {\n editor.tf.insertText(indent, { at: editor.selection });\n return;\n }\n }\n editor.tf.insertText(indent, { at: codeLineStart });\n};\n\n// src/lib/transforms/outdentCodeLine.ts\nvar outdentCodeLine = (editor, { codeBlock, codeLine }) => {\n const deleted = deleteStartSpace(editor, { codeBlock, codeLine });\n deleted && deleteStartSpace(editor, { codeBlock, codeLine });\n};\n\n// src/lib/transforms/unwrapCodeBlock.ts\nimport {\n BaseParagraphPlugin,\n NodeApi\n} from \"@udecode/plate\";\nvar unwrapCodeBlock = (editor) => {\n if (!editor.selection) return;\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const defaultType = editor.getType(BaseParagraphPlugin);\n editor.tf.withoutNormalizing(() => {\n const codeBlockEntries = editor.api.nodes({\n at: editor.selection,\n match: { type: codeBlockType }\n });\n const reversedCodeBlockEntries = Array.from(codeBlockEntries).reverse();\n for (const codeBlockEntry of reversedCodeBlockEntries) {\n const codeLineEntries = NodeApi.children(editor, codeBlockEntry[1]);\n for (const [, path] of codeLineEntries) {\n editor.tf.setNodes({ type: defaultType }, { at: path });\n }\n editor.tf.unwrapNodes({\n at: codeBlockEntry[1],\n match: { type: codeBlockType },\n split: true\n });\n }\n });\n};\n\n// src/lib/transforms/toggleCodeBlock.ts\nvar toggleCodeBlock = (editor) => {\n if (!editor.selection) return;\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n const isActive = editor.api.some({\n match: { type: codeBlockType }\n });\n editor.tf.withoutNormalizing(() => {\n unwrapCodeBlock(editor);\n if (!isActive) {\n editor.tf.setNodes({\n type: codeLineType\n });\n const codeBlock = {\n children: [],\n type: codeBlockType\n };\n editor.tf.wrapNodes(codeBlock);\n }\n });\n};\n\n// src/lib/withInsertDataCodeBlock.ts\nvar withInsertDataCodeBlock = ({\n editor,\n tf: { insertData }\n}) => ({\n transforms: {\n insertData(data) {\n const text = data.getData(\"text/plain\");\n const vscodeDataString = data.getData(\"vscode-editor-data\");\n if (vscodeDataString) {\n try {\n const vscodeData = JSON.parse(vscodeDataString);\n const lines = text.split(\"\\n\");\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const node = {\n children: lines.map((line) => ({\n children: [{ text: line }],\n type: codeLineType\n })),\n lang: vscodeData?.mode,\n type: codeBlockType\n };\n editor.tf.insertNodes(node, {\n select: true\n });\n return;\n } catch (error) {\n }\n }\n insertData(data);\n }\n }\n});\n\n// src/lib/withInsertFragmentCodeBlock.ts\nimport { NodeApi as NodeApi2 } from \"@udecode/plate\";\nfunction extractCodeLinesFromCodeBlock(node) {\n return node.children;\n}\nvar withInsertFragmentCodeBlock = ({\n editor,\n tf: { insertFragment }\n}) => ({\n transforms: {\n insertFragment(fragment) {\n const [blockAbove] = editor.api.block() ?? [];\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n function convertNodeToCodeLine(node) {\n return {\n children: [{ text: NodeApi2.string(node) }],\n type: codeLineType\n };\n }\n if (blockAbove && [codeBlockType, codeLineType].includes(blockAbove?.type)) {\n return insertFragment(\n fragment.flatMap((node) => {\n const element = node;\n return element.type === codeBlockType ? extractCodeLinesFromCodeBlock(element) : convertNodeToCodeLine(element);\n })\n );\n }\n return insertFragment(fragment);\n }\n }\n});\n\n// src/lib/withNormalizeCodeBlock.tsx\nimport { ElementApi as ElementApi2, NodeApi as NodeApi3 } from \"@udecode/plate\";\nvar withNormalizeCodeBlock = ({\n editor,\n tf: { normalizeNode }\n}) => ({\n transforms: {\n normalizeNode([node, path]) {\n normalizeNode([node, path]);\n if (!ElementApi2.isElement(node)) {\n return;\n }\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n const isCodeBlockRoot = node.type === codeBlockType;\n if (isCodeBlockRoot) {\n const nonCodeLine = Array.from(NodeApi3.children(editor, path)).find(\n ([child]) => child.type !== codeLineType\n );\n if (nonCodeLine) {\n editor.tf.setNodes({ type: codeLineType }, { at: nonCodeLine[1] });\n }\n }\n }\n }\n});\n\n// src/lib/withCodeBlock.ts\nvar withCodeBlock = (ctx) => {\n const {\n editor,\n tf: { insertBreak }\n } = ctx;\n const insertBreakCodeBlock = () => {\n if (!editor.selection) return;\n const res = getCodeLineEntry(editor, {});\n if (!res) return;\n const { codeBlock, codeLine } = res;\n const indentDepth = getIndentDepth(editor, {\n codeBlock,\n codeLine\n });\n insertBreak();\n indentCodeLine(editor, {\n codeBlock,\n codeLine,\n indentDepth\n });\n return true;\n };\n return {\n transforms: {\n insertBreak() {\n if (insertBreakCodeBlock()) return;\n insertBreak();\n },\n ...withInsertDataCodeBlock(ctx).transforms,\n ...withInsertFragmentCodeBlock(ctx).transforms,\n ...withNormalizeCodeBlock(ctx).transforms\n }\n };\n};\n\n// src/lib/decorateCodeLine.ts\nimport { NodeApi as NodeApi4 } from \"@udecode/plate\";\nvar decorateCodeLine = ({\n editor,\n entry: [node, path],\n type\n}) => {\n const codeBlockOptions = editor.getOptions(BaseCodeBlockPlugin);\n const { prism: Prism } = codeBlockOptions;\n if (!Prism) return [];\n const { Token, languages, tokenize } = Prism;\n const ranges = [];\n if (!codeBlockOptions.syntax || node.type !== type) {\n return ranges;\n }\n const codeBlock = editor.api.parent(path);\n if (!codeBlock) {\n return ranges;\n }\n let langName = codeBlock[0].lang ?? \"\";\n if (langName === \"plain\") {\n langName = \"\";\n }\n const lang = languages[langName];\n if (!lang) {\n return ranges;\n }\n const text = NodeApi4.string(node);\n const tokens = tokenize(text, lang);\n let offset = 0;\n for (const element of tokens) {\n if (element instanceof Token) {\n ranges.push({\n [BaseCodeSyntaxPlugin.key]: true,\n anchor: { offset, path },\n focus: { offset: offset + element.length, path },\n tokenType: element.type\n });\n }\n offset += element.length;\n }\n return ranges;\n};\n\n// src/lib/deserializer/htmlDeserializerCodeBlockStatic.ts\nimport { getSlateElements, isSlatePluginElement } from \"@udecode/plate\";\nvar htmlDeserializerCodeBlockStatic = (element) => {\n if (isSlatePluginElement(element, BaseCodeBlockPlugin.key)) {\n const staticCodeLines = getSlateElements(element).filter(\n (el) => isSlatePluginElement(el, BaseCodeLinePlugin.key)\n );\n if (staticCodeLines) {\n const codeLines = staticCodeLines.map((line) => {\n const node = {\n children: [{ text: line.textContent }],\n type: BaseCodeLinePlugin.key\n };\n if (line.dataset.slateId) {\n node.id = line.dataset.slateId;\n }\n return node;\n });\n return {\n children: codeLines,\n type: BaseCodeBlockPlugin.key\n };\n }\n }\n};\n\n// src/lib/deserializer/htmlDeserializerCodeBlock.ts\nvar htmlDeserializerCodeBlock = {\n parse: ({ element }) => {\n const staticCodeBlock = htmlDeserializerCodeBlockStatic(element);\n if (staticCodeBlock) {\n return staticCodeBlock;\n }\n const languageSelectorText = [...element.childNodes].find(\n (node) => node.nodeName === \"SELECT\"\n )?.textContent || \"\";\n const textContent = element.textContent?.replace(languageSelectorText, \"\") || \"\";\n let lines = textContent.split(\"\\n\");\n if (!lines?.length) {\n lines = [textContent];\n }\n const codeLines = lines.map((line) => ({\n children: [{ text: line }],\n type: BaseCodeLinePlugin.key\n }));\n return {\n children: codeLines,\n type: BaseCodeBlockPlugin.key\n };\n },\n rules: [\n {\n validNodeName: \"PRE\"\n },\n {\n validNodeName: \"P\",\n validStyle: {\n fontFamily: \"Consolas\"\n }\n }\n ]\n};\n\n// src/lib/BaseCodeBlockPlugin.ts\nvar BaseCodeLinePlugin = createSlatePlugin({\n key: \"code_line\",\n decorate: decorateCodeLine,\n node: { isElement: true }\n});\nvar BaseCodeSyntaxPlugin = createSlatePlugin({\n key: \"code_syntax\",\n node: { isLeaf: true }\n});\nvar BaseCodeBlockPlugin = createTSlatePlugin({\n key: \"code_block\",\n inject: {\n plugins: {\n [HtmlPlugin.key]: {\n parser: {\n query: ({ editor }) => {\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n return !editor.api.some({\n match: { type: codeLineType }\n });\n }\n }\n }\n }\n },\n node: { isElement: true },\n options: {\n syntax: true,\n syntaxPopularFirst: false\n },\n parsers: { html: { deserializer: htmlDeserializerCodeBlock } },\n plugins: [BaseCodeLinePlugin, BaseCodeSyntaxPlugin]\n}).overrideEditor(withCodeBlock);\n\n// src/react/onKeyDownCodeBlock.ts\nimport { Hotkeys, isHotkey } from \"@udecode/plate\";\nvar onKeyDownCodeBlock = ({ editor, event }) => {\n if (event.defaultPrevented) return;\n const isTab = Hotkeys.isTab(editor, event);\n const isUntab = Hotkeys.isUntab(editor, event);\n if (isTab || isUntab) {\n const _codeLines = editor.api.nodes({\n match: { type: editor.getType(BaseCodeLinePlugin) }\n });\n const codeLines = Array.from(_codeLines);\n if (codeLines.length > 0) {\n event.preventDefault();\n const [, firstLinePath] = codeLines[0];\n const codeBlock = editor.api.parent(firstLinePath);\n if (!codeBlock) return;\n editor.tf.withoutNormalizing(() => {\n for (const codeLine of codeLines) {\n if (isUntab) {\n outdentCodeLine(editor, { codeBlock, codeLine });\n }\n if (isTab) {\n indentCodeLine(editor, { codeBlock, codeLine });\n }\n }\n });\n }\n }\n if (isHotkey(\"mod+a\", event)) {\n const res = getCodeLineEntry(editor, {});\n if (!res) return;\n const { codeBlock } = res;\n const [, codeBlockPath] = codeBlock;\n if (editor.api.isAt({ end: true }) && editor.api.isAt({ start: true }))\n return;\n editor.tf.select(codeBlockPath);\n event.preventDefault();\n event.stopPropagation();\n }\n};\n\n// src/react/CodeBlockPlugin.tsx\nvar CodeLinePlugin = toPlatePlugin(BaseCodeLinePlugin);\nvar CodeSyntaxPlugin = toPlatePlugin(BaseCodeSyntaxPlugin);\nvar CodeBlockPlugin = toPlatePlugin(BaseCodeBlockPlugin, {\n plugins: [CodeLinePlugin, CodeSyntaxPlugin],\n handlers: {\n onKeyDown: onKeyDownCodeBlock\n }\n}).extend(({ editor, type }) => ({\n shortcuts: {\n toggleCodeBlock: {\n keys: [[Key.Mod, Key.Alt, \"8\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleBlock(type);\n }\n }\n }\n}));\n\n// src/react/hooks/useCodeBlockCombobox.ts\nimport React from \"react\";\nimport { useEditorRef, useElement, useReadOnly } from \"@udecode/plate/react\";\nvar useCodeBlockComboboxState = () => {\n const editor = useEditorRef();\n const readOnly = useReadOnly();\n const element = useElement();\n const [value, setValue] = React.useState(element.lang ?? \"text\");\n const { syntaxPopularFirst } = editor.getOptions(BaseCodeBlockPlugin);\n React.useEffect(() => {\n setValue(element.lang ?? \"text\");\n }, [element.lang]);\n return {\n element,\n readOnly,\n setValue,\n syntaxPopularFirst,\n value\n };\n};\nvar useCodeBlockCombobox = ({\n element,\n setValue\n}) => {\n const editor = useEditorRef();\n return {\n commandItemProps: {\n onSelect: (_value) => {\n editor.tf.setNodes(\n { lang: _value },\n { at: element }\n );\n setValue(_value);\n }\n }\n };\n};\n\n// src/react/hooks/useCodeBlockElement.ts\nimport React2 from \"react\";\nimport { useEditorRef as useEditorRef2 } from \"@udecode/plate/react\";\nvar useCodeBlockElementState = ({\n element\n}) => {\n const editor = useEditorRef2();\n const [domLoaded, setDomLoaded] = React2.useState(false);\n const { lang } = element;\n const codeClassName = lang ? `${lang} language-${lang}` : \"\";\n React2.useEffect(() => {\n setDomLoaded(true);\n }, []);\n const { syntax } = editor.getOptions(BaseCodeBlockPlugin);\n return {\n className: domLoaded && codeClassName,\n syntax\n };\n};\n\n// src/react/hooks/useCodeSyntaxLeaf.tsx\nvar useCodeSyntaxLeaf = ({ leaf }) => {\n return {\n tokenProps: {\n className: `prism-token token ${leaf.tokenType}`\n }\n };\n};\n\n// src/react/hooks/useToggleCodeBlockButton.ts\nimport { useEditorRef as useEditorRef3 } from \"@udecode/plate/react\";\nvar useToggleCodeBlockButton = () => {\n const editor = useEditorRef3();\n return {\n props: {\n onClick: () => {\n toggleCodeBlock(editor);\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\nexport {\n CodeBlockPlugin,\n CodeLinePlugin,\n CodeSyntaxPlugin,\n onKeyDownCodeBlock,\n useCodeBlockCombobox,\n useCodeBlockComboboxState,\n useCodeBlockElementState,\n useCodeSyntaxLeaf,\n useToggleCodeBlockButton\n};\n//# sourceMappingURL=index.mjs.map","// src/react/HeadingPlugin.tsx\nimport { Key, toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseHeadingPlugin.ts\nimport {\n createSlatePlugin,\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/constants.ts\nvar HEADING_KEYS = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\"\n};\nvar HEADING_LEVELS = [\n HEADING_KEYS.h1,\n HEADING_KEYS.h2,\n HEADING_KEYS.h3,\n HEADING_KEYS.h4,\n HEADING_KEYS.h5,\n HEADING_KEYS.h6\n];\n\n// src/lib/BaseHeadingPlugin.ts\nvar BaseHeadingPlugin = createTSlatePlugin({\n key: \"heading\",\n options: {\n levels: [1, 2, 3, 4, 5, 6]\n }\n}).extend(({ plugin }) => {\n const {\n options: { levels }\n } = plugin;\n const plugins = [];\n const headingLevels = Array.isArray(levels) ? levels : Array.from({ length: levels || 6 }, (_, i) => i + 1);\n headingLevels.forEach((level) => {\n const plugin2 = createSlatePlugin({\n key: HEADING_LEVELS[level - 1],\n node: { isElement: true },\n parsers: {\n html: {\n deserializer: {\n rules: [\n {\n validNodeName: `H${level}`\n }\n ]\n }\n }\n }\n });\n plugins.push(plugin2);\n });\n return {\n plugins\n };\n});\n\n// src/react/HeadingPlugin.tsx\nvar HeadingPlugin = toPlatePlugin(BaseHeadingPlugin, ({ plugin }) => ({\n plugins: plugin.plugins.map(\n (p) => p.extend(({ editor, type }) => {\n const level = p.key.at(-1);\n if (level > 3) return {};\n return {\n shortcuts: {\n [\"toggleHeading\" + level]: {\n keys: [\n [Key.Mod, Key.Alt, level],\n [Key.Mod, Key.Shift, level]\n ],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleBlock(type);\n }\n }\n }\n };\n })\n )\n}));\n\n// src/react/TocPlugin.tsx\nimport { toPlatePlugin as toPlatePlugin2 } from \"@udecode/plate/react\";\n\n// src/lib/BaseTocPlugin.ts\nimport {\n createTSlatePlugin as createTSlatePlugin2\n} from \"@udecode/plate\";\nvar BaseTocPlugin = createTSlatePlugin2({\n key: \"toc\",\n node: { isElement: true, isVoid: true },\n options: {\n isScroll: true,\n topOffset: 80\n }\n});\n\n// src/lib/utils/isHeading.ts\nvar isHeading = (node) => {\n return node.type && HEADING_LEVELS.includes(node.type);\n};\n\n// src/react/TocPlugin.tsx\nvar TocPlugin = toPlatePlugin2(BaseTocPlugin);\n\n// src/react/hooks/useContentController.ts\nimport React2 from \"react\";\nimport { useEditorRef as useEditorRef2 } from \"@udecode/plate/react\";\n\n// src/react/utils/checkIn.ts\nfunction checkIn(e) {\n const event = window.event;\n const x = Number(event.clientX);\n const y = Number(event.clientY);\n const ele = e.target;\n const div_x = Number(ele.getBoundingClientRect().left);\n const div_x_width = Number(\n ele.getBoundingClientRect().left + ele.clientWidth\n );\n const div_y = Number(ele.getBoundingClientRect().top);\n const div_y_height = Number(\n ele.getBoundingClientRect().top + ele.clientHeight\n );\n if (x > div_x && x < div_x_width && y > div_y && y < div_y_height) {\n return true;\n }\n return false;\n}\n\n// src/react/utils/heightToTop.ts\nvar heightToTop = (ele, editorContentRef) => {\n const root = editorContentRef ? editorContentRef.current : document.body;\n if (!root || !ele) return 0;\n const containerRect = root.getBoundingClientRect();\n const elementRect = ele.getBoundingClientRect();\n const scrollY = root.scrollTop;\n const absoluteElementTop = elementRect.top + scrollY - containerRect.top;\n return absoluteElementTop;\n};\n\n// src/react/hooks/useContentObserver.ts\nimport React from \"react\";\nimport { NodeApi as NodeApi2 } from \"@udecode/plate\";\nimport { useEditorRef, useEditorSelector } from \"@udecode/plate/react\";\n\n// src/internal/getHeadingList.ts\nimport { NodeApi } from \"@udecode/plate\";\nvar headingDepth = {\n [HEADING_KEYS.h1]: 1,\n [HEADING_KEYS.h2]: 2,\n [HEADING_KEYS.h3]: 3,\n [HEADING_KEYS.h4]: 4,\n [HEADING_KEYS.h5]: 5,\n [HEADING_KEYS.h6]: 6\n};\nvar getHeadingList = (editor) => {\n const options = editor.getOptions(BaseTocPlugin);\n if (options.queryHeading) {\n return options.queryHeading(editor);\n }\n const headingList = [];\n const values = editor.api.nodes({\n at: [],\n match: (n) => isHeading(n)\n });\n if (!values) return [];\n Array.from(values, ([node, path]) => {\n const { type } = node;\n const title = NodeApi.string(node);\n const depth = headingDepth[type];\n const id = node.id;\n title && headingList.push({ id, depth, path, title, type });\n });\n return headingList;\n};\n\n// src/react/hooks/useContentObserver.ts\nvar useContentObserver = ({\n editorContentRef,\n isObserve,\n isScroll,\n rootMargin,\n status\n}) => {\n const headingElementsRef = React.useRef({});\n const root = isScroll ? editorContentRef.current : void 0;\n const editor = useEditorRef();\n const headingList = useEditorSelector(getHeadingList, []);\n const [activeId, setActiveId] = React.useState(\"\");\n React.useEffect(() => {\n const callback = (headings) => {\n if (!isObserve) return;\n headingElementsRef.current = headings.reduce((map, headingElement) => {\n map[headingElement.target.id] = headingElement;\n return map;\n }, headingElementsRef.current);\n const visibleHeadings = [];\n Object.keys(headingElementsRef.current).forEach((key) => {\n const headingElement = headingElementsRef.current[key];\n if (headingElement.isIntersecting) visibleHeadings.push(key);\n });\n const lastKey = Object.keys(headingElementsRef.current).pop();\n visibleHeadings.length > 0 && setActiveId(visibleHeadings[0] || lastKey);\n headingElementsRef.current = {};\n };\n const observer = new IntersectionObserver(callback, {\n root,\n rootMargin\n });\n headingList.forEach((item) => {\n const { path } = item;\n const node = NodeApi2.get(editor, path);\n if (!node) return;\n const element = editor.api.toDOMNode(node);\n return element && observer.observe(element);\n });\n return () => {\n observer.disconnect();\n };\n }, [headingList, isObserve, editor, root, rootMargin, status]);\n return { activeId };\n};\n\n// src/react/hooks/useContentController.ts\nvar useContentController = ({\n containerRef,\n isObserve,\n rootMargin,\n topOffset\n}) => {\n const editor = useEditorRef2();\n const [editorContentRef, setEditorContentRef] = React2.useState(containerRef);\n const isScrollRef = React2.useRef(false);\n const isScroll = (editorContentRef.current?.scrollHeight || 0) > (editorContentRef.current?.clientHeight || 0);\n isScrollRef.current = isScroll;\n const scrollContainer = React2.useMemo(() => {\n if (typeof window !== \"object\") return;\n return isScroll ? editorContentRef.current : window;\n }, [isScroll]);\n const [status, setStatus] = React2.useState(0);\n const { activeId } = useContentObserver({\n editorContentRef,\n isObserve,\n isScroll,\n rootMargin,\n status\n });\n const [activeContentId, setActiveContentId] = React2.useState(activeId);\n const onContentScroll = ({\n id,\n behavior = \"instant\",\n el\n }) => {\n setActiveContentId(id);\n if (isScrollRef.current) {\n editorContentRef.current?.scrollTo({\n behavior,\n top: heightToTop(el, editorContentRef) - topOffset\n });\n } else {\n const top = heightToTop(el) - topOffset;\n window.scrollTo({ behavior, top });\n }\n editor.getApi({ key: \"blockSelection\" }).blockSelection?.addSelectedRow?.(id);\n };\n React2.useEffect(() => {\n setEditorContentRef(containerRef);\n }, [containerRef]);\n React2.useEffect(() => {\n setActiveContentId(activeId);\n }, [activeId]);\n React2.useEffect(() => {\n if (!scrollContainer) return;\n const scroll = () => {\n if (isObserve) {\n setStatus(Date.now());\n }\n };\n scrollContainer.addEventListener(\"scroll\", scroll);\n return () => {\n scrollContainer.removeEventListener(\"scroll\", scroll);\n };\n }, [isObserve, scrollContainer]);\n return { activeContentId, onContentScroll };\n};\n\n// src/react/hooks/useTocController.ts\nimport React4 from \"react\";\n\n// src/react/hooks/useTocObserver.ts\nimport React3 from \"react\";\nvar useTocObserver = ({\n activeId,\n isObserve,\n tocRef\n}) => {\n const root = tocRef.current;\n const [visible, setVisible] = React3.useState(true);\n const [offset, setOffset] = React3.useState(0);\n const updateOffset = React3.useCallback(\n (entries) => {\n if (!isObserve) return;\n const [entry] = entries;\n const { boundingClientRect, intersectionRatio, rootBounds } = entry;\n if (!rootBounds) return;\n const halfHeight = (root?.getBoundingClientRect().height || 0) / 2;\n const isAbove = boundingClientRect.top < rootBounds.top;\n const isBelow = boundingClientRect.bottom > rootBounds.bottom;\n const isVisible = intersectionRatio === 1;\n setVisible(isVisible);\n if (!isVisible) {\n const offset2 = isAbove ? boundingClientRect.top - rootBounds.top - halfHeight : isBelow ? boundingClientRect.bottom - rootBounds.bottom + halfHeight : 0;\n setOffset(offset2);\n }\n },\n [isObserve, root]\n );\n React3.useEffect(() => {\n const observer = new IntersectionObserver(updateOffset, {\n root\n });\n const element = root?.querySelectorAll(\"#toc_item_active\")[0];\n if (element) observer.observe(element);\n return () => {\n observer.disconnect();\n };\n }, [root, activeId, updateOffset]);\n return { offset, visible };\n};\n\n// src/react/hooks/useTocController.ts\nvar useTocController = ({\n activeId,\n isObserve,\n tocRef\n}) => {\n const [activeTocId, setActiveTocId] = React4.useState(\"\");\n const { offset, visible } = useTocObserver({\n activeId: activeTocId,\n isObserve,\n tocRef\n });\n React4.useEffect(() => {\n if (!visible) {\n const tocItemWrapper = tocRef.current?.querySelector(\"#toc_wrap\");\n const top = tocItemWrapper?.scrollTop + offset;\n tocItemWrapper?.scrollTo({ behavior: \"instant\", top });\n }\n }, [visible, offset, tocRef]);\n React4.useEffect(() => {\n setActiveTocId(activeId);\n }, [activeId]);\n};\n\n// src/react/hooks/useTocElement.ts\nimport React5 from \"react\";\nimport { NodeApi as NodeApi3 } from \"@udecode/plate\";\nimport {\n useEditorPlugin,\n useEditorSelector as useEditorSelector2,\n useScrollRef\n} from \"@udecode/plate/react\";\nvar useTocElementState = () => {\n const { editor, getOptions } = useEditorPlugin(TocPlugin);\n const { isScroll, topOffset } = getOptions();\n const headingList = useEditorSelector2(getHeadingList, []);\n const containerRef = useScrollRef();\n const onContentScroll = React5.useCallback(\n (el, id, behavior = \"instant\") => {\n if (!containerRef.current) return;\n if (isScroll) {\n containerRef.current?.scrollTo({\n behavior,\n top: heightToTop(el, containerRef) - topOffset\n });\n } else {\n const top = heightToTop(el) - topOffset;\n window.scrollTo({ behavior, top });\n }\n setTimeout(() => {\n editor.getApi({ key: \"blockSelection\" }).blockSelection?.addSelectedRow?.(id);\n }, 0);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isScroll, topOffset]\n );\n return { editor, headingList, onContentScroll };\n};\nvar useTocElement = ({\n editor,\n onContentScroll\n}) => {\n return {\n props: {\n onClick: (e, item, behavior) => {\n e.preventDefault();\n const { id, path } = item;\n const node = NodeApi3.get(editor, path);\n if (!node) return;\n const el = editor.api.toDOMNode(node);\n if (!el) return;\n onContentScroll(el, id, behavior);\n }\n }\n };\n};\n\n// src/react/hooks/useTocSideBar.ts\nimport React6 from \"react\";\nimport { NodeApi as NodeApi4 } from \"@udecode/plate\";\nimport {\n useEditorPlugin as useEditorPlugin2,\n useEditorSelector as useEditorSelector3,\n useScrollRef as useScrollRef2\n} from \"@udecode/plate/react\";\nvar useTocSideBarState = ({\n open = true,\n rootMargin = \"0px 0px 0px 0px\",\n topOffset = 0\n}) => {\n const { editor } = useEditorPlugin2(TocPlugin);\n const headingList = useEditorSelector3(getHeadingList, []);\n const containerRef = useScrollRef2();\n const tocRef = React6.useRef(null);\n const [mouseInToc, setMouseInToc] = React6.useState(false);\n const [isObserve, setIsObserve] = React6.useState(open);\n const { activeContentId, onContentScroll } = useContentController({\n containerRef,\n isObserve,\n rootMargin,\n topOffset\n });\n useTocController({\n activeId: activeContentId,\n isObserve,\n tocRef\n });\n return {\n activeContentId,\n editor,\n headingList,\n mouseInToc,\n open,\n setIsObserve,\n setMouseInToc,\n tocRef,\n onContentScroll\n };\n};\nvar useTocSideBar = ({\n editor,\n mouseInToc,\n open,\n setIsObserve,\n setMouseInToc,\n tocRef,\n onContentScroll\n}) => {\n React6.useEffect(() => {\n if (mouseInToc) {\n setIsObserve(false);\n } else {\n setIsObserve(true);\n }\n }, [mouseInToc]);\n const onContentClick = React6.useCallback(\n (e, item, behavior) => {\n e.preventDefault();\n const { id, path } = item;\n const node = NodeApi4.get(editor, path);\n if (!node) return;\n const el = editor.api.toDOMNode(node);\n if (!el) return;\n onContentScroll({ id, behavior, el });\n },\n [editor, onContentScroll]\n );\n return {\n navProps: {\n ref: tocRef,\n onMouseEnter: () => {\n !mouseInToc && open && setMouseInToc(true);\n },\n onMouseLeave: (e) => {\n if (open) {\n const isIn = checkIn(e);\n isIn !== mouseInToc && setMouseInToc(isIn);\n }\n }\n },\n onContentClick\n };\n};\nexport {\n HeadingPlugin,\n TocPlugin,\n checkIn,\n heightToTop,\n useContentController,\n useContentObserver,\n useTocController,\n useTocElement,\n useTocElementState,\n useTocObserver,\n useTocSideBar,\n useTocSideBarState\n};\n//# sourceMappingURL=index.mjs.map","// src/react/HighlightPlugin.tsx\nimport { Key, toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseHighlightPlugin.ts\nimport { createSlatePlugin } from \"@udecode/plate\";\nvar BaseHighlightPlugin = createSlatePlugin({\n key: \"highlight\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n rules: [\n {\n validNodeName: [\"MARK\"]\n }\n ]\n }\n }\n }\n});\n\n// src/react/HighlightPlugin.tsx\nvar HighlightPlugin = toPlatePlugin(\n BaseHighlightPlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleHighlight: {\n keys: [[Key.Mod, Key.Shift, \"h\"]],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleMark(type);\n }\n }\n }\n })\n);\nexport {\n HighlightPlugin\n};\n//# sourceMappingURL=index.mjs.map","// src/react/IndentPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseIndentPlugin.ts\nimport {\n BaseParagraphPlugin,\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/withIndent.ts\nimport { getInjectMatch } from \"@udecode/plate\";\nvar withIndent = ({\n editor,\n getOptions,\n plugin,\n tf: { normalizeNode }\n}) => {\n return {\n transforms: {\n normalizeNode([node, path]) {\n const { indentMax } = getOptions();\n const element = node;\n const { type } = element;\n const match = getInjectMatch(editor, plugin);\n if (type) {\n if (match(element, path)) {\n if (indentMax && element.indent && element.indent > indentMax) {\n editor.tf.setNodes({ indent: indentMax }, { at: path });\n return;\n }\n } else if (element.indent) {\n editor.tf.unsetNodes(\"indent\", { at: path });\n return;\n }\n }\n return normalizeNode([node, path]);\n }\n }\n };\n};\n\n// src/lib/BaseIndentPlugin.ts\nvar BaseIndentPlugin = createTSlatePlugin({\n key: \"indent\",\n inject: {\n isBlock: true,\n nodeProps: {\n nodeKey: \"indent\",\n styleKey: \"marginLeft\",\n transformNodeValue: ({ getOptions, nodeValue }) => {\n const { offset, unit } = getOptions();\n return nodeValue * offset + unit;\n }\n },\n targetPlugins: [BaseParagraphPlugin.key]\n },\n options: {\n offset: 24,\n unit: \"px\"\n }\n}).overrideEditor(withIndent);\n\n// src/react/onKeyDownIndent.ts\nimport { Hotkeys } from \"@udecode/plate\";\n\n// src/lib/transforms/setIndent.ts\nvar setIndent = (editor, {\n getNodesOptions,\n offset = 1,\n setNodesProps,\n unsetNodesProps = []\n}) => {\n const { nodeKey } = editor.getInjectProps(BaseIndentPlugin);\n const _nodes = editor.api.nodes({\n block: true,\n mode: \"lowest\",\n ...getNodesOptions\n });\n const nodes = Array.from(_nodes);\n editor.tf.withoutNormalizing(() => {\n nodes.forEach(([node, path]) => {\n const blockIndent = node[nodeKey] ?? 0;\n const newIndent = blockIndent + offset;\n const props = setNodesProps?.({ indent: newIndent }) ?? {};\n if (newIndent <= 0) {\n editor.tf.unsetNodes([nodeKey, ...unsetNodesProps], {\n at: path\n });\n } else {\n editor.tf.setNodes({ [nodeKey]: newIndent, ...props }, { at: path });\n }\n });\n });\n};\n\n// src/lib/transforms/indent.ts\nvar indent = (editor, options) => {\n setIndent(editor, { offset: 1, ...options });\n};\n\n// src/lib/transforms/outdent.ts\nvar outdent = (editor, options) => {\n setIndent(editor, { offset: -1, ...options });\n};\n\n// src/react/onKeyDownIndent.ts\nvar onKeyDownIndent = ({\n editor,\n event\n}) => {\n if (event.defaultPrevented) return;\n if (Hotkeys.isTab(editor, event)) {\n event.preventDefault();\n indent(editor);\n }\n if (Hotkeys.isUntab(editor, event)) {\n event.preventDefault();\n outdent(editor);\n }\n};\n\n// src/react/IndentPlugin.tsx\nvar IndentPlugin = toPlatePlugin(BaseIndentPlugin, {\n handlers: {\n onKeyDown: onKeyDownIndent\n }\n});\n\n// src/react/TextIndentPlugin.tsx\nimport { toPlatePlugin as toPlatePlugin2 } from \"@udecode/plate/react\";\n\n// src/lib/BaseTextIndentPlugin.ts\nimport {\n BaseParagraphPlugin as BaseParagraphPlugin2,\n createTSlatePlugin as createTSlatePlugin2\n} from \"@udecode/plate\";\nvar BaseTextIndentPlugin = createTSlatePlugin2({\n key: \"textIndent\",\n inject: {\n isBlock: true,\n nodeProps: {\n nodeKey: \"textIndent\",\n styleKey: \"textIndent\",\n transformNodeValue({ getOptions, nodeValue }) {\n const { offset, unit } = getOptions();\n return nodeValue * offset + unit;\n }\n },\n targetPlugins: [BaseParagraphPlugin2.key]\n },\n options: {\n offset: 24,\n unit: \"px\"\n }\n});\n\n// src/react/TextIndentPlugin.tsx\nvar TextIndentPlugin = toPlatePlugin2(BaseTextIndentPlugin);\n\n// src/react/hooks/useIndentButton.ts\nimport { useEditorRef } from \"@udecode/plate/react\";\nvar useIndentButton = () => {\n const editor = useEditorRef();\n return {\n props: {\n onClick: () => {\n indent(editor);\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/hooks/useOutdentButton.ts\nimport { useEditorRef as useEditorRef2 } from \"@udecode/plate/react\";\nvar useOutdentButton = () => {\n const editor = useEditorRef2();\n return {\n props: {\n onClick: () => {\n outdent(editor);\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\nexport {\n IndentPlugin,\n TextIndentPlugin,\n onKeyDownIndent,\n useIndentButton,\n useOutdentButton\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseIndentPlugin.ts\nimport {\n BaseParagraphPlugin,\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/withIndent.ts\nimport { getInjectMatch } from \"@udecode/plate\";\nvar withIndent = ({\n editor,\n getOptions,\n plugin,\n tf: { normalizeNode }\n}) => {\n return {\n transforms: {\n normalizeNode([node, path]) {\n const { indentMax } = getOptions();\n const element = node;\n const { type } = element;\n const match = getInjectMatch(editor, plugin);\n if (type) {\n if (match(element, path)) {\n if (indentMax && element.indent && element.indent > indentMax) {\n editor.tf.setNodes({ indent: indentMax }, { at: path });\n return;\n }\n } else if (element.indent) {\n editor.tf.unsetNodes(\"indent\", { at: path });\n return;\n }\n }\n return normalizeNode([node, path]);\n }\n }\n };\n};\n\n// src/lib/BaseIndentPlugin.ts\nvar BaseIndentPlugin = createTSlatePlugin({\n key: \"indent\",\n inject: {\n isBlock: true,\n nodeProps: {\n nodeKey: \"indent\",\n styleKey: \"marginLeft\",\n transformNodeValue: ({ getOptions, nodeValue }) => {\n const { offset, unit } = getOptions();\n return nodeValue * offset + unit;\n }\n },\n targetPlugins: [BaseParagraphPlugin.key]\n },\n options: {\n offset: 24,\n unit: \"px\"\n }\n}).overrideEditor(withIndent);\n\n// src/lib/BaseTextIndentPlugin.ts\nimport {\n BaseParagraphPlugin as BaseParagraphPlugin2,\n createTSlatePlugin as createTSlatePlugin2\n} from \"@udecode/plate\";\nvar BaseTextIndentPlugin = createTSlatePlugin2({\n key: \"textIndent\",\n inject: {\n isBlock: true,\n nodeProps: {\n nodeKey: \"textIndent\",\n styleKey: \"textIndent\",\n transformNodeValue({ getOptions, nodeValue }) {\n const { offset, unit } = getOptions();\n return nodeValue * offset + unit;\n }\n },\n targetPlugins: [BaseParagraphPlugin2.key]\n },\n options: {\n offset: 24,\n unit: \"px\"\n }\n});\n\n// src/lib/transforms/setIndent.ts\nvar setIndent = (editor, {\n getNodesOptions,\n offset = 1,\n setNodesProps,\n unsetNodesProps = []\n}) => {\n const { nodeKey } = editor.getInjectProps(BaseIndentPlugin);\n const _nodes = editor.api.nodes({\n block: true,\n mode: \"lowest\",\n ...getNodesOptions\n });\n const nodes = Array.from(_nodes);\n editor.tf.withoutNormalizing(() => {\n nodes.forEach(([node, path]) => {\n const blockIndent = node[nodeKey] ?? 0;\n const newIndent = blockIndent + offset;\n const props = setNodesProps?.({ indent: newIndent }) ?? {};\n if (newIndent <= 0) {\n editor.tf.unsetNodes([nodeKey, ...unsetNodesProps], {\n at: path\n });\n } else {\n editor.tf.setNodes({ [nodeKey]: newIndent, ...props }, { at: path });\n }\n });\n });\n};\n\n// src/lib/transforms/indent.ts\nvar indent = (editor, options) => {\n setIndent(editor, { offset: 1, ...options });\n};\n\n// src/lib/transforms/outdent.ts\nvar outdent = (editor, options) => {\n setIndent(editor, { offset: -1, ...options });\n};\nexport {\n BaseIndentPlugin,\n BaseTextIndentPlugin,\n indent,\n outdent,\n setIndent,\n withIndent\n};\n//# sourceMappingURL=index.mjs.map","// src/react/IndentListPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseIndentListPlugin.ts\nimport {\n BaseParagraphPlugin,\n HtmlPlugin,\n createTSlatePlugin,\n isHtmlBlockElement,\n postCleanHtml,\n traverseHtmlElements\n} from \"@udecode/plate\";\n\n// src/lib/renderIndentListBelowNodes.tsx\nimport React from \"react\";\nimport { clsx } from \"clsx\";\n\n// src/lib/types.ts\nvar ULIST_STYLE_TYPES = [\n \"disc\" /* Disc */,\n \"circle\" /* Circle */,\n \"square\" /* Square */,\n \"disclosure-open\" /* DisclosureOpen */,\n \"disclosure-closed\" /* DisclosureClosed */\n];\n\n// src/lib/renderIndentListBelowNodes.tsx\nvar renderIndentListBelowNodes = (injectProps) => {\n const { element } = injectProps;\n const listStyleType = element[BaseIndentListPlugin.key];\n const listStart = element[INDENT_LIST_KEYS.listStart];\n if (listStyleType) {\n let className = clsx(`slate-${BaseIndentListPlugin.key}-${listStyleType}`);\n const style = {\n listStyleType,\n margin: 0,\n padding: 0,\n position: \"relative\"\n };\n return function Component({ children, ...props }) {\n const { editor } = props;\n const { listStyleTypes = {} } = editor.getOptions(BaseIndentListPlugin);\n let listOptions = listStyleTypes[listStyleType];\n let isOrdered = true;\n if (listOptions) {\n isOrdered = !!listOptions.isOrdered;\n } else {\n if (ULIST_STYLE_TYPES.includes(listStyleType)) {\n isOrdered = false;\n }\n listOptions = {};\n }\n className = isOrdered ? clsx(className, \"slate-ol\") : clsx(className, \"slate-ul\");\n const List = isOrdered ? \"ol\" : \"ul\";\n const { liComponent: Li, markerComponent: Marker = () => null } = listOptions;\n return /* @__PURE__ */ React.createElement(List, { className, style, start: listStart }, /* @__PURE__ */ React.createElement(Marker, { ...props }), Li ? /* @__PURE__ */ React.createElement(Li, { ...props }, children) : /* @__PURE__ */ React.createElement(\"li\", null, children));\n };\n }\n};\n\n// src/lib/withIndentList.ts\nimport {\n NodeApi as NodeApi5,\n PathApi as PathApi3\n} from \"@udecode/plate\";\nimport { BaseIndentPlugin as BaseIndentPlugin7 } from \"@udecode/plate-indent\";\n\n// src/lib/normalizers/normalizeFirstIndentListStart.ts\nimport { isDefined } from \"@udecode/plate\";\nvar normalizeFirstIndentListStart = (editor, [node, path]) => {\n if (isDefined(node[INDENT_LIST_KEYS.listStart])) {\n editor.tf.unsetNodes(INDENT_LIST_KEYS.listStart, { at: path });\n return true;\n }\n};\n\n// src/lib/normalizers/normalizeIndentListNotIndented.ts\nimport { isDefined as isDefined2 } from \"@udecode/plate\";\nimport { BaseIndentPlugin } from \"@udecode/plate-indent\";\nvar normalizeIndentListNotIndented = (editor, [node, path]) => {\n if (!isDefined2(node[BaseIndentPlugin.key]) && (node[BaseIndentListPlugin.key] || node[INDENT_LIST_KEYS.listStart])) {\n editor.tf.unsetNodes(\n [BaseIndentListPlugin.key, INDENT_LIST_KEYS.listStart],\n {\n at: path\n }\n );\n return true;\n }\n};\n\n// src/lib/normalizers/normalizeIndentListStart.ts\nimport {\n NodeApi as NodeApi3\n} from \"@udecode/plate\";\n\n// src/lib/queries/getNextIndentList.ts\nimport {\n NodeApi,\n PathApi\n} from \"@udecode/plate\";\n\n// src/lib/queries/getSiblingIndentList.ts\nimport {\n isDefined as isDefined3\n} from \"@udecode/plate\";\nimport { BaseIndentPlugin as BaseIndentPlugin2 } from \"@udecode/plate-indent\";\nvar getSiblingIndentList = (editor, [node, path], {\n breakOnEqIndentNeqListStyleType = true,\n breakOnListRestart = false,\n breakOnLowerIndent = true,\n breakQuery,\n eqIndent = true,\n getNextEntry,\n getPreviousEntry,\n query\n}) => {\n if (!getPreviousEntry && !getNextEntry) return;\n const getSiblingEntry = getNextEntry ?? getPreviousEntry;\n let nextEntry = getSiblingEntry([node, path]);\n while (true) {\n if (!nextEntry) return;\n const [nextNode, nextPath] = nextEntry;\n const indent = node[BaseIndentPlugin2.key];\n const nextIndent = nextNode[BaseIndentPlugin2.key];\n if (breakQuery?.(nextNode, node)) return;\n if (!isDefined3(nextIndent)) return;\n if (breakOnListRestart) {\n if (getPreviousEntry && node[INDENT_LIST_KEYS.listRestart]) {\n return;\n }\n if (getNextEntry && nextNode[INDENT_LIST_KEYS.listRestart]) {\n return;\n }\n }\n if (breakOnLowerIndent && nextIndent < indent) return;\n if (breakOnEqIndentNeqListStyleType && nextIndent === indent && nextNode[BaseIndentListPlugin.key] !== node[BaseIndentListPlugin.key])\n return;\n let valid = !query || query(nextNode, node);\n if (valid) {\n valid = !eqIndent || nextIndent === indent;\n if (valid) return [nextNode, nextPath];\n }\n nextEntry = getSiblingEntry(nextEntry);\n }\n};\n\n// src/lib/queries/getNextIndentList.ts\nvar getNextIndentList = (editor, entry, options) => {\n return getSiblingIndentList(editor, entry, {\n getNextEntry: ([, currPath]) => {\n const nextPath = PathApi.next(currPath);\n const nextNode = NodeApi.get(editor, nextPath);\n if (!nextNode) return;\n return [nextNode, nextPath];\n },\n ...options,\n getPreviousEntry: void 0\n });\n};\n\n// src/lib/queries/getPreviousIndentList.ts\nimport {\n NodeApi as NodeApi2,\n PathApi as PathApi2\n} from \"@udecode/plate\";\nvar getPreviousIndentList = (editor, entry, options) => {\n return getSiblingIndentList(editor, entry, {\n getPreviousEntry: ([, currPath]) => {\n const prevPath = PathApi2.previous(currPath);\n if (!prevPath) return;\n const prevNode = NodeApi2.get(editor, prevPath);\n if (!prevNode) return;\n return [prevNode, prevPath];\n },\n ...options,\n getNextEntry: void 0\n });\n};\n\n// src/lib/normalizers/normalizeIndentListStart.ts\nvar normalizeNextIndentListStart = (editor, entry, prevEntry) => {\n const [node, path] = entry;\n const [prevNode] = prevEntry ?? [null];\n const prevListStart = prevNode?.[INDENT_LIST_KEYS.listStart] ?? 1;\n const currListStart = node[INDENT_LIST_KEYS.listStart] ?? 1;\n const restart = node[INDENT_LIST_KEYS.listRestart];\n const listStart = restart == null ? prevListStart + 1 : restart;\n if (currListStart !== listStart) {\n editor.tf.setNodes(\n { [INDENT_LIST_KEYS.listStart]: listStart },\n { at: path }\n );\n return true;\n }\n return false;\n};\nvar normalizeIndentListStart = (editor, entry, options) => {\n return editor.tf.withoutNormalizing(() => {\n const [node] = entry;\n const listStyleType = node[BaseIndentListPlugin.key];\n if (!listStyleType) return;\n let normalized = false;\n let prevEntry = getPreviousIndentList(editor, entry, options);\n if (!prevEntry) {\n normalized = normalizeFirstIndentListStart(editor, entry);\n if (!normalized) return;\n }\n let normalizeNext = true;\n let currEntry = entry;\n while (normalizeNext) {\n normalizeNext = normalizeNextIndentListStart(editor, currEntry, prevEntry) || normalized;\n if (normalizeNext) normalized = true;\n prevEntry = [NodeApi3.get(editor, currEntry[1]), currEntry[1]];\n currEntry = getNextIndentList(editor, currEntry, options);\n if (!currEntry) break;\n }\n return normalized;\n });\n};\n\n// src/lib/normalizers/withDeleteBackwardIndentList.ts\nimport { NodeApi as NodeApi4, isDefined as isDefined4 } from \"@udecode/plate\";\n\n// src/lib/transforms/indentList.ts\nimport { setIndent } from \"@udecode/plate-indent\";\nvar indentList = (editor, { listStyleType = \"disc\" /* Disc */, ...options } = {}) => {\n setIndent(editor, {\n offset: 1,\n setNodesProps: () => ({\n [BaseIndentListPlugin.key]: listStyleType\n }),\n ...options\n });\n};\nvar indentTodo = (editor, { listStyleType = \"disc\" /* Disc */, ...options } = {}) => {\n setIndent(editor, {\n offset: 1,\n setNodesProps: () => ({\n [BaseIndentListPlugin.key]: listStyleType,\n [INDENT_LIST_KEYS.checked]: false\n }),\n ...options\n });\n};\n\n// src/lib/transforms/outdentList.ts\nimport { setIndent as setIndent2 } from \"@udecode/plate-indent\";\nvar outdentList = (editor, options = {}) => {\n setIndent2(editor, {\n offset: -1,\n unsetNodesProps: [BaseIndentListPlugin.key, INDENT_LIST_KEYS.checked],\n ...options\n });\n};\n\n// src/lib/transforms/setIndentListNode.ts\nimport { BaseIndentPlugin as BaseIndentPlugin3 } from \"@udecode/plate-indent\";\nvar setIndentListNode = (editor, {\n at,\n indent = 0,\n listStyleType = \"disc\" /* Disc */\n}) => {\n const newIndent = indent || indent + 1;\n editor.tf.setNodes(\n {\n [BaseIndentListPlugin.key]: listStyleType,\n [BaseIndentPlugin3.key]: newIndent\n },\n { at }\n );\n};\nvar setIndentTodoNode = (editor, {\n at,\n indent = 0,\n listStyleType = INDENT_LIST_KEYS.todo\n}) => {\n const newIndent = indent || indent + 1;\n editor.tf.setNodes(\n {\n [BaseIndentListPlugin.key]: listStyleType,\n [BaseIndentPlugin3.key]: newIndent,\n [INDENT_LIST_KEYS.checked]: false\n },\n { at }\n );\n};\n\n// src/lib/transforms/setIndentListNodes.ts\nimport { BaseIndentPlugin as BaseIndentPlugin4 } from \"@udecode/plate-indent\";\nvar setIndentListNodes = (editor, entries, {\n listStyleType = \"disc\" /* Disc */\n}) => {\n editor.tf.withoutNormalizing(() => {\n entries.forEach((entry) => {\n const [node, path] = entry;\n let indent = node[BaseIndentPlugin4.key] ?? 0;\n indent = node[BaseIndentListPlugin.key] || node.hasOwnProperty(INDENT_LIST_KEYS.checked) ? indent : indent + 1;\n if (listStyleType === \"todo\") {\n editor.tf.unsetNodes(BaseIndentListPlugin.key, { at: path });\n setIndentTodoNode(editor, {\n at: path,\n indent,\n listStyleType\n });\n return;\n }\n editor.tf.unsetNodes(INDENT_LIST_KEYS.checked, { at: path });\n setIndentListNode(editor, {\n at: path,\n indent,\n listStyleType\n });\n });\n });\n};\n\n// src/lib/transforms/setIndentListSiblingNodes.ts\nimport { BaseIndentPlugin as BaseIndentPlugin5 } from \"@udecode/plate-indent\";\n\n// src/lib/queries/getIndentListSiblings.ts\nvar getIndentListSiblings = (editor, entry, {\n current = true,\n next = true,\n previous = true,\n ...options\n} = {}) => {\n const siblings = [];\n const node = entry[0];\n if (!node[BaseIndentListPlugin.key] && !node.hasOwnProperty(INDENT_LIST_KEYS.checked)) {\n return siblings;\n }\n let iterEntry = entry;\n if (previous) {\n while (true) {\n const prevEntry = getPreviousIndentList(editor, iterEntry, options);\n if (!prevEntry) break;\n siblings.push(prevEntry);\n iterEntry = prevEntry;\n }\n }\n if (current) {\n siblings.push(entry);\n }\n if (next) {\n iterEntry = entry;\n while (true) {\n const nextEntry = getNextIndentList(editor, iterEntry, options);\n if (!nextEntry) break;\n siblings.push(nextEntry);\n iterEntry = nextEntry;\n }\n }\n return siblings;\n};\n\n// src/lib/transforms/setIndentListSiblingNodes.ts\nvar setIndentListSiblingNodes = (editor, entry, {\n getSiblingIndentListOptions,\n listStyleType = \"disc\" /* Disc */\n}) => {\n editor.tf.withoutNormalizing(() => {\n const siblings = getIndentListSiblings(\n editor,\n entry,\n getSiblingIndentListOptions\n );\n siblings.forEach(([node, path]) => {\n if (listStyleType === INDENT_LIST_KEYS.todo) {\n editor.tf.unsetNodes(BaseIndentListPlugin.key, { at: path });\n setIndentTodoNode(editor, {\n at: path,\n indent: node[BaseIndentPlugin5.key],\n listStyleType\n });\n } else {\n editor.tf.unsetNodes(INDENT_LIST_KEYS.checked, { at: path });\n setIndentListNode(editor, {\n at: path,\n indent: node[BaseIndentPlugin5.key],\n listStyleType\n });\n }\n });\n });\n};\n\n// src/lib/transforms/toggleIndentList.ts\nimport { BaseIndentPlugin as BaseIndentPlugin6 } from \"@udecode/plate-indent\";\n\n// src/lib/queries/areEqListStyleType.ts\nvar areEqListStyleType = (editor, entries, {\n listStyleType = \"disc\" /* Disc */\n}) => {\n let eqListStyleType = true;\n for (const entry of entries) {\n const [block] = entry;\n if (listStyleType === INDENT_LIST_KEYS.todo) {\n if (!block.hasOwnProperty(INDENT_LIST_KEYS.checked)) {\n eqListStyleType = false;\n break;\n }\n continue;\n }\n if (!block[BaseIndentListPlugin.key] || block[BaseIndentListPlugin.key] !== listStyleType) {\n eqListStyleType = false;\n break;\n }\n }\n return eqListStyleType;\n};\n\n// src/lib/transforms/toggleIndentListSet.ts\nvar toggleIndentListSet = (editor, [node, _path], { listStyleType = \"disc\" /* Disc */, ...options }) => {\n if (node.hasOwnProperty(INDENT_LIST_KEYS.checked) || node[BaseIndentListPlugin.key])\n return;\n if (listStyleType === \"todo\") {\n indentTodo(editor, {\n listStyleType,\n ...options\n });\n } else {\n indentList(editor, {\n listStyleType,\n ...options\n });\n }\n return true;\n};\n\n// src/lib/transforms/toggleIndentListUnset.ts\nvar toggleIndentListUnset = (editor, [node, path], {\n listStyleType = \"disc\" /* Disc */\n}) => {\n if (listStyleType === INDENT_LIST_KEYS.todo && node.hasOwnProperty(INDENT_LIST_KEYS.checked)) {\n editor.tf.unsetNodes(INDENT_LIST_KEYS.checked, { at: path });\n outdentList(editor, { listStyleType });\n return true;\n }\n if (listStyleType === node[BaseIndentListPlugin.key]) {\n editor.tf.unsetNodes([BaseIndentListPlugin.key], {\n at: path\n });\n outdentList(editor, { listStyleType });\n return true;\n }\n};\n\n// src/lib/transforms/toggleIndentList.ts\nvar toggleIndentList = (editor, options, getSiblingIndentListOptions) => {\n const { listStyleType } = options;\n const { getSiblingIndentListOptions: _getSiblingIndentListOptions } = editor.getOptions(BaseIndentListPlugin);\n if (editor.api.isCollapsed()) {\n const entry = editor.api.block();\n if (!entry) return;\n if (toggleIndentListSet(editor, entry, { listStyleType })) {\n return;\n }\n if (toggleIndentListUnset(editor, entry, { listStyleType })) {\n return;\n }\n setIndentListSiblingNodes(editor, entry, {\n getSiblingIndentListOptions: {\n ..._getSiblingIndentListOptions,\n ...getSiblingIndentListOptions\n },\n listStyleType\n });\n return;\n }\n if (editor.api.isExpanded()) {\n const _entries = editor.api.nodes({ block: true });\n const entries = [..._entries];\n const eqListStyleType = areEqListStyleType(editor, entries, {\n listStyleType\n });\n if (eqListStyleType) {\n editor.tf.withoutNormalizing(() => {\n entries.forEach((entry) => {\n const [node, path] = entry;\n const indent = node[BaseIndentPlugin6.key];\n editor.tf.unsetNodes(BaseIndentListPlugin.key, { at: path });\n if (indent > 1) {\n editor.tf.setNodes(\n { [BaseIndentPlugin6.key]: indent - 1 },\n { at: path }\n );\n } else {\n editor.tf.unsetNodes(\n [BaseIndentPlugin6.key, INDENT_LIST_KEYS.checked],\n {\n at: path\n }\n );\n }\n });\n });\n return;\n }\n setIndentListNodes(editor, entries, { listStyleType });\n }\n};\n\n// src/lib/normalizers/withDeleteBackwardIndentList.ts\nvar withDeleteBackwardIndentList = ({ editor, tf: { deleteBackward } }) => {\n return {\n transforms: {\n deleteBackward(unit) {\n const nodeEntry = editor.api.above();\n if (!nodeEntry) return deleteBackward(unit);\n const listNode = nodeEntry[0];\n if (editor.api.isCollapsed() && NodeApi4.string(listNode))\n return deleteBackward(unit);\n if (isDefined4(listNode[BaseIndentListPlugin.key])) {\n return outdentList(editor);\n }\n return deleteBackward(unit);\n }\n }\n };\n};\n\n// src/lib/normalizers/withInsertBreakIndentList.ts\nimport { isDefined as isDefined5 } from \"@udecode/plate\";\nvar withInsertBreakIndentList = ({ editor, tf: { insertBreak } }) => {\n return {\n transforms: {\n insertBreak() {\n const nodeEntry = editor.api.above();\n if (!nodeEntry) return insertBreak();\n const [node, path] = nodeEntry;\n if (!isDefined5(node[BaseIndentListPlugin.key]) || node[BaseIndentListPlugin.key] !== INDENT_LIST_KEYS.todo || editor.api.isExpanded() || !editor.api.isEnd(editor.selection?.focus, path)) {\n return insertBreak();\n }\n editor.tf.withoutNormalizing(() => {\n insertBreak();\n const newEntry = editor.api.above();\n if (newEntry) {\n editor.tf.setNodes(\n {\n checked: false\n },\n { at: newEntry[1] }\n );\n }\n });\n }\n }\n };\n};\n\n// src/lib/withNormalizeIndentList.ts\nvar withNormalizeIndentList = ({\n editor,\n getOptions,\n tf: { normalizeNode }\n}) => {\n return {\n transforms: {\n normalizeNode([node, path]) {\n const normalized = editor.tf.withoutNormalizing(() => {\n if (normalizeIndentListNotIndented(editor, [node, path])) return true;\n if (normalizeIndentListStart(\n editor,\n [node, path],\n getOptions().getSiblingIndentListOptions\n ))\n return true;\n });\n if (normalized) return;\n return normalizeNode([node, path]);\n }\n }\n };\n};\n\n// src/lib/withIndentList.ts\nvar withIndentList = (ctx) => {\n const {\n editor,\n getOptions,\n tf: { apply }\n } = ctx;\n return {\n transforms: {\n ...withNormalizeIndentList(ctx).transforms,\n ...withDeleteBackwardIndentList(ctx).transforms,\n ...withInsertBreakIndentList(ctx).transforms,\n apply(operation) {\n const { path } = operation;\n const { getSiblingIndentListOptions } = getOptions();\n let nodeBefore = null;\n let targetPath = null;\n if (operation.type === \"set_node\") {\n nodeBefore = NodeApi5.get(editor, path);\n }\n if (operation.type === \"insert_node\") {\n const listStyleType = operation.node[BaseIndentListPlugin.key];\n if (listStyleType && [\"lower-roman\", \"upper-roman\"].includes(\n listStyleType\n )) {\n const prevNodeEntry = getPreviousIndentList(\n editor,\n [operation.node, path],\n {\n breakOnEqIndentNeqListStyleType: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n }\n );\n if (prevNodeEntry) {\n const prevListStyleType = prevNodeEntry[0][BaseIndentListPlugin.key];\n if (prevListStyleType === \"lower-alpha\" /* LowerAlpha */ && listStyleType === \"lower-roman\" /* LowerRoman */) {\n operation.node[BaseIndentListPlugin.key] = \"lower-alpha\" /* LowerAlpha */;\n } else if (prevListStyleType === \"upper-alpha\" /* UpperAlpha */ && listStyleType === \"upper-roman\" /* UpperRoman */) {\n operation.node[BaseIndentListPlugin.key] = \"upper-alpha\" /* UpperAlpha */;\n }\n }\n }\n }\n let nextIndentListPathRef = null;\n if (operation.type === \"merge_node\") {\n const prevPath = PathApi3.previous(operation.path);\n const { properties } = operation;\n if (prevPath) {\n const prevNode = NodeApi5.get(editor, prevPath);\n if (prevNode?.[BaseIndentListPlugin.key]) {\n targetPath = prevPath;\n }\n }\n if (properties[BaseIndentListPlugin.key]) {\n const node = NodeApi5.get(editor, path);\n if (node) {\n const nextNodeEntryBefore = getNextIndentList(\n editor,\n [node, path],\n getSiblingIndentListOptions\n );\n if (nextNodeEntryBefore) {\n nextIndentListPathRef = editor.api.pathRef(\n nextNodeEntryBefore[1]\n );\n }\n }\n }\n } else if (operation.type === \"remove_node\") {\n const nextPath = PathApi3.next(operation.path);\n const nextNode = NodeApi5.get(editor, nextPath);\n const prevPath = PathApi3.previous(operation.path);\n const prevNode = prevPath ? NodeApi5.get(editor, prevPath) : null;\n if (prevNode?.[BaseIndentListPlugin.key] && nextNode?.[BaseIndentListPlugin.key]) {\n targetPath = operation.path;\n }\n }\n if (operation.type === \"split_node\" && operation.properties[BaseIndentListPlugin.key] && operation.properties[INDENT_LIST_KEYS.listRestart]) {\n const listReStart = operation.properties[INDENT_LIST_KEYS.listRestart];\n operation.properties[INDENT_LIST_KEYS.listStart] = listReStart + 1;\n operation.properties[INDENT_LIST_KEYS.listRestart] = void 0;\n const node = NodeApi5.get(editor, path);\n if (node) {\n const nextNodeEntryBefore = getNextIndentList(\n editor,\n [node, path],\n getSiblingIndentListOptions\n );\n if (nextNodeEntryBefore) {\n nextIndentListPathRef = editor.api.pathRef(\n nextNodeEntryBefore[1]\n );\n }\n }\n }\n apply(operation);\n if (operation.type === \"split_node\" && nextIndentListPathRef) {\n const nextPath = nextIndentListPathRef.unref();\n if (nextPath) {\n const nextNode = NodeApi5.get(editor, nextPath);\n if (nextNode) {\n normalizeIndentListStart(\n editor,\n [nextNode, nextPath],\n getSiblingIndentListOptions\n );\n }\n }\n }\n if ((operation.type === \"merge_node\" || operation.type === \"remove_node\") && targetPath) {\n const targetNode = NodeApi5.get(editor, operation.path);\n if (targetNode?.[BaseIndentListPlugin.key]) {\n normalizeIndentListStart(\n editor,\n [targetNode, targetPath],\n getSiblingIndentListOptions\n );\n }\n }\n if (operation.type === \"merge_node\" && nextIndentListPathRef) {\n const nextPath = nextIndentListPathRef.unref();\n if (nextPath) {\n const nextNode = NodeApi5.get(editor, nextPath);\n if (nextNode) {\n normalizeIndentListStart(\n editor,\n [nextNode, nextPath],\n getSiblingIndentListOptions\n );\n }\n }\n }\n if (nodeBefore && operation.type === \"set_node\") {\n const prevListStyleType = operation.properties[BaseIndentListPlugin.key];\n const listStyleType = operation.newProperties[BaseIndentListPlugin.key];\n if (prevListStyleType && !listStyleType) {\n const node = NodeApi5.get(editor, path);\n if (!node) return;\n const nextNodeEntry = getNextIndentList(\n editor,\n [nodeBefore, path],\n getSiblingIndentListOptions\n );\n if (!nextNodeEntry) return;\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n if ((prevListStyleType || listStyleType) && prevListStyleType !== listStyleType) {\n const node = NodeApi5.get(editor, path);\n if (!node) return;\n let nextNodeEntry = getNextIndentList(\n editor,\n [nodeBefore, path],\n getSiblingIndentListOptions\n );\n if (nextNodeEntry) {\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n nextNodeEntry = getNextIndentList(\n editor,\n [node, path],\n getSiblingIndentListOptions\n );\n if (nextNodeEntry) {\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n }\n const prevIndent = operation.properties[BaseIndentPlugin7.key];\n const indent = operation.newProperties[BaseIndentPlugin7.key];\n if (prevIndent !== indent) {\n const node = NodeApi5.get(editor, path);\n if (!node) return;\n let prevNodeEntry = getPreviousIndentList(\n editor,\n [nodeBefore, path],\n {\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n }\n );\n if (prevNodeEntry) {\n normalizeIndentListStart(\n editor,\n prevNodeEntry,\n getSiblingIndentListOptions\n );\n }\n prevNodeEntry = getPreviousIndentList(\n editor,\n [node, path],\n {\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n }\n );\n if (prevNodeEntry) {\n normalizeIndentListStart(\n editor,\n prevNodeEntry,\n getSiblingIndentListOptions\n );\n }\n let nextNodeEntry = getNextIndentList(\n editor,\n [nodeBefore, path],\n {\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n }\n );\n if (nextNodeEntry) {\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n nextNodeEntry = getNextIndentList(editor, [node, path], {\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n });\n if (nextNodeEntry) {\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n }\n }\n }\n }\n };\n};\n\n// src/lib/BaseIndentListPlugin.ts\nvar INDENT_LIST_KEYS = {\n checked: \"checked\",\n listRestart: \"listRestart\",\n listStart: \"listStart\",\n todo: \"todo\"\n};\nvar BaseIndentListPlugin = createTSlatePlugin({\n key: \"listStyleType\",\n inject: {\n plugins: {\n [HtmlPlugin.key]: {\n parser: {\n transformData: ({ data }) => {\n const document = new DOMParser().parseFromString(data, \"text/html\");\n const { body } = document;\n traverseHtmlElements(body, (element) => {\n if (element.tagName === \"LI\") {\n const { childNodes } = element;\n const liChildren = [];\n childNodes.forEach((child) => {\n if (isHtmlBlockElement(child)) {\n liChildren.push(...child.childNodes);\n } else {\n liChildren.push(child);\n }\n });\n element.replaceChildren(...liChildren);\n return false;\n }\n return true;\n });\n return postCleanHtml(body.innerHTML);\n }\n }\n }\n }\n },\n options: {\n getListStyleType: (element) => element.style.listStyleType\n },\n parsers: {\n html: {\n deserializer: {\n isElement: true,\n parse: ({ editor, element, getOptions }) => {\n const parent = element.parentElement;\n if (parent && (parent.classList.contains(\"slate-ol\") || parent.classList.contains(\"slate-ul\"))) {\n return;\n }\n return {\n // gdoc uses aria-level attribute\n indent: Number(element.getAttribute(\"aria-level\")),\n listStyleType: getOptions().getListStyleType?.(element),\n type: editor.getType(BaseParagraphPlugin)\n };\n },\n rules: [\n {\n validNodeName: \"LI\"\n }\n ]\n }\n }\n },\n render: {\n belowNodes: renderIndentListBelowNodes\n }\n}).overrideEditor(withIndentList);\n\n// src/lib/queries/someIndentList.ts\nvar someIndentList = (editor, type) => {\n return !!editor.selection && editor.api.some({\n match: (n) => {\n const isHasProperty = n.hasOwnProperty(INDENT_LIST_KEYS.checked);\n if (isHasProperty) {\n return false;\n }\n const list = n[BaseIndentListPlugin.key];\n return Array.isArray(type) ? type.includes(list) : list === type;\n }\n });\n};\n\n// src/lib/queries/someIndentTodo.ts\nvar someIndentTodo = (editor) => {\n return editor.api.some({\n at: editor.selection,\n match: (n) => {\n const list = n[BaseIndentListPlugin.key];\n const isHasProperty = n.hasOwnProperty(INDENT_LIST_KEYS.checked);\n return n.type === \"p\" && isHasProperty && list === INDENT_LIST_KEYS.todo;\n }\n });\n};\n\n// src/react/onKeyDownIndentList.ts\nimport { isHotkey } from \"@udecode/plate\";\nvar onKeyDownIndentList = ({\n editor,\n event\n}) => {\n if (event.defaultPrevented) return;\n if (!editor.selection) return;\n const entry = editor.api.block();\n if (!entry) return;\n const node = entry[0];\n const listStyleType = node[IndentListPlugin.key];\n if (!listStyleType) return;\n if (isHotkey(\"Enter\", event) && editor.api.isEmpty(editor.selection, { block: true }) && node.indent) {\n outdentList(editor);\n event.stopPropagation();\n event.preventDefault();\n }\n};\n\n// src/react/IndentListPlugin.tsx\nvar IndentListPlugin = toPlatePlugin(BaseIndentListPlugin, {\n handlers: {\n onKeyDown: onKeyDownIndentList\n }\n});\n\n// src/react/hooks/useIndentListToolbarButton.ts\nimport { useEditorRef, useEditorSelector } from \"@udecode/plate/react\";\nvar useIndentListToolbarButtonState = ({\n nodeType = \"disc\" /* Disc */\n} = {}) => {\n const pressed = useEditorSelector(\n (editor) => someIndentList(editor, nodeType),\n [nodeType]\n );\n return {\n nodeType,\n pressed\n };\n};\nvar useIndentListToolbarButton = ({\n nodeType,\n pressed\n}) => {\n const editor = useEditorRef();\n return {\n props: {\n pressed,\n onClick: () => {\n toggleIndentList(editor, {\n listStyleType: nodeType\n });\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/hooks/useIndentTodoListElement.ts\nimport { useEditorRef as useEditorRef2, useReadOnly } from \"@udecode/plate/react\";\nvar useIndentTodoListElementState = ({\n element\n}) => {\n const editor = useEditorRef2();\n const { checked } = element;\n const readOnly = useReadOnly();\n return {\n checked,\n editor,\n element,\n readOnly\n };\n};\nvar useIndentTodoListElement = (state) => {\n const { checked, editor, element, readOnly } = state;\n return {\n checkboxProps: {\n checked: !!checked,\n onCheckedChange: (value) => {\n if (readOnly) return;\n const path = editor.api.findPath(element);\n if (!path) return;\n editor.tf.setNodes({ checked: value }, { at: path });\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/hooks/useIndentTodoToolbarButton.ts\nimport { useEditorRef as useEditorRef3, useEditorSelector as useEditorSelector2 } from \"@udecode/plate/react\";\nvar useIndentTodoToolBarButtonState = ({\n nodeType = \"disc\" /* Disc */\n} = {}) => {\n const pressed = useEditorSelector2(\n (editor) => someIndentTodo(editor),\n [nodeType]\n );\n return {\n nodeType,\n pressed\n };\n};\nvar useIndentTodoToolBarButton = ({\n nodeType,\n pressed\n}) => {\n const editor = useEditorRef3();\n return {\n props: {\n pressed,\n onClick: () => {\n toggleIndentList(editor, {\n listStyleType: nodeType\n });\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\nexport {\n IndentListPlugin,\n onKeyDownIndentList,\n useIndentListToolbarButton,\n useIndentListToolbarButtonState,\n useIndentTodoListElement,\n useIndentTodoListElementState,\n useIndentTodoToolBarButton,\n useIndentTodoToolBarButtonState\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/NormalizeTypesPlugin.ts\nimport {\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/withNormalizeTypes.ts\nimport {\n ElementApi,\n NodeApi\n} from \"@udecode/plate\";\nvar withNormalizeTypes = ({\n editor,\n getOptions,\n tf: { normalizeNode }\n}) => ({\n transforms: {\n normalizeNode([currentNode, currentPath]) {\n const { rules, onError } = getOptions();\n if (currentPath.length === 0) {\n const endCurrentNormalizationPass = rules.some(\n ({ path, strictType, type }) => {\n const node = NodeApi.get(editor, path);\n if (node) {\n if (strictType && ElementApi.isElement(node) && node.type !== strictType) {\n const { children, ...props } = editor.api.create.block({\n type: strictType\n });\n editor.tf.setNodes(props, {\n at: path\n });\n return true;\n }\n } else {\n try {\n editor.tf.insertNodes(\n editor.api.create.block({ type: strictType ?? type }),\n { at: path }\n );\n return true;\n } catch (error) {\n onError?.(error);\n }\n }\n return false;\n }\n );\n if (endCurrentNormalizationPass) {\n return;\n }\n }\n return normalizeNode([currentNode, currentPath]);\n }\n }\n});\n\n// src/lib/NormalizeTypesPlugin.ts\nvar NormalizeTypesPlugin = createTSlatePlugin({\n key: \"normalizeTypes\",\n options: {\n rules: []\n }\n}).overrideEditor(withNormalizeTypes);\n\n// src/lib/RemoveEmptyNodesPlugin.ts\nimport { createTSlatePlugin as createTSlatePlugin2 } from \"@udecode/plate\";\n\n// src/lib/withRemoveEmptyNodes.ts\nimport { ElementApi as ElementApi2, NodeApi as NodeApi2 } from \"@udecode/plate\";\nimport castArray from \"lodash/castArray.js\";\nvar withRemoveEmptyNodes = ({\n editor,\n getOptions,\n tf: { normalizeNode }\n}) => ({\n transforms: {\n normalizeNode([node, path]) {\n const types = castArray(getOptions().types ?? []);\n if (ElementApi2.isElement(node) && node.type && types.includes(node.type) && NodeApi2.string(node) === \"\") {\n editor.tf.removeNodes({ at: path });\n return;\n }\n normalizeNode([node, path]);\n }\n }\n});\n\n// src/lib/RemoveEmptyNodesPlugin.ts\nvar RemoveEmptyNodesPlugin = createTSlatePlugin2({\n key: \"removeEmptyNodes\"\n}).overrideEditor(withRemoveEmptyNodes);\nexport {\n NormalizeTypesPlugin,\n RemoveEmptyNodesPlugin,\n withNormalizeTypes,\n withRemoveEmptyNodes\n};\n//# sourceMappingURL=index.mjs.map","// src/createVirtualElement.ts\nvar getDefaultBoundingClientRect = () => ({\n bottom: 9999,\n height: 0,\n left: -9999,\n right: 9999,\n top: -9999,\n width: 0,\n x: 0,\n y: 0\n});\nvar createVirtualElement = () => ({\n getBoundingClientRect: getDefaultBoundingClientRect\n});\n\n// src/hooks/useFloatingToolbar.ts\nimport React from \"react\";\nimport { mergeProps } from \"@udecode/plate\";\nimport {\n useEditorReadOnly,\n useEditorRef,\n useEditorSelector,\n useFocused,\n useOnClickOutside\n} from \"@udecode/plate/react\";\nvar useFloatingToolbarState = ({\n editorId,\n floatingOptions,\n focusedEditorId,\n hideToolbar,\n showWhenReadOnly\n}) => {\n const editor = useEditorRef();\n const selectionExpanded = useEditorSelector(\n () => editor.api.isExpanded(),\n []\n );\n const selectionText = useEditorSelector(() => editor.api.string(), []);\n const readOnly = useEditorReadOnly();\n const focused = useFocused();\n const [open, setOpen] = React.useState(false);\n const [waitForCollapsedSelection, setWaitForCollapsedSelection] = React.useState(false);\n const [mousedown, setMousedown] = React.useState(false);\n const floating = useVirtualFloating(\n mergeProps(\n {\n getBoundingClientRect: () => getSelectionBoundingClientRect(editor),\n open,\n onOpenChange: setOpen\n },\n floatingOptions\n )\n );\n return {\n editorId,\n floating,\n focused,\n focusedEditorId,\n hideToolbar,\n mousedown,\n open,\n readOnly,\n selectionExpanded,\n selectionText,\n setMousedown,\n setOpen,\n setWaitForCollapsedSelection,\n showWhenReadOnly,\n waitForCollapsedSelection\n };\n};\nvar useFloatingToolbar = ({\n editorId,\n floating,\n focusedEditorId,\n hideToolbar,\n mousedown,\n open,\n readOnly,\n selectionExpanded,\n selectionText,\n setMousedown,\n setOpen,\n setWaitForCollapsedSelection,\n showWhenReadOnly,\n waitForCollapsedSelection\n}) => {\n React.useEffect(() => {\n if (!(editorId === focusedEditorId)) {\n setWaitForCollapsedSelection(true);\n }\n if (!selectionExpanded) {\n setWaitForCollapsedSelection(false);\n }\n }, [\n editorId,\n focusedEditorId,\n selectionExpanded,\n setWaitForCollapsedSelection\n ]);\n React.useEffect(() => {\n const mouseup = () => setMousedown(false);\n const mousedown2 = () => setMousedown(true);\n document.addEventListener(\"mouseup\", mouseup);\n document.addEventListener(\"mousedown\", mousedown2);\n return () => {\n document.removeEventListener(\"mouseup\", mouseup);\n document.removeEventListener(\"mousedown\", mousedown2);\n };\n }, []);\n React.useEffect(() => {\n if (!selectionExpanded || !selectionText || mousedown && !open || hideToolbar || readOnly && !showWhenReadOnly) {\n setOpen(false);\n } else if (selectionText && selectionExpanded && (!waitForCollapsedSelection || readOnly)) {\n setOpen(true);\n }\n }, [\n setOpen,\n editorId,\n focusedEditorId,\n hideToolbar,\n showWhenReadOnly,\n selectionExpanded,\n selectionText,\n mousedown,\n waitForCollapsedSelection,\n open,\n readOnly\n ]);\n const { update } = floating;\n useEditorSelector(() => {\n update?.();\n }, [update]);\n const clickOutsideRef = useOnClickOutside(\n () => {\n setOpen(false);\n },\n {\n ignoreClass: \"ignore-click-outside/toolbar\"\n }\n );\n return {\n clickOutsideRef,\n hidden: !open,\n props: {\n style: floating.style\n },\n ref: floating.refs.setFloating\n };\n};\n\n// src/hooks/useVirtualFloating.ts\nimport React2 from \"react\";\nimport { useIsomorphicLayoutEffect } from \"@udecode/plate/react\";\n\n// src/libs/floating-ui.ts\nimport {\n FloatingArrow,\n FloatingDelayGroup,\n FloatingFocusManager,\n FloatingNode,\n FloatingOverlay,\n FloatingPortal,\n FloatingTree,\n arrow,\n autoPlacement,\n autoUpdate,\n computePosition,\n detectOverflow,\n flip,\n getOverflowAncestors,\n hide,\n inline,\n limitShift,\n offset,\n safePolygon,\n shift,\n size,\n useClick,\n useDelayGroup,\n useDelayGroupContext,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingPortalNode,\n useFloatingTree,\n useFocus,\n useHover,\n useId,\n useInteractions,\n useListNavigation,\n useRole,\n useTypeahead\n} from \"@floating-ui/react\";\n\n// src/hooks/useVirtualFloating.ts\nvar useVirtualFloating = ({\n getBoundingClientRect: getBoundingClientRect2 = getDefaultBoundingClientRect,\n ...floatingOptions\n}) => {\n const virtualElementRef = React2.useRef(createVirtualElement());\n const [visible, setVisible] = React2.useState(true);\n const floatingResult = useFloating({\n // update on scroll and resize\n whileElementsMounted: autoUpdate,\n ...floatingOptions\n });\n const { middlewareData, refs, strategy, update, x, y } = floatingResult;\n useIsomorphicLayoutEffect(() => {\n virtualElementRef.current.getBoundingClientRect = getBoundingClientRect2;\n }, [getBoundingClientRect2, update]);\n useIsomorphicLayoutEffect(() => {\n refs.setReference(virtualElementRef.current);\n }, [refs]);\n useIsomorphicLayoutEffect(() => {\n if (!middlewareData?.hide) return;\n const { referenceHidden } = middlewareData.hide;\n setVisible(!referenceHidden);\n }, [middlewareData.hide]);\n return {\n ...floatingResult,\n style: {\n display: floatingOptions.open === false ? \"none\" : void 0,\n left: x ?? 0,\n position: strategy,\n top: y ?? 0,\n visibility: visible ? void 0 : \"hidden\"\n },\n virtualElementRef\n };\n};\n\n// src/utils/getBoundingClientRect.ts\nimport {\n PathApi\n} from \"@udecode/plate\";\n\n// src/utils/makeClientRect.ts\nvar makeClientRect = ({\n bottom,\n left,\n right,\n top\n}) => {\n const width = right - left;\n const height = bottom - top;\n const props = {\n bottom,\n height,\n left,\n right,\n top,\n width,\n x: left,\n y: top\n };\n return {\n ...props,\n toJSON: () => props\n };\n};\n\n// src/utils/mergeClientRects.ts\nvar mergeClientRects = (clientRects) => {\n if (clientRects.length === 0) {\n throw new Error(\"clientRects should not be empty\");\n }\n return makeClientRect({\n bottom: Math.max(...clientRects.map((rect) => rect.bottom)),\n left: Math.min(...clientRects.map((rect) => rect.left)),\n right: Math.max(...clientRects.map((rect) => rect.right)),\n top: Math.min(...clientRects.map((rect) => rect.top))\n });\n};\n\n// src/utils/getBoundingClientRect.ts\nvar getBoundingClientRect = (editor, at) => {\n const atRanges = (() => {\n if (!at) return [editor.selection].filter(Boolean);\n const atArray = Array.isArray(at) && !PathApi.isPath(at) ? at : [at];\n return atArray.map((location) => editor.api.range(location));\n })();\n const clientRects = atRanges.map((range) => editor.api.toDOMRange(range)?.getBoundingClientRect()).filter(Boolean);\n if (clientRects.length === 0) return void 0;\n return mergeClientRects(clientRects);\n};\n\n// src/utils/createVirtualRef.ts\nvar createVirtualRef = (editor, at, {\n fallbackRect\n} = {}) => ({\n current: {\n getBoundingClientRect: () => {\n const rect = getBoundingClientRect(editor, at) || fallbackRect;\n if (!rect) {\n throw new Error(\n \"Could not get the bounding client rect of the location. Please provide a fallbackRect.\"\n );\n }\n return rect;\n }\n }\n});\n\n// src/utils/getDOMSelectionBoundingClientRect.ts\nvar getDOMSelectionBoundingClientRect = () => {\n const domSelection = window.getSelection();\n if (!domSelection || domSelection.rangeCount < 1) {\n return getDefaultBoundingClientRect();\n }\n const domRange = domSelection.getRangeAt(0);\n return domRange.getBoundingClientRect();\n};\n\n// src/utils/getRangeBoundingClientRect.ts\nvar getRangeBoundingClientRect = (editor, at) => {\n if (!at) return getDefaultBoundingClientRect();\n const domRange = editor.api.toDOMRange(at);\n if (!domRange) return getDefaultBoundingClientRect();\n return domRange.getBoundingClientRect();\n};\n\n// src/utils/getSelectionBoundingClientRect.ts\nvar getSelectionBoundingClientRect = (editor) => {\n if (editor.api.isExpanded()) {\n return getRangeBoundingClientRect(editor, editor.selection);\n }\n return getDefaultBoundingClientRect();\n};\nexport {\n FloatingArrow,\n FloatingDelayGroup,\n FloatingFocusManager,\n FloatingNode,\n FloatingOverlay,\n FloatingPortal,\n FloatingTree,\n arrow,\n autoPlacement,\n autoUpdate,\n computePosition,\n createVirtualElement,\n createVirtualRef,\n detectOverflow,\n flip,\n getBoundingClientRect,\n getDOMSelectionBoundingClientRect,\n getDefaultBoundingClientRect,\n getOverflowAncestors,\n getRangeBoundingClientRect,\n getSelectionBoundingClientRect,\n hide,\n inline,\n limitShift,\n makeClientRect,\n mergeClientRects,\n offset,\n safePolygon,\n shift,\n size,\n useClick,\n useDelayGroup,\n useDelayGroupContext,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingPortalNode,\n useFloatingToolbar,\n useFloatingToolbarState,\n useFloatingTree,\n useFocus,\n useHover,\n useId,\n useInteractions,\n useListNavigation,\n useRole,\n useTypeahead,\n useVirtualFloating\n};\n//# sourceMappingURL=index.mjs.map","// src/react/LinkPlugin.tsx\nimport { bindFirst } from \"@udecode/plate\";\nimport { toTPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseLinkPlugin.ts\nimport {\n createTSlatePlugin,\n getEditorPlugin,\n isUrl\n} from \"@udecode/plate\";\nimport {\n RemoveEmptyNodesPlugin,\n withRemoveEmptyNodes\n} from \"@udecode/plate-normalizers\";\n\n// src/lib/utils/getLinkAttributes.ts\nimport { sanitizeUrl } from \"@udecode/plate\";\nvar getLinkAttributes = (editor, link) => {\n const { allowedSchemes, dangerouslySkipSanitization, defaultLinkAttributes } = editor.getOptions({ key: \"a\" });\n const attributes = { ...defaultLinkAttributes };\n const href = dangerouslySkipSanitization ? link.url : sanitizeUrl(link.url, { allowedSchemes }) || void 0;\n if (href !== void 0) {\n attributes.href = href;\n }\n if (\"target\" in link) {\n attributes.target = link.target;\n }\n return attributes;\n};\n\n// src/lib/utils/createLinkNode.ts\nvar createLinkNode = (editor, { children, target, text = \"\", url }) => {\n const type = editor.getType(BaseLinkPlugin);\n return {\n children: children ?? [{ text }],\n target,\n type,\n url\n };\n};\n\n// src/lib/utils/encodeUrlIfNeeded.ts\nvar encodeUrlIfNeeded = (url) => {\n try {\n const isEncoded = url !== decodeURIComponent(url);\n return isEncoded ? url : encodeURI(url);\n } catch (error) {\n if (error instanceof URIError) {\n return url;\n }\n throw error;\n }\n};\n\n// src/lib/utils/safeDecodeUrl.ts\nvar safeDecodeUrl = (url) => {\n try {\n return decodeURI(url);\n } catch (error) {\n if (error instanceof URIError) {\n return url;\n }\n throw error;\n }\n};\n\n// src/lib/utils/validateUrl.ts\nimport { sanitizeUrl as sanitizeUrl2 } from \"@udecode/plate\";\nvar validateUrl = (editor, url) => {\n const { allowedSchemes, dangerouslySkipSanitization, isUrl: isUrl2 } = editor.getOptions(BaseLinkPlugin);\n if (isUrl2 && !isUrl2(url)) return false;\n if (!dangerouslySkipSanitization && !sanitizeUrl2(url, {\n allowedSchemes,\n permitInvalid: true\n }))\n return false;\n return true;\n};\n\n// src/lib/withLink.ts\nimport {\n PathApi,\n RangeApi as RangeApi2\n} from \"@udecode/plate\";\n\n// src/lib/transforms/insertLink.ts\nvar insertLink = (editor, createLinkNodeOptions, options) => {\n editor.tf.insertNodes(\n [createLinkNode(editor, createLinkNodeOptions)],\n options\n );\n};\n\n// src/lib/transforms/unwrapLink.ts\nimport {\n ElementApi\n} from \"@udecode/plate\";\nvar unwrapLink = (editor, options) => {\n return editor.tf.withoutNormalizing(() => {\n if (options?.split) {\n const linkAboveAnchor = editor.api.above({\n at: editor.selection?.anchor,\n match: { type: editor.getType(BaseLinkPlugin) }\n });\n if (linkAboveAnchor) {\n editor.tf.splitNodes({\n at: editor.selection?.anchor,\n match: (n) => ElementApi.isElement(n) && n.type === editor.getType(BaseLinkPlugin)\n });\n unwrapLink(editor, {\n at: editor.selection?.anchor\n });\n return true;\n }\n const linkAboveFocus = editor.api.above({\n at: editor.selection?.focus,\n match: { type: editor.getType(BaseLinkPlugin) }\n });\n if (linkAboveFocus) {\n editor.tf.splitNodes({\n at: editor.selection?.focus,\n match: (n) => ElementApi.isElement(n) && n.type === editor.getType(BaseLinkPlugin)\n });\n unwrapLink(editor, {\n at: editor.selection?.focus\n });\n return true;\n }\n }\n editor.tf.unwrapNodes({\n match: { type: editor.getType(BaseLinkPlugin) },\n ...options\n });\n });\n};\n\n// src/lib/transforms/upsertLink.ts\nimport {\n NodeApi,\n RangeApi,\n isDefined\n} from \"@udecode/plate\";\n\n// src/lib/transforms/upsertLinkText.ts\nvar upsertLinkText = (editor, { text }) => {\n const newLink = editor.api.above({\n match: { type: editor.getType(BaseLinkPlugin) }\n });\n if (newLink) {\n const [newLinkNode, newLinkPath] = newLink;\n if (text?.length && text !== editor.api.string(newLinkPath)) {\n const firstText = newLinkNode.children[0];\n editor.tf.replaceNodes(\n { ...firstText, text },\n {\n at: newLinkPath,\n children: true,\n select: true\n }\n );\n }\n }\n};\n\n// src/lib/transforms/wrapLink.ts\nvar wrapLink = (editor, { target, url, ...options }) => {\n editor.tf.wrapNodes(\n {\n children: [],\n target,\n type: editor.getType(BaseLinkPlugin),\n url\n },\n { split: true, ...options }\n );\n};\n\n// src/lib/transforms/upsertLink.ts\nvar upsertLink = (editor, {\n insertNodesOptions,\n insertTextInLink,\n skipValidation = false,\n target,\n text,\n url\n}) => {\n const at = editor.selection;\n if (!at) return;\n const linkAbove = editor.api.above({\n at,\n match: { type: editor.getType(BaseLinkPlugin) }\n });\n if (insertTextInLink && linkAbove) {\n editor.tf.insertText(url);\n return true;\n }\n if (!skipValidation && !validateUrl(editor, url)) return;\n if (isDefined(text) && text.length === 0) {\n text = url;\n }\n if (linkAbove) {\n if (url !== linkAbove[0]?.url || target !== linkAbove[0]?.target) {\n editor.tf.setNodes(\n { target, url },\n {\n at: linkAbove[1]\n }\n );\n }\n upsertLinkText(editor, { target, text, url });\n return true;\n }\n const linkEntry = editor.api.node({\n at,\n match: { type: editor.getType(BaseLinkPlugin) }\n });\n const [linkNode, linkPath] = linkEntry ?? [];\n let shouldReplaceText = false;\n if (linkPath && text?.length) {\n const linkText = editor.api.string(linkPath);\n if (text !== linkText) {\n shouldReplaceText = true;\n }\n }\n if (RangeApi.isExpanded(at)) {\n if (linkAbove) {\n unwrapLink(editor, {\n at: linkAbove[1]\n });\n } else {\n unwrapLink(editor, {\n split: true\n });\n }\n wrapLink(editor, {\n target,\n url\n });\n upsertLinkText(editor, { target, text, url });\n return true;\n }\n if (shouldReplaceText) {\n editor.tf.removeNodes({\n at: linkPath\n });\n }\n const props = NodeApi.extractProps(linkNode ?? {});\n const path = editor.selection?.focus.path;\n if (!path) return;\n const leaf = NodeApi.leaf(editor, path);\n if (!text?.length) {\n text = url;\n }\n insertLink(\n editor,\n {\n ...props,\n children: [\n {\n ...leaf,\n text\n }\n ],\n target,\n url\n },\n insertNodesOptions\n );\n return true;\n};\n\n// src/lib/withLink.ts\nvar withLink = ({\n editor,\n getOptions,\n tf: { apply, insertBreak, insertData, insertText, normalizeNode },\n type\n}) => {\n const wrapLink2 = () => {\n const { getUrlHref, isUrl: isUrl2, rangeBeforeOptions } = getOptions();\n editor.tf.withoutNormalizing(() => {\n const selection = editor.selection;\n let beforeWordRange = editor.api.range(\"before\", selection, {\n before: rangeBeforeOptions\n });\n if (!beforeWordRange) {\n beforeWordRange = editor.api.range(\"start\", editor.selection);\n }\n if (!beforeWordRange) return;\n const hasLink = editor.api.some({\n at: beforeWordRange,\n match: { type }\n });\n if (hasLink) return;\n let beforeWordText = editor.api.string(beforeWordRange);\n beforeWordText = getUrlHref?.(beforeWordText) ?? beforeWordText;\n if (!isUrl2(beforeWordText)) return;\n editor.tf.select(beforeWordRange);\n upsertLink(editor, {\n url: beforeWordText\n });\n editor.tf.collapse({ edge: \"end\" });\n });\n };\n return {\n transforms: {\n apply(operation) {\n if (operation.type === \"set_selection\") {\n const range = operation.newProperties;\n if (range?.focus && range.anchor && RangeApi2.isCollapsed(range)) {\n const entry = editor.api.above({\n at: range,\n match: { type }\n });\n if (entry) {\n const [, path] = entry;\n let newPoint;\n if (editor.api.isStart(range.focus, path)) {\n newPoint = editor.api.end(path, { previous: true });\n }\n if (editor.api.isEnd(range.focus, path)) {\n newPoint = editor.api.start(path, { next: true });\n }\n if (newPoint) {\n operation.newProperties = {\n anchor: newPoint,\n focus: newPoint\n };\n }\n }\n }\n }\n apply(operation);\n },\n insertBreak() {\n if (!editor.api.isCollapsed()) return insertBreak();\n wrapLink2();\n insertBreak();\n },\n insertData(data) {\n const { getUrlHref, keepSelectedTextOnPaste } = getOptions();\n const text = data.getData(\"text/plain\");\n const textHref = getUrlHref?.(text);\n if (text) {\n const value = textHref || text;\n const inserted = upsertLink(editor, {\n insertTextInLink: true,\n text: keepSelectedTextOnPaste ? void 0 : value,\n url: value\n });\n if (inserted) return;\n }\n insertData(data);\n },\n insertText(text) {\n if (text === \" \" && editor.api.isCollapsed()) {\n wrapLink2();\n }\n insertText(text);\n },\n normalizeNode([node, path]) {\n if (node.type === type) {\n const range = editor.selection;\n if (range && editor.api.isCollapsed() && editor.api.isEnd(range.focus, path)) {\n const nextPoint = editor.api.start(path, { next: true });\n if (nextPoint) {\n editor.tf.select(nextPoint);\n } else {\n const nextPath = PathApi.next(path);\n editor.tf.insertNodes({ text: \"\" }, { at: nextPath });\n editor.tf.select(nextPath);\n }\n }\n }\n normalizeNode([node, path]);\n }\n }\n };\n};\n\n// src/lib/BaseLinkPlugin.ts\nvar BaseLinkPlugin = createTSlatePlugin({\n key: \"a\",\n node: {\n dangerouslyAllowAttributes: [\"target\"],\n isElement: true,\n isInline: true\n },\n options: {\n allowedSchemes: [\"http\", \"https\", \"mailto\", \"tel\"],\n dangerouslySkipSanitization: false,\n defaultLinkAttributes: {},\n isUrl,\n keepSelectedTextOnPaste: true,\n rangeBeforeOptions: {\n afterMatch: true,\n matchBlockStart: true,\n matchString: \" \",\n skipInvalid: true\n }\n }\n}).overrideEditor(withLink).overrideEditor(\n ({ editor, type }) => withRemoveEmptyNodes(\n getEditorPlugin(\n editor,\n RemoveEmptyNodesPlugin.configure({\n options: { types: type }\n })\n )\n )\n).extend(({ editor, type }) => ({\n node: {\n props: ({ element }) => ({\n nodeProps: getLinkAttributes(editor, element)\n })\n },\n parsers: {\n html: {\n deserializer: {\n parse: ({ element }) => {\n const url = element.getAttribute(\"href\");\n if (url && validateUrl(editor, url)) {\n return {\n target: element.getAttribute(\"target\") || \"_blank\",\n type,\n url\n };\n }\n },\n rules: [\n {\n validNodeName: \"A\"\n }\n ]\n }\n }\n }\n}));\n\n// src/react/LinkPlugin.tsx\nvar LinkPlugin = toTPlatePlugin(BaseLinkPlugin, {\n options: {\n isEditing: false,\n mode: \"\",\n mouseDown: false,\n newTab: false,\n openEditorId: null,\n text: \"\",\n triggerFloatingLinkHotkeys: \"meta+k, ctrl+k\",\n updated: false,\n url: \"\"\n }\n}).extendEditorApi(({ editor }) => ({\n link: {\n getAttributes: bindFirst(getLinkAttributes, editor)\n }\n})).extendEditorApi(({ setOptions }) => ({\n floatingLink: {\n hide: () => {\n setOptions({\n isEditing: false,\n mode: \"\",\n mouseDown: false,\n newTab: false,\n openEditorId: null,\n text: \"\",\n updated: false,\n url: \"\"\n });\n },\n reset: () => {\n setOptions({\n isEditing: false,\n mode: \"\",\n mouseDown: false,\n newTab: false,\n text: \"\",\n updated: false,\n url: \"\"\n });\n },\n show: (mode, editorId) => {\n setOptions({\n isEditing: false,\n mode,\n openEditorId: editorId\n });\n }\n }\n})).extendOptions(({ getOptions }) => ({\n isOpen: (editorId) => getOptions().openEditorId === editorId\n}));\n\n// src/react/components/useLink.ts\nimport { useEditorRef } from \"@udecode/plate/react\";\nvar useLink = ({ element }) => {\n const editor = useEditorRef();\n return {\n props: {\n ...getLinkAttributes(editor, element),\n // quick fix: hovering with href loses the editor focus\n onMouseOver: (e) => {\n e.stopPropagation();\n }\n }\n };\n};\n\n// src/react/components/useLinkToolbarButton.ts\nimport { useEditorRef as useEditorRef2, useEditorSelector } from \"@udecode/plate/react\";\nvar useLinkToolbarButtonState = () => {\n const pressed = useEditorSelector(\n (editor) => !!editor?.selection && editor.api.some({\n match: { type: editor.getType(LinkPlugin) }\n }),\n []\n );\n return {\n pressed\n };\n};\nvar useLinkToolbarButton = (state) => {\n const editor = useEditorRef2();\n return {\n props: {\n pressed: state.pressed,\n onClick: () => {\n triggerFloatingLink(editor, { focused: true });\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/components/FloatingLink/FloatingLinkNewTabInput.tsx\nimport React from \"react\";\nimport {\n createPrimitiveComponent,\n useEditorPlugin\n} from \"@udecode/plate/react\";\nvar useFloatingLinkNewTabInputState = () => {\n const { getOptions, useOption } = useEditorPlugin(LinkPlugin);\n const updated = useOption(\"updated\");\n const ref = React.useRef(null);\n const [checked, setChecked] = React.useState(getOptions().newTab);\n React.useEffect(() => {\n if (ref.current && updated) {\n setTimeout(() => {\n ref.current?.focus();\n }, 0);\n }\n }, [updated]);\n return {\n checked,\n ref,\n setChecked\n };\n};\nvar useFloatingLinkNewTabInput = ({\n checked,\n ref,\n setChecked\n}) => {\n const { setOption } = useEditorPlugin(LinkPlugin);\n const onChange = React.useCallback(\n (e) => {\n setChecked(e.target.checked);\n setOption(\"newTab\", e.target.checked);\n },\n [setOption, setChecked]\n );\n return {\n props: {\n checked,\n type: \"checkbox\",\n onChange\n },\n ref\n };\n};\nvar FloatingLinkNewTabInput = createPrimitiveComponent(\"input\")({\n propsHook: useFloatingLinkNewTabInput,\n stateHook: useFloatingLinkNewTabInputState\n});\n\n// src/react/components/FloatingLink/FloatingLinkUrlInput.tsx\nimport React2 from \"react\";\nimport {\n createPrimitiveComponent as createPrimitiveComponent2,\n useEditorPlugin as useEditorPlugin2\n} from \"@udecode/plate/react\";\nvar useFloatingLinkUrlInputState = () => {\n const { getOptions, useOption } = useEditorPlugin2(LinkPlugin);\n const updated = useOption(\"updated\");\n const ref = React2.useRef(null);\n const focused = React2.useRef(false);\n React2.useEffect(() => {\n if (ref.current && updated) {\n setTimeout(() => {\n const input = ref.current;\n if (!input) return;\n if (focused.current) return;\n focused.current = true;\n const url = getOptions().url;\n input.focus();\n input.value = url ? safeDecodeUrl(url) : \"\";\n }, 0);\n }\n }, [getOptions, updated]);\n return {\n ref\n };\n};\nvar useFloatingLinkUrlInput = (state) => {\n const { getOptions, setOption } = useEditorPlugin2(LinkPlugin);\n const onChange = React2.useCallback(\n (e) => {\n const url = encodeUrlIfNeeded(e.target.value);\n setOption(\"url\", url);\n },\n [setOption]\n );\n return {\n props: {\n defaultValue: getOptions().url,\n onChange\n },\n ref: state.ref\n };\n};\nvar FloatingLinkUrlInput = createPrimitiveComponent2(\"input\")({\n propsHook: useFloatingLinkUrlInput,\n stateHook: useFloatingLinkUrlInputState\n});\n\n// src/react/components/FloatingLink/LinkOpenButton.tsx\nimport React3 from \"react\";\nimport {\n createPrimitiveComponent as createPrimitiveComponent3,\n useEditorRef as useEditorRef3,\n useEditorSelection\n} from \"@udecode/plate/react\";\nvar useLinkOpenButtonState = () => {\n const editor = useEditorRef3();\n const selection = useEditorSelection();\n const entry = React3.useMemo(\n () => editor.api.node({\n match: { type: editor.getType(LinkPlugin) }\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [editor, selection]\n );\n if (!entry) {\n return {};\n }\n const [element] = entry;\n return {\n element\n };\n};\nvar useLinkOpenButton = ({ element }) => {\n const editor = useEditorRef3();\n if (!element) {\n return {\n props: {}\n };\n }\n const linkAttributes = getLinkAttributes(editor, element);\n return {\n props: {\n ...linkAttributes,\n \"aria-label\": \"Open link in a new tab\",\n target: \"_blank\",\n onMouseOver: (e) => {\n e.stopPropagation();\n }\n }\n };\n};\nvar LinkOpenButton = createPrimitiveComponent3(\"a\")({\n propsHook: useLinkOpenButton,\n stateHook: useLinkOpenButtonState\n});\n\n// src/react/components/FloatingLink/useFloatingLinkEdit.ts\nimport React4 from \"react\";\nimport {\n useComposedRef,\n useEditorPlugin as useEditorPlugin6,\n useEditorReadOnly,\n useEditorVersion,\n useHotkeys as useHotkeys3,\n useOnClickOutside\n} from \"@udecode/plate/react\";\nimport {\n getDOMSelectionBoundingClientRect,\n getRangeBoundingClientRect\n} from \"@udecode/plate-floating\";\n\n// src/react/utils/triggerFloatingLinkEdit.ts\nimport { getEditorPlugin as getEditorPlugin2 } from \"@udecode/plate\";\nvar triggerFloatingLinkEdit = (editor) => {\n const { setOption } = getEditorPlugin2(editor, LinkPlugin);\n const entry = editor.api.node({\n match: { type: editor.getType(LinkPlugin) }\n });\n if (!entry) return;\n const [link, path] = entry;\n let text = editor.api.string(path);\n setOption(\"url\", link.url);\n setOption(\"newTab\", link.target === \"_blank\");\n if (text === link.url) {\n text = \"\";\n }\n setOption(\"text\", text);\n setOption(\"isEditing\", true);\n return true;\n};\n\n// src/react/components/FloatingLink/useFloatingLinkEnter.ts\nimport { useEditorPlugin as useEditorPlugin3, useHotkeys } from \"@udecode/plate/react\";\n\n// src/react/transforms/submitFloatingLink.ts\nimport { getEditorPlugin as getEditorPlugin3 } from \"@udecode/plate\";\nvar submitFloatingLink = (editor) => {\n if (!editor.selection) return;\n const { api, getOptions } = getEditorPlugin3(editor, LinkPlugin);\n const {\n forceSubmit,\n newTab,\n text,\n transformInput,\n url: inputUrl\n } = getOptions();\n const url = transformInput ? transformInput(inputUrl) ?? \"\" : inputUrl;\n if (!forceSubmit && !validateUrl(editor, url)) return;\n const target = newTab ? \"_blank\" : void 0;\n api.floatingLink.hide();\n upsertLink(editor, {\n skipValidation: true,\n target,\n text,\n url\n });\n setTimeout(() => {\n editor.tf.focus({ at: editor.selection });\n }, 0);\n return true;\n};\n\n// src/react/components/FloatingLink/useFloatingLinkEnter.ts\nvar useFloatingLinkEnter = () => {\n const { editor, useOption } = useEditorPlugin3(LinkPlugin);\n const open = useOption(\"isOpen\", editor.id);\n useHotkeys(\n \"*\",\n (e) => {\n if (e.key !== \"Enter\") return;\n if (submitFloatingLink(editor)) {\n e.preventDefault();\n }\n },\n {\n enableOnFormTags: [\"INPUT\"],\n enabled: open\n },\n []\n );\n};\n\n// src/react/components/FloatingLink/useFloatingLinkEscape.ts\nimport { useEditorPlugin as useEditorPlugin4, useHotkeys as useHotkeys2 } from \"@udecode/plate/react\";\nvar useFloatingLinkEscape = () => {\n const { api, editor, getOptions, useOption } = useEditorPlugin4(LinkPlugin);\n const open = useOption(\"isOpen\", editor.id);\n useHotkeys2(\n \"escape\",\n (e) => {\n const { isEditing, mode } = getOptions();\n if (!mode) return;\n e.preventDefault();\n if (mode === \"edit\" && isEditing) {\n api.floatingLink.show(\"edit\", editor.id);\n editor.tf.focus({ at: editor.selection });\n return;\n }\n if (mode === \"insert\") {\n editor.tf.focus({ at: editor.selection });\n }\n api.floatingLink.hide();\n },\n {\n enableOnContentEditable: true,\n enableOnFormTags: [\"INPUT\"],\n enabled: open\n },\n []\n );\n};\n\n// src/react/components/FloatingLink/useVirtualFloatingLink.ts\nimport { useEditorPlugin as useEditorPlugin5 } from \"@udecode/plate/react\";\nimport {\n useVirtualFloating\n} from \"@udecode/plate-floating\";\nvar useVirtualFloatingLink = ({\n editorId,\n ...floatingOptions\n}) => {\n const { setOption } = useEditorPlugin5(LinkPlugin);\n return useVirtualFloating({\n onOpenChange: (open) => setOption(\"openEditorId\", open ? editorId : null),\n ...floatingOptions\n });\n};\n\n// src/react/components/FloatingLink/useFloatingLinkEdit.ts\nvar useFloatingLinkEditState = ({\n floatingOptions\n} = {}) => {\n const { editor, getOptions, type, useOption } = useEditorPlugin6(LinkPlugin);\n const { triggerFloatingLinkHotkeys } = getOptions();\n const readOnly = useEditorReadOnly();\n const isEditing = useOption(\"isEditing\");\n const version = useEditorVersion();\n const mode = useOption(\"mode\");\n const open = useOption(\"isOpen\", editor.id);\n const getBoundingClientRect = React4.useCallback(() => {\n const entry = editor.api.above({\n match: { type }\n });\n if (entry) {\n const [, path] = entry;\n return getRangeBoundingClientRect(editor, {\n anchor: editor.api.start(path),\n focus: editor.api.end(path)\n });\n }\n return getDOMSelectionBoundingClientRect();\n }, [editor, type]);\n const isOpen = open && mode === \"edit\";\n const floating = useVirtualFloatingLink({\n editorId: editor.id,\n getBoundingClientRect,\n open: isOpen,\n ...floatingOptions\n });\n return {\n editor,\n floating,\n isEditing,\n isOpen,\n readOnly,\n triggerFloatingLinkHotkeys,\n versionEditor: version\n };\n};\nvar useFloatingLinkEdit = ({\n editor,\n floating,\n triggerFloatingLinkHotkeys,\n versionEditor\n}) => {\n const { api, getOptions } = useEditorPlugin6(LinkPlugin);\n React4.useEffect(() => {\n if (editor.selection && editor.api.some({\n match: { type: editor.getType(LinkPlugin) }\n })) {\n api.floatingLink.show(\"edit\", editor.id);\n floating.update();\n return;\n }\n if (getOptions().mode === \"edit\") {\n api.floatingLink.hide();\n }\n }, [editor, versionEditor, floating.update]);\n useHotkeys3(\n triggerFloatingLinkHotkeys,\n (e) => {\n if (getOptions().mode === \"edit\" && triggerFloatingLinkEdit(editor)) {\n e.preventDefault();\n }\n },\n {\n enableOnContentEditable: true\n },\n []\n );\n useFloatingLinkEnter();\n useFloatingLinkEscape();\n const clickOutsideRef = useOnClickOutside(() => {\n if (!getOptions().isEditing) return;\n api.floatingLink.hide();\n });\n return {\n editButtonProps: {\n onClick: () => {\n triggerFloatingLinkEdit(editor);\n }\n },\n props: {\n style: {\n ...floating.style,\n zIndex: 50\n }\n },\n ref: useComposedRef(\n floating.refs.setFloating,\n clickOutsideRef\n ),\n unlinkButtonProps: {\n onClick: () => {\n unwrapLink(editor);\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/components/FloatingLink/useFloatingLinkInsert.ts\nimport React5 from \"react\";\nimport {\n useComposedRef as useComposedRef2,\n useEditorPlugin as useEditorPlugin7,\n useEditorReadOnly as useEditorReadOnly2,\n useFocused,\n useHotkeys as useHotkeys4,\n useOnClickOutside as useOnClickOutside2\n} from \"@udecode/plate/react\";\nimport {\n getDOMSelectionBoundingClientRect as getDOMSelectionBoundingClientRect2\n} from \"@udecode/plate-floating\";\n\n// src/react/utils/triggerFloatingLinkInsert.ts\nimport { getEditorPlugin as getEditorPlugin4 } from \"@udecode/plate\";\nvar triggerFloatingLinkInsert = (editor, {\n focused\n} = {}) => {\n const { api, getOptions, setOption, type } = getEditorPlugin4(\n editor,\n LinkPlugin\n );\n const { mode } = getOptions();\n if (mode) return;\n if (!focused) return;\n if (editor.api.isAt({ blocks: true })) return;\n const hasLink = editor.api.some({\n match: { type }\n });\n if (hasLink) return;\n setOption(\"text\", editor.api.string(editor.selection));\n api.floatingLink.show(\"insert\", editor.id);\n return true;\n};\n\n// src/react/components/FloatingLink/useFloatingLinkInsert.ts\nvar useFloatingLinkInsertState = ({\n floatingOptions\n} = {}) => {\n const { editor, getOptions, useOption } = useEditorPlugin7(LinkPlugin);\n const { triggerFloatingLinkHotkeys } = getOptions();\n const readOnly = useEditorReadOnly2();\n const focused = useFocused();\n const mode = useOption(\"mode\");\n const isOpen = useOption(\"isOpen\", editor.id);\n const floating = useVirtualFloatingLink({\n editorId: editor.id,\n getBoundingClientRect: getDOMSelectionBoundingClientRect2,\n open: isOpen && mode === \"insert\",\n whileElementsMounted: () => () => {\n },\n ...floatingOptions\n });\n return {\n floating,\n focused,\n isOpen,\n readOnly,\n triggerFloatingLinkHotkeys\n };\n};\nvar useFloatingLinkInsert = ({\n floating,\n focused,\n isOpen,\n readOnly,\n triggerFloatingLinkHotkeys\n}) => {\n const { api, editor, getOptions, setOption } = useEditorPlugin7(LinkPlugin);\n const onChange = React5.useCallback(\n (e) => {\n setOption(\"text\", e.target.value);\n },\n [setOption]\n );\n const ref = useOnClickOutside2(\n () => {\n if (getOptions().mode === \"insert\") {\n api.floatingLink.hide();\n editor.tf.focus({ at: editor.selection });\n }\n },\n {\n disabled: !isOpen\n }\n );\n React5.useEffect(() => {\n if (isOpen) {\n floating.update();\n setOption(\"updated\", true);\n } else {\n setOption(\"updated\", false);\n }\n }, [isOpen, floating.update]);\n useHotkeys4(\n triggerFloatingLinkHotkeys,\n (e) => {\n if (triggerFloatingLinkInsert(editor, { focused })) {\n e.preventDefault();\n }\n },\n {\n enableOnContentEditable: true\n },\n [focused]\n );\n useFloatingLinkEscape();\n const { text, updated } = getOptions();\n const updatedValue = React5.useCallback(\n (el) => {\n if (el && updated) {\n el.value = getOptions().text;\n }\n },\n [getOptions, updated]\n );\n return {\n hidden: readOnly || !isOpen,\n props: {\n style: {\n ...floating.style,\n zIndex: 50\n }\n },\n ref: useComposedRef2(floating.refs.setFloating, ref),\n textInputProps: {\n defaultValue: text,\n ref: updatedValue,\n onChange\n }\n };\n};\n\n// src/react/utils/triggerFloatingLink.ts\nimport { getEditorPlugin as getEditorPlugin5 } from \"@udecode/plate\";\nvar triggerFloatingLink = (editor, {\n focused\n} = {}) => {\n const { getOptions } = getEditorPlugin5(editor, LinkPlugin);\n if (getOptions().mode === \"edit\") {\n triggerFloatingLinkEdit(editor);\n return;\n }\n triggerFloatingLinkInsert(editor, {\n focused\n });\n};\nexport {\n FloatingLinkNewTabInput,\n FloatingLinkUrlInput,\n LinkOpenButton,\n LinkPlugin,\n submitFloatingLink,\n triggerFloatingLink,\n triggerFloatingLinkEdit,\n triggerFloatingLinkInsert,\n useFloatingLinkEdit,\n useFloatingLinkEditState,\n useFloatingLinkEnter,\n useFloatingLinkEscape,\n useFloatingLinkInsert,\n useFloatingLinkInsertState,\n useFloatingLinkNewTabInput,\n useFloatingLinkNewTabInputState,\n useFloatingLinkUrlInput,\n useFloatingLinkUrlInputState,\n useLink,\n useLinkOpenButton,\n useLinkOpenButtonState,\n useLinkToolbarButton,\n useLinkToolbarButtonState,\n useVirtualFloatingLink\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseResetNodePlugin.ts\nimport {\n NodeApi,\n PointApi,\n createTSlatePlugin\n} from \"@udecode/plate\";\nvar BaseResetNodePlugin = createTSlatePlugin({\n key: \"resetNode\",\n options: {\n rules: []\n }\n}).overrideEditor(\n ({ editor, getOptions, tf: { deleteBackward, deleteFragment } }) => ({\n transforms: {\n deleteBackward(unit) {\n if (!getOptions().disableFirstBlockReset) {\n const { selection } = editor;\n if (selection && editor.api.isCollapsed()) {\n const start = editor.api.start([]);\n if (PointApi.equals(selection.anchor, start)) {\n const node = NodeApi.get(editor, [0]);\n const { children, ...props } = editor.api.create.block({}, [0]);\n editor.tf.withoutNormalizing(() => {\n const { id, ...nodeProps } = NodeApi.extractProps(node);\n editor.tf.unsetNodes(Object.keys(nodeProps), { at: [0] });\n editor.tf.setNodes(props, { at: [0] });\n });\n return;\n }\n }\n }\n deleteBackward(unit);\n },\n deleteFragment(direction) {\n const deleteFragmentPlugin = () => {\n const { selection } = editor;\n if (!selection) return;\n const start = editor.api.start([]);\n const end = editor.api.end([]);\n if (PointApi.equals(selection.anchor, start) && PointApi.equals(selection.focus, end) || PointApi.equals(selection.focus, start) && PointApi.equals(selection.anchor, end)) {\n editor.tf.reset({\n children: true,\n select: true\n });\n return true;\n }\n };\n if (!getOptions().disableEditorReset && deleteFragmentPlugin()) return;\n deleteFragment(direction);\n }\n }\n })\n);\nexport {\n BaseResetNodePlugin\n};\n//# sourceMappingURL=index.mjs.map","// src/react/ResetNodePlugin.tsx\nimport { toTPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseResetNodePlugin.ts\nimport {\n NodeApi,\n PointApi,\n createTSlatePlugin\n} from \"@udecode/plate\";\nvar BaseResetNodePlugin = createTSlatePlugin({\n key: \"resetNode\",\n options: {\n rules: []\n }\n}).overrideEditor(\n ({ editor, getOptions, tf: { deleteBackward, deleteFragment } }) => ({\n transforms: {\n deleteBackward(unit) {\n if (!getOptions().disableFirstBlockReset) {\n const { selection } = editor;\n if (selection && editor.api.isCollapsed()) {\n const start = editor.api.start([]);\n if (PointApi.equals(selection.anchor, start)) {\n const node = NodeApi.get(editor, [0]);\n const { children, ...props } = editor.api.create.block({}, [0]);\n editor.tf.withoutNormalizing(() => {\n const { id, ...nodeProps } = NodeApi.extractProps(node);\n editor.tf.unsetNodes(Object.keys(nodeProps), { at: [0] });\n editor.tf.setNodes(props, { at: [0] });\n });\n return;\n }\n }\n }\n deleteBackward(unit);\n },\n deleteFragment(direction) {\n const deleteFragmentPlugin = () => {\n const { selection } = editor;\n if (!selection) return;\n const start = editor.api.start([]);\n const end = editor.api.end([]);\n if (PointApi.equals(selection.anchor, start) && PointApi.equals(selection.focus, end) || PointApi.equals(selection.focus, start) && PointApi.equals(selection.anchor, end)) {\n editor.tf.reset({\n children: true,\n select: true\n });\n return true;\n }\n };\n if (!getOptions().disableEditorReset && deleteFragmentPlugin()) return;\n deleteFragment(direction);\n }\n }\n })\n);\n\n// src/react/onKeyDownResetNode.ts\nimport { isHotkey } from \"@udecode/plate\";\nvar SIMULATE_BACKSPACE = {\n key: \"\",\n which: 8\n};\nvar onKeyDownResetNode = ({\n editor,\n event,\n getOptions\n}) => {\n const { rules = [] } = getOptions();\n if (event.defaultPrevented) return;\n let reset;\n if (!editor.selection) return;\n if (editor.api.isCollapsed()) {\n rules.forEach(({ defaultType, hotkey, predicate, types, onReset }) => {\n if (hotkey && isHotkey(hotkey, event) && predicate(editor) && editor.api.some({ match: { type: types } })) {\n event.preventDefault?.();\n editor.tf.setNodes({ type: defaultType });\n if (onReset) {\n onReset(editor);\n }\n reset = true;\n }\n });\n }\n return reset;\n};\n\n// src/react/ResetNodePlugin.tsx\nvar ResetNodePlugin = toTPlatePlugin(\n BaseResetNodePlugin,\n {\n handlers: {\n onKeyDown: onKeyDownResetNode\n }\n }\n);\nexport {\n ResetNodePlugin,\n SIMULATE_BACKSPACE,\n onKeyDownResetNode\n};\n//# sourceMappingURL=index.mjs.map","// src/react/ListPlugin.tsx\nimport { Key, toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseListPlugin.ts\nimport {\n HtmlPlugin,\n bindFirst,\n createSlatePlugin,\n createTSlatePlugin as createTSlatePlugin2\n} from \"@udecode/plate\";\n\n// src/lib/transforms/moveListItems.ts\nimport {\n PathApi as PathApi5\n} from \"@udecode/plate\";\n\n// src/lib/queries/isListNested.ts\nvar isListNested = (editor, listPath) => {\n const listParentNode = editor.api.parent(listPath)?.[0];\n return listParentNode?.type === editor.getType(BaseListItemPlugin);\n};\n\n// src/lib/transforms/moveListItemDown.ts\nimport {\n PathApi as PathApi2,\n match as match2\n} from \"@udecode/plate\";\n\n// src/lib/queries/getHighestEmptyList.ts\nimport { PathApi } from \"@udecode/plate\";\n\n// src/lib/queries/getListTypes.ts\nvar getListTypes = (editor) => {\n return [\n editor.getType(BaseNumberedListPlugin),\n editor.getType(BaseBulletedListPlugin)\n ];\n};\n\n// src/lib/queries/getHighestEmptyList.ts\nvar getHighestEmptyList = (editor, {\n diffListPath,\n liPath\n}) => {\n const list = editor.api.above({\n at: liPath,\n match: { type: getListTypes(editor) }\n });\n if (!list) return;\n const [listNode, listPath] = list;\n if (!diffListPath || !PathApi.equals(listPath, diffListPath)) {\n if (listNode.children.length < 2) {\n const liParent = editor.api.above({\n at: listPath,\n match: { type: editor.getType(BaseListItemPlugin) }\n });\n if (liParent) {\n return getHighestEmptyList(editor, { diffListPath, liPath: liParent[1] }) || listPath;\n }\n }\n return liPath;\n }\n};\n\n// src/lib/queries/getListItemEntry.ts\nimport {\n NodeApi,\n RangeApi\n} from \"@udecode/plate\";\nvar getListItemEntry = (editor, { at = editor.selection } = {}) => {\n const liType = editor.getType(BaseListItemPlugin);\n let _at;\n if (RangeApi.isRange(at) && !RangeApi.isCollapsed(at)) {\n _at = at.focus.path;\n } else if (RangeApi.isRange(at)) {\n _at = at.anchor.path;\n } else {\n _at = at;\n }\n if (_at) {\n const node = NodeApi.get(editor, _at);\n if (node) {\n const listItem = editor.api.above({\n at: _at,\n match: { type: liType }\n });\n if (listItem) {\n const list = editor.api.parent(listItem[1]);\n return { list, listItem };\n }\n }\n }\n};\n\n// src/lib/queries/getListRoot.ts\nvar getListRoot = (editor, at = editor.selection) => {\n if (!at) return;\n const parentList = editor.api.above({\n at,\n match: {\n type: [\n editor.getType(BaseBulletedListPlugin),\n editor.getType(BaseNumberedListPlugin)\n ]\n }\n });\n if (parentList) {\n const [, parentListPath] = parentList;\n return getListRoot(editor, parentListPath) ?? parentList;\n }\n};\n\n// src/lib/queries/getTodoListItemEntry.ts\nimport {\n NodeApi as NodeApi2,\n RangeApi as RangeApi2\n} from \"@udecode/plate\";\n\n// src/lib/BaseTodoListPlugin.ts\nimport {\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/withTodoList.ts\nvar withTodoList = ({\n editor,\n getOptions,\n tf: { insertBreak }\n}) => ({\n transforms: {\n insertBreak() {\n const insertBreakTodoList = () => {\n if (!editor.selection) return;\n const res = getTodoListItemEntry(editor);\n if (res) {\n const inserted = insertTodoListItem(editor, getOptions());\n if (inserted) return true;\n }\n };\n if (insertBreakTodoList()) return;\n insertBreak();\n }\n }\n});\n\n// src/lib/BaseTodoListPlugin.ts\nvar BaseTodoListPlugin = createTSlatePlugin({\n key: \"action_item\",\n node: { isElement: true }\n}).overrideEditor(withTodoList);\n\n// src/lib/queries/getTodoListItemEntry.ts\nvar getTodoListItemEntry = (editor, { at = editor.selection } = {}) => {\n const todoType = editor.getType(BaseTodoListPlugin);\n let _at;\n if (RangeApi2.isRange(at) && !RangeApi2.isCollapsed(at)) {\n _at = at.focus.path;\n } else if (RangeApi2.isRange(at)) {\n _at = at.anchor.path;\n } else {\n _at = at;\n }\n if (_at) {\n const node = NodeApi2.get(editor, _at);\n if (node) {\n const listItem = editor.api.above({\n at: _at,\n match: { type: todoType }\n });\n if (listItem) {\n const list = editor.api.parent(listItem[1]);\n return { list, listItem };\n }\n }\n }\n};\n\n// src/lib/queries/hasListChild.ts\nimport { match } from \"@udecode/plate\";\nvar hasListChild = (editor, node) => node.children.some((n) => match(n, [], { type: getListTypes(editor) }));\n\n// src/lib/queries/isAcrossListItems.ts\nimport { RangeApi as RangeApi3 } from \"@udecode/plate\";\nvar isAcrossListItems = (editor, at = editor.selection) => {\n if (!at || RangeApi3.isCollapsed(at)) {\n return false;\n }\n const isAcrossBlocks = editor.api.isAt({ at, blocks: true });\n if (!isAcrossBlocks) return false;\n return editor.api.some({\n at,\n match: { type: editor.getType(BaseListItemPlugin) }\n });\n};\n\n// src/lib/queries/isListRoot.ts\nimport { ElementApi } from \"@udecode/plate\";\nvar isListRoot = (editor, node) => ElementApi.isElement(node) && getListTypes(editor).includes(node.type);\n\n// src/lib/transforms/moveListItemDown.ts\nvar moveListItemDown = (editor, { list, listItem }) => {\n let moved = false;\n const [listNode] = list;\n const [, listItemPath] = listItem;\n const previousListItemPath = PathApi2.previous(listItemPath);\n if (!previousListItemPath) {\n return;\n }\n const previousSiblingItem = editor.api.node(previousListItemPath);\n if (previousSiblingItem) {\n const [previousNode, previousPath] = previousSiblingItem;\n const sublist = previousNode.children.find(\n (n) => match2(n, [], { type: getListTypes(editor) })\n );\n const newPath = previousPath.concat(\n sublist ? [1, sublist.children.length] : [1]\n );\n editor.tf.withoutNormalizing(() => {\n if (!sublist) {\n editor.tf.wrapNodes(\n { children: [], type: listNode.type },\n { at: listItemPath }\n );\n }\n editor.tf.moveNodes({\n at: listItemPath,\n to: newPath\n });\n moved = true;\n });\n }\n return moved;\n};\n\n// src/lib/transforms/moveListItemUp.ts\nimport {\n NodeApi as NodeApi5,\n PathApi as PathApi4\n} from \"@udecode/plate\";\n\n// src/lib/transforms/moveListItemsToList.ts\nimport {\n NodeApi as NodeApi3,\n PathApi as PathApi3\n} from \"@udecode/plate\";\nvar moveListItemsToList = (editor, {\n deleteFromList = true,\n fromList,\n fromListItem,\n fromStartIndex,\n to: _to,\n toList,\n toListIndex = null\n}) => {\n let fromListPath;\n let moved = false;\n editor.tf.withoutNormalizing(() => {\n if (fromListItem) {\n const fromListItemSublist = editor.api.descendant({\n at: fromListItem[1],\n match: {\n type: getListTypes(editor)\n }\n });\n if (!fromListItemSublist) return;\n fromListPath = fromListItemSublist?.[1];\n } else if (fromList) {\n fromListPath = fromList[1];\n } else {\n return;\n }\n let to = null;\n if (_to) to = _to;\n if (toList) {\n if (toListIndex === null) {\n const lastChildPath = NodeApi3.lastChild(editor, toList[1])?.[1];\n to = lastChildPath ? PathApi3.next(lastChildPath) : toList[1].concat([0]);\n } else {\n to = toList[1].concat([toListIndex]);\n }\n }\n if (!to) return;\n moved = editor.tf.moveNodes({\n at: fromListPath,\n children: true,\n fromIndex: fromStartIndex,\n to\n });\n if (deleteFromList) {\n editor.tf.delete({ at: fromListPath });\n }\n });\n return moved;\n};\n\n// src/lib/transforms/unwrapList.ts\nimport {\n ElementApi as ElementApi2,\n NodeApi as NodeApi4\n} from \"@udecode/plate\";\nvar unwrapList = (editor, { at } = {}) => {\n const ancestorListTypeCheck = () => {\n if (editor.api.above({ at, match: { type: getListTypes(editor) } })) {\n return true;\n }\n if (!at && editor.selection) {\n const commonNode = NodeApi4.common(\n editor,\n editor.selection.anchor.path,\n editor.selection.focus.path\n );\n if (ElementApi2.isElement(commonNode[0]) && getListTypes(editor).includes(commonNode[0].type)) {\n return true;\n }\n }\n return false;\n };\n editor.tf.withoutNormalizing(() => {\n do {\n editor.tf.unwrapNodes({\n at,\n match: { type: editor.getType(BaseListItemPlugin) },\n split: true\n });\n editor.tf.unwrapNodes({\n at,\n match: {\n type: [\n editor.getType(BaseBulletedListPlugin),\n editor.getType(BaseNumberedListPlugin)\n ]\n },\n split: true\n });\n } while (ancestorListTypeCheck());\n });\n};\n\n// src/lib/transforms/moveListItemUp.ts\nvar moveListItemUp = (editor, { list, listItem }) => {\n const move = () => {\n const [listNode, listPath] = list;\n const [liNode, liPath] = listItem;\n const liParent = editor.api.above({\n at: listPath,\n match: { type: editor.getType(BaseListItemPlugin) }\n });\n if (!liParent) {\n let toListPath2;\n try {\n toListPath2 = PathApi4.next(listPath);\n } catch (error) {\n return;\n }\n const condA = hasListChild(editor, liNode);\n const condB = !NodeApi5.isLastChild(editor, liPath);\n if (condA || condB) {\n editor.tf.insertNodes(\n {\n children: [],\n type: listNode.type\n },\n { at: toListPath2 }\n );\n }\n if (condA) {\n const toListNode = NodeApi5.get(editor, toListPath2);\n if (!toListNode) return;\n moveListItemsToList(editor, {\n fromListItem: listItem,\n toList: [toListNode, toListPath2]\n });\n }\n if (condB) {\n const toListNode = NodeApi5.get(editor, toListPath2);\n if (!toListNode) return;\n moveListItemsToList(editor, {\n deleteFromList: false,\n fromList: list,\n fromStartIndex: liPath.at(-1) + 1,\n toList: [toListNode, toListPath2]\n });\n }\n unwrapList(editor, { at: liPath.concat(0) });\n return true;\n }\n const [, liParentPath] = liParent;\n const toListPath = liPath.concat([1]);\n if (!NodeApi5.isLastChild(editor, liPath)) {\n if (!hasListChild(editor, liNode)) {\n editor.tf.insertNodes(\n {\n children: [],\n type: listNode.type\n },\n { at: toListPath }\n );\n }\n const toListNode = NodeApi5.get(editor, toListPath);\n if (!toListNode) return;\n moveListItemsToList(editor, {\n deleteFromList: false,\n fromListItem: liParent,\n fromStartIndex: liPath.at(-1) + 1,\n toList: [toListNode, toListPath]\n });\n }\n const movedUpLiPath = PathApi4.next(liParentPath);\n editor.tf.moveNodes({\n at: liPath,\n to: movedUpLiPath\n });\n return true;\n };\n let moved = false;\n editor.tf.withoutNormalizing(() => {\n moved = move();\n });\n return moved;\n};\n\n// src/lib/transforms/removeFirstListItem.ts\nvar removeFirstListItem = (editor, {\n list,\n listItem\n}) => {\n const [, listPath] = list;\n if (!isListNested(editor, listPath)) {\n moveListItemUp(editor, { list, listItem });\n return true;\n }\n return false;\n};\n\n// src/lib/transforms/moveListItems.ts\nvar moveListItems = (editor, {\n at = editor.selection ?? void 0,\n enableResetOnShiftTab,\n increase = true\n} = {}) => {\n const _nodes = editor.api.nodes({\n at,\n match: {\n type: editor.getType(BaseListItemContentPlugin)\n }\n });\n const lics = Array.from(_nodes);\n if (lics.length === 0) return;\n const highestLicPaths = [];\n const highestLicPathRefs = [];\n lics.forEach((lic) => {\n const licPath = lic[1];\n const liPath = PathApi5.parent(licPath);\n const isAncestor = highestLicPaths.some((path) => {\n const highestLiPath = PathApi5.parent(path);\n return PathApi5.isAncestor(highestLiPath, liPath);\n });\n if (!isAncestor) {\n highestLicPaths.push(licPath);\n highestLicPathRefs.push(editor.api.pathRef(licPath));\n }\n });\n const licPathRefsToMove = increase ? highestLicPathRefs : highestLicPathRefs.reverse();\n return editor.tf.withoutNormalizing(() => {\n let moved = false;\n licPathRefsToMove.forEach((licPathRef) => {\n const licPath = licPathRef.unref();\n if (!licPath) return;\n const listItem = editor.api.parent(licPath);\n if (!listItem) return;\n const parentList = editor.api.parent(listItem[1]);\n if (!parentList) return;\n let _moved;\n if (increase) {\n _moved = moveListItemDown(editor, {\n list: parentList,\n listItem\n });\n } else if (isListNested(editor, parentList[1])) {\n _moved = moveListItemUp(editor, {\n list: parentList,\n listItem\n });\n } else if (enableResetOnShiftTab) {\n _moved = removeFirstListItem(editor, {\n list: parentList,\n listItem\n });\n }\n moved = _moved || moved;\n });\n return moved;\n });\n};\n\n// src/lib/transforms/insertListItem.ts\nimport { PathApi as PathApi6 } from \"@udecode/plate\";\nvar insertListItem = (editor) => {\n const liType = editor.getType(BaseListItemPlugin);\n const licType = editor.getType(BaseListItemContentPlugin);\n if (!editor.selection) {\n return false;\n }\n const licEntry = editor.api.above({ match: { type: licType } });\n if (!licEntry) return false;\n const [, paragraphPath] = licEntry;\n const listItemEntry = editor.api.parent(paragraphPath);\n if (!listItemEntry) return false;\n const [listItemNode, listItemPath] = listItemEntry;\n if (listItemNode.type !== liType) return false;\n let success = false;\n editor.tf.withoutNormalizing(() => {\n if (!editor.api.isCollapsed()) {\n editor.tf.delete();\n }\n const isStart = editor.api.isStart(editor.selection.focus, paragraphPath);\n const isEnd = editor.api.isEmpty(editor.selection, { after: true });\n const nextParagraphPath = PathApi6.next(paragraphPath);\n const nextListItemPath = PathApi6.next(listItemPath);\n if (isStart) {\n editor.tf.insertNodes(\n {\n children: [{ children: [{ text: \"\" }], type: licType }],\n type: liType\n },\n { at: listItemPath }\n );\n success = true;\n return;\n }\n if (isEnd) {\n const marks = editor.api.marks() || {};\n editor.tf.insertNodes(\n {\n children: [{ children: [{ text: \"\", ...marks }], type: licType }],\n type: liType\n },\n { at: nextListItemPath }\n );\n editor.tf.select(nextListItemPath);\n } else {\n editor.tf.withoutNormalizing(() => {\n editor.tf.splitNodes();\n editor.tf.wrapNodes(\n {\n children: [],\n type: liType\n },\n { at: nextParagraphPath }\n );\n editor.tf.moveNodes({\n at: nextParagraphPath,\n to: nextListItemPath\n });\n editor.tf.select(nextListItemPath);\n editor.tf.collapse({\n edge: \"start\"\n });\n });\n }\n if (listItemNode.children.length > 1) {\n editor.tf.moveNodes({\n at: nextParagraphPath,\n to: nextListItemPath.concat(1)\n });\n }\n success = true;\n });\n return success;\n};\n\n// src/lib/transforms/insertTodoListItem.ts\nimport { PathApi as PathApi7 } from \"@udecode/plate\";\nvar insertTodoListItem = (editor, {\n inheritCheckStateOnLineEndBreak = false,\n inheritCheckStateOnLineStartBreak = false\n}) => {\n const todoType = editor.getType(BaseTodoListPlugin);\n if (!editor.selection) {\n return false;\n }\n const todoEntry = editor.api.above({ match: { type: todoType } });\n if (!todoEntry) return false;\n const [todo, paragraphPath] = todoEntry;\n let success = false;\n editor.tf.withoutNormalizing(() => {\n if (!editor.api.isCollapsed()) {\n editor.tf.delete();\n }\n const isStart = editor.api.isStart(editor.selection.focus, paragraphPath);\n const isEnd = editor.api.isEmpty(editor.selection, { after: true });\n const nextParagraphPath = PathApi7.next(paragraphPath);\n if (isStart) {\n editor.tf.insertNodes(\n {\n checked: inheritCheckStateOnLineStartBreak ? todo.checked : false,\n children: [{ text: \"\" }],\n type: todoType\n },\n { at: paragraphPath }\n );\n success = true;\n return;\n }\n if (isEnd) {\n const marks = editor.api.marks() || {};\n editor.tf.insertNodes(\n {\n checked: inheritCheckStateOnLineEndBreak ? todo.checked : false,\n children: [{ text: \"\", ...marks }],\n type: todoType\n },\n { at: nextParagraphPath }\n );\n editor.tf.select(nextParagraphPath);\n } else {\n editor.tf.withoutNormalizing(() => {\n editor.tf.splitNodes();\n });\n }\n success = true;\n });\n return success;\n};\n\n// src/lib/transforms/moveListItemSublistItemsToListItemSublist.ts\nimport {\n NodeApi as NodeApi6,\n PathApi as PathApi8\n} from \"@udecode/plate\";\nvar moveListItemSublistItemsToListItemSublist = (editor, {\n fromListItem,\n start,\n toListItem\n}) => {\n const [, fromListItemPath] = fromListItem;\n const [, toListItemPath] = toListItem;\n let moved = false;\n editor.tf.withoutNormalizing(() => {\n const fromListItemSublist = editor.api.descendant({\n at: fromListItemPath,\n match: {\n type: getListTypes(editor)\n }\n });\n if (!fromListItemSublist) return;\n const [, fromListItemSublistPath] = fromListItemSublist;\n const toListItemSublist = editor.api.descendant({\n at: toListItemPath,\n match: {\n type: getListTypes(editor)\n }\n });\n let to;\n if (!toListItemSublist) {\n const fromList = editor.api.parent(fromListItemPath);\n if (!fromList) return;\n const [fromListNode] = fromList;\n const fromListType = fromListNode.type;\n const toListItemSublistPath = toListItemPath.concat([1]);\n editor.tf.insertNodes(\n { children: [], type: fromListType },\n { at: toListItemSublistPath }\n );\n to = toListItemSublistPath.concat([0]);\n } else if (start) {\n const [, toListItemSublistPath] = toListItemSublist;\n to = toListItemSublistPath.concat([0]);\n } else {\n to = PathApi8.next(NodeApi6.lastChild(editor, toListItemSublist[1])[1]);\n }\n moved = editor.tf.moveNodes({\n at: fromListItemSublistPath,\n children: true,\n to\n });\n editor.tf.delete({ at: fromListItemSublistPath });\n });\n return moved;\n};\n\n// src/lib/transforms/removeListItem.ts\nimport {\n PathApi as PathApi9,\n deleteMerge\n} from \"@udecode/plate\";\nvar removeListItem = (editor, { list, listItem, reverse = true }) => {\n const [liNode, liPath] = listItem;\n if (editor.api.isExpanded() || !hasListChild(editor, liNode)) {\n return false;\n }\n const previousLiPath = PathApi9.previous(liPath);\n let success = false;\n editor.tf.withoutNormalizing(() => {\n if (previousLiPath) {\n const previousLi = editor.api.node(previousLiPath);\n if (!previousLi) return;\n let tempLiPath = PathApi9.next(liPath);\n editor.tf.insertNodes(\n {\n children: [\n {\n children: [{ text: \"\" }],\n type: editor.getType(BaseListItemContentPlugin)\n }\n ],\n type: editor.getType(BaseListItemPlugin)\n },\n { at: tempLiPath }\n );\n const tempLi = editor.api.node(tempLiPath);\n if (!tempLi) return;\n const tempLiPathRef = editor.api.pathRef(tempLi[1]);\n moveListItemSublistItemsToListItemSublist(editor, {\n fromListItem: listItem,\n toListItem: tempLi\n });\n deleteMerge(editor, {\n reverse\n });\n tempLiPath = tempLiPathRef.unref();\n moveListItemSublistItemsToListItemSublist(editor, {\n fromListItem: [tempLi[0], tempLiPath],\n toListItem: previousLi\n });\n editor.tf.removeNodes({ at: tempLiPath });\n success = true;\n return;\n }\n moveListItemsToList(editor, {\n fromListItem: listItem,\n toList: list,\n toListIndex: 1\n });\n });\n return success;\n};\n\n// src/lib/transforms/toggleList.ts\nimport {\n BaseParagraphPlugin,\n ElementApi as ElementApi3,\n NodeApi as NodeApi7,\n RangeApi as RangeApi4\n} from \"@udecode/plate\";\nvar toggleList = (editor, { type }) => editor.tf.withoutNormalizing(() => {\n if (!editor.selection) {\n return;\n }\n const { validLiChildrenTypes } = editor.getOptions(BaseListPlugin);\n if (editor.api.isCollapsed() || !editor.api.isAt({ blocks: true })) {\n const res = getListItemEntry(editor);\n if (res) {\n const { list } = res;\n if (list[0].type === type) {\n unwrapList(editor);\n } else {\n editor.tf.setNodes(\n { type },\n {\n at: editor.selection,\n match: (n) => ElementApi3.isElement(n) && getListTypes(editor).includes(n.type),\n mode: \"lowest\"\n }\n );\n }\n } else {\n const list = { children: [], type };\n editor.tf.wrapNodes(list);\n const _nodes = editor.api.nodes({\n match: { type: editor.getType(BaseParagraphPlugin) }\n });\n const nodes = Array.from(_nodes);\n const blockAbove = editor.api.block({\n match: { type: validLiChildrenTypes }\n });\n if (!blockAbove) {\n editor.tf.setNodes({\n type: editor.getType(BaseListItemContentPlugin)\n });\n }\n const listItem = {\n children: [],\n type: editor.getType(BaseListItemPlugin)\n };\n for (const [, path] of nodes) {\n editor.tf.wrapNodes(listItem, {\n at: path\n });\n }\n }\n } else {\n const [startPoint, endPoint] = RangeApi4.edges(editor.selection);\n const commonEntry = NodeApi7.common(\n editor,\n startPoint.path,\n endPoint.path\n );\n if (getListTypes(editor).includes(commonEntry[0].type) || commonEntry[0].type === editor.getType(BaseListItemPlugin)) {\n if (commonEntry[0].type === type) {\n unwrapList(editor);\n } else {\n const startList = editor.api.node({\n at: RangeApi4.start(editor.selection),\n match: { type: getListTypes(editor) },\n mode: \"lowest\"\n });\n const endList = editor.api.node({\n at: RangeApi4.end(editor.selection),\n match: { type: getListTypes(editor) },\n mode: \"lowest\"\n });\n const rangeLength = Math.min(\n startList[1].length,\n endList[1].length\n );\n editor.tf.setNodes(\n { type },\n {\n at: editor.selection,\n match: (n, path) => ElementApi3.isElement(n) && getListTypes(editor).includes(n.type) && path.length >= rangeLength,\n mode: \"all\"\n }\n );\n }\n } else {\n const rootPathLength = commonEntry[1].length;\n const _nodes = editor.api.nodes({\n mode: \"all\"\n });\n const nodes = Array.from(_nodes).filter(\n ([, path]) => path.length === rootPathLength + 1\n );\n nodes.forEach((n) => {\n if (getListTypes(editor).includes(n[0].type)) {\n editor.tf.setNodes(\n { type },\n {\n at: n[1],\n match: (_n) => ElementApi3.isElement(_n) && getListTypes(editor).includes(_n.type),\n mode: \"all\"\n }\n );\n } else {\n if (!validLiChildrenTypes?.includes(n[0].type)) {\n editor.tf.setNodes(\n { type: editor.getType(BaseListItemContentPlugin) },\n { at: n[1] }\n );\n }\n const listItem = {\n children: [],\n type: editor.getType(BaseListItemPlugin)\n };\n editor.tf.wrapNodes(listItem, {\n at: n[1]\n });\n const list = { children: [], type };\n editor.tf.wrapNodes(list, { at: n[1] });\n }\n });\n }\n }\n});\nvar toggleBulletedList = (editor) => toggleList(editor, { type: editor.getType(BaseBulletedListPlugin) });\nvar toggleNumberedList = (editor) => toggleList(editor, { type: editor.getType(BaseNumberedListPlugin) });\n\n// src/lib/BaseListPlugin.ts\nvar BaseBulletedListPlugin = createSlatePlugin({\n key: \"ul\",\n node: { isElement: true },\n parsers: {\n html: {\n deserializer: {\n rules: [\n {\n validNodeName: \"UL\"\n }\n ]\n }\n }\n }\n});\nvar BaseNumberedListPlugin = createSlatePlugin({\n key: \"ol\",\n node: { isElement: true },\n parsers: { html: { deserializer: { rules: [{ validNodeName: \"OL\" }] } } }\n});\nvar BaseListItemPlugin = createSlatePlugin({\n key: \"li\",\n node: { isElement: true },\n parsers: { html: { deserializer: { rules: [{ validNodeName: \"LI\" }] } } }\n}).extend(({ editor, type }) => ({\n inject: {\n plugins: {\n [HtmlPlugin.key]: {\n parser: {\n preInsert: () => {\n return editor.api.some({ match: { type } });\n }\n }\n }\n }\n }\n}));\nvar BaseListItemContentPlugin = createSlatePlugin({\n key: \"lic\",\n node: { isElement: true }\n});\nvar BaseListPlugin = createTSlatePlugin2({\n key: \"list\",\n // TODO react\n // extendEditor: withList,\n plugins: [\n BaseBulletedListPlugin,\n BaseNumberedListPlugin,\n BaseListItemPlugin,\n BaseListItemContentPlugin\n ]\n}).extendEditorTransforms(({ editor }) => ({\n toggle: {\n bulletedList: bindFirst(toggleBulletedList, editor),\n list: bindFirst(toggleList, editor),\n numberedList: bindFirst(toggleNumberedList, editor)\n }\n}));\n\n// src/lib/withDeleteForwardList.ts\nimport {\n NodeApi as NodeApi8,\n PathApi as PathApi10\n} from \"@udecode/plate\";\nvar selectionIsNotInAListHandler = (editor) => {\n const pointAfterSelection = editor.api.after(editor.selection.focus);\n if (pointAfterSelection) {\n const nextSiblingListRes = getListItemEntry(editor, {\n at: pointAfterSelection\n });\n if (nextSiblingListRes) {\n const { listItem } = nextSiblingListRes;\n const parentBlockEntity = editor.api.block({\n at: editor.selection.anchor\n });\n if (!editor.api.string(parentBlockEntity[1])) {\n editor.tf.removeNodes();\n return true;\n }\n if (hasListChild(editor, listItem[0])) {\n const sublistRes = getListItemEntry(editor, {\n at: [...listItem[1], 1, 0, 0]\n });\n moveListItemUp(editor, sublistRes);\n }\n }\n }\n return false;\n};\nvar selectionIsInAListHandler = (editor, res, defaultDelete, unit = \"character\") => {\n const { listItem } = res;\n if (!hasListChild(editor, listItem[0])) {\n const liType = editor.getType(BaseListItemPlugin);\n const _nodes = editor.api.nodes({\n at: listItem[1],\n match: (node, path) => {\n if (path.length === 0) {\n return false;\n }\n const isNodeLi = node.type === liType;\n const isSiblingOfNodeLi = NodeApi8.get(editor, PathApi10.next(path))?.type === liType;\n return isNodeLi && isSiblingOfNodeLi;\n },\n mode: \"lowest\"\n });\n const liWithSiblings = Array.from(_nodes, (entry) => entry[1])[0];\n if (!liWithSiblings) {\n const pointAfterListItem2 = editor.api.after(listItem[1]);\n if (pointAfterListItem2) {\n const nextSiblingListRes = getListItemEntry(editor, {\n at: pointAfterListItem2\n });\n if (nextSiblingListRes) {\n const listRoot = getListRoot(editor, listItem[1]);\n moveListItemsToList(editor, {\n deleteFromList: true,\n fromList: nextSiblingListRes.list,\n toList: listRoot\n });\n return true;\n }\n }\n return false;\n }\n const siblingListItem = editor.api.node(\n PathApi10.next(liWithSiblings)\n );\n if (!siblingListItem) return false;\n const siblingList = editor.api.parent(siblingListItem[1]);\n if (siblingList && removeListItem(editor, {\n list: siblingList,\n listItem: siblingListItem,\n reverse: false\n })) {\n return true;\n }\n const pointAfterListItem = editor.api.after(editor.selection.focus);\n if (!pointAfterListItem || !isAcrossListItems(editor, {\n anchor: editor.selection.anchor,\n focus: pointAfterListItem\n })) {\n return false;\n }\n const licType = editor.getType(BaseListItemContentPlugin);\n const _licNodes = editor.api.nodes({\n at: pointAfterListItem.path,\n match: (node) => node.type === licType,\n mode: \"lowest\"\n });\n const nextSelectableLic = [..._licNodes][0];\n if (nextSelectableLic[0].children.length < 2) return false;\n defaultDelete(unit);\n const leftoverListItem = editor.api.node(\n PathApi10.parent(nextSelectableLic[1])\n );\n if (leftoverListItem && leftoverListItem[0].children.length === 0) {\n editor.tf.removeNodes({ at: leftoverListItem[1] });\n }\n return true;\n }\n const nestedList = editor.api.node(\n PathApi10.next([...listItem[1], 0])\n );\n if (!nestedList) return false;\n const nestedListItem = Array.from(\n NodeApi8.children(editor, nestedList[1])\n )[0];\n if (removeFirstListItem(editor, {\n list: nestedList,\n listItem: nestedListItem\n })) {\n return true;\n }\n if (removeListItem(editor, {\n list: nestedList,\n listItem: nestedListItem\n })) {\n return true;\n }\n return false;\n};\nvar withDeleteForwardList = ({\n editor,\n tf: { deleteForward }\n}) => ({\n transforms: {\n deleteForward(unit) {\n const deleteForwardList = () => {\n let skipDefaultDelete = false;\n if (!editor?.selection) {\n return skipDefaultDelete;\n }\n if (!editor.api.isAt({ end: true })) {\n return skipDefaultDelete;\n }\n editor.tf.withoutNormalizing(() => {\n const res = getListItemEntry(editor, {});\n if (!res) {\n skipDefaultDelete = selectionIsNotInAListHandler(editor);\n return;\n }\n skipDefaultDelete = selectionIsInAListHandler(\n editor,\n res,\n deleteForward,\n unit\n );\n });\n return skipDefaultDelete;\n };\n if (deleteForwardList()) return;\n deleteForward(unit);\n }\n }\n});\n\n// src/lib/withDeleteFragmentList.ts\nimport {\n deleteMerge as deleteMerge2\n} from \"@udecode/plate\";\nvar getLiStart = (editor) => {\n const start = editor.api.start(editor.selection);\n return editor.api.above({\n at: start,\n match: { type: editor.getType(BaseListItemPlugin) }\n });\n};\nvar withDeleteFragmentList = ({\n editor,\n tf: { deleteFragment }\n}) => ({\n transforms: {\n deleteFragment(direction) {\n const deleteFragmentList = () => {\n let deleted = false;\n editor.tf.withoutNormalizing(() => {\n if (!isAcrossListItems(editor)) return;\n const end = editor.api.end(editor.selection);\n const liEnd = editor.api.above({\n at: end,\n match: { type: editor.getType(BaseListItemPlugin) }\n });\n const liEndCanBeDeleted = liEnd && !hasListChild(editor, liEnd[0]);\n const liEndPathRef = liEndCanBeDeleted ? editor.api.pathRef(liEnd[1]) : void 0;\n if (!getLiStart(editor) || !liEnd) {\n deleted = false;\n return;\n }\n deleteMerge2(editor);\n const liStart = getLiStart(editor);\n if (liEndPathRef) {\n const liEndPath = liEndPathRef.unref();\n const listStart = liStart && editor.api.parent(liStart[1]);\n const deletePath = getHighestEmptyList(editor, {\n diffListPath: listStart?.[1],\n liPath: liEndPath\n });\n if (deletePath) {\n editor.tf.removeNodes({ at: deletePath });\n }\n deleted = true;\n }\n });\n return deleted;\n };\n if (deleteFragmentList()) return;\n deleteFragment(direction);\n }\n }\n});\n\n// src/lib/withInsertFragmentList.ts\nimport {\n ElementApi as ElementApi4,\n NodeApi as NodeApi9,\n PathApi as PathApi11\n} from \"@udecode/plate\";\nvar withInsertFragmentList = ({\n editor,\n tf: { insertFragment }\n}) => {\n const listItemType = editor.getType(BaseListItemPlugin);\n const listItemContentType = editor.getType(BaseListItemContentPlugin);\n const getFirstAncestorOfType = (root, entry, type) => {\n let ancestor = PathApi11.parent(entry[1]);\n while (NodeApi9.get(root, ancestor).type !== type) {\n ancestor = PathApi11.parent(ancestor);\n }\n return [NodeApi9.get(root, ancestor), ancestor];\n };\n const findListItemsWithContent = (first) => {\n let prev = null;\n let node = first;\n while (isListRoot(editor, node) || node.type === listItemType && node.children[0].type !== listItemContentType) {\n prev = node;\n [node] = node.children;\n }\n return prev ? prev.children : [node];\n };\n const trimList = (listRoot) => {\n if (!isListRoot(editor, listRoot)) {\n return [listRoot];\n }\n const _texts = NodeApi9.texts(listRoot);\n const textEntries = Array.from(_texts);\n const commonAncestorEntry = textEntries.reduce(\n (commonAncestor, textEntry) => PathApi11.isAncestor(commonAncestor[1], textEntry[1]) ? commonAncestor : NodeApi9.common(listRoot, textEntry[1], commonAncestor[1]),\n // any list item would do, we grab the first one\n getFirstAncestorOfType(listRoot, textEntries[0], listItemType)\n );\n const [first, ...rest] = isListRoot(\n editor,\n commonAncestorEntry[0]\n ) ? commonAncestorEntry[0].children : [commonAncestorEntry[0]];\n return [...findListItemsWithContent(first), ...rest];\n };\n const wrapNodeIntoListItem = (node) => {\n return node.type === listItemType ? node : {\n children: [node],\n type: listItemType\n };\n };\n const isSingleLic = (fragment) => {\n const isFragmentOnlyListRoot = fragment.length === 1 && isListRoot(editor, fragment[0]);\n return isFragmentOnlyListRoot && [...NodeApi9.nodes({ children: fragment })].filter(\n (entry) => ElementApi4.isElement(entry[0])\n ).filter(([node]) => node.type === listItemContentType).length === 1;\n };\n const getTextAndListItemNodes = (fragment, liEntry, licEntry) => {\n const [, liPath] = liEntry;\n const [licNode, licPath] = licEntry;\n const isEmptyNode = !NodeApi9.string(licNode);\n const [first, ...rest] = fragment.flatMap(trimList).map(wrapNodeIntoListItem);\n let textNode;\n let listItemNodes;\n if (isListRoot(editor, fragment[0])) {\n if (isSingleLic(fragment)) {\n textNode = first;\n listItemNodes = rest;\n } else if (isEmptyNode) {\n const li = NodeApi9.get(editor, liPath);\n const [, ...currentSublists] = li.children;\n const [newLic, ...newSublists] = first.children;\n editor.tf.insertNodes(newLic, {\n at: PathApi11.next(licPath),\n select: true\n });\n editor.tf.removeNodes({\n at: licPath\n });\n if (newSublists?.length) {\n if (currentSublists?.length) {\n const path = [...liPath, 1, 0];\n editor.tf.insertNodes(newSublists[0].children, {\n at: path,\n select: true\n });\n } else {\n editor.tf.insertNodes(newSublists, {\n at: PathApi11.next(licPath),\n select: true\n });\n }\n }\n textNode = { text: \"\" };\n listItemNodes = rest;\n } else {\n textNode = { text: \"\" };\n listItemNodes = [first, ...rest];\n }\n } else {\n textNode = first;\n listItemNodes = rest;\n }\n return { listItemNodes, textNode };\n };\n return {\n transforms: {\n insertFragment(fragment) {\n let liEntry = editor.api.node({\n match: { type: listItemType },\n mode: \"lowest\"\n });\n if (!liEntry) {\n return insertFragment(\n isListRoot(editor, fragment[0]) ? [{ text: \"\" }, ...fragment] : fragment\n );\n }\n insertFragment([{ text: \"\" }]);\n liEntry = editor.api.node({\n match: { type: listItemType },\n mode: \"lowest\"\n });\n if (!liEntry) {\n return insertFragment(\n isListRoot(editor, fragment[0]) ? [{ text: \"\" }, ...fragment] : fragment\n );\n }\n const licEntry = editor.api.node({\n match: { type: listItemContentType },\n mode: \"lowest\"\n });\n if (!licEntry) {\n return insertFragment(\n isListRoot(editor, fragment[0]) ? [{ text: \"\" }, ...fragment] : fragment\n );\n }\n const { listItemNodes, textNode } = getTextAndListItemNodes(\n fragment,\n liEntry,\n licEntry\n );\n insertFragment([textNode]);\n const [, liPath] = liEntry;\n return editor.tf.insertNodes(listItemNodes, {\n at: PathApi11.next(liPath),\n select: true\n });\n }\n }\n };\n};\n\n// src/lib/withNormalizeList.ts\nimport {\n BaseParagraphPlugin as BaseParagraphPlugin2,\n ElementApi as ElementApi5,\n NodeApi as NodeApi11,\n PathApi as PathApi14,\n match as match5\n} from \"@udecode/plate\";\n\n// src/lib/normalizers/normalizeListItem.ts\nimport {\n NodeApi as NodeApi10,\n PathApi as PathApi12,\n match as match3\n} from \"@udecode/plate\";\nvar getDeepInlineChildren = (editor, {\n children\n}) => {\n const inlineChildren = [];\n for (const child of children) {\n if (editor.api.isBlock(child[0])) {\n inlineChildren.push(\n ...getDeepInlineChildren(editor, {\n children: Array.from(NodeApi10.children(editor, child[1]))\n })\n );\n } else {\n inlineChildren.push(child);\n }\n }\n return inlineChildren;\n};\nvar normalizeListItem = (editor, {\n listItem,\n validLiChildrenTypes = []\n}) => {\n let changed = false;\n const allValidLiChildrenTypes = /* @__PURE__ */ new Set([\n editor.getType(BaseBulletedListPlugin),\n editor.getType(BaseListItemContentPlugin),\n editor.getType(BaseNumberedListPlugin),\n ...validLiChildrenTypes\n ]);\n const [, liPath] = listItem;\n const liChildren = Array.from(\n NodeApi10.children(editor, listItem[1])\n );\n const invalidLiChildrenPathRefs = liChildren.filter(([child]) => !allValidLiChildrenTypes.has(child.type)).map(([, childPath]) => editor.api.pathRef(childPath));\n const firstLiChild = liChildren[0];\n const [firstLiChildNode, firstLiChildPath] = firstLiChild ?? [];\n if (!firstLiChild || !editor.api.isBlock(firstLiChildNode)) {\n editor.tf.insertNodes(\n editor.api.create.block({\n type: editor.getType(BaseListItemContentPlugin)\n }),\n {\n at: liPath.concat([0])\n }\n );\n return true;\n }\n if (editor.api.isBlock(firstLiChildNode) && !match3(firstLiChildNode, [], {\n type: editor.getType(BaseListItemContentPlugin)\n })) {\n if (match3(firstLiChildNode, [], {\n type: getListTypes(editor)\n })) {\n const parent = editor.api.parent(listItem[1]);\n const sublist = firstLiChild;\n const children = Array.from(\n NodeApi10.children(editor, firstLiChild[1])\n ).reverse();\n children.forEach((c) => {\n moveListItemUp(editor, {\n list: sublist,\n listItem: c\n });\n });\n editor.tf.removeNodes({ at: [...parent[1], 0] });\n return true;\n }\n if (validLiChildrenTypes.includes(firstLiChildNode.type)) {\n return true;\n }\n editor.tf.setNodes(\n {\n type: editor.getType(BaseListItemContentPlugin)\n },\n {\n at: firstLiChildPath\n }\n );\n changed = true;\n }\n const licChildren = Array.from(NodeApi10.children(editor, firstLiChild[1]));\n if (licChildren.length > 0) {\n const blockPathRefs = [];\n const inlineChildren = [];\n for (const licChild of licChildren) {\n if (!editor.api.isBlock(licChild[0])) {\n break;\n }\n blockPathRefs.push(editor.api.pathRef(licChild[1]));\n inlineChildren.push(\n ...getDeepInlineChildren(editor, {\n children: Array.from(NodeApi10.children(editor, licChild[1]))\n })\n );\n }\n const to = PathApi12.next(licChildren.at(-1)[1]);\n inlineChildren.reverse().forEach(([, path]) => {\n editor.tf.moveNodes({\n at: path,\n to\n });\n });\n blockPathRefs.forEach((pathRef) => {\n const path = pathRef.unref();\n path && editor.tf.removeNodes({\n at: path\n });\n });\n if (blockPathRefs.length > 0) {\n changed = true;\n }\n }\n if (changed) return true;\n invalidLiChildrenPathRefs.reverse().forEach((ref) => {\n const path = ref.unref();\n path && editor.tf.moveNodes({\n at: path,\n to: firstLiChildPath.concat([0])\n });\n });\n return invalidLiChildrenPathRefs.length > 0;\n};\n\n// src/lib/normalizers/normalizeNestedList.ts\nimport {\n PathApi as PathApi13,\n match as match4\n} from \"@udecode/plate\";\nvar normalizeNestedList = (editor, { nestedListItem }) => {\n const [, path] = nestedListItem;\n const parentNode = editor.api.parent(path);\n const hasParentList = parentNode && match4(parentNode[0], [], { type: getListTypes(editor) });\n if (!hasParentList) {\n return false;\n }\n const previousListItemPath = PathApi13.previous(path);\n if (!previousListItemPath) {\n return false;\n }\n const previousSiblingItem = editor.api.node(previousListItemPath);\n if (previousSiblingItem) {\n const [, previousPath] = previousSiblingItem;\n const newPath = previousPath.concat([1]);\n editor.tf.moveNodes({\n at: path,\n to: newPath\n });\n return true;\n }\n};\n\n// src/lib/withNormalizeList.ts\nvar withNormalizeList = ({\n editor,\n getOptions,\n tf: { normalizeNode }\n}) => ({\n transforms: {\n normalizeNode([node, path]) {\n const liType = editor.getType(BaseListItemPlugin);\n const licType = editor.getType(BaseListItemContentPlugin);\n const defaultType = editor.getType(BaseParagraphPlugin2);\n if (!ElementApi5.isElement(node)) {\n return normalizeNode([node, path]);\n }\n if (isListRoot(editor, node)) {\n const nonLiChild = Array.from(NodeApi11.children(editor, path)).find(\n ([child]) => child.type !== liType\n );\n if (nonLiChild) {\n return editor.tf.wrapNodes(\n { children: [], type: liType },\n { at: nonLiChild[1] }\n );\n }\n }\n if (match5(node, [], { type: getListTypes(editor) })) {\n if (node.children.length === 0 || !node.children.some((item) => item.type === liType)) {\n return editor.tf.removeNodes({ at: path });\n }\n const nextPath = PathApi14.next(path);\n const nextNode = NodeApi11.get(editor, nextPath);\n if (nextNode?.type === node.type) {\n moveListItemsToList(editor, {\n deleteFromList: true,\n fromList: [nextNode, nextPath],\n toList: [node, path]\n });\n }\n const prevPath = PathApi14.previous(path);\n const prevNode = NodeApi11.get(editor, prevPath);\n if (prevNode?.type === node.type) {\n editor.tf.normalizeNode([prevNode, prevPath]);\n return;\n }\n if (normalizeNestedList(editor, { nestedListItem: [node, path] })) {\n return;\n }\n }\n if (node.type === editor.getType(BaseListItemPlugin) && normalizeListItem(editor, {\n listItem: [node, path],\n validLiChildrenTypes: getOptions().validLiChildrenTypes\n })) {\n return;\n }\n if (node.type === licType && licType !== defaultType && editor.api.parent(path)?.[0].type !== liType) {\n editor.tf.setNodes({ type: defaultType }, { at: path });\n return;\n }\n normalizeNode([node, path]);\n }\n }\n});\n\n// src/react/onKeyDownList.ts\nimport { Hotkeys, RangeApi as RangeApi5 } from \"@udecode/plate\";\nvar onKeyDownList = ({\n editor,\n event,\n getOptions\n}) => {\n if (event.defaultPrevented) return;\n const isTab = Hotkeys.isTab(editor, event);\n const isUntab = Hotkeys.isUntab(editor, event);\n let workRange = editor.selection;\n if (editor.selection && (isTab || isUntab)) {\n const { selection } = editor;\n if (!editor.api.isCollapsed()) {\n const { anchor, focus } = RangeApi5.isBackward(selection) ? { anchor: { ...selection.focus }, focus: { ...selection.anchor } } : { anchor: { ...selection.anchor }, focus: { ...selection.focus } };\n const unhangRange = editor.api.unhangRange({ anchor, focus });\n if (unhangRange) {\n workRange = unhangRange;\n editor.tf.select(unhangRange);\n }\n }\n const listSelected = editor.api.some({\n match: { type: editor.getType(BaseListItemPlugin) }\n });\n if (workRange && listSelected) {\n event.preventDefault();\n moveListItems(editor, {\n at: workRange,\n enableResetOnShiftTab: getOptions().enableResetOnShiftTab,\n increase: isTab\n });\n return true;\n }\n }\n};\n\n// src/react/withDeleteBackwardList.ts\nimport {\n BaseParagraphPlugin as BaseParagraphPlugin3,\n PathApi as PathApi15,\n deleteMerge as deleteMerge3\n} from \"@udecode/plate\";\nimport { getEditorPlugin } from \"@udecode/plate/react\";\nimport { BaseResetNodePlugin } from \"@udecode/plate-reset-node\";\nimport {\n SIMULATE_BACKSPACE,\n onKeyDownResetNode\n} from \"@udecode/plate-reset-node/react\";\nvar withDeleteBackwardList = ({\n editor,\n tf: { deleteBackward }\n}) => ({\n transforms: {\n deleteBackward(unit) {\n const deleteBackwardList = () => {\n const res = getListItemEntry(editor, {});\n let moved = false;\n if (res) {\n const { list, listItem } = res;\n if (editor.api.isAt({\n match: (node) => node.type === editor.getType(BaseListItemPlugin),\n start: true\n })) {\n editor.tf.withoutNormalizing(() => {\n moved = removeFirstListItem(editor, { list, listItem });\n if (moved) return true;\n moved = removeListItem(editor, { list, listItem });\n if (moved) return true;\n if (!PathApi15.hasPrevious(listItem[1]) && !isListNested(editor, list[1])) {\n onKeyDownResetNode({\n ...getEditorPlugin(\n editor,\n BaseResetNodePlugin.configure({\n options: {\n rules: [\n {\n defaultType: editor.getType(BaseParagraphPlugin3),\n hotkey: \"backspace\",\n predicate: () => editor.api.isAt({ start: true }),\n types: [editor.getType(BaseListItemPlugin)],\n onReset: (e) => unwrapList(e)\n }\n ]\n }\n })\n ),\n event: SIMULATE_BACKSPACE\n });\n moved = true;\n return;\n }\n const pointBeforeListItem = editor.api.before(\n editor.selection.focus\n );\n let currentLic;\n let hasMultipleChildren = false;\n if (pointBeforeListItem && isAcrossListItems(editor, {\n anchor: editor.selection.anchor,\n focus: pointBeforeListItem\n })) {\n const licType = editor.getType(BaseListItemContentPlugin);\n const _licNodes = editor.api.nodes({\n at: listItem[1],\n match: (node) => node.type === licType,\n mode: \"lowest\"\n });\n currentLic = [..._licNodes][0];\n hasMultipleChildren = currentLic[0].children.length > 1;\n }\n deleteMerge3(editor, {\n reverse: true,\n unit\n });\n moved = true;\n if (!currentLic || !hasMultipleChildren) return;\n const leftoverListItem = editor.api.node(\n PathApi15.parent(currentLic[1])\n );\n if (leftoverListItem && leftoverListItem[0].children.length === 0) {\n editor.tf.removeNodes({ at: leftoverListItem[1] });\n }\n });\n }\n }\n return moved;\n };\n if (deleteBackwardList()) return;\n deleteBackward(unit);\n }\n }\n});\n\n// src/react/withInsertBreakList.ts\nimport { BaseParagraphPlugin as BaseParagraphPlugin4, createTSlatePlugin as createTSlatePlugin3 } from \"@udecode/plate\";\nimport { getEditorPlugin as getEditorPlugin2 } from \"@udecode/plate/react\";\nimport {\n SIMULATE_BACKSPACE as SIMULATE_BACKSPACE2,\n onKeyDownResetNode as onKeyDownResetNode2\n} from \"@udecode/plate-reset-node/react\";\nvar withInsertBreakList = ({\n editor,\n tf: { insertBreak }\n}) => ({\n transforms: {\n insertBreak() {\n const insertBreakList = () => {\n if (!editor.selection) return;\n const res = getListItemEntry(editor, {});\n let moved;\n if (res) {\n const { list, listItem } = res;\n if (editor.api.isEmpty(editor.selection, { block: true })) {\n moved = moveListItemUp(editor, {\n list,\n listItem\n });\n if (moved) return true;\n }\n }\n const didReset = onKeyDownResetNode2({\n ...getEditorPlugin2(\n editor,\n createTSlatePlugin3({\n options: {\n rules: [\n {\n defaultType: editor.getType(BaseParagraphPlugin4),\n predicate: () => !moved && editor.api.isEmpty(editor.selection, { block: true }),\n types: [editor.getType(BaseListItemPlugin)],\n onReset: (_editor) => unwrapList(_editor)\n }\n ]\n }\n })\n ),\n event: SIMULATE_BACKSPACE2\n });\n if (didReset) return true;\n if (!moved) {\n const inserted = insertListItem(editor);\n if (inserted) return true;\n }\n };\n if (insertBreakList()) return;\n insertBreak();\n }\n }\n});\n\n// src/react/withList.ts\nvar withList = (ctx) => ({\n transforms: {\n ...withInsertBreakList(ctx).transforms,\n ...withDeleteBackwardList(ctx).transforms,\n ...withDeleteForwardList(ctx).transforms,\n ...withDeleteFragmentList(ctx).transforms,\n ...withInsertFragmentList(ctx).transforms,\n ...withNormalizeList(ctx).transforms\n }\n});\n\n// src/react/ListPlugin.tsx\nvar BulletedListPlugin = toPlatePlugin(BaseBulletedListPlugin, {\n dependencies: [\"list\"],\n handlers: {\n onKeyDown: onKeyDownList\n }\n});\nvar NumberedListPlugin = toPlatePlugin(BaseNumberedListPlugin, {\n dependencies: [\"list\"],\n handlers: {\n onKeyDown: onKeyDownList\n }\n});\nvar ListItemContentPlugin = toPlatePlugin(BaseListItemContentPlugin);\nvar ListItemPlugin = toPlatePlugin(BaseListItemPlugin);\nvar ListPlugin = toPlatePlugin(BaseListPlugin, {\n plugins: [\n BulletedListPlugin,\n NumberedListPlugin,\n ListItemPlugin,\n ListItemContentPlugin\n ]\n}).overrideEditor(withList).extend(({ editor }) => ({\n shortcuts: {\n toggleBulletedList: {\n keys: [[Key.Mod, Key.Alt, \"5\"]],\n preventDefault: true,\n handler: () => {\n editor.getTransforms(ListPlugin).toggle.bulletedList();\n }\n },\n toggleNumberedList: {\n keys: [[Key.Mod, Key.Alt, \"6\"]],\n preventDefault: true,\n handler: () => {\n editor.getTransforms(ListPlugin).toggle.numberedList();\n }\n }\n }\n}));\n\n// src/react/TodoListPlugin.tsx\nimport { Key as Key2, toTPlatePlugin } from \"@udecode/plate/react\";\nvar TodoListPlugin = toTPlatePlugin(\n BaseTodoListPlugin,\n ({ editor, type }) => ({\n shortcuts: {\n toggleTodoList: {\n keys: [\n [Key2.Mod, Key2.Alt, \"4\"],\n [Key2.Mod, Key2.Shift, \"4\"]\n ],\n preventDefault: true,\n handler: () => {\n editor.tf.toggleBlock(type);\n }\n }\n }\n })\n);\n\n// src/react/hooks/useListToolbarButton.ts\nimport { useEditorRef, useEditorSelector } from \"@udecode/plate/react\";\nvar useListToolbarButtonState = ({\n nodeType = BaseBulletedListPlugin.key\n} = {}) => {\n const pressed = useEditorSelector(\n (editor) => !!editor.selection && editor.api.some({ match: { type: editor.getType({ key: nodeType }) } }),\n [nodeType]\n );\n return {\n nodeType,\n pressed\n };\n};\nvar useListToolbarButton = (state) => {\n const editor = useEditorRef();\n const tf = editor.getTransforms(ListPlugin);\n return {\n props: {\n pressed: state.pressed,\n onClick: () => {\n tf.toggle.list({ type: state.nodeType });\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/hooks/useTodoListElement.ts\nimport { useEditorRef as useEditorRef2, useReadOnly } from \"@udecode/plate/react\";\nvar useTodoListElementState = ({\n element\n}) => {\n const editor = useEditorRef2();\n const { checked } = element;\n const readOnly = useReadOnly();\n return {\n checked,\n editor,\n element,\n readOnly\n };\n};\nvar useTodoListElement = (state) => {\n const { checked, element, readOnly } = state;\n const editor = useEditorRef2();\n return {\n checkboxProps: {\n checked: !!checked,\n onCheckedChange: (value) => {\n if (readOnly) return;\n editor.tf.setNodes(\n { checked: value },\n { at: element }\n );\n }\n }\n };\n};\nexport {\n BulletedListPlugin,\n ListItemContentPlugin,\n ListItemPlugin,\n ListPlugin,\n NumberedListPlugin,\n TodoListPlugin,\n onKeyDownList,\n useListToolbarButton,\n useListToolbarButtonState,\n useTodoListElement,\n useTodoListElementState,\n withDeleteBackwardList,\n withInsertBreakList,\n withList\n};\n//# sourceMappingURL=index.mjs.map","// src/react/plugins.ts\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseAudioPlugin.ts\nimport { createSlatePlugin } from \"@udecode/plate\";\nvar BaseAudioPlugin = createSlatePlugin({\n key: \"audio\",\n node: { isElement: true, isVoid: true }\n});\n\n// src/lib/BaseFilePlugin.ts\nimport { createSlatePlugin as createSlatePlugin2 } from \"@udecode/plate\";\nvar BaseFilePlugin = createSlatePlugin2({\n key: \"file\",\n node: { isElement: true, isVoid: true }\n});\n\n// src/lib/BaseVideoPlugin.ts\nimport { createSlatePlugin as createSlatePlugin3 } from \"@udecode/plate\";\nvar BaseVideoPlugin = createSlatePlugin3({\n key: \"video\",\n node: {\n dangerouslyAllowAttributes: [\"width\", \"height\"],\n isElement: true,\n isVoid: true\n }\n});\n\n// src/lib/image/BaseImagePlugin.ts\nimport {\n bindFirst,\n createTSlatePlugin,\n isSlatePluginElement\n} from \"@udecode/plate\";\n\n// src/lib/image/transforms/insertImage.ts\nvar insertImage = (editor, url, options = {}) => {\n const text2 = { text: \"\" };\n const image2 = {\n children: [text2],\n type: editor.getType(BaseImagePlugin),\n url\n };\n editor.tf.insertNodes(image2, {\n nextBlock: true,\n ...options\n });\n};\n\n// src/lib/image/transforms/insertImageFromFiles.ts\nvar insertImageFromFiles = (editor, files, options = {}) => {\n for (const file of files) {\n const reader = new FileReader();\n const [mime] = file.type.split(\"/\");\n if (mime === \"image\") {\n reader.addEventListener(\"load\", async () => {\n if (!reader.result) {\n return;\n }\n const uploadImage = editor.getOptions(BaseImagePlugin).uploadImage;\n const uploadedUrl = uploadImage ? await uploadImage(reader.result) : reader.result;\n insertImage(editor, uploadedUrl, options);\n });\n reader.readAsDataURL(file);\n }\n }\n};\n\n// src/lib/image/utils/isImageUrl.ts\nimport { isUrl } from \"@udecode/plate\";\nvar imageExtensions = /* @__PURE__ */ new Set([\n \"3dv\",\n \"PI1\",\n \"PI2\",\n \"PI3\",\n \"ai\",\n \"amf\",\n \"art\",\n \"art\",\n \"ase\",\n \"awg\",\n \"blp\",\n \"bmp\",\n \"bw\",\n \"bw\",\n \"cd5\",\n \"cdr\",\n \"cgm\",\n \"cit\",\n \"cmx\",\n \"cpt\",\n \"cr2\",\n \"cur\",\n \"cut\",\n \"dds\",\n \"dib\",\n \"djvu\",\n \"dxf\",\n \"e2d\",\n \"ecw\",\n \"egt\",\n \"egt\",\n \"emf\",\n \"eps\",\n \"exif\",\n \"fs\",\n \"gbr\",\n \"gif\",\n \"gpl\",\n \"grf\",\n \"hdp\",\n \"icns\",\n \"ico\",\n \"iff\",\n \"iff\",\n \"int\",\n \"int\",\n \"inta\",\n \"jfif\",\n \"jng\",\n \"jp2\",\n \"jpeg\",\n \"jpg\",\n \"jps\",\n \"jxr\",\n \"lbm\",\n \"lbm\",\n \"liff\",\n \"max\",\n \"miff\",\n \"mng\",\n \"msp\",\n \"nitf\",\n \"nrrd\",\n \"odg\",\n \"ota\",\n \"pam\",\n \"pbm\",\n \"pc1\",\n \"pc2\",\n \"pc3\",\n \"pcf\",\n \"pct\",\n \"pcx\",\n \"pcx\",\n \"pdd\",\n \"pdn\",\n \"pgf\",\n \"pgm\",\n \"pict\",\n \"png\",\n \"pnm\",\n \"pns\",\n \"ppm\",\n \"psb\",\n \"psd\",\n \"psp\",\n \"px\",\n \"pxm\",\n \"pxr\",\n \"qfx\",\n \"ras\",\n \"raw\",\n \"rgb\",\n \"rgb\",\n \"rgba\",\n \"rle\",\n \"sct\",\n \"sgi\",\n \"sgi\",\n \"sid\",\n \"stl\",\n \"sun\",\n \"svg\",\n \"sxd\",\n \"tga\",\n \"tga\",\n \"tif\",\n \"tiff\",\n \"v2d\",\n \"vnd\",\n \"vrml\",\n \"vtf\",\n \"wdp\",\n \"webp\",\n \"wmf\",\n \"x3d\",\n \"xar\",\n \"xbm\",\n \"xcf\",\n \"xpm\"\n]);\nvar isImageUrl = (url) => {\n if (!isUrl(url)) return false;\n const ext = new URL(url).pathname.split(\".\").pop();\n return imageExtensions.has(ext);\n};\n\n// src/lib/image/withImageEmbed.ts\nvar withImageEmbed = ({\n editor,\n getOptions,\n tf: { insertData }\n}) => ({\n transforms: {\n insertData(dataTransfer) {\n if (getOptions().disableEmbedInsert) {\n return insertData(dataTransfer);\n }\n const text2 = dataTransfer.getData(\"text/plain\");\n if (isImageUrl(text2)) {\n insertImage(editor, text2);\n return;\n }\n insertData(dataTransfer);\n }\n }\n});\n\n// src/lib/image/withImageUpload.ts\nimport {\n getInjectedPlugins,\n pipeInsertDataQuery\n} from \"@udecode/plate\";\nvar withImageUpload = ({\n editor,\n getOptions,\n plugin,\n tf: { insertData }\n}) => ({\n transforms: {\n insertData(dataTransfer) {\n if (getOptions().disableUploadInsert) {\n return insertData(dataTransfer);\n }\n const text2 = dataTransfer.getData(\"text/plain\");\n const { files } = dataTransfer;\n if (!text2 && files && files.length > 0) {\n const injectedPlugins = getInjectedPlugins(editor, plugin);\n if (!pipeInsertDataQuery(editor, injectedPlugins, {\n data: text2,\n dataTransfer\n })) {\n return insertData(dataTransfer);\n }\n insertImageFromFiles(editor, files);\n } else {\n return insertData(dataTransfer);\n }\n }\n }\n});\n\n// src/lib/image/BaseImagePlugin.ts\nvar BaseImagePlugin = createTSlatePlugin({\n key: \"img\",\n node: {\n dangerouslyAllowAttributes: [\"alt\", \"width\", \"height\"],\n isElement: true,\n isVoid: true\n }\n}).overrideEditor(withImageUpload).overrideEditor(withImageEmbed).extendEditorTransforms(({ editor }) => ({\n insert: {\n imageFromFiles: bindFirst(insertImageFromFiles, editor)\n }\n})).extend(({ plugin }) => ({\n parsers: {\n html: {\n deserializer: {\n parse: ({ element, type }) => {\n if (isSlatePluginElement(element, type)) {\n return;\n }\n return {\n type: plugin.node.type,\n url: element.getAttribute(\"src\")\n };\n },\n rules: [\n {\n validNodeName: \"IMG\"\n }\n ]\n }\n }\n }\n}));\n\n// src/lib/media/insertMedia.ts\nvar insertMedia = async (editor, {\n getUrl,\n type = editor.getType(BaseImagePlugin),\n ...options\n} = {}) => {\n const url = getUrl ? await getUrl() : window.prompt(\n `Enter the URL of the ${type === BaseImagePlugin.key ? BaseImagePlugin.key : BaseMediaEmbedPlugin.key}`\n );\n if (!url) return;\n if (type === editor.getType(BaseImagePlugin)) {\n insertImage(editor, url, options);\n } else {\n insertMediaEmbed(editor, { url }, options);\n }\n};\n\n// src/lib/media/parseMediaUrl.ts\nvar allowedProtocols = /* @__PURE__ */ new Set([\"http:\", \"https:\"]);\nvar parseMediaUrl = (url, {\n urlParsers\n}) => {\n const embed = (() => {\n for (const parser of urlParsers) {\n const data = parser(url);\n if (data) {\n return data;\n }\n }\n })();\n if (embed?.url) {\n try {\n const { protocol } = new URL(embed.url);\n if (!allowedProtocols.has(protocol)) {\n return void 0;\n }\n } catch {\n console.warn(\"Could not parse URL: \" + embed.url);\n return void 0;\n }\n }\n return embed;\n};\n\n// src/lib/media-embed/BaseMediaEmbedPlugin.ts\nimport { createTSlatePlugin as createTSlatePlugin2 } from \"@udecode/plate\";\n\n// src/lib/media-embed/parseIframeUrl.ts\nvar parseIframeUrl = (url) => {\n if (!url.startsWith(\"http\")) {\n const regexMatchSrc = /src=\".*?\"/;\n const regexGroupQuotes = /\"([^\"]*)\"/;\n const src = regexMatchSrc.exec(url)?.[0];\n const returnString = src?.match(regexGroupQuotes)?.[1];\n if (returnString) {\n url = returnString;\n }\n }\n return url;\n};\n\n// src/lib/media-embed/BaseMediaEmbedPlugin.ts\nvar BaseMediaEmbedPlugin = createTSlatePlugin2({\n key: \"media_embed\",\n node: { isElement: true, isVoid: true },\n options: {\n transformUrl: parseIframeUrl\n }\n}).extend(({ type }) => ({\n parsers: {\n html: {\n deserializer: {\n parse: ({ element }) => {\n const url = element.getAttribute(\"src\");\n if (url) {\n return {\n type,\n url\n };\n }\n },\n rules: [\n {\n validNodeName: \"IFRAME\"\n }\n ]\n }\n }\n }\n}));\n\n// src/lib/media-embed/parseVideoUrl.ts\nimport { isUrl as isUrl2 } from \"@udecode/plate\";\nimport videoParser from \"js-video-url-parser\";\nvar VIDEO_PROVIDERS = [\n \"youtube\",\n \"vimeo\",\n \"dailymotion\",\n \"youku\",\n \"coub\"\n];\n\n// src/lib/media-embed/transforms/insertMediaEmbed.ts\nvar insertMediaEmbed = (editor, { url = \"\" }, options = {}) => {\n if (!editor.selection) return;\n const selectionParentEntry = editor.api.parent(editor.selection);\n if (!selectionParentEntry) return;\n const [, path] = selectionParentEntry;\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n type: editor.getType(BaseMediaEmbedPlugin),\n url\n },\n {\n at: path,\n nextBlock: true,\n ...options\n }\n );\n};\n\n// src/lib/placeholder/BasePlaceholderPlugin.ts\nimport {\n bindFirst as bindFirst2,\n createTSlatePlugin as createTSlatePlugin3\n} from \"@udecode/plate\";\n\n// src/lib/placeholder/transforms/insertPlaceholder.ts\nvar insertPlaceholder = (editor, mediaType, options) => {\n editor.tf.withoutNormalizing(\n () => editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n mediaType,\n type: editor.getType(BasePlaceholderPlugin)\n },\n options\n )\n );\n};\nvar insertImagePlaceholder = (editor, options) => insertPlaceholder(editor, BaseImagePlugin.key, options);\nvar insertVideoPlaceholder = (editor, options) => insertPlaceholder(editor, BaseVideoPlugin.key, options);\nvar insertAudioPlaceholder = (editor, options) => insertPlaceholder(editor, BaseAudioPlugin.key, options);\nvar insertFilePlaceholder = (editor, options) => insertPlaceholder(editor, BaseFilePlugin.key, options);\n\n// src/lib/placeholder/BasePlaceholderPlugin.ts\nvar BasePlaceholderPlugin = createTSlatePlugin3({\n key: \"placeholder\",\n node: { isElement: true, isVoid: true }\n}).extendEditorTransforms(({ editor }) => ({\n insert: {\n audioPlaceholder: bindFirst2(insertAudioPlaceholder, editor),\n filePlaceholder: bindFirst2(insertFilePlaceholder, editor),\n imagePlaceholder: bindFirst2(insertImagePlaceholder, editor),\n videoPlaceholder: bindFirst2(insertVideoPlaceholder, editor)\n }\n}));\n\n// src/react/plugins.ts\nvar ImagePlugin = toPlatePlugin(BaseImagePlugin);\nvar MediaEmbedPlugin = toPlatePlugin(BaseMediaEmbedPlugin);\nvar AudioPlugin = toPlatePlugin(BaseAudioPlugin);\nvar FilePlugin = toPlatePlugin(BaseFilePlugin);\nvar VideoPlugin = toPlatePlugin(BaseVideoPlugin);\n\n// src/react/image/ImagePreviewStore.ts\nimport { createZustandStore } from \"@udecode/plate\";\nvar ImagePreviewStore = createZustandStore(\n {\n boundingClientRect: {},\n currentPreview: null,\n isEditingScale: false,\n openEditorId: null,\n previewList: [],\n scale: 1,\n translate: { x: 0, y: 0 }\n },\n {\n mutative: true,\n name: \"imagePreview\"\n }\n).extendActions((set) => ({\n close: () => {\n set.currentPreview(null);\n set.previewList([]);\n set.openEditorId(null);\n set.scale(1);\n set.translate({ x: 0, y: 0 });\n set.isEditingScale(false);\n }\n})).extendSelectors((_, get) => ({\n isOpen: (editorId) => get.openEditorId() === editorId\n}));\nvar imagePreviewActions = ImagePreviewStore.set;\nvar imagePreviewSelectors = ImagePreviewStore.get;\nvar useImagePreviewSelectors = () => ImagePreviewStore.use;\n\n// src/react/image/openImagePreview.ts\nvar getUrlList = (editor) => {\n const enties = editor.api.nodes({\n at: [],\n match: (n) => n.type === BaseImagePlugin.key\n });\n return Array.from(enties, (item) => ({\n id: item[0].id,\n url: item[0].url\n }));\n};\nvar openImagePreview = (editor, element) => {\n const { id, url } = element;\n const urlList = getUrlList(editor);\n imagePreviewActions.openEditorId(editor.id);\n imagePreviewActions.currentPreview({ id, url });\n imagePreviewActions.previewList(urlList);\n};\n\n// src/react/image/useImagePreview.ts\nimport { useCallback as useCallback2, useEffect, useMemo } from \"react\";\nimport { isHotkey } from \"@udecode/plate\";\nimport { useEditorRef } from \"@udecode/plate/react\";\n\n// src/react/image/useZoom.ts\nimport { useCallback } from \"react\";\nvar useZoom = () => {\n const scale = useImagePreviewSelectors().scale();\n const setScale = imagePreviewActions.scale;\n const setTranslate = imagePreviewActions.translate;\n const zoomIn = useCallback(() => {\n if (scale >= 2) return;\n const targets = [0, 0.5, 1, 1.5, 2];\n const nextScale = targets.find((target) => scale < target);\n nextScale && setScale(nextScale);\n }, [scale]);\n const zoomOut = useCallback(() => {\n if (scale <= 0) return;\n const targets = [0, 0.5, 1, 1.5, 2];\n const previousScale = [...targets].reverse().find((target) => scale > target);\n if (previousScale === 1) setTranslate({ x: 0, y: 0 });\n previousScale && setScale(previousScale);\n }, [scale]);\n return { zoomIn, zoomOut };\n};\n\n// src/react/image/useImagePreview.ts\nvar useImagePreviewState = ({\n scrollSpeed\n}) => {\n const editor = useEditorRef();\n const isOpen = useImagePreviewSelectors().isOpen(editor.id);\n const scale = useImagePreviewSelectors().scale();\n const translate = useImagePreviewSelectors().translate();\n const setTranslate = imagePreviewActions.translate;\n const boundingClientRect = useImagePreviewSelectors().boundingClientRect();\n const currentPreview = useImagePreviewSelectors().currentPreview();\n const setCurrentPreView = imagePreviewActions.currentPreview;\n const previewList = useImagePreviewSelectors().previewList();\n const isEditingScale = useImagePreviewSelectors().isEditingScale();\n const setIsEditingScale = imagePreviewActions.isEditingScale;\n return {\n boundingClientRect,\n currentPreview,\n editor,\n isEditingScale,\n isOpen,\n previewList,\n scale,\n scrollSpeed,\n setCurrentPreView,\n setIsEditingScale,\n setTranslate,\n translate\n };\n};\nvar useImagePreview = ({\n boundingClientRect,\n currentPreview,\n isOpen,\n previewList,\n scale,\n scrollSpeed,\n setCurrentPreView,\n setIsEditingScale,\n setTranslate,\n translate\n}) => {\n useEffect(() => {\n const wheel = (e) => {\n if (scale <= 1) return;\n const { deltaX, deltaY } = e;\n const { x, y } = translate;\n const { bottom, left, right, top } = boundingClientRect;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n let leftOffset = x - deltaX / scrollSpeed;\n let topOffset = y - deltaY / scrollSpeed;\n if (left - deltaX / scrollSpeed > windowWidth / 2 && deltaX < 0) {\n leftOffset = x;\n }\n if (right - deltaX / scrollSpeed < windowWidth / 2 && deltaX > 0) {\n leftOffset = x;\n }\n if (top - deltaY / scrollSpeed > windowHeight / 2 && deltaY < 0) {\n topOffset = y;\n }\n if (bottom - deltaY / scrollSpeed < windowHeight / 2 && deltaY > 0) {\n topOffset = y;\n }\n setTranslate({\n x: leftOffset,\n y: topOffset\n });\n };\n if (!isOpen) return document.removeEventListener(\"wheel\", wheel);\n document.addEventListener(\"wheel\", wheel);\n return () => {\n document.removeEventListener(\"wheel\", wheel);\n };\n }, [isOpen, translate, scale]);\n const { zoomIn, zoomOut } = useZoom();\n const currentPreviewIndex = useMemo(() => {\n if (!currentPreview) return null;\n return previewList.findIndex(\n (item) => item.url === currentPreview.url && item.id === currentPreview.id\n );\n }, [currentPreview]);\n const onClose = useCallback2(() => {\n imagePreviewActions.close();\n }, []);\n const [prevDisabled, nextDisabled] = useMemo(\n () => [\n currentPreviewIndex === 0,\n currentPreviewIndex === previewList.length - 1\n ],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [currentPreviewIndex]\n );\n const [zoomOutDisabled, zoomInDisabled] = useMemo(\n () => [scale <= 0.5, scale >= 2],\n [scale]\n );\n useEffect(() => {\n const keydown = (e) => {\n if (isHotkey(\"escape\")(e)) {\n e.stopPropagation();\n onClose();\n }\n };\n if (!isOpen) return document.removeEventListener(\"keydown\", keydown);\n document.addEventListener(\"keydown\", keydown);\n return () => {\n document.removeEventListener(\"keydown\", keydown);\n };\n }, [isOpen]);\n return {\n closeProps: {\n onClick: () => onClose()\n },\n currentUrlIndex: currentPreviewIndex,\n maskLayerProps: {\n onClick: () => onClose()\n },\n nextDisabled,\n nextProps: {\n disabled: nextDisabled,\n onClick: () => {\n if (typeof currentPreviewIndex !== \"number\") return;\n setCurrentPreView(previewList[currentPreviewIndex + 1]);\n }\n },\n prevDisabled,\n prevProps: {\n disabled: prevDisabled,\n onClick: () => {\n if (typeof currentPreviewIndex !== \"number\") return;\n setCurrentPreView(previewList[currentPreviewIndex - 1]);\n }\n },\n scaleTextProps: {\n onClick: () => setIsEditingScale(true)\n },\n zommOutProps: {\n disabled: zoomOutDisabled,\n onClick: () => zoomOut()\n },\n zoomInDisabled,\n zoomInProps: {\n disabled: zoomInDisabled,\n onClick: () => zoomIn()\n },\n zoomOutDisabled\n };\n};\n\n// src/react/image/components/Image.tsx\nimport {\n createPrimitiveComponent,\n useEditorRef as useEditorRef2,\n useElement\n} from \"@udecode/plate/react\";\nvar useImage = () => {\n const element = useElement();\n const editor = useEditorRef2();\n return {\n props: {\n draggable: true,\n src: element.url,\n onDoubleClickCapture: () => {\n openImagePreview(editor, element);\n }\n }\n };\n};\nvar Image = createPrimitiveComponent(\"img\")({\n propsHook: useImage\n});\n\n// src/react/image/components/PreviewImage.tsx\nimport React, { useEffect as useEffect2, useMemo as useMemo2 } from \"react\";\nimport { createPrimitiveComponent as createPrimitiveComponent2 } from \"@udecode/plate/react\";\nvar usePreviewImageState = () => {\n const currentPreview = useImagePreviewSelectors().currentPreview();\n const translate = useImagePreviewSelectors().translate();\n const scale = useImagePreviewSelectors().scale();\n const imageRef = React.useRef(null);\n const setBoundingClientRect = imagePreviewActions.boundingClientRect;\n return {\n currentPreview,\n imageRef,\n scale,\n setBoundingClientRect,\n translate\n };\n};\nvar usePreviewImage = ({\n currentPreview,\n imageRef,\n scale,\n setBoundingClientRect,\n translate\n}) => {\n const isZoomIn = useMemo2(() => scale <= 1, [scale]);\n const { zoomIn, zoomOut } = useZoom();\n useEffect2(() => {\n if (scale <= 1) return;\n const boundingClientRect = imageRef.current?.getBoundingClientRect();\n if (!boundingClientRect) return;\n setBoundingClientRect(boundingClientRect);\n }, [translate.x, translate.y, scale]);\n return {\n props: {\n draggable: false,\n ref: imageRef,\n src: currentPreview?.url,\n style: {\n cursor: isZoomIn ? \"zoom-in\" : \"zoom-out\",\n transform: `scale(${scale}) translate(${translate.x + \"px\"}, ${translate.y + \"px\"})`\n },\n onClick: (e) => {\n e.stopPropagation();\n isZoomIn ? zoomIn() : zoomOut();\n }\n }\n };\n};\nvar PreviewImage = createPrimitiveComponent2(\"img\")({\n propsHook: usePreviewImage,\n stateHook: usePreviewImageState\n});\n\n// src/react/image/components/ScaleInput.tsx\nimport { useEffect as useEffect3, useRef, useState } from \"react\";\nimport { isHotkey as isHotkey2 } from \"@udecode/plate\";\nvar useScaleInputState = () => {\n const scale = useImagePreviewSelectors().scale();\n const setScale = imagePreviewActions.scale;\n const isEditingScale = useImagePreviewSelectors().isEditingScale();\n const setIsEditingScale = imagePreviewActions.isEditingScale;\n const [value, setValue] = useState(scale * 100 + \"\");\n const inputRef = useRef();\n return {\n inputRef,\n isEditingScale,\n setIsEditingScale,\n setScale,\n setValue,\n value\n };\n};\nvar useScaleInput = ({\n inputRef,\n isEditingScale,\n setIsEditingScale,\n setScale,\n setValue,\n value\n}) => {\n useEffect3(() => {\n if (!isEditingScale) return;\n setTimeout(() => {\n inputRef.current?.focus();\n inputRef.current?.select();\n }, 0);\n }, [isEditingScale]);\n return {\n props: {\n value,\n onChange: (e) => {\n setValue(e.target.value);\n },\n onKeyDown: (e) => {\n if (isHotkey2(\"enter\")(e)) {\n if (Number(value) <= 50) {\n setScale(0.5);\n setIsEditingScale(false);\n return;\n }\n if (Number(value) >= 200) {\n setScale(2);\n setIsEditingScale(false);\n return;\n }\n setScale(Number((Number(value) / 100).toFixed(2)));\n setIsEditingScale(false);\n }\n }\n },\n ref: inputRef\n };\n};\n\n// src/react/media/mediaStore.ts\nimport { createAtomStore } from \"@udecode/plate/react\";\nvar { MediaProvider, mediaStore, useMediaStore } = createAtomStore(\n {\n showCaption: false\n },\n { name: \"media\" }\n);\n\n// src/react/media/useMediaController.ts\nimport React2 from \"react\";\nvar useMediaControllerState = () => {\n const [alignOpen, setAlignOpen] = React2.useState(false);\n return {\n alignOpen,\n setAlignOpen\n };\n};\nvar useMediaController = ({\n setAlignOpen\n}) => {\n return {\n MediaControllerDropDownMenuProps: {\n setAlignOpen\n }\n };\n};\nvar useMediaControllerDropDownMenu = (props) => {\n React2.useEffect(\n () => props.setAlignOpen(props.openState.open),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.openState.open]\n );\n};\n\n// src/react/media/useMediaState.ts\nimport React3 from \"react\";\nimport {\n useEditorRef as useEditorRef3,\n useElement as useElement2,\n useFocused,\n useReadOnly,\n useSelected\n} from \"@udecode/plate/react\";\nvar useMediaState = ({\n urlParsers\n} = {}) => {\n const editor = useEditorRef3();\n const element = useElement2();\n const focused = useFocused();\n const selected = useSelected();\n const readOnly = useReadOnly();\n const { id, align, isUpload, name, type, url } = element;\n const embed = React3.useMemo(() => {\n if (!urlParsers || type !== editor.getType(BaseVideoPlugin) && type !== editor.getType(BaseMediaEmbedPlugin))\n return;\n return parseMediaUrl(url, { urlParsers });\n }, [urlParsers, url]);\n const isTweet = embed?.provider === \"twitter\";\n const isVideo = !!embed?.provider && VIDEO_PROVIDERS.includes(embed.provider);\n const isYoutube = embed?.provider === \"youtube\";\n return {\n id,\n align,\n embed,\n focused,\n isTweet,\n isUpload,\n isVideo,\n isYoutube,\n name,\n readOnly,\n selected,\n unsafeUrl: url\n };\n};\n\n// src/react/media/useMediaToolbarButton.ts\nimport { useEditorRef as useEditorRef4 } from \"@udecode/plate/react\";\nvar useMediaToolbarButton = ({\n nodeType\n} = {}) => {\n const editor = useEditorRef4();\n return {\n props: {\n onClick: async () => {\n await insertMedia(editor, { type: nodeType });\n },\n onMouseDown: (e) => {\n e.preventDefault();\n }\n }\n };\n};\n\n// src/react/media/FloatingMedia/FloatingMediaEditButton.tsx\nimport React4 from \"react\";\nimport { createPrimitiveComponent as createPrimitiveComponent3, useElement as useElement3 } from \"@udecode/plate/react\";\n\n// src/react/media/FloatingMedia/FloatingMediaStore.ts\nimport { createZustandStore as createZustandStore2 } from \"@udecode/plate\";\nvar FloatingMediaStore = createZustandStore2(\n {\n isEditing: false,\n url: \"\"\n },\n {\n mutative: true,\n name: \"floatingMedia\"\n }\n).extendActions((set) => ({\n reset: () => {\n set.url(\"\");\n set.isEditing(false);\n }\n}));\nvar floatingMediaActions = FloatingMediaStore.set;\nvar floatingMediaSelectors = FloatingMediaStore.get;\nvar useFloatingMediaSelectors = () => FloatingMediaStore.use;\n\n// src/react/media/FloatingMedia/FloatingMediaEditButton.tsx\nvar useFloatingMediaEditButton = () => {\n const element = useElement3();\n return {\n props: {\n onClick: React4.useCallback(() => {\n floatingMediaActions.url(element.url);\n floatingMediaActions.isEditing(true);\n }, [element.url])\n }\n };\n};\nvar FloatingMediaEditButton = createPrimitiveComponent3(\"button\")({\n propsHook: useFloatingMediaEditButton\n});\n\n// src/react/media/FloatingMedia/FloatingMediaUrlInput.tsx\nimport React5 from \"react\";\nimport {\n createPrimitiveComponent as createPrimitiveComponent4,\n useEditorRef as useEditorRef5,\n useElement as useElement4,\n useHotkeys\n} from \"@udecode/plate/react\";\n\n// src/react/media/FloatingMedia/submitFloatingMedia.ts\nimport {\n isUrl as isUrl3\n} from \"@udecode/plate\";\nvar submitFloatingMedia = (editor, {\n element,\n plugin\n}) => {\n let url = floatingMediaSelectors.url();\n if (url === element.url) {\n floatingMediaActions.reset();\n return true;\n }\n const { isUrl: _isUrl = isUrl3, transformUrl } = editor.getOptions(plugin);\n const isValid = _isUrl(url);\n if (!isValid) return;\n if (transformUrl) {\n url = transformUrl(url);\n }\n editor.tf.setNodes({\n url\n });\n floatingMediaActions.reset();\n editor.tf.focus({ at: editor.selection });\n return true;\n};\n\n// src/react/media/FloatingMedia/FloatingMediaUrlInput.tsx\nvar useFloatingMediaUrlInputState = ({\n plugin\n}) => {\n const editor = useEditorRef5();\n const element = useElement4();\n useHotkeys(\n \"enter\",\n (e) => {\n if (submitFloatingMedia(editor, { element, plugin })) {\n e.preventDefault();\n }\n },\n {\n enableOnFormTags: [\"INPUT\"]\n },\n []\n );\n useHotkeys(\n \"escape\",\n () => {\n if (floatingMediaSelectors.isEditing()) {\n floatingMediaActions.reset();\n editor.tf.focus({ at: editor.selection });\n }\n },\n {\n enableOnContentEditable: true,\n enableOnFormTags: [\"INPUT\"]\n },\n []\n );\n return {\n defaultValue: floatingMediaSelectors.url()\n };\n};\nvar useFloatingMediaUrlInput = ({\n defaultValue\n}) => {\n const onChange = React5.useCallback((e) => {\n floatingMediaActions.url(e.target.value);\n }, []);\n return {\n props: {\n autoFocus: true,\n defaultValue,\n onChange\n }\n };\n};\nvar FloatingMediaUrlInput = createPrimitiveComponent4(\"input\")({\n propsHook: useFloatingMediaUrlInput,\n stateHook: useFloatingMediaUrlInputState\n});\n\n// src/react/media/FloatingMedia/FloatingMedia.tsx\nvar FloatingMedia = {\n EditButton: FloatingMediaEditButton,\n UrlInput: FloatingMediaUrlInput\n};\n\n// src/react/placeholder/PlaceholderPlugin.tsx\nimport {\n NodeApi,\n bindFirst as bindFirst3\n} from \"@udecode/plate\";\nimport { toTPlatePlugin } from \"@udecode/plate/react\";\n\n// src/react/placeholder/transforms/insertMedia.ts\nimport {\n PathApi,\n nanoid\n} from \"@udecode/plate\";\n\n// src/react/placeholder/type.ts\nvar UploadErrorCode = /* @__PURE__ */ ((UploadErrorCode2) => {\n UploadErrorCode2[UploadErrorCode2[\"INVALID_FILE_TYPE\"] = 400] = \"INVALID_FILE_TYPE\";\n UploadErrorCode2[UploadErrorCode2[\"TOO_MANY_FILES\"] = 402] = \"TOO_MANY_FILES\";\n UploadErrorCode2[UploadErrorCode2[\"INVALID_FILE_SIZE\"] = 403] = \"INVALID_FILE_SIZE\";\n UploadErrorCode2[UploadErrorCode2[\"TOO_LESS_FILES\"] = 405] = \"TOO_LESS_FILES\";\n UploadErrorCode2[UploadErrorCode2[\"TOO_LARGE\"] = 413] = \"TOO_LARGE\";\n return UploadErrorCode2;\n})(UploadErrorCode || {});\n\n// src/react/placeholder/utils/createUploadError.ts\nvar createUploadError = (code, data) => {\n return { code, data };\n};\nvar isUploadError = (error) => {\n return typeof error === \"object\" && error !== null && \"code\" in error && \"data\" in error && typeof error.data === \"object\" && error.data !== null && \"files\" in error.data && Array.isArray(error.data.files);\n};\n\n// src/react/placeholder/internal/application.ts\nvar application = {\n \"application/andrew-inset\": {\n extensions: [\"ez\"],\n source: \"iana\"\n },\n \"application/applixware\": {\n extensions: [\"aw\"],\n source: \"apache\"\n },\n \"application/atom+xml\": {\n extensions: [\"atom\"],\n source: \"iana\"\n },\n \"application/atomcat+xml\": {\n extensions: [\"atomcat\"],\n source: \"iana\"\n },\n \"application/atomdeleted+xml\": {\n extensions: [\"atomdeleted\"],\n source: \"iana\"\n },\n \"application/atomsvc+xml\": {\n extensions: [\"atomsvc\"],\n source: \"iana\"\n },\n \"application/atsc-dwd+xml\": {\n extensions: [\"dwd\"],\n source: \"iana\"\n },\n \"application/atsc-held+xml\": {\n extensions: [\"held\"],\n source: \"iana\"\n },\n \"application/atsc-rsat+xml\": {\n extensions: [\"rsat\"],\n source: \"iana\"\n },\n \"application/calendar+xml\": {\n extensions: [\"xcs\"],\n source: \"iana\"\n },\n \"application/ccxml+xml\": {\n extensions: [\"ccxml\"],\n source: \"iana\"\n },\n \"application/cdfx+xml\": {\n extensions: [\"cdfx\"],\n source: \"iana\"\n },\n \"application/cdmi-capability\": {\n extensions: [\"cdmia\"],\n source: \"iana\"\n },\n \"application/cdmi-container\": {\n extensions: [\"cdmic\"],\n source: \"iana\"\n },\n \"application/cdmi-domain\": {\n extensions: [\"cdmid\"],\n source: \"iana\"\n },\n \"application/cdmi-object\": {\n extensions: [\"cdmio\"],\n source: \"iana\"\n },\n \"application/cdmi-queue\": {\n extensions: [\"cdmiq\"],\n source: \"iana\"\n },\n \"application/cpl+xml\": {\n extensions: [\"cpl\"],\n source: \"iana\"\n },\n \"application/cu-seeme\": {\n extensions: [\"cu\"],\n source: \"apache\"\n },\n \"application/dash+xml\": {\n extensions: [\"mpd\"],\n source: \"iana\"\n },\n \"application/dash-patch+xml\": {\n extensions: [\"mpp\"],\n source: \"iana\"\n },\n \"application/davmount+xml\": {\n extensions: [\"davmount\"],\n source: \"iana\"\n },\n \"application/dicom\": {\n extensions: [\"dcm\"],\n source: \"iana\"\n },\n \"application/docbook+xml\": {\n extensions: [\"dbk\"],\n source: \"apache\"\n },\n \"application/dssc+der\": {\n extensions: [\"dssc\"],\n source: \"iana\"\n },\n \"application/dssc+xml\": {\n extensions: [\"xdssc\"],\n source: \"iana\"\n },\n \"application/ecmascript\": {\n extensions: [\"es\", \"ecma\"],\n source: \"iana\"\n },\n \"application/emma+xml\": {\n extensions: [\"emma\"],\n source: \"iana\"\n },\n \"application/emotionml+xml\": {\n extensions: [\"emotionml\"],\n source: \"iana\"\n },\n \"application/epub+zip\": {\n extensions: [\"epub\"],\n source: \"iana\"\n },\n \"application/exi\": {\n extensions: [\"exi\"],\n source: \"iana\"\n },\n \"application/express\": {\n extensions: [\"exp\"],\n source: \"iana\"\n },\n \"application/fdt+xml\": {\n extensions: [\"fdt\"],\n source: \"iana\"\n },\n \"application/font-tdpfr\": {\n extensions: [\"pfr\"],\n source: \"iana\"\n },\n \"application/geo+json\": {\n extensions: [\"geojson\"],\n source: \"iana\"\n },\n \"application/gml+xml\": {\n extensions: [\"gml\"],\n source: \"iana\"\n },\n \"application/gpx+xml\": {\n extensions: [\"gpx\"],\n source: \"apache\"\n },\n \"application/gxf\": {\n extensions: [\"gxf\"],\n source: \"apache\"\n },\n \"application/gzip\": {\n extensions: [\"gz\"],\n source: \"iana\"\n },\n \"application/hyperstudio\": {\n extensions: [\"stk\"],\n source: \"iana\"\n },\n \"application/inkml+xml\": {\n extensions: [\"ink\", \"inkml\"],\n source: \"iana\"\n },\n \"application/ipfix\": {\n extensions: [\"ipfix\"],\n source: \"iana\"\n },\n \"application/its+xml\": {\n extensions: [\"its\"],\n source: \"iana\"\n },\n \"application/java-archive\": {\n extensions: [\"jar\", \"war\", \"ear\"],\n source: \"apache\"\n },\n \"application/java-serialized-object\": {\n extensions: [\"ser\"],\n source: \"apache\"\n },\n \"application/java-vm\": {\n extensions: [\"class\"],\n source: \"apache\"\n },\n \"application/javascript\": {\n charset: \"UTF-8\",\n extensions: [\"js\", \"mjs\"],\n source: \"iana\"\n },\n \"application/json\": {\n charset: \"UTF-8\",\n extensions: [\"json\", \"map\"],\n source: \"iana\"\n },\n \"application/jsonml+json\": {\n extensions: [\"jsonml\"],\n source: \"apache\"\n },\n \"application/ld+json\": {\n extensions: [\"jsonld\"],\n source: \"iana\"\n },\n \"application/lgr+xml\": {\n extensions: [\"lgr\"],\n source: \"iana\"\n },\n \"application/lost+xml\": {\n extensions: [\"lostxml\"],\n source: \"iana\"\n },\n \"application/mac-binhex40\": {\n extensions: [\"hqx\"],\n source: \"iana\"\n },\n \"application/mac-compactpro\": {\n extensions: [\"cpt\"],\n source: \"apache\"\n },\n \"application/mads+xml\": {\n extensions: [\"mads\"],\n source: \"iana\"\n },\n \"application/manifest+json\": {\n charset: \"UTF-8\",\n extensions: [\"webmanifest\"],\n source: \"iana\"\n },\n \"application/marc\": {\n extensions: [\"mrc\"],\n source: \"iana\"\n },\n \"application/marcxml+xml\": {\n extensions: [\"mrcx\"],\n source: \"iana\"\n },\n \"application/mathematica\": {\n extensions: [\"ma\", \"nb\", \"mb\"],\n source: \"iana\"\n },\n \"application/mathml+xml\": {\n extensions: [\"mathml\"],\n source: \"iana\"\n },\n \"application/mbox\": {\n extensions: [\"mbox\"],\n source: \"iana\"\n },\n \"application/media-policy-dataset+xml\": {\n extensions: [\"mpf\"],\n source: \"iana\"\n },\n \"application/mediaservercontrol+xml\": {\n extensions: [\"mscml\"],\n source: \"iana\"\n },\n \"application/metalink+xml\": {\n extensions: [\"metalink\"],\n source: \"apache\"\n },\n \"application/metalink4+xml\": {\n extensions: [\"meta4\"],\n source: \"iana\"\n },\n \"application/mets+xml\": {\n extensions: [\"mets\"],\n source: \"iana\"\n },\n \"application/mmt-aei+xml\": {\n extensions: [\"maei\"],\n source: \"iana\"\n },\n \"application/mmt-usd+xml\": {\n extensions: [\"musd\"],\n source: \"iana\"\n },\n \"application/mods+xml\": {\n extensions: [\"mods\"],\n source: \"iana\"\n },\n \"application/mp4\": {\n extensions: [\"mp4s\", \"m4p\"],\n source: \"iana\"\n },\n \"application/mp21\": {\n extensions: [\"m21\", \"mp21\"],\n source: \"iana\"\n },\n \"application/msword\": {\n extensions: [\"doc\", \"dot\"],\n source: \"iana\"\n },\n \"application/mxf\": {\n extensions: [\"mxf\"],\n source: \"iana\"\n },\n \"application/n-quads\": {\n extensions: [\"nq\"],\n source: \"iana\"\n },\n \"application/n-triples\": {\n extensions: [\"nt\"],\n source: \"iana\"\n },\n \"application/node\": {\n extensions: [\"cjs\"],\n source: \"iana\"\n },\n \"application/octet-stream\": {\n extensions: [\n \"bin\",\n \"dms\",\n \"lrf\",\n \"mar\",\n \"so\",\n \"dist\",\n \"distz\",\n \"pkg\",\n \"bpk\",\n \"dump\",\n \"elc\",\n \"deploy\",\n \"exe\",\n \"dll\",\n \"deb\",\n \"dmg\",\n \"iso\",\n \"img\",\n \"msi\",\n \"msp\",\n \"msm\",\n \"buffer\"\n ],\n source: \"iana\"\n },\n \"application/oda\": {\n extensions: [\"oda\"],\n source: \"iana\"\n },\n \"application/oebps-package+xml\": {\n extensions: [\"opf\"],\n source: \"iana\"\n },\n \"application/ogg\": {\n extensions: [\"ogx\"],\n source: \"iana\"\n },\n \"application/omdoc+xml\": {\n extensions: [\"omdoc\"],\n source: \"apache\"\n },\n \"application/onenote\": {\n extensions: [\"onetoc\", \"onetoc2\", \"onetmp\", \"onepkg\"],\n source: \"apache\"\n },\n \"application/oxps\": {\n extensions: [\"oxps\"],\n source: \"iana\"\n },\n \"application/p2p-overlay+xml\": {\n extensions: [\"relo\"],\n source: \"iana\"\n },\n \"application/patch-ops-error+xml\": {\n extensions: [\"xer\"],\n source: \"iana\"\n },\n \"application/pdf\": {\n extensions: [\"pdf\"],\n source: \"iana\"\n },\n \"application/pgp-encrypted\": {\n extensions: [\"pgp\"],\n source: \"iana\"\n },\n \"application/pgp-keys\": {\n extensions: [\"asc\"],\n source: \"iana\"\n },\n \"application/pgp-signature\": {\n extensions: [\"asc\", \"sig\"],\n source: \"iana\"\n },\n \"application/pics-rules\": {\n extensions: [\"prf\"],\n source: \"apache\"\n },\n \"application/pkcs7-mime\": {\n extensions: [\"p7m\", \"p7c\"],\n source: \"iana\"\n },\n \"application/pkcs7-signature\": {\n extensions: [\"p7s\"],\n source: \"iana\"\n },\n \"application/pkcs8\": {\n extensions: [\"p8\"],\n source: \"iana\"\n },\n \"application/pkcs10\": {\n extensions: [\"p10\"],\n source: \"iana\"\n },\n \"application/pkix-attr-cert\": {\n extensions: [\"ac\"],\n source: \"iana\"\n },\n \"application/pkix-cert\": {\n extensions: [\"cer\"],\n source: \"iana\"\n },\n \"application/pkix-crl\": {\n extensions: [\"crl\"],\n source: \"iana\"\n },\n \"application/pkix-pkipath\": {\n extensions: [\"pkipath\"],\n source: \"iana\"\n },\n \"application/pkixcmp\": {\n extensions: [\"pki\"],\n source: \"iana\"\n },\n \"application/pls+xml\": {\n extensions: [\"pls\"],\n source: \"iana\"\n },\n \"application/postscript\": {\n extensions: [\"ai\", \"eps\", \"ps\"],\n source: \"iana\"\n },\n \"application/provenance+xml\": {\n extensions: [\"provx\"],\n source: \"iana\"\n },\n \"application/prs.cww\": {\n extensions: [\"cww\"],\n source: \"iana\"\n },\n \"application/pskc+xml\": {\n extensions: [\"pskcxml\"],\n source: \"iana\"\n },\n \"application/rdf+xml\": {\n extensions: [\"rdf\", \"owl\"],\n source: \"iana\"\n },\n \"application/reginfo+xml\": {\n extensions: [\"rif\"],\n source: \"iana\"\n },\n \"application/relax-ng-compact-syntax\": {\n extensions: [\"rnc\"],\n source: \"iana\"\n },\n \"application/resource-lists+xml\": {\n extensions: [\"rl\"],\n source: \"iana\"\n },\n \"application/resource-lists-diff+xml\": {\n extensions: [\"rld\"],\n source: \"iana\"\n },\n \"application/rls-services+xml\": {\n extensions: [\"rs\"],\n source: \"iana\"\n },\n \"application/route-apd+xml\": {\n extensions: [\"rapd\"],\n source: \"iana\"\n },\n \"application/route-s-tsid+xml\": {\n extensions: [\"sls\"],\n source: \"iana\"\n },\n \"application/route-usd+xml\": {\n extensions: [\"rusd\"],\n source: \"iana\"\n },\n \"application/rpki-ghostbusters\": {\n extensions: [\"gbr\"],\n source: \"iana\"\n },\n \"application/rpki-manifest\": {\n extensions: [\"mft\"],\n source: \"iana\"\n },\n \"application/rpki-roa\": {\n extensions: [\"roa\"],\n source: \"iana\"\n },\n \"application/rsd+xml\": {\n extensions: [\"rsd\"],\n source: \"apache\"\n },\n \"application/rss+xml\": {\n extensions: [\"rss\"],\n source: \"apache\"\n },\n \"application/rtf\": {\n extensions: [\"rtf\"],\n source: \"iana\"\n },\n \"application/sbml+xml\": {\n extensions: [\"sbml\"],\n source: \"iana\"\n },\n \"application/scvp-cv-request\": {\n extensions: [\"scq\"],\n source: \"iana\"\n },\n \"application/scvp-cv-response\": {\n extensions: [\"scs\"],\n source: \"iana\"\n },\n \"application/scvp-vp-request\": {\n extensions: [\"spq\"],\n source: \"iana\"\n },\n \"application/scvp-vp-response\": {\n extensions: [\"spp\"],\n source: \"iana\"\n },\n \"application/sdp\": {\n extensions: [\"sdp\"],\n source: \"iana\"\n },\n \"application/senml+xml\": {\n extensions: [\"senmlx\"],\n source: \"iana\"\n },\n \"application/sensml+xml\": {\n extensions: [\"sensmlx\"],\n source: \"iana\"\n },\n \"application/set-payment-initiation\": {\n extensions: [\"setpay\"],\n source: \"iana\"\n },\n \"application/set-registration-initiation\": {\n extensions: [\"setreg\"],\n source: \"iana\"\n },\n \"application/shf+xml\": {\n extensions: [\"shf\"],\n source: \"iana\"\n },\n \"application/sieve\": {\n extensions: [\"siv\", \"sieve\"],\n source: \"iana\"\n },\n \"application/smil+xml\": {\n extensions: [\"smi\", \"smil\"],\n source: \"iana\"\n },\n \"application/sparql-query\": {\n extensions: [\"rq\"],\n source: \"iana\"\n },\n \"application/sparql-results+xml\": {\n extensions: [\"srx\"],\n source: \"iana\"\n },\n \"application/srgs\": {\n extensions: [\"gram\"],\n source: \"iana\"\n },\n \"application/srgs+xml\": {\n extensions: [\"grxml\"],\n source: \"iana\"\n },\n \"application/sru+xml\": {\n extensions: [\"sru\"],\n source: \"iana\"\n },\n \"application/ssdl+xml\": {\n extensions: [\"ssdl\"],\n source: \"apache\"\n },\n \"application/ssml+xml\": {\n extensions: [\"ssml\"],\n source: \"iana\"\n },\n \"application/swid+xml\": {\n extensions: [\"swidtag\"],\n source: \"iana\"\n },\n \"application/tei+xml\": {\n extensions: [\"tei\", \"teicorpus\"],\n source: \"iana\"\n },\n \"application/thraud+xml\": {\n extensions: [\"tfi\"],\n source: \"iana\"\n },\n \"application/timestamped-data\": {\n extensions: [\"tsd\"],\n source: \"iana\"\n },\n \"application/trig\": {\n extensions: [\"trig\"],\n source: \"iana\"\n },\n \"application/ttml+xml\": {\n extensions: [\"ttml\"],\n source: \"iana\"\n },\n \"application/urc-ressheet+xml\": {\n extensions: [\"rsheet\"],\n source: \"iana\"\n },\n \"application/urc-targetdesc+xml\": {\n extensions: [\"td\"],\n source: \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-large\": {\n extensions: [\"plb\"],\n source: \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-small\": {\n extensions: [\"psb\"],\n source: \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-var\": {\n extensions: [\"pvb\"],\n source: \"iana\"\n },\n \"application/vnd.3gpp2.tcap\": {\n extensions: [\"tcap\"],\n source: \"iana\"\n },\n \"application/vnd.3m.post-it-notes\": {\n extensions: [\"pwn\"],\n source: \"iana\"\n },\n \"application/vnd.1000minds.decision-model+xml\": {\n extensions: [\"1km\"],\n source: \"iana\"\n },\n \"application/vnd.accpac.simply.aso\": {\n extensions: [\"aso\"],\n source: \"iana\"\n },\n \"application/vnd.accpac.simply.imp\": {\n extensions: [\"imp\"],\n source: \"iana\"\n },\n \"application/vnd.acucobol\": {\n extensions: [\"acu\"],\n source: \"iana\"\n },\n \"application/vnd.acucorp\": {\n extensions: [\"atc\", \"acutc\"],\n source: \"iana\"\n },\n \"application/vnd.adobe.air-application-installer-package+zip\": {\n extensions: [\"air\"],\n source: \"apache\"\n },\n \"application/vnd.adobe.formscentral.fcdt\": {\n extensions: [\"fcdt\"],\n source: \"iana\"\n },\n \"application/vnd.adobe.fxp\": {\n extensions: [\"fxp\", \"fxpl\"],\n source: \"iana\"\n },\n \"application/vnd.adobe.xdp+xml\": {\n extensions: [\"xdp\"],\n source: \"iana\"\n },\n \"application/vnd.adobe.xfdf\": {\n extensions: [\"xfdf\"],\n source: \"iana\"\n },\n \"application/vnd.age\": {\n extensions: [\"age\"],\n source: \"iana\"\n },\n \"application/vnd.ahead.space\": {\n extensions: [\"ahead\"],\n source: \"iana\"\n },\n \"application/vnd.airzip.filesecure.azf\": {\n extensions: [\"azf\"],\n source: \"iana\"\n },\n \"application/vnd.airzip.filesecure.azs\": {\n extensions: [\"azs\"],\n source: \"iana\"\n },\n \"application/vnd.amazon.ebook\": {\n extensions: [\"azw\"],\n source: \"apache\"\n },\n \"application/vnd.americandynamics.acc\": {\n extensions: [\"acc\"],\n source: \"iana\"\n },\n \"application/vnd.amiga.ami\": {\n extensions: [\"ami\"],\n source: \"iana\"\n },\n \"application/vnd.android.package-archive\": {\n extensions: [\"apk\"],\n source: \"apache\"\n },\n \"application/vnd.anser-web-certificate-issue-initiation\": {\n extensions: [\"cii\"],\n source: \"iana\"\n },\n \"application/vnd.anser-web-funds-transfer-initiation\": {\n extensions: [\"fti\"],\n source: \"apache\"\n },\n \"application/vnd.antix.game-component\": {\n extensions: [\"atx\"],\n source: \"iana\"\n },\n \"application/vnd.apple.installer+xml\": {\n extensions: [\"mpkg\"],\n source: \"iana\"\n },\n \"application/vnd.apple.keynote\": {\n extensions: [\"key\"],\n source: \"iana\"\n },\n \"application/vnd.apple.mpegurl\": {\n extensions: [\"m3u8\"],\n source: \"iana\"\n },\n \"application/vnd.apple.numbers\": {\n extensions: [\"numbers\"],\n source: \"iana\"\n },\n \"application/vnd.apple.pages\": {\n extensions: [\"pages\"],\n source: \"iana\"\n },\n \"application/vnd.aristanetworks.swi\": {\n extensions: [\"swi\"],\n source: \"iana\"\n },\n \"application/vnd.astraea-software.iota\": {\n extensions: [\"iota\"],\n source: \"iana\"\n },\n \"application/vnd.audiograph\": {\n extensions: [\"aep\"],\n source: \"iana\"\n },\n \"application/vnd.balsamiq.bmml+xml\": {\n extensions: [\"bmml\"],\n source: \"iana\"\n },\n \"application/vnd.blueice.multipass\": {\n extensions: [\"mpm\"],\n source: \"iana\"\n },\n \"application/vnd.bmi\": {\n extensions: [\"bmi\"],\n source: \"iana\"\n },\n \"application/vnd.businessobjects\": {\n extensions: [\"rep\"],\n source: \"iana\"\n },\n \"application/vnd.chemdraw+xml\": {\n extensions: [\"cdxml\"],\n source: \"iana\"\n },\n \"application/vnd.chipnuts.karaoke-mmd\": {\n extensions: [\"mmd\"],\n source: \"iana\"\n },\n \"application/vnd.cinderella\": {\n extensions: [\"cdy\"],\n source: \"iana\"\n },\n \"application/vnd.citationstyles.style+xml\": {\n extensions: [\"csl\"],\n source: \"iana\"\n },\n \"application/vnd.claymore\": {\n extensions: [\"cla\"],\n source: \"iana\"\n },\n \"application/vnd.cloanto.rp9\": {\n extensions: [\"rp9\"],\n source: \"iana\"\n },\n \"application/vnd.clonk.c4group\": {\n extensions: [\"c4g\", \"c4d\", \"c4f\", \"c4p\", \"c4u\"],\n source: \"iana\"\n },\n \"application/vnd.cluetrust.cartomobile-config\": {\n extensions: [\"c11amc\"],\n source: \"iana\"\n },\n \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n extensions: [\"c11amz\"],\n source: \"iana\"\n },\n \"application/vnd.commonspace\": {\n extensions: [\"csp\"],\n source: \"iana\"\n },\n \"application/vnd.contact.cmsg\": {\n extensions: [\"cdbcmsg\"],\n source: \"iana\"\n },\n \"application/vnd.cosmocaller\": {\n extensions: [\"cmc\"],\n source: \"iana\"\n },\n \"application/vnd.crick.clicker\": {\n extensions: [\"clkx\"],\n source: \"iana\"\n },\n \"application/vnd.crick.clicker.keyboard\": {\n extensions: [\"clkk\"],\n source: \"iana\"\n },\n \"application/vnd.crick.clicker.palette\": {\n extensions: [\"clkp\"],\n source: \"iana\"\n },\n \"application/vnd.crick.clicker.template\": {\n extensions: [\"clkt\"],\n source: \"iana\"\n },\n \"application/vnd.crick.clicker.wordbank\": {\n extensions: [\"clkw\"],\n source: \"iana\"\n },\n \"application/vnd.criticaltools.wbs+xml\": {\n extensions: [\"wbs\"],\n source: \"iana\"\n },\n \"application/vnd.ctc-posml\": {\n extensions: [\"pml\"],\n source: \"iana\"\n },\n \"application/vnd.cups-ppd\": {\n extensions: [\"ppd\"],\n source: \"iana\"\n },\n \"application/vnd.curl.car\": {\n extensions: [\"car\"],\n source: \"apache\"\n },\n \"application/vnd.curl.pcurl\": {\n extensions: [\"pcurl\"],\n source: \"apache\"\n },\n \"application/vnd.dart\": {\n extensions: [\"dart\"],\n source: \"iana\"\n },\n \"application/vnd.data-vision.rdz\": {\n extensions: [\"rdz\"],\n source: \"iana\"\n },\n \"application/vnd.dbf\": {\n extensions: [\"dbf\"],\n source: \"iana\"\n },\n \"application/vnd.dece.data\": {\n extensions: [\"uvf\", \"uvvf\", \"uvd\", \"uvvd\"],\n source: \"iana\"\n },\n \"application/vnd.dece.ttml+xml\": {\n extensions: [\"uvt\", \"uvvt\"],\n source: \"iana\"\n },\n \"application/vnd.dece.unspecified\": {\n extensions: [\"uvx\", \"uvvx\"],\n source: \"iana\"\n },\n \"application/vnd.dece.zip\": {\n extensions: [\"uvz\", \"uvvz\"],\n source: \"iana\"\n },\n \"application/vnd.denovo.fcselayout-link\": {\n extensions: [\"fe_launch\"],\n source: \"iana\"\n },\n \"application/vnd.dna\": {\n extensions: [\"dna\"],\n source: \"iana\"\n },\n \"application/vnd.dolby.mlp\": {\n extensions: [\"mlp\"],\n source: \"apache\"\n },\n \"application/vnd.dpgraph\": {\n extensions: [\"dpg\"],\n source: \"iana\"\n },\n \"application/vnd.dreamfactory\": {\n extensions: [\"dfac\"],\n source: \"iana\"\n },\n \"application/vnd.ds-keypoint\": {\n extensions: [\"kpxx\"],\n source: \"apache\"\n },\n \"application/vnd.dvb.ait\": {\n extensions: [\"ait\"],\n source: \"iana\"\n },\n \"application/vnd.dvb.service\": {\n extensions: [\"svc\"],\n source: \"iana\"\n },\n \"application/vnd.dynageo\": {\n extensions: [\"geo\"],\n source: \"iana\"\n },\n \"application/vnd.ecowin.chart\": {\n extensions: [\"mag\"],\n source: \"iana\"\n },\n \"application/vnd.enliven\": {\n extensions: [\"nml\"],\n source: \"iana\"\n },\n \"application/vnd.epson.esf\": {\n extensions: [\"esf\"],\n source: \"iana\"\n },\n \"application/vnd.epson.msf\": {\n extensions: [\"msf\"],\n source: \"iana\"\n },\n \"application/vnd.epson.quickanime\": {\n extensions: [\"qam\"],\n source: \"iana\"\n },\n \"application/vnd.epson.salt\": {\n extensions: [\"slt\"],\n source: \"iana\"\n },\n \"application/vnd.epson.ssf\": {\n extensions: [\"ssf\"],\n source: \"iana\"\n },\n \"application/vnd.eszigno3+xml\": {\n extensions: [\"es3\", \"et3\"],\n source: \"iana\"\n },\n \"application/vnd.ezpix-album\": {\n extensions: [\"ez2\"],\n source: \"iana\"\n },\n \"application/vnd.ezpix-package\": {\n extensions: [\"ez3\"],\n source: \"iana\"\n },\n \"application/vnd.fdf\": {\n extensions: [\"fdf\"],\n source: \"iana\"\n },\n \"application/vnd.fdsn.mseed\": {\n extensions: [\"mseed\"],\n source: \"iana\"\n },\n \"application/vnd.fdsn.seed\": {\n extensions: [\"seed\", \"dataless\"],\n source: \"iana\"\n },\n \"application/vnd.flographit\": {\n extensions: [\"gph\"],\n source: \"iana\"\n },\n \"application/vnd.fluxtime.clip\": {\n extensions: [\"ftc\"],\n source: \"iana\"\n },\n \"application/vnd.framemaker\": {\n extensions: [\"fm\", \"frame\", \"maker\", \"book\"],\n source: \"iana\"\n },\n \"application/vnd.frogans.fnc\": {\n extensions: [\"fnc\"],\n source: \"iana\"\n },\n \"application/vnd.frogans.ltf\": {\n extensions: [\"ltf\"],\n source: \"iana\"\n },\n \"application/vnd.fsc.weblaunch\": {\n extensions: [\"fsc\"],\n source: \"iana\"\n },\n \"application/vnd.fujitsu.oasys\": {\n extensions: [\"oas\"],\n source: \"iana\"\n },\n \"application/vnd.fujitsu.oasys2\": {\n extensions: [\"oa2\"],\n source: \"iana\"\n },\n \"application/vnd.fujitsu.oasys3\": {\n extensions: [\"oa3\"],\n source: \"iana\"\n },\n \"application/vnd.fujitsu.oasysgp\": {\n extensions: [\"fg5\"],\n source: \"iana\"\n },\n \"application/vnd.fujitsu.oasysprs\": {\n extensions: [\"bh2\"],\n source: \"iana\"\n },\n \"application/vnd.fujixerox.ddd\": {\n extensions: [\"ddd\"],\n source: \"iana\"\n },\n \"application/vnd.fujixerox.docuworks\": {\n extensions: [\"xdw\"],\n source: \"iana\"\n },\n \"application/vnd.fujixerox.docuworks.binder\": {\n extensions: [\"xbd\"],\n source: \"iana\"\n },\n \"application/vnd.fuzzysheet\": {\n extensions: [\"fzs\"],\n source: \"iana\"\n },\n \"application/vnd.genomatix.tuxedo\": {\n extensions: [\"txd\"],\n source: \"iana\"\n },\n \"application/vnd.geogebra.file\": {\n extensions: [\"ggb\"],\n source: \"iana\"\n },\n \"application/vnd.geogebra.tool\": {\n extensions: [\"ggt\"],\n source: \"iana\"\n },\n \"application/vnd.geometry-explorer\": {\n extensions: [\"gex\", \"gre\"],\n source: \"iana\"\n },\n \"application/vnd.geonext\": {\n extensions: [\"gxt\"],\n source: \"iana\"\n },\n \"application/vnd.geoplan\": {\n extensions: [\"g2w\"],\n source: \"iana\"\n },\n \"application/vnd.geospace\": {\n extensions: [\"g3w\"],\n source: \"iana\"\n },\n \"application/vnd.gmx\": {\n extensions: [\"gmx\"],\n source: \"iana\"\n },\n \"application/vnd.google-earth.kml+xml\": {\n extensions: [\"kml\"],\n source: \"iana\"\n },\n \"application/vnd.google-earth.kmz\": {\n extensions: [\"kmz\"],\n source: \"iana\"\n },\n \"application/vnd.grafeq\": {\n extensions: [\"gqf\", \"gqs\"],\n source: \"iana\"\n },\n \"application/vnd.groove-account\": {\n extensions: [\"gac\"],\n source: \"iana\"\n },\n \"application/vnd.groove-help\": {\n extensions: [\"ghf\"],\n source: \"iana\"\n },\n \"application/vnd.groove-identity-message\": {\n extensions: [\"gim\"],\n source: \"iana\"\n },\n \"application/vnd.groove-injector\": {\n extensions: [\"grv\"],\n source: \"iana\"\n },\n \"application/vnd.groove-tool-message\": {\n extensions: [\"gtm\"],\n source: \"iana\"\n },\n \"application/vnd.groove-tool-template\": {\n extensions: [\"tpl\"],\n source: \"iana\"\n },\n \"application/vnd.groove-vcard\": {\n extensions: [\"vcg\"],\n source: \"iana\"\n },\n \"application/vnd.hal+xml\": {\n extensions: [\"hal\"],\n source: \"iana\"\n },\n \"application/vnd.handheld-entertainment+xml\": {\n extensions: [\"zmm\"],\n source: \"iana\"\n },\n \"application/vnd.hbci\": {\n extensions: [\"hbci\"],\n source: \"iana\"\n },\n \"application/vnd.hhe.lesson-player\": {\n extensions: [\"les\"],\n source: \"iana\"\n },\n \"application/vnd.hp-hpgl\": {\n extensions: [\"hpgl\"],\n source: \"iana\"\n },\n \"application/vnd.hp-hpid\": {\n extensions: [\"hpid\"],\n source: \"iana\"\n },\n \"application/vnd.hp-hps\": {\n extensions: [\"hps\"],\n source: \"iana\"\n },\n \"application/vnd.hp-jlyt\": {\n extensions: [\"jlt\"],\n source: \"iana\"\n },\n \"application/vnd.hp-pcl\": {\n extensions: [\"pcl\"],\n source: \"iana\"\n },\n \"application/vnd.hp-pclxl\": {\n extensions: [\"pclxl\"],\n source: \"iana\"\n },\n \"application/vnd.hydrostatix.sof-data\": {\n extensions: [\"sfd-hdstx\"],\n source: \"iana\"\n },\n \"application/vnd.ibm.minipay\": {\n extensions: [\"mpy\"],\n source: \"iana\"\n },\n \"application/vnd.ibm.modcap\": {\n extensions: [\"afp\", \"listafp\", \"list3820\"],\n source: \"iana\"\n },\n \"application/vnd.ibm.rights-management\": {\n extensions: [\"irm\"],\n source: \"iana\"\n },\n \"application/vnd.ibm.secure-container\": {\n extensions: [\"sc\"],\n source: \"iana\"\n },\n \"application/vnd.iccprofile\": {\n extensions: [\"icc\", \"icm\"],\n source: \"iana\"\n },\n \"application/vnd.igloader\": {\n extensions: [\"igl\"],\n source: \"iana\"\n },\n \"application/vnd.immervision-ivp\": {\n extensions: [\"ivp\"],\n source: \"iana\"\n },\n \"application/vnd.immervision-ivu\": {\n extensions: [\"ivu\"],\n source: \"iana\"\n },\n \"application/vnd.insors.igm\": {\n extensions: [\"igm\"],\n source: \"iana\"\n },\n \"application/vnd.intercon.formnet\": {\n extensions: [\"xpw\", \"xpx\"],\n source: \"iana\"\n },\n \"application/vnd.intergeo\": {\n extensions: [\"i2g\"],\n source: \"iana\"\n },\n \"application/vnd.intu.qbo\": {\n extensions: [\"qbo\"],\n source: \"iana\"\n },\n \"application/vnd.intu.qfx\": {\n extensions: [\"qfx\"],\n source: \"iana\"\n },\n \"application/vnd.ipunplugged.rcprofile\": {\n extensions: [\"rcprofile\"],\n source: \"iana\"\n },\n \"application/vnd.irepository.package+xml\": {\n extensions: [\"irp\"],\n source: \"iana\"\n },\n \"application/vnd.is-xpr\": {\n extensions: [\"xpr\"],\n source: \"iana\"\n },\n \"application/vnd.isac.fcs\": {\n extensions: [\"fcs\"],\n source: \"iana\"\n },\n \"application/vnd.jam\": {\n extensions: [\"jam\"],\n source: \"iana\"\n },\n \"application/vnd.jcp.javame.midlet-rms\": {\n extensions: [\"rms\"],\n source: \"iana\"\n },\n \"application/vnd.jisp\": {\n extensions: [\"jisp\"],\n source: \"iana\"\n },\n \"application/vnd.joost.joda-archive\": {\n extensions: [\"joda\"],\n source: \"iana\"\n },\n \"application/vnd.kahootz\": {\n extensions: [\"ktz\", \"ktr\"],\n source: \"iana\"\n },\n \"application/vnd.kde.karbon\": {\n extensions: [\"karbon\"],\n source: \"iana\"\n },\n \"application/vnd.kde.kchart\": {\n extensions: [\"chrt\"],\n source: \"iana\"\n },\n \"application/vnd.kde.kformula\": {\n extensions: [\"kfo\"],\n source: \"iana\"\n },\n \"application/vnd.kde.kivio\": {\n extensions: [\"flw\"],\n source: \"iana\"\n },\n \"application/vnd.kde.kontour\": {\n extensions: [\"kon\"],\n source: \"iana\"\n },\n \"application/vnd.kde.kpresenter\": {\n extensions: [\"kpr\", \"kpt\"],\n source: \"iana\"\n },\n \"application/vnd.kde.kspread\": {\n extensions: [\"ksp\"],\n source: \"iana\"\n },\n \"application/vnd.kde.kword\": {\n extensions: [\"kwd\", \"kwt\"],\n source: \"iana\"\n },\n \"application/vnd.kenameaapp\": {\n extensions: [\"htke\"],\n source: \"iana\"\n },\n \"application/vnd.kidspiration\": {\n extensions: [\"kia\"],\n source: \"iana\"\n },\n \"application/vnd.kinar\": {\n extensions: [\"kne\", \"knp\"],\n source: \"iana\"\n },\n \"application/vnd.koan\": {\n extensions: [\"skp\", \"skd\", \"skt\", \"skm\"],\n source: \"iana\"\n },\n \"application/vnd.kodak-descriptor\": {\n extensions: [\"sse\"],\n source: \"iana\"\n },\n \"application/vnd.las.las+xml\": {\n extensions: [\"lasxml\"],\n source: \"iana\"\n },\n \"application/vnd.llamagraphics.life-balance.desktop\": {\n extensions: [\"lbd\"],\n source: \"iana\"\n },\n \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n extensions: [\"lbe\"],\n source: \"iana\"\n },\n \"application/vnd.lotus-1-2-3\": {\n extensions: [\"123\"],\n source: \"iana\"\n },\n \"application/vnd.lotus-approach\": {\n extensions: [\"apr\"],\n source: \"iana\"\n },\n \"application/vnd.lotus-freelance\": {\n extensions: [\"pre\"],\n source: \"iana\"\n },\n \"application/vnd.lotus-notes\": {\n extensions: [\"nsf\"],\n source: \"iana\"\n },\n \"application/vnd.lotus-organizer\": {\n extensions: [\"org\"],\n source: \"iana\"\n },\n \"application/vnd.lotus-screencam\": {\n extensions: [\"scm\"],\n source: \"iana\"\n },\n \"application/vnd.lotus-wordpro\": {\n extensions: [\"lwp\"],\n source: \"iana\"\n },\n \"application/vnd.macports.portpkg\": {\n extensions: [\"portpkg\"],\n source: \"iana\"\n },\n \"application/vnd.mapbox-vector-tile\": {\n extensions: [\"mvt\"],\n source: \"iana\"\n },\n \"application/vnd.mcd\": {\n extensions: [\"mcd\"],\n source: \"iana\"\n },\n \"application/vnd.medcalcdata\": {\n extensions: [\"mc1\"],\n source: \"iana\"\n },\n \"application/vnd.mediastation.cdkey\": {\n extensions: [\"cdkey\"],\n source: \"iana\"\n },\n \"application/vnd.mfer\": {\n extensions: [\"mwf\"],\n source: \"iana\"\n },\n \"application/vnd.mfmp\": {\n extensions: [\"mfm\"],\n source: \"iana\"\n },\n \"application/vnd.micrografx.flo\": {\n extensions: [\"flo\"],\n source: \"iana\"\n },\n \"application/vnd.micrografx.igx\": {\n extensions: [\"igx\"],\n source: \"iana\"\n },\n \"application/vnd.mif\": {\n extensions: [\"mif\"],\n source: \"iana\"\n },\n \"application/vnd.mobius.daf\": {\n extensions: [\"daf\"],\n source: \"iana\"\n },\n \"application/vnd.mobius.dis\": {\n extensions: [\"dis\"],\n source: \"iana\"\n },\n \"application/vnd.mobius.mbk\": {\n extensions: [\"mbk\"],\n source: \"iana\"\n },\n \"application/vnd.mobius.mqy\": {\n extensions: [\"mqy\"],\n source: \"iana\"\n },\n \"application/vnd.mobius.msl\": {\n extensions: [\"msl\"],\n source: \"iana\"\n },\n \"application/vnd.mobius.plc\": {\n extensions: [\"plc\"],\n source: \"iana\"\n },\n \"application/vnd.mobius.txf\": {\n extensions: [\"txf\"],\n source: \"iana\"\n },\n \"application/vnd.mophun.application\": {\n extensions: [\"mpn\"],\n source: \"iana\"\n },\n \"application/vnd.mophun.certificate\": {\n extensions: [\"mpc\"],\n source: \"iana\"\n },\n \"application/vnd.mozilla.xul+xml\": {\n extensions: [\"xul\"],\n source: \"iana\"\n },\n \"application/vnd.ms-artgalry\": {\n extensions: [\"cil\"],\n source: \"iana\"\n },\n \"application/vnd.ms-cab-compressed\": {\n extensions: [\"cab\"],\n source: \"iana\"\n },\n \"application/vnd.ms-excel\": {\n extensions: [\"xls\", \"xlm\", \"xla\", \"xlc\", \"xlt\", \"xlw\"],\n source: \"iana\"\n },\n \"application/vnd.ms-excel.addin.macroenabled.12\": {\n extensions: [\"xlam\"],\n source: \"iana\"\n },\n \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n extensions: [\"xlsb\"],\n source: \"iana\"\n },\n \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n extensions: [\"xlsm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-excel.template.macroenabled.12\": {\n extensions: [\"xltm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-fontobject\": {\n extensions: [\"eot\"],\n source: \"iana\"\n },\n \"application/vnd.ms-htmlhelp\": {\n extensions: [\"chm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-ims\": {\n extensions: [\"ims\"],\n source: \"iana\"\n },\n \"application/vnd.ms-lrm\": {\n extensions: [\"lrm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-officetheme\": {\n extensions: [\"thmx\"],\n source: \"iana\"\n },\n \"application/vnd.ms-pki.seccat\": {\n extensions: [\"cat\"],\n source: \"apache\"\n },\n \"application/vnd.ms-pki.stl\": {\n extensions: [\"stl\"],\n source: \"apache\"\n },\n \"application/vnd.ms-powerpoint\": {\n extensions: [\"ppt\", \"pps\", \"pot\"],\n source: \"iana\"\n },\n \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n extensions: [\"ppam\"],\n source: \"iana\"\n },\n \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n extensions: [\"pptm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n extensions: [\"sldm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n extensions: [\"ppsm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n extensions: [\"potm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-project\": {\n extensions: [\"mpp\", \"mpt\"],\n source: \"iana\"\n },\n \"application/vnd.ms-word.document.macroenabled.12\": {\n extensions: [\"docm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-word.template.macroenabled.12\": {\n extensions: [\"dotm\"],\n source: \"iana\"\n },\n \"application/vnd.ms-works\": {\n extensions: [\"wps\", \"wks\", \"wcm\", \"wdb\"],\n source: \"iana\"\n },\n \"application/vnd.ms-wpl\": {\n extensions: [\"wpl\"],\n source: \"iana\"\n },\n \"application/vnd.ms-xpsdocument\": {\n extensions: [\"xps\"],\n source: \"iana\"\n },\n \"application/vnd.mseq\": {\n extensions: [\"mseq\"],\n source: \"iana\"\n },\n \"application/vnd.musician\": {\n extensions: [\"mus\"],\n source: \"iana\"\n },\n \"application/vnd.muvee.style\": {\n extensions: [\"msty\"],\n source: \"iana\"\n },\n \"application/vnd.mynfc\": {\n extensions: [\"taglet\"],\n source: \"iana\"\n },\n \"application/vnd.neurolanguage.nlu\": {\n extensions: [\"nlu\"],\n source: \"iana\"\n },\n \"application/vnd.nitf\": {\n extensions: [\"ntf\", \"nitf\"],\n source: \"iana\"\n },\n \"application/vnd.noblenet-directory\": {\n extensions: [\"nnd\"],\n source: \"iana\"\n },\n \"application/vnd.noblenet-sealer\": {\n extensions: [\"nns\"],\n source: \"iana\"\n },\n \"application/vnd.noblenet-web\": {\n extensions: [\"nnw\"],\n source: \"iana\"\n },\n \"application/vnd.nokia.n-gage.ac+xml\": {\n extensions: [\"ac\"],\n source: \"iana\"\n },\n \"application/vnd.nokia.n-gage.data\": {\n extensions: [\"ngdat\"],\n source: \"iana\"\n },\n \"application/vnd.nokia.n-gage.symbian.install\": {\n extensions: [\"n-gage\"],\n source: \"iana\"\n },\n \"application/vnd.nokia.radio-preset\": {\n extensions: [\"rpst\"],\n source: \"iana\"\n },\n \"application/vnd.nokia.radio-presets\": {\n extensions: [\"rpss\"],\n source: \"iana\"\n },\n \"application/vnd.novadigm.edm\": {\n extensions: [\"edm\"],\n source: \"iana\"\n },\n \"application/vnd.novadigm.edx\": {\n extensions: [\"edx\"],\n source: \"iana\"\n },\n \"application/vnd.novadigm.ext\": {\n extensions: [\"ext\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart\": {\n extensions: [\"odc\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart-template\": {\n extensions: [\"otc\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.database\": {\n extensions: [\"odb\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.formula\": {\n extensions: [\"odf\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.formula-template\": {\n extensions: [\"odft\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.graphics\": {\n extensions: [\"odg\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.graphics-template\": {\n extensions: [\"otg\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.image\": {\n extensions: [\"odi\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.image-template\": {\n extensions: [\"oti\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.presentation\": {\n extensions: [\"odp\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.presentation-template\": {\n extensions: [\"otp\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.spreadsheet\": {\n extensions: [\"ods\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n extensions: [\"ots\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.text\": {\n extensions: [\"odt\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.text-master\": {\n extensions: [\"odm\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.text-template\": {\n extensions: [\"ott\"],\n source: \"iana\"\n },\n \"application/vnd.oasis.opendocument.text-web\": {\n extensions: [\"oth\"],\n source: \"iana\"\n },\n \"application/vnd.olpc-sugar\": {\n extensions: [\"xo\"],\n source: \"iana\"\n },\n \"application/vnd.oma.dd2+xml\": {\n extensions: [\"dd2\"],\n source: \"iana\"\n },\n \"application/vnd.openblox.game+xml\": {\n extensions: [\"obgx\"],\n source: \"iana\"\n },\n \"application/vnd.openofficeorg.extension\": {\n extensions: [\"oxt\"],\n source: \"apache\"\n },\n \"application/vnd.openstreetmap.data+xml\": {\n extensions: [\"osm\"],\n source: \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n extensions: [\"pptx\"],\n source: \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n extensions: [\"sldx\"],\n source: \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n extensions: [\"ppsx\"],\n source: \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n extensions: [\"potx\"],\n source: \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n extensions: [\"xlsx\"],\n source: \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n extensions: [\"xltx\"],\n source: \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n extensions: [\"docx\"],\n source: \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n extensions: [\"dotx\"],\n source: \"iana\"\n },\n \"application/vnd.osgeo.mapguide.package\": {\n extensions: [\"mgp\"],\n source: \"iana\"\n },\n \"application/vnd.osgi.dp\": {\n extensions: [\"dp\"],\n source: \"iana\"\n },\n \"application/vnd.osgi.subsystem\": {\n extensions: [\"esa\"],\n source: \"iana\"\n },\n \"application/vnd.palm\": {\n extensions: [\"pdb\", \"pqa\", \"oprc\"],\n source: \"iana\"\n },\n \"application/vnd.pawaafile\": {\n extensions: [\"paw\"],\n source: \"iana\"\n },\n \"application/vnd.pg.format\": {\n extensions: [\"str\"],\n source: \"iana\"\n },\n \"application/vnd.pg.osasli\": {\n extensions: [\"ei6\"],\n source: \"iana\"\n },\n \"application/vnd.picsel\": {\n extensions: [\"efif\"],\n source: \"iana\"\n },\n \"application/vnd.pmi.widget\": {\n extensions: [\"wg\"],\n source: \"iana\"\n },\n \"application/vnd.pocketlearn\": {\n extensions: [\"plf\"],\n source: \"iana\"\n },\n \"application/vnd.powerbuilder6\": {\n extensions: [\"pbd\"],\n source: \"iana\"\n },\n \"application/vnd.previewsystems.box\": {\n extensions: [\"box\"],\n source: \"iana\"\n },\n \"application/vnd.proteus.magazine\": {\n extensions: [\"mgz\"],\n source: \"iana\"\n },\n \"application/vnd.publishare-delta-tree\": {\n extensions: [\"qps\"],\n source: \"iana\"\n },\n \"application/vnd.pvi.ptid1\": {\n extensions: [\"ptid\"],\n source: \"iana\"\n },\n \"application/vnd.quark.quarkxpress\": {\n extensions: [\"qxd\", \"qxt\", \"qwd\", \"qwt\", \"qxl\", \"qxb\"],\n source: \"iana\"\n },\n \"application/vnd.rar\": {\n extensions: [\"rar\"],\n source: \"iana\"\n },\n \"application/vnd.realvnc.bed\": {\n extensions: [\"bed\"],\n source: \"iana\"\n },\n \"application/vnd.recordare.musicxml\": {\n extensions: [\"mxl\"],\n source: \"iana\"\n },\n \"application/vnd.recordare.musicxml+xml\": {\n extensions: [\"musicxml\"],\n source: \"iana\"\n },\n \"application/vnd.rig.cryptonote\": {\n extensions: [\"cryptonote\"],\n source: \"iana\"\n },\n \"application/vnd.rim.cod\": {\n extensions: [\"cod\"],\n source: \"apache\"\n },\n \"application/vnd.rn-realmedia\": {\n extensions: [\"rm\"],\n source: \"apache\"\n },\n \"application/vnd.rn-realmedia-vbr\": {\n extensions: [\"rmvb\"],\n source: \"apache\"\n },\n \"application/vnd.route66.link66+xml\": {\n extensions: [\"link66\"],\n source: \"iana\"\n },\n \"application/vnd.sailingtracker.track\": {\n extensions: [\"st\"],\n source: \"iana\"\n },\n \"application/vnd.seemail\": {\n extensions: [\"see\"],\n source: \"iana\"\n },\n \"application/vnd.sema\": {\n extensions: [\"sema\"],\n source: \"iana\"\n },\n \"application/vnd.semd\": {\n extensions: [\"semd\"],\n source: \"iana\"\n },\n \"application/vnd.semf\": {\n extensions: [\"semf\"],\n source: \"iana\"\n },\n \"application/vnd.shana.informed.formdata\": {\n extensions: [\"ifm\"],\n source: \"iana\"\n },\n \"application/vnd.shana.informed.formtemplate\": {\n extensions: [\"itp\"],\n source: \"iana\"\n },\n \"application/vnd.shana.informed.interchange\": {\n extensions: [\"iif\"],\n source: \"iana\"\n },\n \"application/vnd.shana.informed.package\": {\n extensions: [\"ipk\"],\n source: \"iana\"\n },\n \"application/vnd.simtech-mindmapper\": {\n extensions: [\"twd\", \"twds\"],\n source: \"iana\"\n },\n \"application/vnd.smaf\": {\n extensions: [\"mmf\"],\n source: \"iana\"\n },\n \"application/vnd.smart.teacher\": {\n extensions: [\"teacher\"],\n source: \"iana\"\n },\n \"application/vnd.software602.filler.form+xml\": {\n extensions: [\"fo\"],\n source: \"iana\"\n },\n \"application/vnd.solent.sdkm+xml\": {\n extensions: [\"sdkm\", \"sdkd\"],\n source: \"iana\"\n },\n \"application/vnd.spotfire.dxp\": {\n extensions: [\"dxp\"],\n source: \"iana\"\n },\n \"application/vnd.spotfire.sfs\": {\n extensions: [\"sfs\"],\n source: \"iana\"\n },\n \"application/vnd.stardivision.calc\": {\n extensions: [\"sdc\"],\n source: \"apache\"\n },\n \"application/vnd.stardivision.draw\": {\n extensions: [\"sda\"],\n source: \"apache\"\n },\n \"application/vnd.stardivision.impress\": {\n extensions: [\"sdd\"],\n source: \"apache\"\n },\n \"application/vnd.stardivision.math\": {\n extensions: [\"smf\"],\n source: \"apache\"\n },\n \"application/vnd.stardivision.writer\": {\n extensions: [\"sdw\", \"vor\"],\n source: \"apache\"\n },\n \"application/vnd.stardivision.writer-global\": {\n extensions: [\"sgl\"],\n source: \"apache\"\n },\n \"application/vnd.stepmania.package\": {\n extensions: [\"smzip\"],\n source: \"iana\"\n },\n \"application/vnd.stepmania.stepchart\": {\n extensions: [\"sm\"],\n source: \"iana\"\n },\n \"application/vnd.sun.wadl+xml\": {\n extensions: [\"wadl\"],\n source: \"iana\"\n },\n \"application/vnd.sun.xml.calc\": {\n extensions: [\"sxc\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.calc.template\": {\n extensions: [\"stc\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.draw\": {\n extensions: [\"sxd\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.draw.template\": {\n extensions: [\"std\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.impress\": {\n extensions: [\"sxi\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.impress.template\": {\n extensions: [\"sti\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.math\": {\n extensions: [\"sxm\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.writer\": {\n extensions: [\"sxw\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.writer.global\": {\n extensions: [\"sxg\"],\n source: \"apache\"\n },\n \"application/vnd.sun.xml.writer.template\": {\n extensions: [\"stw\"],\n source: \"apache\"\n },\n \"application/vnd.sus-calendar\": {\n extensions: [\"sus\", \"susp\"],\n source: \"iana\"\n },\n \"application/vnd.svd\": {\n extensions: [\"svd\"],\n source: \"iana\"\n },\n \"application/vnd.symbian.install\": {\n extensions: [\"sis\", \"sisx\"],\n source: \"apache\"\n },\n \"application/vnd.syncml+xml\": {\n charset: \"UTF-8\",\n extensions: [\"xsm\"],\n source: \"iana\"\n },\n \"application/vnd.syncml.dm+wbxml\": {\n charset: \"UTF-8\",\n extensions: [\"bdm\"],\n source: \"iana\"\n },\n \"application/vnd.syncml.dm+xml\": {\n charset: \"UTF-8\",\n extensions: [\"xdm\"],\n source: \"iana\"\n },\n \"application/vnd.syncml.dmddf+xml\": {\n charset: \"UTF-8\",\n extensions: [\"ddf\"],\n source: \"iana\"\n },\n \"application/vnd.tao.intent-module-archive\": {\n extensions: [\"tao\"],\n source: \"iana\"\n },\n \"application/vnd.tcpdump.pcap\": {\n extensions: [\"pcap\", \"cap\", \"dmp\"],\n source: \"iana\"\n },\n \"application/vnd.tmobile-livetv\": {\n extensions: [\"tmo\"],\n source: \"iana\"\n },\n \"application/vnd.trid.tpt\": {\n extensions: [\"tpt\"],\n source: \"iana\"\n },\n \"application/vnd.triscape.mxs\": {\n extensions: [\"mxs\"],\n source: \"iana\"\n },\n \"application/vnd.trueapp\": {\n extensions: [\"tra\"],\n source: \"iana\"\n },\n \"application/vnd.ufdl\": {\n extensions: [\"ufd\", \"ufdl\"],\n source: \"iana\"\n },\n \"application/vnd.uiq.theme\": {\n extensions: [\"utz\"],\n source: \"iana\"\n },\n \"application/vnd.umajin\": {\n extensions: [\"umj\"],\n source: \"iana\"\n },\n \"application/vnd.unity\": {\n extensions: [\"unityweb\"],\n source: \"iana\"\n },\n \"application/vnd.uoml+xml\": {\n extensions: [\"uoml\"],\n source: \"iana\"\n },\n \"application/vnd.vcx\": {\n extensions: [\"vcx\"],\n source: \"iana\"\n },\n \"application/vnd.visio\": {\n extensions: [\"vsd\", \"vst\", \"vss\", \"vsw\"],\n source: \"iana\"\n },\n \"application/vnd.visionary\": {\n extensions: [\"vis\"],\n source: \"iana\"\n },\n \"application/vnd.vsf\": {\n extensions: [\"vsf\"],\n source: \"iana\"\n },\n \"application/vnd.wap.wbxml\": {\n charset: \"UTF-8\",\n extensions: [\"wbxml\"],\n source: \"iana\"\n },\n \"application/vnd.wap.wmlc\": {\n extensions: [\"wmlc\"],\n source: \"iana\"\n },\n \"application/vnd.wap.wmlscriptc\": {\n extensions: [\"wmlsc\"],\n source: \"iana\"\n },\n \"application/vnd.webturbo\": {\n extensions: [\"wtb\"],\n source: \"iana\"\n },\n \"application/vnd.wolfram.player\": {\n extensions: [\"nbp\"],\n source: \"iana\"\n },\n \"application/vnd.wordperfect\": {\n extensions: [\"wpd\"],\n source: \"iana\"\n },\n \"application/vnd.wqd\": {\n extensions: [\"wqd\"],\n source: \"iana\"\n },\n \"application/vnd.wt.stf\": {\n extensions: [\"stf\"],\n source: \"iana\"\n },\n \"application/vnd.xara\": {\n extensions: [\"xar\"],\n source: \"iana\"\n },\n \"application/vnd.xfdl\": {\n extensions: [\"xfdl\"],\n source: \"iana\"\n },\n \"application/vnd.yamaha.hv-dic\": {\n extensions: [\"hvd\"],\n source: \"iana\"\n },\n \"application/vnd.yamaha.hv-script\": {\n extensions: [\"hvs\"],\n source: \"iana\"\n },\n \"application/vnd.yamaha.hv-voice\": {\n extensions: [\"hvp\"],\n source: \"iana\"\n },\n \"application/vnd.yamaha.openscoreformat\": {\n extensions: [\"osf\"],\n source: \"iana\"\n },\n \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n extensions: [\"osfpvg\"],\n source: \"iana\"\n },\n \"application/vnd.yamaha.smaf-audio\": {\n extensions: [\"saf\"],\n source: \"iana\"\n },\n \"application/vnd.yamaha.smaf-phrase\": {\n extensions: [\"spf\"],\n source: \"iana\"\n },\n \"application/vnd.yellowriver-custom-menu\": {\n extensions: [\"cmp\"],\n source: \"iana\"\n },\n \"application/vnd.zul\": {\n extensions: [\"zir\", \"zirz\"],\n source: \"iana\"\n },\n \"application/vnd.zzazz.deck+xml\": {\n extensions: [\"zaz\"],\n source: \"iana\"\n },\n \"application/voicexml+xml\": {\n extensions: [\"vxml\"],\n source: \"iana\"\n },\n \"application/wasm\": {\n extensions: [\"wasm\"],\n source: \"iana\"\n },\n \"application/watcherinfo+xml\": {\n extensions: [\"wif\"],\n source: \"iana\"\n },\n \"application/widget\": {\n extensions: [\"wgt\"],\n source: \"iana\"\n },\n \"application/winhlp\": {\n extensions: [\"hlp\"],\n source: \"apache\"\n },\n \"application/wsdl+xml\": {\n extensions: [\"wsdl\"],\n source: \"iana\"\n },\n \"application/wspolicy+xml\": {\n extensions: [\"wspolicy\"],\n source: \"iana\"\n },\n \"application/x-7z-compressed\": {\n extensions: [\"7z\"],\n source: \"apache\"\n },\n \"application/x-abiword\": {\n extensions: [\"abw\"],\n source: \"apache\"\n },\n \"application/x-ace-compressed\": {\n extensions: [\"ace\"],\n source: \"apache\"\n },\n \"application/x-apple-diskimage\": {\n extensions: [\"dmg\"],\n source: \"apache\"\n },\n \"application/x-authorware-bin\": {\n extensions: [\"aab\", \"x32\", \"u32\", \"vox\"],\n source: \"apache\"\n },\n \"application/x-authorware-map\": {\n extensions: [\"aam\"],\n source: \"apache\"\n },\n \"application/x-authorware-seg\": {\n extensions: [\"aas\"],\n source: \"apache\"\n },\n \"application/x-bcpio\": {\n extensions: [\"bcpio\"],\n source: \"apache\"\n },\n \"application/x-bittorrent\": {\n extensions: [\"torrent\"],\n source: \"apache\"\n },\n \"application/x-blorb\": {\n extensions: [\"blb\", \"blorb\"],\n source: \"apache\"\n },\n \"application/x-bzip\": {\n extensions: [\"bz\"],\n source: \"apache\"\n },\n \"application/x-bzip2\": {\n extensions: [\"bz2\", \"boz\"],\n source: \"apache\"\n },\n \"application/x-cbr\": {\n extensions: [\"cbr\", \"cba\", \"cbt\", \"cbz\", \"cb7\"],\n source: \"apache\"\n },\n \"application/x-cdlink\": {\n extensions: [\"vcd\"],\n source: \"apache\"\n },\n \"application/x-cfs-compressed\": {\n extensions: [\"cfs\"],\n source: \"apache\"\n },\n \"application/x-chat\": {\n extensions: [\"chat\"],\n source: \"apache\"\n },\n \"application/x-chess-pgn\": {\n extensions: [\"pgn\"],\n source: \"apache\"\n },\n \"application/x-cocoa\": {\n extensions: [\"cco\"],\n source: \"nginx\"\n },\n \"application/x-conference\": {\n extensions: [\"nsc\"],\n source: \"apache\"\n },\n \"application/x-cpio\": {\n extensions: [\"cpio\"],\n source: \"apache\"\n },\n \"application/x-csh\": {\n extensions: [\"csh\"],\n source: \"apache\"\n },\n \"application/x-debian-package\": {\n extensions: [\"deb\", \"udeb\"],\n source: \"apache\"\n },\n \"application/x-dgc-compressed\": {\n extensions: [\"dgc\"],\n source: \"apache\"\n },\n \"application/x-director\": {\n extensions: [\"dir\", \"dcr\", \"dxr\", \"cst\", \"cct\", \"cxt\", \"w3d\", \"fgd\", \"swa\"],\n source: \"apache\"\n },\n \"application/x-doom\": {\n extensions: [\"wad\"],\n source: \"apache\"\n },\n \"application/x-dtbncx+xml\": {\n extensions: [\"ncx\"],\n source: \"apache\"\n },\n \"application/x-dtbook+xml\": {\n extensions: [\"dtb\"],\n source: \"apache\"\n },\n \"application/x-dtbresource+xml\": {\n extensions: [\"res\"],\n source: \"apache\"\n },\n \"application/x-dvi\": {\n extensions: [\"dvi\"],\n source: \"apache\"\n },\n \"application/x-envoy\": {\n extensions: [\"evy\"],\n source: \"apache\"\n },\n \"application/x-eva\": {\n extensions: [\"eva\"],\n source: \"apache\"\n },\n \"application/x-font-bdf\": {\n extensions: [\"bdf\"],\n source: \"apache\"\n },\n \"application/x-font-ghostscript\": {\n extensions: [\"gsf\"],\n source: \"apache\"\n },\n \"application/x-font-linux-psf\": {\n extensions: [\"psf\"],\n source: \"apache\"\n },\n \"application/x-font-pcf\": {\n extensions: [\"pcf\"],\n source: \"apache\"\n },\n \"application/x-font-snf\": {\n extensions: [\"snf\"],\n source: \"apache\"\n },\n \"application/x-font-type1\": {\n extensions: [\"pfa\", \"pfb\", \"pfm\", \"afm\"],\n source: \"apache\"\n },\n \"application/x-freearc\": {\n extensions: [\"arc\"],\n source: \"apache\"\n },\n \"application/x-futuresplash\": {\n extensions: [\"spl\"],\n source: \"apache\"\n },\n \"application/x-gca-compressed\": {\n extensions: [\"gca\"],\n source: \"apache\"\n },\n \"application/x-glulx\": {\n extensions: [\"ulx\"],\n source: \"apache\"\n },\n \"application/x-gnumeric\": {\n extensions: [\"gnumeric\"],\n source: \"apache\"\n },\n \"application/x-gramps-xml\": {\n extensions: [\"gramps\"],\n source: \"apache\"\n },\n \"application/x-gtar\": {\n extensions: [\"gtar\"],\n source: \"apache\"\n },\n \"application/x-hdf\": {\n extensions: [\"hdf\"],\n source: \"apache\"\n },\n \"application/x-install-instructions\": {\n extensions: [\"install\"],\n source: \"apache\"\n },\n \"application/x-iso9660-image\": {\n extensions: [\"iso\"],\n source: \"apache\"\n },\n \"application/x-java-archive-diff\": {\n extensions: [\"jardiff\"],\n source: \"nginx\"\n },\n \"application/x-java-jnlp-file\": {\n extensions: [\"jnlp\"],\n source: \"apache\"\n },\n \"application/x-latex\": {\n extensions: [\"latex\"],\n source: \"apache\"\n },\n \"application/x-lzh-compressed\": {\n extensions: [\"lzh\", \"lha\"],\n source: \"apache\"\n },\n \"application/x-makeself\": {\n extensions: [\"run\"],\n source: \"nginx\"\n },\n \"application/x-mie\": {\n extensions: [\"mie\"],\n source: \"apache\"\n },\n \"application/x-mobipocket-ebook\": {\n extensions: [\"prc\", \"mobi\"],\n source: \"apache\"\n },\n \"application/x-ms-application\": {\n extensions: [\"application\"],\n source: \"apache\"\n },\n \"application/x-ms-shortcut\": {\n extensions: [\"lnk\"],\n source: \"apache\"\n },\n \"application/x-ms-wmd\": {\n extensions: [\"wmd\"],\n source: \"apache\"\n },\n \"application/x-ms-wmz\": {\n extensions: [\"wmz\"],\n source: \"apache\"\n },\n \"application/x-ms-xbap\": {\n extensions: [\"xbap\"],\n source: \"apache\"\n },\n \"application/x-msaccess\": {\n extensions: [\"mdb\"],\n source: \"apache\"\n },\n \"application/x-msbinder\": {\n extensions: [\"obd\"],\n source: \"apache\"\n },\n \"application/x-mscardfile\": {\n extensions: [\"crd\"],\n source: \"apache\"\n },\n \"application/x-msclip\": {\n extensions: [\"clp\"],\n source: \"apache\"\n },\n \"application/x-msdownload\": {\n extensions: [\"exe\", \"dll\", \"com\", \"bat\", \"msi\"],\n source: \"apache\"\n },\n \"application/x-msmediaview\": {\n extensions: [\"mvb\", \"m13\", \"m14\"],\n source: \"apache\"\n },\n \"application/x-msmetafile\": {\n extensions: [\"wmf\", \"wmz\", \"emf\", \"emz\"],\n source: \"apache\"\n },\n \"application/x-msmoney\": {\n extensions: [\"mny\"],\n source: \"apache\"\n },\n \"application/x-mspublisher\": {\n extensions: [\"pub\"],\n source: \"apache\"\n },\n \"application/x-msschedule\": {\n extensions: [\"scd\"],\n source: \"apache\"\n },\n \"application/x-msterminal\": {\n extensions: [\"trm\"],\n source: \"apache\"\n },\n \"application/x-mswrite\": {\n extensions: [\"wri\"],\n source: \"apache\"\n },\n \"application/x-netcdf\": {\n extensions: [\"nc\", \"cdf\"],\n source: \"apache\"\n },\n \"application/x-nzb\": {\n extensions: [\"nzb\"],\n source: \"apache\"\n },\n \"application/x-perl\": {\n extensions: [\"pl\", \"pm\"],\n source: \"nginx\"\n },\n \"application/x-pilot\": {\n extensions: [\"prc\", \"pdb\"],\n source: \"nginx\"\n },\n \"application/x-pkcs7-certificates\": {\n extensions: [\"p7b\", \"spc\"],\n source: \"apache\"\n },\n \"application/x-pkcs7-certreqresp\": {\n extensions: [\"p7r\"],\n source: \"apache\"\n },\n \"application/x-pkcs12\": {\n extensions: [\"p12\", \"pfx\"],\n source: \"apache\"\n },\n \"application/x-rar-compressed\": {\n extensions: [\"rar\"],\n source: \"apache\"\n },\n \"application/x-redhat-package-manager\": {\n extensions: [\"rpm\"],\n source: \"nginx\"\n },\n \"application/x-research-info-systems\": {\n extensions: [\"ris\"],\n source: \"apache\"\n },\n \"application/x-sea\": {\n extensions: [\"sea\"],\n source: \"nginx\"\n },\n \"application/x-sh\": {\n extensions: [\"sh\"],\n source: \"apache\"\n },\n \"application/x-shar\": {\n extensions: [\"shar\"],\n source: \"apache\"\n },\n \"application/x-shockwave-flash\": {\n extensions: [\"swf\"],\n source: \"apache\"\n },\n \"application/x-silverlight-app\": {\n extensions: [\"xap\"],\n source: \"apache\"\n },\n \"application/x-sql\": {\n extensions: [\"sql\"],\n source: \"apache\"\n },\n \"application/x-stuffit\": {\n extensions: [\"sit\"],\n source: \"apache\"\n },\n \"application/x-stuffitx\": {\n extensions: [\"sitx\"],\n source: \"apache\"\n },\n \"application/x-subrip\": {\n extensions: [\"srt\"],\n source: \"apache\"\n },\n \"application/x-sv4cpio\": {\n extensions: [\"sv4cpio\"],\n source: \"apache\"\n },\n \"application/x-sv4crc\": {\n extensions: [\"sv4crc\"],\n source: \"apache\"\n },\n \"application/x-t3vm-image\": {\n extensions: [\"t3\"],\n source: \"apache\"\n },\n \"application/x-tads\": {\n extensions: [\"gam\"],\n source: \"apache\"\n },\n \"application/x-tar\": {\n extensions: [\"tar\"],\n source: \"apache\"\n },\n \"application/x-tcl\": {\n extensions: [\"tcl\", \"tk\"],\n source: \"apache\"\n },\n \"application/x-tex\": {\n extensions: [\"tex\"],\n source: \"apache\"\n },\n \"application/x-tex-tfm\": {\n extensions: [\"tfm\"],\n source: \"apache\"\n },\n \"application/x-texinfo\": {\n extensions: [\"texinfo\", \"texi\"],\n source: \"apache\"\n },\n \"application/x-tgif\": {\n extensions: [\"obj\"],\n source: \"apache\"\n },\n \"application/x-ustar\": {\n extensions: [\"ustar\"],\n source: \"apache\"\n },\n \"application/x-wais-source\": {\n extensions: [\"src\"],\n source: \"apache\"\n },\n \"application/x-x509-ca-cert\": {\n extensions: [\"der\", \"crt\", \"pem\"],\n source: \"iana\"\n },\n \"application/x-xfig\": {\n extensions: [\"fig\"],\n source: \"apache\"\n },\n \"application/x-xliff+xml\": {\n extensions: [\"xlf\"],\n source: \"apache\"\n },\n \"application/x-xpinstall\": {\n extensions: [\"xpi\"],\n source: \"apache\"\n },\n \"application/x-xz\": {\n extensions: [\"xz\"],\n source: \"apache\"\n },\n \"application/x-zmachine\": {\n extensions: [\"z1\", \"z2\", \"z3\", \"z4\", \"z5\", \"z6\", \"z7\", \"z8\"],\n source: \"apache\"\n },\n \"application/xaml+xml\": {\n extensions: [\"xaml\"],\n source: \"apache\"\n },\n \"application/xcap-att+xml\": {\n extensions: [\"xav\"],\n source: \"iana\"\n },\n \"application/xcap-caps+xml\": {\n extensions: [\"xca\"],\n source: \"iana\"\n },\n \"application/xcap-diff+xml\": {\n extensions: [\"xdf\"],\n source: \"iana\"\n },\n \"application/xcap-el+xml\": {\n extensions: [\"xel\"],\n source: \"iana\"\n },\n \"application/xcap-ns+xml\": {\n extensions: [\"xns\"],\n source: \"iana\"\n },\n \"application/xenc+xml\": {\n extensions: [\"xenc\"],\n source: \"iana\"\n },\n \"application/xhtml+xml\": {\n extensions: [\"xhtml\", \"xht\"],\n source: \"iana\"\n },\n \"application/xliff+xml\": {\n extensions: [\"xlf\"],\n source: \"iana\"\n },\n \"application/xml\": {\n extensions: [\"xml\", \"xsl\", \"xsd\", \"rng\"],\n source: \"iana\"\n },\n \"application/xml-dtd\": {\n extensions: [\"dtd\"],\n source: \"iana\"\n },\n \"application/xop+xml\": {\n extensions: [\"xop\"],\n source: \"iana\"\n },\n \"application/xproc+xml\": {\n extensions: [\"xpl\"],\n source: \"apache\"\n },\n \"application/xslt+xml\": {\n extensions: [\"xsl\", \"xslt\"],\n source: \"iana\"\n },\n \"application/xspf+xml\": {\n extensions: [\"xspf\"],\n source: \"apache\"\n },\n \"application/xv+xml\": {\n extensions: [\"mxml\", \"xhvml\", \"xvml\", \"xvm\"],\n source: \"iana\"\n },\n \"application/yaml\": {\n extensions: [\"yaml\", \"yml\"],\n source: \"iana\"\n },\n \"application/yang\": {\n extensions: [\"yang\"],\n source: \"iana\"\n },\n \"application/yin+xml\": {\n extensions: [\"yin\"],\n source: \"iana\"\n },\n \"application/zip\": {\n extensions: [\"zip\"],\n source: \"iana\"\n }\n};\n\n// src/react/placeholder/internal/audio.ts\nvar audio = {\n \"audio/3gpp\": {\n extensions: [\"3gpp\"],\n source: \"iana\"\n },\n \"audio/adpcm\": {\n extensions: [\"adp\"],\n source: \"apache\"\n },\n \"audio/amr\": {\n extensions: [\"amr\"],\n source: \"iana\"\n },\n \"audio/basic\": {\n extensions: [\"au\", \"snd\"],\n source: \"iana\"\n },\n \"audio/midi\": {\n extensions: [\"mid\", \"midi\", \"kar\", \"rmi\"],\n source: \"apache\"\n },\n \"audio/mobile-xmf\": {\n extensions: [\"mxmf\"],\n source: \"iana\"\n },\n \"audio/mp4\": {\n extensions: [\"m4a\", \"mp4a\"],\n source: \"iana\"\n },\n \"audio/mpeg\": {\n extensions: [\"mpga\", \"mp2\", \"mp2a\", \"mp3\", \"m2a\", \"m3a\"],\n source: \"iana\"\n },\n \"audio/ogg\": {\n extensions: [\"oga\", \"ogg\", \"spx\", \"opus\"],\n source: \"iana\"\n },\n \"audio/s3m\": {\n extensions: [\"s3m\"],\n source: \"apache\"\n },\n \"audio/silk\": {\n extensions: [\"sil\"],\n source: \"apache\"\n },\n \"audio/vnd.dece.audio\": {\n extensions: [\"uva\", \"uvva\"],\n source: \"iana\"\n },\n \"audio/vnd.digital-winds\": {\n extensions: [\"eol\"],\n source: \"iana\"\n },\n \"audio/vnd.dra\": {\n extensions: [\"dra\"],\n source: \"iana\"\n },\n \"audio/vnd.dts\": {\n extensions: [\"dts\"],\n source: \"iana\"\n },\n \"audio/vnd.dts.hd\": {\n extensions: [\"dtshd\"],\n source: \"iana\"\n },\n \"audio/vnd.lucent.voice\": {\n extensions: [\"lvp\"],\n source: \"iana\"\n },\n \"audio/vnd.ms-playready.media.pya\": {\n extensions: [\"pya\"],\n source: \"iana\"\n },\n \"audio/vnd.nuera.ecelp4800\": {\n extensions: [\"ecelp4800\"],\n source: \"iana\"\n },\n \"audio/vnd.nuera.ecelp7470\": {\n extensions: [\"ecelp7470\"],\n source: \"iana\"\n },\n \"audio/vnd.nuera.ecelp9600\": {\n extensions: [\"ecelp9600\"],\n source: \"iana\"\n },\n \"audio/vnd.rip\": {\n extensions: [\"rip\"],\n source: \"iana\"\n },\n \"audio/webm\": {\n extensions: [\"weba\"],\n source: \"apache\"\n },\n \"audio/x-aac\": {\n extensions: [\"aac\"],\n source: \"apache\"\n },\n \"audio/x-aiff\": {\n extensions: [\"aif\", \"aiff\", \"aifc\"],\n source: \"apache\"\n },\n \"audio/x-caf\": {\n extensions: [\"caf\"],\n source: \"apache\"\n },\n \"audio/x-flac\": {\n extensions: [\"flac\"],\n source: \"apache\"\n },\n \"audio/x-gsm\": {\n extensions: [\"gsm\"],\n source: \"apache\"\n },\n \"audio/x-m4a\": {\n extensions: [\"m4a\"],\n source: \"nginx\"\n },\n \"audio/x-matroska\": {\n extensions: [\"mka\"],\n source: \"apache\"\n },\n \"audio/x-mpegurl\": {\n extensions: [\"m3u\"],\n source: \"apache\"\n },\n \"audio/x-ms-wax\": {\n extensions: [\"wax\"],\n source: \"apache\"\n },\n \"audio/x-ms-wma\": {\n extensions: [\"wma\"],\n source: \"apache\"\n },\n \"audio/x-pn-realaudio\": {\n extensions: [\"ram\", \"ra\"],\n source: \"apache\"\n },\n \"audio/x-pn-realaudio-plugin\": {\n extensions: [\"rmp\"],\n source: \"apache\"\n },\n \"audio/x-realaudio\": {\n extensions: [\"ra\"],\n source: \"nginx\"\n },\n \"audio/x-wav\": {\n extensions: [\"wav\"],\n source: \"apache\"\n },\n \"audio/xm\": {\n extensions: [\"xm\"],\n source: \"apache\"\n }\n};\n\n// src/react/placeholder/internal/image.ts\nvar image = {\n \"image/aces\": {\n extensions: [\"exr\"],\n source: \"iana\"\n },\n \"image/avci\": {\n extensions: [\"avci\"],\n source: \"iana\"\n },\n \"image/avcs\": {\n extensions: [\"avcs\"],\n source: \"iana\"\n },\n \"image/avif\": {\n extensions: [\"avif\"],\n source: \"iana\"\n },\n \"image/bmp\": {\n extensions: [\"bmp\"],\n source: \"iana\"\n },\n \"image/cgm\": {\n extensions: [\"cgm\"],\n source: \"iana\"\n },\n \"image/dicom-rle\": {\n extensions: [\"drle\"],\n source: \"iana\"\n },\n \"image/emf\": {\n extensions: [\"emf\"],\n source: \"iana\"\n },\n \"image/fits\": {\n extensions: [\"fits\"],\n source: \"iana\"\n },\n \"image/g3fax\": {\n extensions: [\"g3\"],\n source: \"iana\"\n },\n \"image/gif\": {\n extensions: [\"gif\"],\n source: \"iana\"\n },\n \"image/heic\": {\n extensions: [\"heic\"],\n source: \"iana\"\n },\n \"image/heic-sequence\": {\n extensions: [\"heics\"],\n source: \"iana\"\n },\n \"image/heif\": {\n extensions: [\"heif\"],\n source: \"iana\"\n },\n \"image/heif-sequence\": {\n extensions: [\"heifs\"],\n source: \"iana\"\n },\n \"image/hej2k\": {\n extensions: [\"hej2\"],\n source: \"iana\"\n },\n \"image/hsj2\": {\n extensions: [\"hsj2\"],\n source: \"iana\"\n },\n \"image/ief\": {\n extensions: [\"ief\"],\n source: \"iana\"\n },\n \"image/jls\": {\n extensions: [\"jls\"],\n source: \"iana\"\n },\n \"image/jp2\": {\n extensions: [\"jp2\", \"jpg2\"],\n source: \"iana\"\n },\n \"image/jpeg\": {\n extensions: [\"jpeg\", \"jpg\", \"jpe\", \"jfif\", \"pjpeg\", \"pjp\"],\n source: \"iana\"\n },\n \"image/jph\": {\n extensions: [\"jph\"],\n source: \"iana\"\n },\n \"image/jphc\": {\n extensions: [\"jhc\"],\n source: \"iana\"\n },\n \"image/jpm\": {\n extensions: [\"jpm\"],\n source: \"iana\"\n },\n \"image/jpx\": {\n extensions: [\"jpx\", \"jpf\"],\n source: \"iana\"\n },\n \"image/jxr\": {\n extensions: [\"jxr\"],\n source: \"iana\"\n },\n \"image/jxra\": {\n extensions: [\"jxra\"],\n source: \"iana\"\n },\n \"image/jxrs\": {\n extensions: [\"jxrs\"],\n source: \"iana\"\n },\n \"image/jxs\": {\n extensions: [\"jxs\"],\n source: \"iana\"\n },\n \"image/jxsc\": {\n extensions: [\"jxsc\"],\n source: \"iana\"\n },\n \"image/jxsi\": {\n extensions: [\"jxsi\"],\n source: \"iana\"\n },\n \"image/jxss\": {\n extensions: [\"jxss\"],\n source: \"iana\"\n },\n \"image/ktx\": {\n extensions: [\"ktx\"],\n source: \"iana\"\n },\n \"image/ktx2\": {\n extensions: [\"ktx2\"],\n source: \"iana\"\n },\n \"image/png\": {\n extensions: [\"png\"],\n source: \"iana\"\n },\n \"image/prs.btif\": {\n extensions: [\"btif\"],\n source: \"iana\"\n },\n \"image/prs.pti\": {\n extensions: [\"pti\"],\n source: \"iana\"\n },\n \"image/sgi\": {\n extensions: [\"sgi\"],\n source: \"apache\"\n },\n \"image/svg+xml\": {\n extensions: [\"svg\", \"svgz\"],\n source: \"iana\"\n },\n \"image/t38\": {\n extensions: [\"t38\"],\n source: \"iana\"\n },\n \"image/tiff\": {\n extensions: [\"tif\", \"tiff\"],\n source: \"iana\"\n },\n \"image/tiff-fx\": {\n extensions: [\"tfx\"],\n source: \"iana\"\n },\n \"image/vnd.adobe.photoshop\": {\n extensions: [\"psd\"],\n source: \"iana\"\n },\n \"image/vnd.airzip.accelerator.azv\": {\n extensions: [\"azv\"],\n source: \"iana\"\n },\n \"image/vnd.dece.graphic\": {\n extensions: [\"uvi\", \"uvvi\", \"uvg\", \"uvvg\"],\n source: \"iana\"\n },\n \"image/vnd.djvu\": {\n extensions: [\"djvu\", \"djv\"],\n source: \"iana\"\n },\n \"image/vnd.dvb.subtitle\": {\n extensions: [\"sub\"],\n source: \"iana\"\n },\n \"image/vnd.dwg\": {\n extensions: [\"dwg\"],\n source: \"iana\"\n },\n \"image/vnd.dxf\": {\n extensions: [\"dxf\"],\n source: \"iana\"\n },\n \"image/vnd.fastbidsheet\": {\n extensions: [\"fbs\"],\n source: \"iana\"\n },\n \"image/vnd.fpx\": {\n extensions: [\"fpx\"],\n source: \"iana\"\n },\n \"image/vnd.fst\": {\n extensions: [\"fst\"],\n source: \"iana\"\n },\n \"image/vnd.fujixerox.edmics-mmr\": {\n extensions: [\"mmr\"],\n source: \"iana\"\n },\n \"image/vnd.fujixerox.edmics-rlc\": {\n extensions: [\"rlc\"],\n source: \"iana\"\n },\n \"image/vnd.microsoft.icon\": {\n extensions: [\"ico\"],\n source: \"iana\"\n },\n \"image/vnd.ms-modi\": {\n extensions: [\"mdi\"],\n source: \"iana\"\n },\n \"image/vnd.ms-photo\": {\n extensions: [\"wdp\"],\n source: \"apache\"\n },\n \"image/vnd.net-fpx\": {\n extensions: [\"npx\"],\n source: \"iana\"\n },\n \"image/vnd.pco.b16\": {\n extensions: [\"b16\"],\n source: \"iana\"\n },\n \"image/vnd.tencent.tap\": {\n extensions: [\"tap\"],\n source: \"iana\"\n },\n \"image/vnd.valve.source.texture\": {\n extensions: [\"vtf\"],\n source: \"iana\"\n },\n \"image/vnd.wap.wbmp\": {\n extensions: [\"wbmp\"],\n source: \"iana\"\n },\n \"image/vnd.xiff\": {\n extensions: [\"xif\"],\n source: \"iana\"\n },\n \"image/vnd.zbrush.pcx\": {\n extensions: [\"pcx\"],\n source: \"iana\"\n },\n \"image/webp\": {\n extensions: [\"webp\"],\n source: \"apache\"\n },\n \"image/wmf\": {\n extensions: [\"wmf\"],\n source: \"iana\"\n },\n \"image/x-3ds\": {\n extensions: [\"3ds\"],\n source: \"apache\"\n },\n \"image/x-cmu-raster\": {\n extensions: [\"ras\"],\n source: \"apache\"\n },\n \"image/x-cmx\": {\n extensions: [\"cmx\"],\n source: \"apache\"\n },\n \"image/x-freehand\": {\n extensions: [\"fh\", \"fhc\", \"fh4\", \"fh5\", \"fh7\"],\n source: \"apache\"\n },\n \"image/x-icon\": {\n extensions: [\"ico\"],\n source: \"apache\"\n },\n \"image/x-jng\": {\n extensions: [\"jng\"],\n source: \"nginx\"\n },\n \"image/x-mrsid-image\": {\n extensions: [\"sid\"],\n source: \"apache\"\n },\n \"image/x-ms-bmp\": {\n extensions: [\"bmp\"],\n source: \"nginx\"\n },\n \"image/x-pcx\": {\n extensions: [\"pcx\"],\n source: \"apache\"\n },\n \"image/x-pict\": {\n extensions: [\"pic\", \"pct\"],\n source: \"apache\"\n },\n \"image/x-portable-anymap\": {\n extensions: [\"pnm\"],\n source: \"apache\"\n },\n \"image/x-portable-bitmap\": {\n extensions: [\"pbm\"],\n source: \"apache\"\n },\n \"image/x-portable-graymap\": {\n extensions: [\"pgm\"],\n source: \"apache\"\n },\n \"image/x-portable-pixmap\": {\n extensions: [\"ppm\"],\n source: \"apache\"\n },\n \"image/x-rgb\": {\n extensions: [\"rgb\"],\n source: \"apache\"\n },\n \"image/x-tga\": {\n extensions: [\"tga\"],\n source: \"apache\"\n },\n \"image/x-xbitmap\": {\n extensions: [\"xbm\"],\n source: \"apache\"\n },\n \"image/x-xpixmap\": {\n extensions: [\"xpm\"],\n source: \"apache\"\n },\n \"image/x-xwindowdump\": {\n extensions: [\"xwd\"],\n source: \"apache\"\n }\n};\n\n// src/react/placeholder/internal/misc.ts\nvar misc = {\n \"chemical/x-cdx\": {\n extensions: [\"cdx\"],\n source: \"apache\"\n },\n \"chemical/x-cif\": {\n extensions: [\"cif\"],\n source: \"apache\"\n },\n \"chemical/x-cmdf\": {\n extensions: [\"cmdf\"],\n source: \"apache\"\n },\n \"chemical/x-cml\": {\n extensions: [\"cml\"],\n source: \"apache\"\n },\n \"chemical/x-csml\": {\n extensions: [\"csml\"],\n source: \"apache\"\n },\n \"chemical/x-xyz\": {\n extensions: [\"xyz\"],\n source: \"apache\"\n },\n \"font/collection\": {\n extensions: [\"ttc\"],\n source: \"iana\"\n },\n \"font/otf\": {\n extensions: [\"otf\"],\n source: \"iana\"\n },\n \"font/ttf\": {\n extensions: [\"ttf\"],\n source: \"iana\"\n },\n \"font/woff\": {\n extensions: [\"woff\"],\n source: \"iana\"\n },\n \"font/woff2\": {\n extensions: [\"woff2\"],\n source: \"iana\"\n },\n \"message/disposition-notification\": {\n extensions: [\"disposition-notification\"],\n source: \"iana\"\n },\n \"message/global\": {\n extensions: [\"u8msg\"],\n source: \"iana\"\n },\n \"message/global-delivery-status\": {\n extensions: [\"u8dsn\"],\n source: \"iana\"\n },\n \"message/global-disposition-notification\": {\n extensions: [\"u8mdn\"],\n source: \"iana\"\n },\n \"message/global-headers\": {\n extensions: [\"u8hdr\"],\n source: \"iana\"\n },\n \"message/rfc822\": {\n extensions: [\"eml\", \"mime\"],\n source: \"iana\"\n },\n \"message/vnd.wfa.wsc\": {\n extensions: [\"wsc\"],\n source: \"iana\"\n },\n \"model/3mf\": {\n extensions: [\"3mf\"],\n source: \"iana\"\n },\n \"model/gltf+json\": {\n extensions: [\"gltf\"],\n source: \"iana\"\n },\n \"model/gltf-binary\": {\n extensions: [\"glb\"],\n source: \"iana\"\n },\n \"model/iges\": {\n extensions: [\"igs\", \"iges\"],\n source: \"iana\"\n },\n \"model/mesh\": {\n extensions: [\"msh\", \"mesh\", \"silo\"],\n source: \"iana\"\n },\n \"model/mtl\": {\n extensions: [\"mtl\"],\n source: \"iana\"\n },\n \"model/obj\": {\n extensions: [\"obj\"],\n source: \"iana\"\n },\n \"model/step\": {\n extensions: [\".p21\", \".stp\", \".step\", \".stpnc\", \".210\"],\n source: \"iana\"\n },\n \"model/step+xml\": {\n extensions: [\"stpx\"],\n source: \"iana\"\n },\n \"model/step+zip\": {\n extensions: [\"stpz\"],\n source: \"iana\"\n },\n \"model/step-xml+zip\": {\n extensions: [\"stpxz\"],\n source: \"iana\"\n },\n \"model/stl\": {\n extensions: [\"stl\"],\n source: \"iana\"\n },\n \"model/vnd.collada+xml\": {\n extensions: [\"dae\"],\n source: \"iana\"\n },\n \"model/vnd.dwf\": {\n extensions: [\"dwf\"],\n source: \"iana\"\n },\n \"model/vnd.gdl\": {\n extensions: [\"gdl\"],\n source: \"iana\"\n },\n \"model/vnd.gtw\": {\n extensions: [\"gtw\"],\n source: \"iana\"\n },\n \"model/vnd.mts\": {\n extensions: [\"mts\"],\n source: \"iana\"\n },\n \"model/vnd.opengex\": {\n extensions: [\"ogex\"],\n source: \"iana\"\n },\n \"model/vnd.parasolid.transmit.binary\": {\n extensions: [\"x_b\"],\n source: \"iana\"\n },\n \"model/vnd.parasolid.transmit.text\": {\n extensions: [\"x_t\"],\n source: \"iana\"\n },\n \"model/vnd.sap.vds\": {\n extensions: [\"vds\"],\n source: \"iana\"\n },\n \"model/vnd.usdz+zip\": {\n extensions: [\"usdz\"],\n source: \"iana\"\n },\n \"model/vnd.valve.source.compiled-map\": {\n extensions: [\"bsp\"],\n source: \"iana\"\n },\n \"model/vnd.vtu\": {\n extensions: [\"vtu\"],\n source: \"iana\"\n },\n \"model/vrml\": {\n extensions: [\"wrl\", \"vrml\"],\n source: \"iana\"\n },\n \"model/x3d+binary\": {\n extensions: [\"x3db\", \"x3dbz\"],\n source: \"apache\"\n },\n \"model/x3d+fastinfoset\": {\n extensions: [\"x3db\"],\n source: \"iana\"\n },\n \"model/x3d+vrml\": {\n extensions: [\"x3dv\", \"x3dvz\"],\n source: \"apache\"\n },\n \"model/x3d+xml\": {\n extensions: [\"x3d\", \"x3dz\"],\n source: \"iana\"\n },\n \"model/x3d-vrml\": {\n extensions: [\"x3dv\"],\n source: \"iana\"\n },\n \"x-conference/x-cooltalk\": {\n extensions: [\"ice\"],\n source: \"apache\"\n }\n};\n\n// src/react/placeholder/internal/video.ts\nvar video = {\n \"video/3gpp\": {\n extensions: [\"3gp\", \"3gpp\"],\n source: \"iana\"\n },\n \"video/3gpp2\": {\n extensions: [\"3g2\"],\n source: \"iana\"\n },\n \"video/h261\": {\n extensions: [\"h261\"],\n source: \"iana\"\n },\n \"video/h263\": {\n extensions: [\"h263\"],\n source: \"iana\"\n },\n \"video/h264\": {\n extensions: [\"h264\"],\n source: \"iana\"\n },\n \"video/iso.segment\": {\n extensions: [\"m4s\"],\n source: \"iana\"\n },\n \"video/jpeg\": {\n extensions: [\"jpgv\"],\n source: \"iana\"\n },\n \"video/jpm\": {\n extensions: [\"jpm\", \"jpgm\"],\n source: \"apache\"\n },\n \"video/mj2\": {\n extensions: [\"mj2\", \"mjp2\"],\n source: \"iana\"\n },\n \"video/mp2t\": {\n extensions: [\"ts\"],\n source: \"iana\"\n },\n \"video/mp4\": {\n extensions: [\"mp4\", \"mp4v\", \"mpg4\"],\n source: \"iana\"\n },\n \"video/mpeg\": {\n extensions: [\"mpeg\", \"mpg\", \"mpe\", \"m1v\", \"m2v\"],\n source: \"iana\"\n },\n \"video/ogg\": {\n extensions: [\"ogv\"],\n source: \"iana\"\n },\n \"video/quicktime\": {\n extensions: [\"qt\", \"mov\"],\n source: \"iana\"\n },\n \"video/vnd.dece.hd\": {\n extensions: [\"uvh\", \"uvvh\"],\n source: \"iana\"\n },\n \"video/vnd.dece.mobile\": {\n extensions: [\"uvm\", \"uvvm\"],\n source: \"iana\"\n },\n \"video/vnd.dece.pd\": {\n extensions: [\"uvp\", \"uvvp\"],\n source: \"iana\"\n },\n \"video/vnd.dece.sd\": {\n extensions: [\"uvs\", \"uvvs\"],\n source: \"iana\"\n },\n \"video/vnd.dece.video\": {\n extensions: [\"uvv\", \"uvvv\"],\n source: \"iana\"\n },\n \"video/vnd.dvb.file\": {\n extensions: [\"dvb\"],\n source: \"iana\"\n },\n \"video/vnd.fvt\": {\n extensions: [\"fvt\"],\n source: \"iana\"\n },\n \"video/vnd.mpegurl\": {\n extensions: [\"mxu\", \"m4u\"],\n source: \"iana\"\n },\n \"video/vnd.ms-playready.media.pyv\": {\n extensions: [\"pyv\"],\n source: \"iana\"\n },\n \"video/vnd.uvvu.mp4\": {\n extensions: [\"uvu\", \"uvvu\"],\n source: \"iana\"\n },\n \"video/vnd.vivo\": {\n extensions: [\"viv\"],\n source: \"iana\"\n },\n \"video/webm\": {\n extensions: [\"webm\"],\n source: \"apache\"\n },\n \"video/x-f4v\": {\n extensions: [\"f4v\"],\n source: \"apache\"\n },\n \"video/x-fli\": {\n extensions: [\"fli\"],\n source: \"apache\"\n },\n \"video/x-flv\": {\n extensions: [\"flv\"],\n source: \"apache\"\n },\n \"video/x-m4v\": {\n extensions: [\"m4v\"],\n source: \"apache\"\n },\n \"video/x-matroska\": {\n extensions: [\"mkv\", \"mk3d\", \"mks\"],\n source: \"apache\"\n },\n \"video/x-mng\": {\n extensions: [\"mng\"],\n source: \"apache\"\n },\n \"video/x-ms-asf\": {\n extensions: [\"asf\", \"asx\"],\n source: \"apache\"\n },\n \"video/x-ms-vob\": {\n extensions: [\"vob\"],\n source: \"apache\"\n },\n \"video/x-ms-wm\": {\n extensions: [\"wm\"],\n source: \"apache\"\n },\n \"video/x-ms-wmv\": {\n extensions: [\"wmv\"],\n source: \"apache\"\n },\n \"video/x-ms-wmx\": {\n extensions: [\"wmx\"],\n source: \"apache\"\n },\n \"video/x-ms-wvx\": {\n extensions: [\"wvx\"],\n source: \"apache\"\n },\n \"video/x-msvideo\": {\n extensions: [\"avi\"],\n source: \"apache\"\n },\n \"video/x-sgi-movie\": {\n extensions: [\"movie\"],\n source: \"apache\"\n },\n \"video/x-smv\": {\n extensions: [\"smv\"],\n source: \"apache\"\n }\n};\n\n// src/react/placeholder/internal/text.ts\nvar text = {\n \"text/cache-manifest\": {\n extensions: [\"appcache\", \"manifest\"],\n source: \"iana\"\n },\n \"text/calendar\": {\n extensions: [\"ics\", \"ifb\"],\n source: \"iana\"\n },\n \"text/css\": {\n charset: \"UTF-8\",\n extensions: [\"css\"],\n source: \"iana\"\n },\n \"text/csv\": {\n extensions: [\"csv\"],\n source: \"iana\"\n },\n \"text/html\": {\n extensions: [\"html\", \"htm\", \"shtml\"],\n source: \"iana\"\n },\n \"text/markdown\": {\n extensions: [\"markdown\", \"md\"],\n source: \"iana\"\n },\n \"text/mathml\": {\n extensions: [\"mml\"],\n source: \"nginx\"\n },\n \"text/n3\": {\n charset: \"UTF-8\",\n extensions: [\"n3\"],\n source: \"iana\"\n },\n \"text/plain\": {\n extensions: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\", \"in\", \"ini\"],\n source: \"iana\"\n },\n \"text/prs.lines.tag\": {\n extensions: [\"dsc\"],\n source: \"iana\"\n },\n \"text/richtext\": {\n extensions: [\"rtx\"],\n source: \"iana\"\n },\n \"text/rtf\": {\n extensions: [\"rtf\"],\n source: \"iana\"\n },\n \"text/sgml\": {\n extensions: [\"sgml\", \"sgm\"],\n source: \"iana\"\n },\n \"text/shex\": {\n extensions: [\"shex\"],\n source: \"iana\"\n },\n \"text/spdx\": {\n extensions: [\"spdx\"],\n source: \"iana\"\n },\n \"text/tab-separated-values\": {\n extensions: [\"tsv\"],\n source: \"iana\"\n },\n \"text/troff\": {\n extensions: [\"t\", \"tr\", \"roff\", \"man\", \"me\", \"ms\"],\n source: \"iana\"\n },\n \"text/turtle\": {\n charset: \"UTF-8\",\n extensions: [\"ttl\"],\n source: \"iana\"\n },\n \"text/uri-list\": {\n extensions: [\"uri\", \"uris\", \"urls\"],\n source: \"iana\"\n },\n \"text/vcard\": {\n extensions: [\"vcard\"],\n source: \"iana\"\n },\n \"text/vnd.curl\": {\n extensions: [\"curl\"],\n source: \"iana\"\n },\n \"text/vnd.curl.dcurl\": {\n extensions: [\"dcurl\"],\n source: \"apache\"\n },\n \"text/vnd.curl.mcurl\": {\n extensions: [\"mcurl\"],\n source: \"apache\"\n },\n \"text/vnd.curl.scurl\": {\n extensions: [\"scurl\"],\n source: \"apache\"\n },\n \"text/vnd.dvb.subtitle\": {\n extensions: [\"sub\"],\n source: \"iana\"\n },\n \"text/vnd.familysearch.gedcom\": {\n extensions: [\"ged\"],\n source: \"iana\"\n },\n \"text/vnd.fly\": {\n extensions: [\"fly\"],\n source: \"iana\"\n },\n \"text/vnd.fmi.flexstor\": {\n extensions: [\"flx\"],\n source: \"iana\"\n },\n \"text/vnd.graphviz\": {\n extensions: [\"gv\"],\n source: \"iana\"\n },\n \"text/vnd.in3d.3dml\": {\n extensions: [\"3dml\"],\n source: \"iana\"\n },\n \"text/vnd.in3d.spot\": {\n extensions: [\"spot\"],\n source: \"iana\"\n },\n \"text/vnd.sun.j2me.app-descriptor\": {\n charset: \"UTF-8\",\n extensions: [\"jad\"],\n source: \"iana\"\n },\n \"text/vnd.wap.wml\": {\n extensions: [\"wml\"],\n source: \"iana\"\n },\n \"text/vnd.wap.wmlscript\": {\n extensions: [\"wmls\"],\n source: \"iana\"\n },\n \"text/vtt\": {\n charset: \"UTF-8\",\n extensions: [\"vtt\"],\n source: \"iana\"\n },\n \"text/x-asm\": {\n extensions: [\"s\", \"asm\"],\n source: \"apache\"\n },\n \"text/x-c\": {\n extensions: [\"c\", \"cc\", \"cxx\", \"cpp\", \"h\", \"hh\", \"dic\"],\n source: \"apache\"\n },\n \"text/x-component\": {\n extensions: [\"htc\"],\n source: \"nginx\"\n },\n \"text/x-fortran\": {\n extensions: [\"f\", \"for\", \"f77\", \"f90\"],\n source: \"apache\"\n },\n \"text/x-java-source\": {\n extensions: [\"java\"],\n source: \"apache\"\n },\n \"text/x-nfo\": {\n extensions: [\"nfo\"],\n source: \"apache\"\n },\n \"text/x-opml\": {\n extensions: [\"opml\"],\n source: \"apache\"\n },\n \"text/x-pascal\": {\n extensions: [\"p\", \"pas\"],\n source: \"apache\"\n },\n \"text/x-setext\": {\n extensions: [\"etx\"],\n source: \"apache\"\n },\n \"text/x-sfv\": {\n extensions: [\"sfv\"],\n source: \"apache\"\n },\n \"text/x-uuencode\": {\n extensions: [\"uu\"],\n source: \"apache\"\n },\n \"text/x-vcalendar\": {\n extensions: [\"vcs\"],\n source: \"apache\"\n },\n \"text/x-vcard\": {\n extensions: [\"vcf\"],\n source: \"apache\"\n },\n \"text/xml\": {\n extensions: [\"xml\"],\n source: \"iana\"\n }\n};\n\n// src/react/placeholder/internal/mimes.ts\nvar mimes = {\n ...application,\n ...audio,\n ...image,\n ...text,\n ...video,\n ...misc\n};\n\n// src/react/placeholder/internal/utils.ts\nfunction lookup(path) {\n if (!path || typeof path !== \"string\") {\n return false;\n }\n const extension = extname(\"x.\" + path).toLowerCase().slice(1);\n if (!extension) {\n return false;\n }\n return getTypes()[extension] || false;\n}\nvar extensions = {};\nvar types = {};\nfunction getTypes() {\n populateMaps(extensions, types);\n return types;\n}\nvar mimeTypes = mimes;\nvar inittedMaps = false;\nfunction populateMaps(extensions2, types2) {\n if (inittedMaps) return;\n inittedMaps = true;\n const preference = [\"nginx\", \"apache\", void 0, \"iana\"];\n Object.keys(mimeTypes).forEach((type) => {\n const mime = mimeTypes[type];\n const exts = mime.extensions;\n if (!exts?.length) {\n return;\n }\n extensions2[type] = exts;\n for (const extension of exts) {\n if (types2[extension]) {\n const from = preference.indexOf(mimeTypes[types2[extension]].source);\n const to = preference.indexOf(mime.source);\n if (types2[extension] !== \"application/octet-stream\" && (from > to || from === to && types2[extension].startsWith(\"application/\"))) {\n continue;\n }\n }\n types2[extension] = type;\n }\n });\n}\nfunction extname(path) {\n const index = path.lastIndexOf(\".\");\n return index < 0 ? \"\" : path.slice(Math.max(0, index));\n}\n\n// src/react/placeholder/utils/matchFileType.ts\nvar matchFileType = (file, allowedTypes) => {\n const mimeType = file.type || lookup(file.name);\n if (!mimeType) {\n if (allowedTypes.includes(\"blob\")) return \"blob\";\n throw createUploadError(400 /* INVALID_FILE_TYPE */, {\n allowedTypes,\n files: [file]\n });\n }\n if (allowedTypes.some((type2) => type2.includes(\"/\")) && allowedTypes.includes(mimeType)) {\n return mimeType;\n }\n const type = mimeType.toLowerCase() === \"application/pdf\" ? \"pdf\" : mimeType.split(\"/\")[0];\n if (!allowedTypes.includes(type)) {\n if (allowedTypes.includes(\"blob\")) {\n return \"blob\";\n } else {\n throw createUploadError(400 /* INVALID_FILE_TYPE */, {\n allowedTypes,\n files: [file]\n });\n }\n }\n return type;\n};\n\n// src/react/placeholder/utils/getMediaType.ts\nvar getMediaType = (file, config) => {\n const type = matchFileType(\n file,\n Object.keys(config)\n );\n return config[type].mediaType;\n};\n\n// src/react/placeholder/utils/history.ts\nvar historyMarks = /* @__PURE__ */ new WeakMap();\nvar withHistoryMark = (editor, fn) => {\n const prev = isHistoryMarking(editor);\n historyMarks.set(editor, true);\n fn();\n historyMarks.set(editor, prev);\n};\nvar isHistoryMarking = (editor) => {\n return historyMarks.get(editor) ?? false;\n};\nvar updateUploadHistory = (editor, node) => {\n const index = editor.history.undos.findLastIndex(\n (batch2) => batch2[PlaceholderPlugin.key] && batch2.operations.some(\n (operation) => operation.type === \"insert_node\" && operation.node.id === node.placeholderId\n )\n );\n const batch = editor.history.undos[index];\n const newOperations = [];\n for (const operation of batch.operations) {\n if ((operation.type === \"insert_node\" && operation.node).id === node.placeholderId) {\n newOperations.push({\n ...operation,\n node\n });\n continue;\n }\n newOperations.push(operation);\n }\n const newBatch = {\n ...batch,\n operations: newOperations\n };\n editor.history.undos[index] = newBatch;\n};\n\n// src/react/placeholder/utils/groupFilesByType.ts\nvar groupFilesByType = (fileList, config) => {\n const FileTypeMap = {\n audio: [],\n blob: [],\n image: [],\n pdf: [],\n text: [],\n video: []\n };\n for (const file of fileList) {\n const type = matchFileType(file, Object.keys(config));\n FileTypeMap[type].push(file);\n }\n return FileTypeMap;\n};\n\n// src/react/placeholder/utils/fileSizeToBytes.ts\nvar FILESIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\"];\nvar fileSizeToBytes = (fileSize, file) => {\n const regex = new RegExp(\n `^(\\\\d+)(\\\\.\\\\d+)?\\\\s*(${FILESIZE_UNITS.join(\"|\")})$`,\n \"i\"\n );\n const match = fileSize.match(regex);\n if (!match) {\n throw createUploadError(403 /* INVALID_FILE_SIZE */, {\n files: [file]\n });\n }\n const sizeValue = Number.parseFloat(match[1]);\n const sizeUnit = match[3].toUpperCase();\n const bytes = sizeValue * Math.pow(1024, FILESIZE_UNITS.indexOf(sizeUnit));\n return Math.floor(bytes);\n};\nvar bytesToFileSize = (bytes) => {\n if (bytes === 0 || bytes === -1) {\n return \"0B\";\n }\n const i = Math.floor(Math.log(bytes) / Math.log(1e3));\n return `${(bytes / Math.pow(1e3, i)).toFixed(2)}${FILESIZE_UNITS[i]}`;\n};\n\n// src/react/placeholder/utils/validateFileItem.ts\nvar validateFileItem = (files, config, key) => {\n const { maxFileCount = Infinity, maxFileSize, minFileCount = 1 } = config;\n if (files.length < minFileCount)\n throw createUploadError(405 /* TOO_LESS_FILES */, {\n fileType: key,\n files,\n minFileCount\n });\n if (files.length > maxFileCount)\n throw createUploadError(402 /* TOO_MANY_FILES */, {\n fileType: key,\n files,\n maxFileCount\n });\n for (const f of files) {\n const bytes = fileSizeToBytes(maxFileSize, f);\n if (f.size > bytes)\n throw createUploadError(413 /* TOO_LARGE */, {\n fileType: key,\n files: [f],\n maxFileSize\n });\n }\n return true;\n};\n\n// src/react/placeholder/utils/validateFiles.ts\nvar validateFiles = (fileList, config) => {\n const fileTypeMap = groupFilesByType(fileList, config);\n const keys = Object.keys(fileTypeMap);\n for (const key of keys) {\n const itemConfig = config[key];\n const itemFiles = fileTypeMap[key];\n if (itemFiles.length === 0) continue;\n validateFileItem(itemFiles, itemConfig, key);\n }\n};\n\n// src/react/placeholder/transforms/insertMedia.ts\nvar insertMedia2 = (editor, files, options) => {\n const api = editor.getApi(PlaceholderPlugin);\n const uploadConfig = editor.getOption(PlaceholderPlugin, \"uploadConfig\");\n const multiple = editor.getOption(PlaceholderPlugin, \"multiple\");\n try {\n validateFiles(files, uploadConfig);\n } catch (error) {\n if (!isUploadError(error)) throw error;\n return editor.setOption(PlaceholderPlugin, \"error\", error);\n }\n if (!multiple && files.length > 1) {\n return editor.setOption(\n PlaceholderPlugin,\n \"error\",\n createUploadError(402 /* TOO_MANY_FILES */, {\n fileType: null,\n files: Array.from(files),\n maxFileCount: 1\n })\n );\n }\n const maxFileCount = editor.getOption(PlaceholderPlugin, \"maxFileCount\") ?? 3;\n if (files.length > maxFileCount) {\n return editor.setOption(\n PlaceholderPlugin,\n \"error\",\n createUploadError(402 /* TOO_MANY_FILES */, {\n fileType: null,\n files: Array.from(files),\n maxFileCount\n })\n );\n }\n let currentAt;\n const { at, nextBlock = true, ...restOptions } = options ?? {};\n Array.from(files).forEach((file, index) => {\n if (index === 0) {\n if (at) {\n currentAt = at;\n }\n } else {\n currentAt = currentAt ? PathApi.next(currentAt) : void 0;\n }\n const id = nanoid();\n api.placeholder.addUploadingFile(id, file);\n const insert = () => {\n editor.tf.insertNodes(\n {\n id,\n children: [{ text: \"\" }],\n mediaType: getMediaType(file, uploadConfig),\n type: editor.getType(BasePlaceholderPlugin)\n },\n { at: currentAt, nextBlock, ...restOptions }\n );\n };\n const disableEmptyPlaceholder = editor.getOption(\n PlaceholderPlugin,\n \"disableEmptyPlaceholder\"\n );\n if (disableEmptyPlaceholder) {\n editor.tf.withoutMerging(() => {\n withHistoryMark(editor, insert);\n });\n } else {\n editor.tf.withoutNormalizing(insert);\n }\n });\n};\n\n// src/react/placeholder/PlaceholderPlugin.tsx\nvar PlaceholderPlugin = toTPlatePlugin(BasePlaceholderPlugin, {\n options: {\n disableEmptyPlaceholder: false,\n disableFileDrop: false,\n error: null,\n maxFileCount: 5,\n multiple: true,\n uploadConfig: {\n audio: {\n maxFileCount: 1,\n maxFileSize: \"8MB\",\n mediaType: AudioPlugin.key,\n minFileCount: 1\n },\n blob: {\n maxFileCount: 1,\n maxFileSize: \"8MB\",\n mediaType: FilePlugin.key,\n minFileCount: 1\n },\n image: {\n maxFileCount: 3,\n maxFileSize: \"4MB\",\n mediaType: ImagePlugin.key,\n minFileCount: 1\n },\n pdf: {\n maxFileCount: 1,\n maxFileSize: \"4MB\",\n mediaType: FilePlugin.key,\n minFileCount: 1\n },\n text: {\n maxFileCount: 1,\n maxFileSize: \"64KB\",\n mediaType: FilePlugin.key,\n minFileCount: 1\n },\n video: {\n maxFileCount: 1,\n maxFileSize: \"16MB\",\n mediaType: VideoPlugin.key,\n minFileCount: 1\n }\n },\n uploadingFiles: {}\n }\n}).overrideEditor(({ editor, tf: { writeHistory } }) => ({\n transforms: {\n writeHistory(stack, batch) {\n if (isHistoryMarking(editor)) {\n const newBatch = {\n ...batch,\n [PlaceholderPlugin.key]: true\n };\n writeHistory(stack, newBatch);\n return;\n }\n return writeHistory(stack, batch);\n }\n }\n})).extendEditorTransforms(({ editor }) => ({\n insert: {\n media: bindFirst3(insertMedia2, editor)\n }\n})).extendApi(({ getOption, setOption }) => ({\n addUploadingFile: (id, file) => {\n const uploadingFiles = getOption(\"uploadingFiles\");\n setOption(\"uploadingFiles\", {\n ...uploadingFiles,\n [id]: file\n });\n },\n getUploadingFile: (id) => {\n const uploadingFiles = getOption(\"uploadingFiles\");\n return uploadingFiles[id];\n },\n removeUploadingFile: (id) => {\n const uploadingFiles = getOption(\"uploadingFiles\");\n delete uploadingFiles[id];\n setOption(\"uploadingFiles\", uploadingFiles);\n }\n})).extend(({ getOption }) => ({\n handlers: {\n onDrop: ({ editor, event, tf }) => {\n if (!getOption(\"disableFileDrop\")) return;\n const { files } = event.dataTransfer;\n if (files.length === 0) return false;\n event.preventDefault();\n event.stopPropagation();\n const at = editor.api.findEventRange(event);\n if (!at) return false;\n tf.insert.media(files);\n return true;\n },\n onPaste: ({ editor, event, tf }) => {\n const { files, types: types2 } = event.clipboardData;\n const TEXT_HTML = \"text/html\";\n if (files.length > 0 && !types2.includes(TEXT_HTML)) {\n event.preventDefault();\n event.stopPropagation();\n let inserted = false;\n const ancestor = editor.api.block({ highest: true });\n if (ancestor) {\n const [node, path] = ancestor;\n if (NodeApi.string(node).length === 0) {\n editor.tf.removeNodes({ at: path });\n tf.insert.media(files, { at: path, nextBlock: false });\n inserted = true;\n }\n }\n if (!inserted) {\n tf.insert.media(files, { nextBlock: false });\n }\n return true;\n }\n return false;\n }\n }\n}));\n\n// src/react/placeholder/placeholderStore.ts\nimport { createAtomStore as createAtomStore2 } from \"@udecode/plate/react\";\nvar { PlaceholderProvider, placeholderStore, usePlaceholderStore } = createAtomStore2(\n {\n isUploading: false,\n progresses: {},\n size: null,\n updatedFiles: []\n },\n { name: \"placeholder\" }\n);\n\n// src/react/placeholder/hooks/usePlaceholderElement.ts\nimport {\n useEditorRef as useEditorRef6,\n useElement as useElement5,\n useFocused as useFocused2,\n useReadOnly as useReadOnly2,\n useSelected as useSelected2\n} from \"@udecode/plate/react\";\nvar usePlaceholderElementState = () => {\n const element = useElement5();\n const editor = useEditorRef6();\n const focused = useFocused2();\n const readOnly = useReadOnly2();\n const selected = useSelected2();\n const progresses = usePlaceholderStore().get.progresses();\n const isUploading = usePlaceholderStore().get.isUploading();\n const updatedFiles = usePlaceholderStore().get.updatedFiles();\n const setSize = usePlaceholderStore().set.size();\n const { mediaType } = useElement5(\n BasePlaceholderPlugin.key\n );\n const progressing = updatedFiles.length > 0 && isUploading;\n return {\n editor,\n element,\n focused,\n isUploading,\n mediaType,\n progresses,\n progressing,\n readOnly,\n selected,\n setSize,\n updatedFiles\n };\n};\n\n// src/react/placeholder/hooks/usePlaceholderPopover.ts\nimport {\n useEditorRef as useEditorRef7,\n useEditorSelector,\n useElement as useElement6,\n useFocused as useFocused3,\n useReadOnly as useReadOnly3,\n useSelected as useSelected3\n} from \"@udecode/plate/react\";\nvar usePlaceholderPopoverState = () => {\n const editor = useEditorRef7();\n const readOnly = useReadOnly3();\n const selected = useSelected3();\n const focused = useFocused3();\n const selectionCollapsed = useEditorSelector(\n (editor2) => !editor2.api.isExpanded(),\n []\n );\n const element = useElement6(BasePlaceholderPlugin.key);\n const { id, mediaType } = element;\n const setProgresses = usePlaceholderStore().set.progresses();\n const setIsUploading = usePlaceholderStore().set.isUploading();\n const setUpdatedFiles = usePlaceholderStore().set.updatedFiles();\n const size = usePlaceholderStore().get.size();\n return {\n id,\n editor,\n element,\n focused,\n mediaType,\n readOnly,\n selected,\n selectionCollapsed,\n setIsUploading,\n setProgresses,\n setUpdatedFiles,\n size\n };\n};\nexport {\n AudioPlugin,\n FILESIZE_UNITS,\n FilePlugin,\n FloatingMedia,\n FloatingMediaEditButton,\n FloatingMediaStore,\n FloatingMediaUrlInput,\n Image,\n ImagePlugin,\n ImagePreviewStore,\n MediaEmbedPlugin,\n MediaProvider,\n PlaceholderPlugin,\n PlaceholderProvider,\n PreviewImage,\n UploadErrorCode,\n VideoPlugin,\n bytesToFileSize,\n createUploadError,\n fileSizeToBytes,\n floatingMediaActions,\n floatingMediaSelectors,\n getMediaType,\n groupFilesByType,\n imagePreviewActions,\n imagePreviewSelectors,\n insertMedia2 as insertMedia,\n isHistoryMarking,\n isUploadError,\n matchFileType,\n mediaStore,\n openImagePreview,\n placeholderStore,\n submitFloatingMedia,\n updateUploadHistory,\n useFloatingMediaEditButton,\n useFloatingMediaSelectors,\n useFloatingMediaUrlInput,\n useFloatingMediaUrlInputState,\n useImage,\n useImagePreview,\n useImagePreviewSelectors,\n useImagePreviewState,\n useMediaController,\n useMediaControllerDropDownMenu,\n useMediaControllerState,\n useMediaState,\n useMediaStore,\n useMediaToolbarButton,\n usePlaceholderElementState,\n usePlaceholderPopoverState,\n usePlaceholderStore,\n usePreviewImage,\n usePreviewImageState,\n useScaleInput,\n useScaleInputState,\n useZoom,\n validateFileItem,\n validateFiles,\n withHistoryMark\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/NodeIdPlugin.ts\nimport {\n ElementApi,\n createTSlatePlugin,\n nanoid,\n queryNode as queryNode2\n} from \"@udecode/plate\";\n\n// src/lib/withNodeId.ts\nimport {\n applyDeepToNodes,\n defaultsDeepToNodes,\n isDefined,\n queryNode\n} from \"@udecode/plate\";\nimport castArray from \"lodash/castArray.js\";\nimport cloneDeep from \"lodash/cloneDeep.js\";\nvar withNodeId = ({\n editor,\n getOptions,\n tf: { apply, insertNode, insertNodes }\n}) => {\n const idPropsCreator = () => ({\n [getOptions().idKey ?? \"\"]: getOptions().idCreator()\n });\n const filterNode = (nodeEntry) => {\n const { filter, filterText } = getOptions();\n return filter(nodeEntry) && (!filterText || nodeEntry[0]?.type !== void 0);\n };\n const removeIdFromNodeIfDuplicate = (node) => {\n const { idKey = \"\", reuseId } = getOptions();\n if (!reuseId || editor.api.some({ at: [], match: { [idKey]: node[idKey] } })) {\n delete node[idKey];\n }\n };\n const overrideIdIfSet = (node) => {\n const { idKey = \"\" } = getOptions();\n if (isDefined(node._id)) {\n const id = node._id;\n delete node._id;\n if (!editor.api.some({ at: [], match: { [idKey]: id } })) {\n node[idKey] = id;\n }\n }\n };\n return {\n transforms: {\n apply(operation) {\n const {\n allow,\n disableInsertOverrides,\n exclude,\n idCreator,\n idKey = \"\",\n reuseId\n } = getOptions();\n const query = {\n allow,\n exclude,\n filter: filterNode\n };\n if (operation.type === \"insert_node\") {\n const node = cloneDeep(operation.node);\n applyDeepToNodes({\n apply: removeIdFromNodeIfDuplicate,\n node,\n query,\n source: {}\n });\n defaultsDeepToNodes({\n node,\n path: operation.path,\n query,\n source: idPropsCreator\n });\n if (!disableInsertOverrides) {\n applyDeepToNodes({\n apply: overrideIdIfSet,\n node,\n query,\n source: {}\n });\n }\n return apply({\n ...operation,\n node\n });\n }\n if (operation.type === \"split_node\") {\n const node = operation.properties;\n let id = operation.properties[idKey];\n if (queryNode([node, operation.path], query)) {\n if (!reuseId || id === void 0 || editor.api.some({\n at: [],\n match: { [idKey]: id }\n })) {\n id = idCreator();\n }\n return apply({\n ...operation,\n properties: {\n ...operation.properties,\n [idKey]: id\n }\n });\n }\n if (id) {\n delete operation.properties[idKey];\n }\n }\n return apply(operation);\n },\n insertNode(node) {\n const { disableInsertOverrides, idKey = \"\" } = getOptions();\n if (!disableInsertOverrides && node[idKey]) {\n node._id = node[idKey];\n }\n insertNode(node);\n },\n insertNodes(_nodes, options) {\n const nodes = castArray(_nodes).filter(\n (node) => !!node\n );\n if (nodes.length === 0) return;\n const { disableInsertOverrides, idKey = \"\" } = getOptions();\n insertNodes(\n nodes.map((node) => {\n if (!disableInsertOverrides && node[idKey]) {\n node._id = node[idKey];\n }\n return node;\n }),\n options\n );\n }\n }\n };\n};\n\n// src/lib/NodeIdPlugin.ts\nvar NodeIdPlugin = createTSlatePlugin({\n key: \"nodeId\",\n normalizeInitialValue: ({ editor, getOptions }) => {\n const {\n allow,\n exclude,\n filter,\n filterInline,\n filterText,\n idKey,\n normalizeInitialValue\n } = getOptions();\n if (!normalizeInitialValue) {\n const firstNode = editor.children[0];\n const lastNode = editor.children.at(-1);\n if (firstNode?.id && lastNode?.id) {\n return;\n }\n }\n const addNodeId = (entry) => {\n const [node, path] = entry;\n if (!node[idKey] && queryNode2([node, path], {\n allow,\n exclude,\n filter: (entry2) => {\n const [node2] = entry2;\n if (filterText && !ElementApi.isElement(node2)) {\n return false;\n }\n if (filterInline && ElementApi.isElement(node2) && !editor.api.isBlock(node2)) {\n return false;\n }\n return filter(entry2);\n }\n })) {\n node[idKey] = getOptions().idCreator();\n }\n if (node.children?.length > 0) {\n node.children.forEach((child, index) => {\n addNodeId([child, [...path, index]]);\n });\n }\n return node;\n };\n editor.children.forEach((node, index) => {\n addNodeId([node, [index]]);\n });\n },\n options: {\n filter: () => true,\n filterInline: true,\n filterText: true,\n idCreator: () => nanoid(10),\n idKey: \"id\",\n normalizeInitialValue: false\n }\n}).overrideEditor(withNodeId);\nexport {\n NodeIdPlugin,\n withNodeId\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/DeletePlugin.ts\nimport {\n BaseParagraphPlugin,\n createTSlatePlugin,\n queryNode\n} from \"@udecode/plate\";\nvar DeletePlugin = createTSlatePlugin({\n key: \"delete\",\n options: {\n query: {\n allow: [BaseParagraphPlugin.key]\n }\n }\n}).overrideEditor(({ editor, getOptions, tf: { deleteForward } }) => ({\n transforms: {\n deleteForward(unit) {\n if (!editor.selection) return;\n const { query } = getOptions();\n const isValidNode = !query || queryNode(editor.api.above(), query);\n if (!editor.api.isExpanded() && editor.api.isEmpty(editor.selection, { block: true }) && isValidNode) {\n editor.tf.removeNodes();\n } else {\n deleteForward(unit);\n }\n }\n }\n}));\n\n// src/lib/SelectOnBackspacePlugin.ts\nimport {\n createTSlatePlugin as createTSlatePlugin2\n} from \"@udecode/plate\";\n\n// src/lib/withSelectOnBackspace.ts\nimport { NodeApi, queryNode as queryNode2 } from \"@udecode/plate\";\nvar withSelectOnBackspace = ({\n editor,\n getOptions,\n tf: { deleteBackward }\n}) => ({\n transforms: {\n deleteBackward(unit) {\n const { selection } = editor;\n const { query, removeNodeIfEmpty } = getOptions();\n if (unit === \"character\" && editor.api.isCollapsed()) {\n const pointBefore = editor.api.before(selection, {\n unit\n });\n if (pointBefore) {\n const [prevCell] = editor.api.nodes({\n at: pointBefore,\n match: (node) => queryNode2([node, pointBefore.path], query)\n });\n if (!!prevCell && pointBefore) {\n const point = editor.api.point(selection);\n const selectedNode = NodeApi.get(editor, point.path);\n if (removeNodeIfEmpty && selectedNode && !NodeApi.string(selectedNode)) {\n editor.tf.removeNodes();\n }\n editor.tf.select(pointBefore);\n } else {\n deleteBackward(unit);\n }\n } else {\n deleteBackward(unit);\n }\n } else {\n deleteBackward(unit);\n }\n }\n }\n});\n\n// src/lib/SelectOnBackspacePlugin.ts\nvar SelectOnBackspacePlugin = createTSlatePlugin2({\n key: \"selectOnBackspace\",\n options: {\n removeNodeIfEmpty: false\n }\n}).overrideEditor(withSelectOnBackspace);\nexport {\n DeletePlugin,\n SelectOnBackspacePlugin,\n withSelectOnBackspace\n};\n//# sourceMappingURL=index.mjs.map","// src/react/BlockMenuPlugin.tsx\nimport { createTPlatePlugin } from \"@udecode/plate/react\";\nvar BLOCK_CONTEXT_MENU_ID = \"context\";\nvar BlockMenuPlugin = createTPlatePlugin({\n key: \"blockMenu\",\n options: {\n openId: null,\n position: {\n x: -1e4,\n y: -1e4\n }\n }\n}).extendApi(({ setOption, setOptions }) => ({\n hide: () => {\n setOptions({\n openId: null,\n position: {\n x: -1e4,\n y: -1e4\n }\n });\n },\n show: (id, position) => {\n if (position) {\n setOptions({\n openId: id,\n position\n });\n } else {\n setOption(\"openId\", id);\n }\n }\n})).extendApi(({ api, editor }) => ({\n showContextMenu: (blockId, position) => {\n editor.getApi({ key: \"blockSelection\" }).blockSelection?.addSelectedRow(blockId);\n api.blockMenu.show(BLOCK_CONTEXT_MENU_ID, position);\n }\n})).extend(({ api }) => ({\n handlers: {\n onMouseDown: ({ event, getOptions }) => {\n if (event.button === 0 && getOptions().openId) {\n event.preventDefault();\n api.blockMenu.hide();\n }\n if (event.button === 2) event.preventDefault();\n }\n }\n}));\n\n// src/react/BlockSelectionPlugin.tsx\nimport { bindFirst } from \"@udecode/plate\";\nimport { createTPlatePlugin as createTPlatePlugin3 } from \"@udecode/plate/react\";\n\n// src/lib/extractSelectableIds.ts\nvar extractSelectableIds = (els) => {\n return els.map((v) => v.dataset.blockId);\n};\n\n// src/lib/getAboveDomNode.ts\nvar querySelectorSelectable = (id) => {\n return document.querySelector(`.slate-selectable[data-block-id=\"${id}\"]`);\n};\nvar querySelectorAllSelectable = () => {\n return document.querySelectorAll(`.slate-selectable`);\n};\n\n// src/lib/isSelecting.ts\nvar isSelecting = (editor) => {\n const isSelectingSome = editor.getOption(\n BlockSelectionPlugin,\n \"isSelectingSome\"\n );\n const selectionExpanded = editor.api.isExpanded();\n return selectionExpanded || isSelectingSome;\n};\n\n// src/react/components/BlockSelectionAfterEditable.tsx\nimport React5 from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isHotkey } from \"@udecode/plate\";\nimport {\n useEditorPlugin as useEditorPlugin7,\n useEditorRef as useEditorRef3\n} from \"@udecode/plate/react\";\n\n// src/react/hooks/useBlockSelectable.ts\nimport { PathApi } from \"@udecode/plate\";\nimport { useEditorPlugin, useElement, usePath } from \"@udecode/plate/react\";\nvar useBlockSelectable = () => {\n const element = useElement();\n const path = usePath();\n const { api, editor, getOption, getOptions } = useEditorPlugin({\n key: \"blockSelection\"\n });\n const id = element?.id;\n return {\n props: api.blockSelection.isSelectable(element, path) ? {\n className: \"slate-selectable\",\n onContextMenu: (event) => {\n if (!element) return;\n const { enableContextMenu } = getOptions();\n if (!enableContextMenu) return;\n if (editor.selection?.focus) {\n const nodeEntry = editor.api.above();\n if (nodeEntry && PathApi.isCommon(path, nodeEntry[1])) {\n const id2 = nodeEntry[0].id;\n const isSelected = getOption(\"isSelected\", id2);\n const isOpenAlways = event.target.dataset?.plateOpenContextMenu === \"true\";\n if (!isSelected && !editor.api.isVoid(nodeEntry[0]) && !isOpenAlways) {\n return event.stopPropagation();\n }\n }\n }\n if (id) {\n api.blockSelection.addSelectedRow(id, {\n clear: !event?.shiftKey\n });\n }\n }\n } : {}\n };\n};\n\n// src/react/hooks/useBlockSelected.ts\nimport { useEditorPlugin as useEditorPlugin2, useElement as useElement2 } from \"@udecode/plate/react\";\nvar useBlockSelected = (_id) => {\n const { useOption } = useEditorPlugin2(BlockSelectionPlugin);\n const { id } = useElement2();\n const isBlockSelected = useOption(\"isSelected\", _id ?? id);\n return isBlockSelected;\n};\n\n// src/react/hooks/useBlockSelectionNodes.ts\nimport { useMemo } from \"react\";\nimport { useEditorPlugin as useEditorPlugin3, useEditorRef } from \"@udecode/plate/react\";\nfunction useBlockSelectionNodes() {\n const { editor, useOption } = useEditorPlugin3(BlockSelectionPlugin);\n const selectedIds = useOption(\"selectedIds\");\n return useMemo(() => {\n return editor.api.blocks({\n at: [],\n match: (n) => !!n.id && selectedIds?.has(n.id)\n });\n }, [editor, selectedIds]);\n}\nfunction useBlockSelectionFragment() {\n const nodes = useBlockSelectionNodes();\n return useMemo(() => nodes.map(([node]) => node), [nodes]);\n}\nfunction useBlockSelectionFragmentProp(options) {\n const editor = useEditorRef();\n const fragment = useBlockSelectionFragment();\n return useMemo(\n () => editor.api.prop({ nodes: fragment, ...options }),\n [editor.api, fragment, options]\n );\n}\n\n// src/react/hooks/useCursorOverlay.ts\nimport React3 from \"react\";\nimport {\n useEditorContainerRef,\n useEditorRef as useEditorRef2,\n useIsomorphicLayoutEffect\n} from \"@udecode/plate/react\";\n\n// src/react/CursorOverlayPlugin.tsx\nimport { useEffect } from \"react\";\nimport {\n createTPlatePlugin as createTPlatePlugin2,\n useEditorPlugin as useEditorPlugin4\n} from \"@udecode/plate/react\";\nvar getRemoveCursorHandler = (id) => ({ api }) => {\n api.cursorOverlay.removeCursor(id);\n};\nvar CursorOverlayPlugin = createTPlatePlugin2({\n key: \"cursorOverlay\",\n options: { cursors: {} }\n}).extendApi(({ editor, plugin }) => ({\n addCursor: (id, cursor) => {\n const newCursors = { ...editor.getOptions(plugin).cursors };\n newCursors[id] = {\n id,\n ...cursor\n };\n editor.setOption(plugin, \"cursors\", newCursors);\n },\n removeCursor: (id) => {\n const newCursors = { ...editor.getOptions(plugin).cursors };\n if (!newCursors[id]) return;\n delete newCursors[id];\n editor.setOption(plugin, \"cursors\", newCursors);\n }\n})).overrideEditor(({ api, editor, getOptions, tf: { setSelection } }) => ({\n transforms: {\n setSelection(props) {\n if (getOptions().cursors?.selection) {\n setTimeout(() => {\n api.cursorOverlay.addCursor(\"selection\", {\n selection: editor.selection\n });\n }, 0);\n }\n setSelection(props);\n }\n }\n})).extend(() => ({\n useHooks: ({ api, setOption }) => {\n const { editor } = useEditorPlugin4(BlockSelectionPlugin);\n const isSelecting2 = editor.useOption(BlockSelectionPlugin, \"isSelecting\");\n useEffect(() => {\n if (isSelecting2) {\n setTimeout(() => {\n api.cursorOverlay.removeCursor(\"selection\");\n }, 0);\n }\n }, [isSelecting2, setOption, api.cursorOverlay]);\n },\n handlers: {\n onBlur: ({ api, editor, event }) => {\n if (!editor.selection) return;\n const relatedTarget = event.relatedTarget;\n const enabled = relatedTarget?.dataset?.plateFocus === \"true\";\n if (!enabled) return;\n api.cursorOverlay.addCursor(\"selection\", {\n selection: editor.selection\n });\n },\n onDragEnd: getRemoveCursorHandler(\"drag\"),\n onDragLeave: getRemoveCursorHandler(\"drag\"),\n onDragOver: ({ api, editor, event }) => {\n if (!editor.plugins.dnd || editor.getOptions({ key: \"dnd\" }).isDragging) {\n return;\n }\n const types = event.dataTransfer?.types || [];\n if (types.some((type) => type.startsWith(\"Files\"))) return;\n const range = editor.api.findEventRange(event);\n if (!range) return;\n api.cursorOverlay.addCursor(\"drag\", {\n selection: range\n });\n },\n onDrop: getRemoveCursorHandler(\"drag\"),\n onFocus: getRemoveCursorHandler(\"selection\")\n }\n}));\n\n// src/react/queries/getCaretPosition.ts\nimport { RangeApi } from \"@udecode/plate\";\nvar getCaretPosition = (selectionRects, range) => {\n const isCollapsed = range && RangeApi.isCollapsed(range);\n const isBackward = range && RangeApi.isBackward(range);\n const anchorRect = selectionRects[isBackward ? 0 : selectionRects.length - 1];\n if (!anchorRect) {\n return null;\n }\n return {\n height: anchorRect.height,\n left: anchorRect.left + (isBackward || isCollapsed ? 0 : anchorRect.width),\n top: anchorRect.top\n };\n};\n\n// src/react/queries/getCursorOverlayState.ts\nvar getCursorOverlayState = ({\n cursors: cursorStates,\n selectionRects\n}) => {\n if (!cursorStates) return [];\n return Object.entries(cursorStates).map(([key, cursorState]) => {\n const selection = cursorState?.selection ?? null;\n const rects = selectionRects[key] ?? FROZEN_EMPTY_ARRAY;\n const caretPosition = selection ? getCaretPosition(rects, selection) : null;\n return {\n ...cursorState,\n caretPosition,\n selection,\n selectionRects: rects\n };\n });\n};\n\n// src/react/queries/getSelectionRects.ts\nimport {\n PathApi as PathApi2,\n RangeApi as RangeApi2,\n TextApi\n} from \"@udecode/plate\";\nvar getSelectionRects = (editor, {\n range,\n xOffset,\n yOffset\n}) => {\n const [start, end] = RangeApi2.edges(range);\n const domRange = editor.api.toDOMRange(range);\n if (!domRange) {\n return [];\n }\n const selectionRects = [];\n const textEntries = editor.api.nodes({\n at: range,\n match: TextApi.isText\n });\n for (const [textNode, textPath] of textEntries) {\n const domNode = editor.api.toDOMNode(textNode);\n if (!domNode?.parentElement) {\n return [];\n }\n const isStartNode = PathApi2.equals(textPath, start.path);\n const isEndNode = PathApi2.equals(textPath, end.path);\n let clientRects = null;\n if (isStartNode || isEndNode) {\n const nodeRange = document.createRange();\n nodeRange.selectNode(domNode);\n if (isStartNode) {\n nodeRange.setStart(domRange.startContainer, domRange.startOffset);\n }\n if (isEndNode) {\n nodeRange.setEnd(domRange.endContainer, domRange.endOffset);\n }\n clientRects = nodeRange.getClientRects();\n } else {\n clientRects = domNode.getClientRects();\n }\n for (let i = 0; i < clientRects.length; i++) {\n const clientRect = clientRects.item(i);\n if (!clientRect) {\n continue;\n }\n selectionRects.push({\n height: clientRect.height,\n left: clientRect.left - xOffset,\n top: clientRect.top - yOffset,\n width: clientRect.width\n });\n }\n }\n return selectionRects;\n};\n\n// src/react/hooks/useRefreshOnResize.ts\nimport React2 from \"react\";\n\n// src/react/hooks/useRequestReRender.ts\nimport React from \"react\";\nvar useRequestReRender = () => {\n const [, setUpdateCounter] = React.useState(0);\n const animationFrameRef = React.useRef(null);\n const requestReRender = React.useCallback((immediate = false) => {\n if (animationFrameRef.current && !immediate) {\n return;\n }\n if (!immediate) {\n animationFrameRef.current = requestAnimationFrame(() => {\n setUpdateCounter((state) => state + 1);\n animationFrameRef.current = null;\n });\n return;\n }\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n animationFrameRef.current = null;\n }\n setUpdateCounter((state) => state + 1);\n }, []);\n React.useEffect(() => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n animationFrameRef.current = null;\n }\n });\n React.useEffect(\n () => () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n },\n []\n );\n return requestReRender;\n};\n\n// src/react/hooks/useRefreshOnResize.ts\nvar useRefreshOnResize = ({\n containerRef,\n refreshOnResize,\n selectionRectCache\n}) => {\n const requestReRender = useRequestReRender();\n const refresh = React2.useCallback(\n (sync = false) => {\n selectionRectCache.current = /* @__PURE__ */ new WeakMap();\n requestReRender(sync);\n },\n [requestReRender, selectionRectCache]\n );\n React2.useEffect(() => {\n if (!refreshOnResize || !containerRef?.current) {\n return;\n }\n const resizeObserver = new ResizeObserver(() => refresh());\n resizeObserver.observe(containerRef.current);\n return () => resizeObserver.disconnect();\n }, [containerRef, refresh, refreshOnResize]);\n return {\n refresh\n };\n};\n\n// src/react/hooks/useCursorOverlay.ts\nvar FROZEN_EMPTY_ARRAY = Object.freeze(\n []\n);\nvar useCursorOverlay = ({\n minSelectionWidth = 1,\n refreshOnResize = true\n} = {}) => {\n const editor = useEditorRef2();\n const containerRef = useEditorContainerRef();\n const cursorStates = editor.useOption(\n CursorOverlayPlugin,\n \"cursors\"\n );\n const selectionRectCache = React3.useRef(\n /* @__PURE__ */ new WeakMap()\n );\n const [selectionRects, setSelectionRects] = React3.useState({});\n const updateSelectionRects = React3.useCallback(() => {\n if (!containerRef?.current) return;\n if (!cursorStates) return;\n let xOffset = 0;\n let yOffset = 0;\n if (containerRef) {\n const contentRect = containerRef.current.getBoundingClientRect();\n xOffset = contentRect.x;\n yOffset = contentRect.y;\n yOffset -= containerRef.current.scrollTop;\n }\n let selectionRectsChanged = Object.keys(selectionRects).length !== Object.keys(cursorStates).length;\n const getCachedSelectionRects = ({\n cursor\n }) => {\n const range = cursor.selection;\n if (!range) {\n return FROZEN_EMPTY_ARRAY;\n }\n const cached = selectionRectCache.current.get(range);\n if (cached) {\n return cached;\n }\n const rects = getSelectionRects(editor, { range, xOffset, yOffset }).map(\n (rect) => {\n if (rect.width < minSelectionWidth) {\n return {\n ...rect,\n // Adjust left position to account for minimum width\n left: rect.left - (minSelectionWidth - rect.width) / 2,\n width: minSelectionWidth\n };\n }\n return rect;\n }\n );\n selectionRectsChanged = true;\n selectionRectCache.current.set(range, rects);\n return rects;\n };\n const updated = Object.fromEntries(\n Object.entries(cursorStates).map(([key, cursor]) => [\n key,\n getCachedSelectionRects({\n cursor\n })\n ])\n );\n if (selectionRectsChanged) {\n setSelectionRects(updated);\n }\n }, [containerRef, cursorStates, editor, selectionRects, minSelectionWidth]);\n useIsomorphicLayoutEffect(() => {\n updateSelectionRects();\n });\n const cursors = React3.useMemo(\n () => getCursorOverlayState({\n cursors: cursorStates,\n selectionRects\n }),\n [cursorStates, selectionRects]\n );\n const { refresh } = useRefreshOnResize({\n containerRef,\n refreshOnResize,\n selectionRectCache\n });\n return { cursors, refresh };\n};\n\n// src/react/hooks/useIsSelecting.ts\nimport {\n useEditorPlugin as useEditorPlugin5,\n useEditorSelector\n} from \"@udecode/plate/react\";\nvar isSelectingOrFocused = (editor) => {\n return isSelecting(editor) || editor.api.isFocused();\n};\nvar useIsSelecting = () => {\n const isSelectingSome = useEditorPlugin5(BlockSelectionPlugin).useOption(\"isSelectingSome\");\n const selectionExpanded = useEditorSelector((editor) => {\n return editor.api.isExpanded();\n }, []);\n return selectionExpanded || isSelectingSome;\n};\n\n// src/react/hooks/useSelectionArea.ts\nimport React4 from \"react\";\nimport { useEditorPlugin as useEditorPlugin6 } from \"@udecode/plate/react\";\n\n// src/internal/EventEmitter.ts\nvar EventTarget = class {\n _listeners = /* @__PURE__ */ new Map();\n // eslint-disable-next-line @typescript-eslint/unbound-method\n emit = this.dispatchEvent;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n off = this.removeEventListener;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n on = this.addEventListener;\n addEventListener(event, cb) {\n const set = this._listeners.get(event) ?? /* @__PURE__ */ new Set();\n this._listeners.set(event, set);\n set.add(cb);\n return this;\n }\n // Let's also support on, off and emit like node\n dispatchEvent(event, ...data) {\n let ok = true;\n for (const cb of this._listeners.get(event) ?? []) {\n ok = cb(...data) !== false && ok;\n }\n return ok;\n }\n removeEventListener(event, cb) {\n this._listeners.get(event)?.delete(cb);\n return this;\n }\n unbindAllListeners() {\n this._listeners.clear();\n }\n};\n\n// src/internal/utils/css.ts\nvar unitify = (val, unit = \"px\") => {\n return typeof val === \"number\" ? val + unit : val;\n};\nfunction css({ style }, attr, val) {\n if (typeof attr === \"object\") {\n for (const [key, value] of Object.entries(attr)) {\n value !== void 0 && (style[key] = unitify(value));\n }\n } else if (val !== void 0) {\n style[attr] = unitify(val);\n }\n}\n\n// src/internal/utils/events.ts\nvar eventListener = (method) => (items, events, fn, options = {}) => {\n if (items instanceof HTMLCollection || items instanceof NodeList) {\n items = Array.from(items);\n } else if (!Array.isArray(items)) {\n items = [items];\n }\n if (!Array.isArray(events)) {\n events = [events];\n }\n for (const el of items) {\n if (el) {\n for (const ev of events) {\n el[method](ev, fn, { capture: false, ...options });\n }\n }\n }\n return [items, events, fn, options];\n};\nvar on = eventListener(\"addEventListener\");\nvar off = eventListener(\"removeEventListener\");\nvar simplifyEvent = (evt) => {\n const { clientX, clientY, target } = evt.touches?.[0] ?? evt;\n return { target, x: clientX, y: clientY };\n};\n\n// src/internal/utils/intersects.ts\nfunction intersectsScroll(a, b, _ = \"touch\", container) {\n const containerRect = container.getBoundingClientRect();\n const scrollLeft = container.scrollLeft;\n const scrollTop = container.scrollTop;\n return a.right >= b.left - containerRect.left && a.left + containerRect.left <= b.right + scrollLeft && // 94 is container to top\n a.bottom - scrollTop >= b.top - containerRect.top && a.top <= b.bottom - containerRect.top + scrollTop;\n}\n\n// src/internal/utils/selectAll.ts\nfunction selectAll(selector, doc = document) {\n const list = Array.isArray(selector) ? selector : [selector];\n let nodes = [];\n for (let i = 0, l = list.length; i < l; i++) {\n const item = list[i];\n if (typeof item === \"string\") {\n nodes = nodes.concat(Array.from(doc.querySelectorAll(item)));\n } else if (item instanceof Element) {\n nodes.push(item);\n }\n }\n return nodes;\n}\n\n// src/internal/utils/constants.ts\nvar isTouchDevice = () => matchMedia(\"(hover: none), (pointer: coarse)\").matches;\nvar isSafariBrowser = () => \"safari\" in window;\n\n// src/internal/utils/frames.ts\nvar frames = (fn) => {\n let previousArgs;\n let frameId = -1;\n let lock = false;\n return {\n cancel() {\n cancelAnimationFrame(frameId);\n lock = false;\n },\n next(...args) {\n previousArgs = args;\n if (!lock) {\n lock = true;\n frameId = requestAnimationFrame(() => {\n fn(...previousArgs);\n lock = false;\n });\n }\n }\n };\n};\n\n// src/internal/utils/shouldTrigger.ts\nfunction shouldTrigger(event, triggers) {\n for (const trigger of triggers) {\n if (typeof trigger === \"number\") {\n return event.button === trigger;\n }\n if (typeof trigger === \"object\") {\n const reqButtonIsPressed = trigger.button === event.button;\n const allReqModifiersArePressed = trigger.modifiers.every((modifier) => {\n switch (modifier) {\n case \"alt\": {\n return event.altKey;\n }\n case \"ctrl\": {\n return event.ctrlKey || event.metaKey;\n }\n case \"shift\": {\n return event.shiftKey;\n }\n }\n });\n return reqButtonIsPressed && allReqModifiersArePressed;\n }\n }\n return false;\n}\n\n// src/internal/SelectionArea.ts\nvar { abs, ceil, max, min } = Math;\nvar SelectionArea = class extends EventTarget {\n // Area element and clipping element\n _area;\n _areaClientLocation = { x1: 0, x2: 0, y1: 0, y2: 0 };\n // Dynamically constructed area rect\n _areaLocation = { x1: 0, x2: 0, y1: 0, y2: 0 };\n // Caches the position of the selection-area\n _areaRect = new DOMRect();\n _container;\n _containerRect;\n _frame;\n _initScrollDelta = { x: 0, y: 0 };\n _latestElement;\n // Options\n _options;\n // Is getting set on movement.\n _scrollAvailable = true;\n // The scroll distance of scrollElement (body or html) relative to the initial scroll position\n _scrollDelta = { x: 0, y: 0 };\n _scrollSpeed = { x: 0, y: 0 };\n // If a single click is being performed.\n _scrollingActive = false;\n _selectables = [];\n // Selection store\n _selection = {\n changed: {\n added: [],\n // Added elements since last selection\n removed: []\n // Removed elements since last selection\n },\n selected: [],\n stored: [],\n touched: []\n };\n // It's a single-click until the user dragged the mouse.\n _singleClick = true;\n wheelTimer = null;\n disable = this._bindStartEvents.bind(this, false);\n enable = this._bindStartEvents;\n constructor(opt) {\n super();\n this._options = {\n boundaries: [\"html\"],\n container: \"body\",\n document: window.document,\n selectables: [],\n selectionAreaClass: \"selection-area\",\n startAreas: [\"html\"],\n ...opt,\n behaviour: {\n // TODO: not implemented\n intersect: \"touch\",\n overlap: \"invert\",\n triggers: [0],\n ...opt.behaviour,\n scrolling: {\n manualSpeed: 750,\n speedDivider: 0.7,\n ...opt.behaviour?.scrolling,\n startScrollMargins: {\n x: 20,\n y: 40,\n ...opt.behaviour?.scrolling?.startScrollMargins\n }\n },\n startThreshold: opt.behaviour?.startThreshold ? typeof opt.behaviour.startThreshold === \"number\" ? opt.behaviour.startThreshold : { x: 4, y: 4, ...opt.behaviour.startThreshold } : { x: 4, y: 4 }\n },\n features: {\n range: true,\n touch: true,\n ...opt.features,\n singleTap: {\n allow: true,\n intersect: \"native\",\n ...opt.features?.singleTap\n }\n }\n };\n for (const key of Object.getOwnPropertyNames(Object.getPrototypeOf(this))) {\n if (typeof this[key] === \"function\") {\n this[key] = this[key].bind(this);\n }\n }\n const { document: document2, selectionAreaClass } = this._options;\n this._area = document2.createElement(\"div\");\n this._area.classList.add(selectionAreaClass);\n css(this._area, {\n left: 0,\n position: \"absolute\",\n top: 0,\n willChange: \"top, left, bottom, right, width, height\"\n });\n this._frame = frames((evt) => {\n this._recalculateSelectionAreaRect();\n this._updateElementSelection();\n this._emitEvent(\"move\", evt);\n this._redrawSelectionArea();\n });\n this.enable();\n }\n _bindStartEvents(activate = true) {\n const { document: document2, features } = this._options;\n const fn = activate ? on : off;\n fn(document2, \"mousedown\", this._onTapStart);\n features.touch && fn(document2, \"touchstart\", this._onTapStart, {\n passive: false\n });\n }\n _delayedTapMove(evt) {\n const {\n behaviour: { startThreshold },\n document: document2\n } = this._options;\n const { x1, y1 } = this._areaLocation;\n const { x1: clientX, y1: clientY } = this._areaClientLocation;\n const { x, y } = simplifyEvent(evt);\n if (\n // Single number for both coordinates\n typeof startThreshold === \"number\" && abs(x + y - (clientX + clientY)) >= startThreshold || // Different x and y threshold\n typeof startThreshold === \"object\" && abs(x - x1) >= startThreshold.x || abs(y - y1) >= startThreshold.y\n ) {\n off(document2, [\"mousemove\", \"touchmove\"], this._delayedTapMove, {\n passive: false\n });\n if (this._emitEvent(\"beforedrag\", evt) === false) {\n off(document2, [\"mouseup\", \"touchcancel\", \"touchend\"], this._onTapStop);\n return;\n }\n on(document2, [\"mousemove\", \"touchmove\"], this._onTapMove, {\n passive: false\n });\n css(this._area, \"display\", \"block\");\n this._container.append(this._area);\n this.resolveSelectables();\n this._singleClick = false;\n on(this._container, \"wheel\", this._manualScroll, { passive: true });\n this._setupSelectionArea();\n this._emitEvent(\"start\", evt);\n this._onTapMove(evt);\n }\n this._handleMoveEvent(evt);\n }\n _emitEvent(name, evt) {\n return this.emit(name, {\n event: evt,\n selection: this,\n store: this._selection\n });\n }\n _handleMoveEvent(evt) {\n const { features } = this._options;\n if (features.touch && isTouchDevice() || this._scrollAvailable && isSafariBrowser()) {\n evt.preventDefault();\n }\n }\n _keepSelection() {\n const { _options, _selection } = this;\n const { changed, selected, stored, touched } = _selection;\n const addedElements = selected.filter((el) => !stored.includes(el));\n switch (_options.behaviour.overlap) {\n case \"drop\": {\n _selection.stored = [\n ...addedElements,\n ...stored.filter((el) => !touched.includes(el))\n // Elements not touched\n ];\n break;\n }\n case \"invert\": {\n _selection.stored = [\n ...addedElements,\n ...stored.filter((el) => !changed.removed.includes(el))\n // Elements not removed from selection\n ];\n break;\n }\n case \"keep\": {\n _selection.stored = [\n ...stored,\n ...selected.filter((el) => !stored.includes(el))\n // Newly added\n ];\n break;\n }\n }\n }\n _manualScroll(evt) {\n this.wheelTimer && clearTimeout(this.wheelTimer);\n const { x, y } = simplifyEvent(evt);\n this.wheelTimer = setTimeout(() => {\n this._areaClientLocation.x2 = x;\n this._areaClientLocation.y2 = y;\n const Ry = y - this._containerRect.top;\n const Rx = x - this._containerRect.left;\n this._areaLocation.x2 = Rx + this._container.scrollLeft;\n this._areaLocation.y2 = Ry + this._container.scrollTop;\n this._frame.next(null);\n }, 100);\n }\n _onScroll(evt) {\n const { document: document2 } = this._options;\n this.wheelTimer && clearTimeout(this.wheelTimer);\n const { x, y } = simplifyEvent(evt);\n this.wheelTimer = setTimeout(() => {\n this._areaClientLocation.x2 = x;\n this._areaClientLocation.y2 = y;\n const deltaY = y - this._containerRect.top + this._container.scrollTop + document2.scrollingElement.scrollTop - this._initScrollDelta.y;\n const deltaX = x - this._containerRect.left + this._container.scrollLeft + document2.scrollingElement.scrollLeft;\n this._scrollDelta.y = document2.scrollingElement.scrollTop - this._initScrollDelta.y;\n this._scrollDelta.x = document2.scrollingElement.scrollLeft - this._initScrollDelta.x;\n this._areaLocation.y2 = deltaY;\n this._areaLocation.x2 = deltaX;\n this._frame.next(null);\n }, 100);\n }\n _onSingleTap(evt) {\n const {\n range,\n singleTap: { intersect }\n } = this._options.features;\n const e = simplifyEvent(evt);\n let target;\n if (intersect === \"native\") {\n target = e.target;\n } else if (intersect === \"touch\") {\n this.resolveSelectables();\n const { x, y } = e;\n target = this._selectables.find((v) => {\n const { bottom, left, right, top } = v.getBoundingClientRect();\n return x < right && x > left && y < bottom && y > top;\n });\n }\n if (!target) {\n return;\n }\n this.resolveSelectables();\n while (!this._selectables.includes(target)) {\n if (!target.parentElement) {\n return;\n }\n target = target.parentElement;\n }\n const { stored } = this._selection;\n this._emitEvent(\"start\", evt);\n if (evt.shiftKey && range && this._latestElement) {\n const reference = this._latestElement;\n const [preceding, following] = reference.compareDocumentPosition(target) & 4 ? [target, reference] : [reference, target];\n const rangeItems = [\n ...this._selectables.filter(\n (el) => el.compareDocumentPosition(preceding) & 4 && el.compareDocumentPosition(following) & 2\n ),\n preceding,\n following\n ];\n this.select(rangeItems);\n this._latestElement = reference;\n } else if (stored.includes(target) && (stored.length === 1 || evt.ctrlKey || stored.every((v) => this._selection.stored.includes(v)))) {\n this.deselect(target);\n } else {\n this.select(target);\n this._latestElement = target;\n }\n }\n _onTapMove(evt) {\n const { x, y } = simplifyEvent(evt);\n const {\n _areaClientLocation,\n _areaLocation,\n _frame,\n _options,\n _scrollSpeed\n } = this;\n const { speedDivider } = _options.behaviour.scrolling;\n const Ry = y - this._containerRect.top;\n const Rx = x - this._containerRect.left;\n if (this._scrollAvailable && !this._scrollingActive && (_scrollSpeed.y || _scrollSpeed.x)) {\n this._scrollingActive = true;\n const scroll = () => {\n if (!_scrollSpeed.x && !_scrollSpeed.y) {\n this._scrollingActive = false;\n return;\n }\n if (_scrollSpeed.y) {\n this._container.scrollTop += ceil(_scrollSpeed.y / speedDivider);\n _areaLocation.y2 = Ry;\n }\n if (_scrollSpeed.x) {\n this._container.scrollLeft += ceil(_scrollSpeed.x / speedDivider);\n _areaLocation.x2 = Rx;\n }\n _frame.next(evt);\n requestAnimationFrame(scroll);\n };\n requestAnimationFrame(scroll);\n } else {\n _areaLocation.x2 = Rx + this._container.scrollLeft + this._scrollDelta.x;\n _areaLocation.y2 = Ry + this._container.scrollTop + this._scrollDelta.y;\n _areaClientLocation.x2 = x;\n _areaClientLocation.y2 = y;\n _frame.next(evt);\n }\n this._handleMoveEvent(evt);\n }\n _onTapStart(evt, silent = false) {\n const { container, document: document2 } = this._options;\n const { target, x, y } = simplifyEvent(evt);\n this._container = selectAll(container, document2)[0];\n if (!this._container) return;\n if (this._container.contains(target) && target.dataset.slateEditor !== \"true\" && target.dataset.plateSelectable !== \"true\")\n return;\n this._containerRect = this._container.getBoundingClientRect();\n const Rx = x - this._containerRect.left + this._container.scrollLeft;\n const Ry = y - this._containerRect.top + this._container.scrollTop;\n const { _options } = this;\n if (evt instanceof MouseEvent && !shouldTrigger(evt, _options.behaviour.triggers)) {\n return;\n }\n const startAreas = selectAll(_options.startAreas, _options.document);\n const resolvedBoundaries = selectAll(\n _options.boundaries,\n _options.document\n );\n const evtPath = evt.composedPath();\n if (!this._container || // eslint-disable-next-line unicorn/prefer-array-some\n !startAreas.find((el) => evtPath.includes(el)) || // eslint-disable-next-line unicorn/prefer-array-some\n !resolvedBoundaries.find((el) => evtPath.includes(el))) {\n return;\n }\n if (!silent && this._emitEvent(\"beforestart\", evt) === false) {\n return;\n }\n this._areaLocation = { x1: Rx, x2: 0, y1: Ry, y2: 0 };\n this._areaClientLocation = { x1: x, x2: 0, y1: y, y2: 0 };\n const scrollElement = document2.scrollingElement ?? document2.body;\n this._initScrollDelta = {\n x: scrollElement.scrollLeft,\n y: scrollElement.scrollTop\n };\n this._singleClick = true;\n this.clearSelection(false, true);\n on(document2, [\"touchmove\", \"mousemove\"], this._delayedTapMove, {\n passive: false\n });\n on(document2, [\"mouseup\", \"touchcancel\", \"touchend\"], this._onTapStop);\n on(document2, \"wheel\", this._onScroll, { passive: false });\n }\n _onTapStop(evt, silent) {\n const { document: document2, features } = this._options;\n const { _singleClick } = this;\n off(document2, [\"mousemove\", \"touchmove\"], this._delayedTapMove);\n off(document2, [\"touchmove\", \"mousemove\"], this._onTapMove);\n off(document2, [\"mouseup\", \"touchcancel\", \"touchend\"], this._onTapStop);\n off(document2, \"wheel\", this._onScroll);\n this._keepSelection();\n if (evt && _singleClick && features.singleTap.allow) {\n this._onSingleTap(evt);\n } else if (!_singleClick && !silent) {\n this._updateElementSelection();\n this._emitEvent(\"stop\", evt);\n }\n this._scrollSpeed.x = 0;\n this._scrollSpeed.y = 0;\n this._scrollDelta.x = 0;\n this._scrollDelta.y = 0;\n off(this._container, \"wheel\", this._manualScroll, { passive: true });\n this._area.remove();\n this._frame?.cancel();\n css(this._area, \"display\", \"none\");\n }\n _recalculateSelectionAreaRect() {\n const {\n _areaClientLocation,\n _areaLocation,\n _areaRect,\n _container,\n _containerRect,\n _scrollSpeed\n } = this;\n const {\n clientHeight,\n clientWidth,\n scrollHeight,\n scrollLeft,\n scrollTop,\n scrollWidth\n } = _container;\n const { x1, y1 } = _areaLocation;\n let { x2, y2 } = _areaLocation;\n const {\n behaviour: {\n scrolling: { startScrollMargins }\n }\n } = this._options;\n if (_areaClientLocation.x2 + this._scrollDelta.x < _containerRect.left + startScrollMargins.x) {\n _scrollSpeed.x = scrollLeft ? -abs(\n _containerRect.left - _areaClientLocation.x2 - this._scrollDelta.x\n ) : 0;\n x2 = max(x2, this._container.scrollLeft);\n } else if (_areaClientLocation.x2 + this._scrollDelta.x > _containerRect.right - startScrollMargins.x) {\n _scrollSpeed.x = scrollWidth - scrollLeft - clientWidth ? abs(\n _containerRect.left + this._container.clientWidth - _areaClientLocation.x2 - this._scrollDelta.x\n ) : 0;\n x2 = clientWidth + scrollLeft;\n } else {\n _scrollSpeed.x = 0;\n }\n if (_areaClientLocation.y2 + this._scrollDelta.y < _containerRect.top + startScrollMargins.y) {\n _scrollSpeed.y = scrollTop ? -abs(\n _containerRect.top - _areaClientLocation.y2 - this._scrollDelta.y + startScrollMargins.y\n ) : 0;\n y2 = max(y2, this._container.scrollTop);\n } else if (_areaClientLocation.y2 + this._scrollDelta.y > _containerRect.bottom - startScrollMargins.y) {\n _scrollSpeed.y = scrollHeight - scrollTop - clientHeight ? abs(\n _areaClientLocation.y2 + this._scrollDelta.y - (_containerRect.top + this._container.clientHeight - startScrollMargins.y)\n ) : 0;\n y2 = clientHeight + scrollTop;\n } else {\n _scrollSpeed.y = 0;\n }\n const x3 = min(x1, x2);\n const y3 = min(y1, y2);\n const x4 = max(x1, x2);\n const y4 = max(y1, y2);\n _areaRect.x = x3;\n _areaRect.y = y3;\n _areaRect.width = x4 - x3;\n _areaRect.height = y4 - y3;\n }\n _redrawSelectionArea() {\n const { height, width, x, y } = this._areaRect;\n const { style } = this._area;\n style.left = `${x}px`;\n style.top = `${y}px`;\n style.width = `${width}px`;\n style.height = `${height}px`;\n }\n _setupSelectionArea() {\n }\n _updateElementSelection() {\n const { _areaRect, _options, _selectables, _selection } = this;\n const { selected, stored, touched } = _selection;\n const { intersect, overlap } = _options.behaviour;\n const invert = overlap === \"invert\";\n const newlyTouched = [];\n const added = [];\n const removed = [];\n for (let i = 0; i < _selectables.length; i++) {\n const node = _selectables[i];\n if (intersectsScroll(\n _areaRect,\n node.getBoundingClientRect(),\n intersect,\n this._container\n )) {\n if (!selected.includes(node)) {\n if (invert && stored.includes(node)) {\n removed.push(node);\n continue;\n } else {\n added.push(node);\n }\n } else if (stored.includes(node) && !touched.includes(node)) {\n touched.push(node);\n }\n newlyTouched.push(node);\n }\n }\n if (invert) {\n added.push(...stored.filter((v) => !selected.includes(v)));\n }\n const keep = overlap === \"keep\";\n for (let i = 0; i < selected.length; i++) {\n const node = selected[i];\n if (!newlyTouched.includes(node) && !// Check if user wants to keep previously selected elements, e.g.\n // not make them part of the current selection as soon as they're touched.\n (keep && stored.includes(node))) {\n removed.push(node);\n }\n }\n _selection.selected = newlyTouched;\n _selection.changed = { added, removed };\n this._latestElement = void 0;\n }\n /**\n * Cancel the current selection process.\n *\n * @param keepEvent {boolean} true to fire a stop event after cancel.\n */\n cancel(keepEvent = false) {\n this._onTapStop(null, !keepEvent);\n }\n /**\n * Same as deselect, but for all elements currently selected.\n *\n * @param includeStored If the store should also get cleared\n * @param quiet If move / stop events should be fired\n */\n clearSelection(includeStored = true, quiet = false) {\n const { changed, selected, stored } = this._selection;\n changed.added = [];\n changed.removed.push(...selected, ...includeStored ? stored : []);\n if (!quiet) {\n this._emitEvent(\"move\", null);\n this._emitEvent(\"stop\", null);\n }\n this._selection = {\n changed: { added: [], removed: [] },\n selected: [],\n stored: includeStored ? [] : stored,\n touched: []\n };\n }\n /**\n * Removes a particular element from the selection.\n *\n * @param query - CSS Query, can be an array of queries\n * @param quiet - If this should not trigger the move event\n */\n deselect(query, quiet = false) {\n const { changed, selected, stored } = this._selection;\n const elements = selectAll(query, this._options.document).filter(\n (el) => selected.includes(el) || stored.includes(el)\n );\n if (elements.length === 0) {\n return;\n }\n this._selection.stored = stored.filter((el) => !elements.includes(el));\n this._selection.selected = selected.filter((el) => !elements.includes(el));\n this._selection.changed.added = [];\n this._selection.changed.removed.push(\n ...elements.filter((el) => !changed.removed.includes(el))\n );\n this._latestElement = void 0;\n if (!quiet) {\n this._emitEvent(\"move\", null);\n this._emitEvent(\"stop\", null);\n }\n }\n /** Unbinds all events and removes the area-element. */\n destroy() {\n this.cancel();\n this.disable();\n super.unbindAllListeners();\n }\n /** @returns {Array} Selected elements */\n getSelection() {\n return this._selection.stored;\n }\n /** @returns {HTMLElement} The selection area element */\n getSelectionArea() {\n return this._area;\n }\n /**\n * Can be used if during a selection elements have been added. Will update\n * everything which can be selected.\n */\n resolveSelectables() {\n this._selectables = selectAll(\n this._options.selectables,\n this._options.document\n );\n }\n /**\n * Adds elements to the selection\n *\n * @param query - CSS Query, can be an array of queries\n * @param quiet - If this should not trigger the move event\n */\n select(query, quiet = false) {\n const { changed, selected, stored } = this._selection;\n const elements = selectAll(query, this._options.document).filter(\n (el) => !selected.includes(el) && !stored.includes(el)\n );\n stored.push(...elements);\n selected.push(...elements);\n changed.added.push(...elements);\n changed.removed = [];\n this._latestElement = void 0;\n if (!quiet) {\n this._emitEvent(\"move\", null);\n this._emitEvent(\"stop\", null);\n }\n return elements;\n }\n /**\n * Manually triggers the start of a selection\n *\n * @param evt A MouseEvent / TouchEvent -like object\n * @param silent If beforestart should be fired,\n */\n trigger(evt, silent = true) {\n this._onTapStart(evt, silent);\n }\n};\n\n// src/react/hooks/useSelectionArea.ts\nvar useSelectionArea = () => {\n const { api, editor, getOptions, setOption } = useEditorPlugin6(BlockSelectionPlugin);\n const { areaOptions } = getOptions();\n React4.useEffect(() => {\n const selection = new SelectionArea({\n boundaries: `#${editor.uid}`,\n container: `#${editor.uid}`,\n document: window.document,\n selectables: `#${editor.uid} .slate-selectable`,\n selectionAreaClass: \"slate-selection-area\",\n ...areaOptions\n }).on(\"beforestart\", () => {\n setOption(\"isSelecting\", false);\n }).on(\"start\", ({ event }) => {\n setOption(\"isSelectionAreaVisible\", true);\n editor.tf.deselect();\n if (!event?.shiftKey) {\n selection.clearSelection();\n api.blockSelection.resetSelectedIds();\n }\n }).on(\"move\", ({ store: { changed } }) => {\n if (!getOptions().isSelectionAreaVisible) {\n setOption(\"isSelectionAreaVisible\", true);\n }\n if (changed.added.length === 0 && changed.removed.length === 0) return;\n api.blockSelection.setSelectedIds(changed);\n }).on(\"stop\", () => {\n setOption(\"isSelectionAreaVisible\", false);\n });\n return () => selection.destroy();\n }, []);\n};\n\n// src/react/utils/copySelectedBlocks.ts\nimport copyToClipboard from \"copy-to-clipboard\";\nvar copySelectedBlocks = (editor) => {\n const { selectedIds } = editor.getOptions(BlockSelectionPlugin);\n const selectedEntries = editor.getApi(BlockSelectionPlugin).blockSelection.getNodes();\n const selectedFragment = selectedEntries.map(([node]) => node);\n copyToClipboard(\" \", {\n onCopy: (dataTransfer) => {\n const data = dataTransfer;\n if (!data) return;\n let textPlain = \"\";\n const div = document.createElement(\"div\");\n editor.tf.withoutNormalizing(() => {\n selectedEntries.forEach(([, path]) => {\n editor.tf.select({\n anchor: editor.api.start(path),\n focus: editor.api.end(path)\n });\n editor.tf.setFragmentData(data);\n textPlain += `${data.getData(\"text/plain\")}\n`;\n const divChild = document.createElement(\"div\");\n divChild.innerHTML = data.getData(\"text/html\");\n div.append(divChild);\n });\n editor.tf.deselect();\n editor.setOption(BlockSelectionPlugin, \"selectedIds\", selectedIds);\n });\n data.setData(\"text/plain\", textPlain);\n data.setData(\"text/html\", div.innerHTML);\n const selectedFragmentStr = JSON.stringify(selectedFragment);\n const encodedFragment = window.btoa(\n encodeURIComponent(selectedFragmentStr)\n );\n data.setData(\"application/x-slate-fragment\", encodedFragment);\n }\n });\n};\n\n// src/react/utils/pasteSelectedBlocks.ts\nimport { PathApi as PathApi3, getEditorPlugin as getEditorPlugin2 } from \"@udecode/plate\";\n\n// src/react/utils/selectInsertedBlocks.ts\nimport { getEditorPlugin } from \"@udecode/plate\";\nvar selectInsertedBlocks = (editor) => {\n const { setOption } = getEditorPlugin(editor, BlockSelectionPlugin);\n const ids = /* @__PURE__ */ new Set();\n editor.operations.forEach((op) => {\n if (op.type === \"insert_node\" && op.node.id && editor.api.isBlock(op.node)) {\n ids.add(op.node.id);\n }\n });\n setTimeout(() => {\n setOption(\"selectedIds\", ids);\n }, 0);\n};\n\n// src/react/utils/pasteSelectedBlocks.ts\nvar pasteSelectedBlocks = (editor, e) => {\n const { api } = getEditorPlugin2(editor, BlockSelectionPlugin);\n const entries = api.blockSelection.getNodes();\n if (entries.length > 0) {\n const entry = entries.at(-1);\n const [node, path] = entry;\n editor.tf.focus({ at: path, edge: \"start\" });\n if (!editor.api.isEmpty(node)) {\n const at = PathApi3.next(path);\n editor.tf.insertNodes(editor.api.create.block({}, at), {\n at,\n select: true\n });\n }\n editor.tf.insertData(e.clipboardData);\n editor.tf.deselect();\n selectInsertedBlocks(editor);\n }\n};\n\n// src/react/components/BlockSelectionAfterEditable.tsx\nvar BlockSelectionAfterEditable = () => {\n const editor = useEditorRef3();\n const { api, getOption, getOptions, setOption, useOption } = useEditorPlugin7({ key: \"blockSelection\" });\n const isSelecting2 = useOption(\"isSelecting\");\n const selectedIds = useOption(\"selectedIds\");\n useSelectionArea();\n const inputRef = React5.useRef(null);\n const [isMounted, setIsMounted] = React5.useState(false);\n React5.useEffect(() => {\n setIsMounted(true);\n setOption(\"shadowInputRef\", inputRef);\n return () => {\n setIsMounted(false);\n };\n }, [setOption]);\n React5.useEffect(() => {\n if (!isSelecting2) {\n setOption(\"anchorId\", null);\n }\n }, [isSelecting2, setOption]);\n React5.useEffect(() => {\n if (isSelecting2 && inputRef.current) {\n inputRef.current.focus({ preventScroll: true });\n } else if (inputRef.current) {\n inputRef.current.blur();\n }\n }, [isSelecting2]);\n const handleKeyDown = React5.useCallback(\n (e) => {\n const isReadonly = editor.api.isReadOnly();\n getOptions().onKeyDownSelecting?.(e.nativeEvent);\n if (!getOptions().isSelecting) return;\n if (isHotkey(\"shift+up\")(e)) {\n e.preventDefault();\n e.stopPropagation();\n api.blockSelection.shiftSelection(\"up\");\n return;\n }\n if (isHotkey(\"shift+down\")(e)) {\n e.preventDefault();\n e.stopPropagation();\n api.blockSelection.shiftSelection(\"down\");\n return;\n }\n if (isHotkey(\"escape\")(e)) {\n api.blockSelection.unselect();\n return;\n }\n if (isHotkey(\"mod+z\")(e)) {\n editor.undo();\n selectInsertedBlocks(editor);\n return;\n }\n if (isHotkey(\"mod+shift+z\")(e)) {\n editor.redo();\n selectInsertedBlocks(editor);\n return;\n }\n if (!getOption(\"isSelectingSome\")) return;\n if (isHotkey(\"enter\")(e)) {\n const entry = editor.api.node({\n at: [],\n block: true,\n match: (n) => !!n.id && selectedIds?.has(n.id)\n });\n if (entry) {\n const [, path] = entry;\n editor.tf.focus({ at: path, edge: \"end\" });\n e.preventDefault();\n }\n return;\n }\n if (isHotkey([\"backspace\", \"delete\"])(e) && !isReadonly) {\n e.preventDefault();\n editor.tf.withoutNormalizing(() => {\n editor.tf.removeNodes({\n at: [],\n block: true,\n match: (n) => !!n.id && selectedIds?.has(n.id)\n });\n if (editor.children.length === 0) {\n editor.tf.focus();\n }\n });\n return;\n }\n if (isHotkey(\"up\")(e)) {\n e.preventDefault();\n e.stopPropagation();\n api.blockSelection.moveSelection(\"up\");\n return;\n }\n if (isHotkey(\"down\")(e)) {\n e.preventDefault();\n e.stopPropagation();\n api.blockSelection.moveSelection(\"down\");\n return;\n }\n },\n [editor, selectedIds, api, getOptions, getOption]\n );\n const handleCopy = React5.useCallback(\n (e) => {\n e.preventDefault();\n if (getOption(\"isSelectingSome\")) {\n copySelectedBlocks(editor);\n }\n },\n [editor, getOption]\n );\n const handleCut = React5.useCallback(\n (e) => {\n e.preventDefault();\n if (getOption(\"isSelectingSome\")) {\n copySelectedBlocks(editor);\n if (!editor.api.isReadOnly()) {\n editor.tf.removeNodes({\n at: [],\n match: (n) => selectedIds?.has(n.id)\n });\n editor.tf.focus();\n }\n }\n },\n [editor, selectedIds, getOption]\n );\n const handlePaste = React5.useCallback(\n (e) => {\n e.preventDefault();\n if (!editor.api.isReadOnly()) {\n pasteSelectedBlocks(editor, e.nativeEvent);\n }\n },\n [editor]\n );\n if (!isMounted || typeof window === \"undefined\") {\n return null;\n }\n return ReactDOM.createPortal(\n /* @__PURE__ */ React5.createElement(\n \"input\",\n {\n ref: inputRef,\n className: \"slate-shadow-input\",\n style: {\n left: \"-300px\",\n opacity: 0,\n position: \"fixed\",\n top: \"-300px\",\n zIndex: 999\n },\n onCopy: handleCopy,\n onCut: handleCut,\n onKeyDown: handleKeyDown,\n onPaste: handlePaste\n }\n ),\n document.body\n );\n};\n\n// src/react/internal/transforms/moveSelection.ts\nimport { getEditorPlugin as getEditorPlugin3 } from \"@udecode/plate/react\";\nvar moveSelection = (editor, direction) => {\n const { api, setOption } = getEditorPlugin3(editor, BlockSelectionPlugin);\n const blocks = api.blockSelection.getNodes();\n if (blocks.length === 0) return;\n if (direction === \"up\") {\n const [, topPath] = blocks[0];\n const prevEntry = editor.api.previous({\n at: topPath,\n from: \"parent\",\n match: api.blockSelection.isSelectable\n });\n if (prevEntry) {\n const [prevNode] = prevEntry;\n setOption(\"anchorId\", prevNode.id);\n api.blockSelection.addSelectedRow(prevNode.id, { clear: true });\n }\n } else {\n const [, bottomPath] = blocks.at(-1);\n const nextEntry = editor.api.next({\n at: bottomPath,\n from: \"child\",\n match: api.blockSelection.isSelectable\n });\n if (nextEntry) {\n const [nextNode] = nextEntry;\n setOption(\"anchorId\", nextNode.id);\n api.blockSelection.addSelectedRow(nextNode.id, { clear: true });\n }\n }\n};\n\n// src/react/internal/transforms/shiftSelection.ts\nimport { PathApi as PathApi4 } from \"@udecode/plate\";\nimport { getEditorPlugin as getEditorPlugin4 } from \"@udecode/plate/react\";\nvar shiftSelection = (editor, direction) => {\n const { api, getOption, getOptions, setOption } = getEditorPlugin4(\n editor,\n BlockSelectionPlugin\n );\n const blocks = api.blockSelection.getNodes();\n if (blocks.length === 0) return;\n const [topNode, topPath] = blocks[0];\n const [bottomNode, bottomPath] = blocks.at(-1);\n let anchorId = getOptions().anchorId;\n if (!anchorId) {\n anchorId = direction === \"up\" ? bottomNode.id : topNode.id;\n setOption(\"anchorId\", anchorId);\n }\n const anchorIndex = blocks.findIndex(([node]) => node.id === anchorId);\n if (anchorIndex < 0) {\n setOption(\"anchorId\", bottomNode.id);\n return;\n }\n const anchorIsTop = anchorIndex === 0;\n const anchorIsBottom = anchorIndex === blocks.length - 1;\n const newSelected = new Set(getOption(\"selectedIds\"));\n if (direction === \"down\") {\n if (anchorIsTop) {\n const belowEntry = editor.api.next({\n at: bottomPath,\n match: (n, p) => api.blockSelection.isSelectable(n, p) && !PathApi4.isAncestor(p, bottomPath),\n mode: \"highest\"\n });\n if (!belowEntry) return;\n const [belowNode] = belowEntry;\n newSelected.add(belowNode.id);\n } else {\n if (topNode.id && topNode.id !== anchorId) {\n newSelected.delete(topNode.id);\n }\n }\n } else {\n if (anchorIsBottom) {\n const aboveEntry = editor.api.previous({\n at: topPath,\n from: \"parent\",\n match: api.blockSelection.isSelectable\n });\n if (!aboveEntry) return;\n const [aboveNode, abovePath] = aboveEntry;\n if (PathApi4.isAncestor(abovePath, topPath)) {\n newSelected.forEach((id) => {\n const entry = editor.api.node({ id, at: abovePath });\n if (!entry) return;\n if (PathApi4.isDescendant(entry[1], abovePath)) {\n newSelected.delete(id);\n if (id === anchorId) {\n anchorId = aboveNode.id;\n setOption(\"anchorId\", anchorId);\n }\n }\n });\n }\n newSelected.add(aboveNode.id);\n } else {\n if (bottomNode.id && bottomNode.id !== anchorId) {\n newSelected.delete(bottomNode.id);\n }\n }\n }\n newSelected.add(anchorId);\n setOption(\"selectedIds\", newSelected);\n};\n\n// src/react/onKeyDownSelection.ts\nimport { isHotkey as isHotkey2 } from \"@udecode/plate\";\nvar onKeyDownSelection = ({\n api,\n editor,\n event\n}) => {\n if (isHotkey2(\"mod+a\", event)) {\n if (event.defaultPrevented) return;\n const ancestorNode = editor.api.block({ highest: true });\n if (!ancestorNode) return;\n const [, path] = ancestorNode;\n if (editor.api.isAt({ block: true, end: true, start: true })) {\n return api.blockSelection.selectedAll();\n }\n if (!editor.api.isAt({ block: true })) {\n return api.blockSelection.selectedAll();\n }\n editor.tf.select(path);\n event.preventDefault();\n event.stopPropagation();\n }\n if (isHotkey2(\"escape\", event)) {\n if (event.defaultPrevented) return;\n const ancestorNode = editor.api.block({ highest: true });\n const id = ancestorNode?.[0].id;\n api.blockSelection.addSelectedRow(id);\n event.preventDefault();\n event.stopPropagation();\n }\n};\n\n// src/react/transforms/duplicateBlockSelectionNodes.ts\nimport { PathApi as PathApi5 } from \"@udecode/plate\";\nvar duplicateBlockSelectionNodes = (editor) => {\n const blocks = editor.getApi(BlockSelectionPlugin).blockSelection.getNodes();\n const lastBlock = blocks.at(-1);\n if (!lastBlock) return;\n editor.tf.duplicateNodes({ nodes: blocks });\n const path = PathApi5.next(lastBlock[1]);\n const ids = blocks.map((_, index) => {\n const targetPath = [path[0] + index];\n const targetNode = editor.api.node(targetPath);\n return targetNode?.[0].id;\n }).filter(Boolean);\n const api = editor.getApi(BlockSelectionPlugin);\n setTimeout(() => {\n api.blockSelection.setSelectedIds({ ids });\n }, 0);\n};\n\n// src/react/transforms/insertBlocksAndSelect.ts\nimport { NodeApi, PathApi as PathApi6 } from \"@udecode/plate\";\nvar insertBlocksAndSelect = (editor, nodes, { at }) => {\n editor.tf.insertNodes(nodes, { at });\n const insertedNodes = [NodeApi.get(editor, at)];\n let count = 1;\n while (count < nodes.length) {\n at = PathApi6.next(at);\n const nextNode = NodeApi.get(editor, at);\n insertedNodes.push(nextNode);\n count++;\n }\n setTimeout(() => {\n editor.getApi(BlockSelectionPlugin).blockSelection.setSelectedIds({\n ids: insertedNodes.map((n) => n.id)\n });\n }, 0);\n};\n\n// src/react/transforms/removeBlockSelectionNodes.ts\nvar removeBlockSelectionNodes = (editor) => {\n const selectedIds = editor.getOption(BlockSelectionPlugin, \"selectedIds\");\n if (!selectedIds) return;\n editor.tf.removeNodes({\n at: [],\n block: true,\n match: (n) => !!n.id && selectedIds.has(n.id)\n });\n};\n\n// src/react/transforms/selectBlockSelectionNodes.ts\nvar selectBlockSelectionNodes = (editor) => {\n editor.tf.select(\n editor.api.nodesRange(\n editor.getApi(BlockSelectionPlugin).blockSelection.getNodes()\n )\n );\n editor.getApi(BlockSelectionPlugin).blockSelection.resetSelectedIds();\n};\n\n// src/react/transforms/setBlockSelectionNodes.ts\nvar setBlockSelectionNodes = (editor, props, options) => {\n editor.tf.withoutNormalizing(() => {\n const blocks = editor.getApi(BlockSelectionPlugin).blockSelection.getNodes();\n blocks.forEach(([, path]) => {\n editor.tf.setNodes(props, {\n ...options,\n at: path\n });\n });\n });\n};\nvar setBlockSelectionIndent = (editor, indent, options) => {\n const api = editor.getApi(BlockSelectionPlugin);\n editor.tf.withoutNormalizing(() => {\n const blocks = api.blockSelection.getNodes();\n blocks.forEach(([node, path]) => {\n const prevIndent = node.indent ?? 0;\n const currentIndent = prevIndent + indent;\n editor.tf.setNodes(\n { indent: currentIndent < 0 ? 0 : currentIndent },\n {\n ...options,\n at: path\n }\n );\n });\n });\n};\nvar setBlockSelectionTexts = (editor, props, options) => {\n setBlockSelectionNodes(editor, props, {\n mode: \"lowest\",\n ...options\n });\n};\n\n// src/react/BlockSelectionPlugin.tsx\nvar BlockSelectionPlugin = createTPlatePlugin3({\n key: \"blockSelection\",\n inject: {\n isBlock: true,\n nodeProps: {\n transformProps: () => {\n return useBlockSelectable().props;\n }\n }\n },\n options: {\n anchorId: null,\n areaOptions: {\n features: {\n singleTap: {\n allow: false\n }\n }\n },\n enableContextMenu: false,\n isSelectable: () => true,\n isSelecting: false,\n isSelectionAreaVisible: false,\n selectedIds: /* @__PURE__ */ new Set(),\n shadowInputRef: { current: null }\n },\n plugins: [BlockMenuPlugin],\n render: {\n afterEditable: BlockSelectionAfterEditable\n },\n handlers: {\n onKeyDown: onKeyDownSelection,\n onMouseDown: ({ api, editor, event, getOptions }) => {\n const target = event.target;\n if (target.dataset.platePreventUnselect) return;\n if (event.button === 0 && getOptions().selectedIds.size > 0 && !editor.getOption(BlockMenuPlugin, \"openId\")) {\n api.blockSelection.unselect();\n }\n }\n }\n}).extend(() => ({\n inject: {}\n})).extendOptions(({ getOptions }) => ({\n isSelected: (id) => !!id && getOptions().selectedIds.has(id),\n isSelectingSome: () => getOptions().selectedIds.size > 0\n})).extendApi(\n ({ editor, getOption, getOptions, setOption }) => ({\n focus: () => {\n const shadowInputRef = getOption(\"shadowInputRef\");\n if (shadowInputRef?.current) {\n shadowInputRef.current.focus({ preventScroll: true });\n }\n },\n getNodes: () => {\n const selectedIds = getOption(\"selectedIds\");\n return editor.api.blocks({\n at: [],\n match: (n) => !!n.id && selectedIds?.has(n.id)\n });\n },\n isSelectable: (element, path) => !!element.id && editor.api.isBlock(element) && getOptions().isSelectable(element, path),\n moveSelection: bindFirst(moveSelection, editor),\n resetSelectedIds: () => {\n setOption(\"selectedIds\", /* @__PURE__ */ new Set());\n },\n setSelectedIds: ({ added, ids, removed }) => {\n if (ids) {\n setOption(\"selectedIds\", new Set(ids));\n }\n if (added || removed) {\n const { selectedIds: prev } = getOptions();\n const next = new Set(prev);\n if (added) {\n extractSelectableIds(added).forEach((id) => id && next.add(id));\n }\n if (removed) {\n extractSelectableIds(removed).forEach(\n (id) => id && next.delete(id)\n );\n }\n setOption(\"selectedIds\", next);\n }\n setOption(\"isSelecting\", true);\n },\n shiftSelection: bindFirst(shiftSelection, editor),\n unselect: () => {\n setOption(\"selectedIds\", /* @__PURE__ */ new Set());\n setOption(\"isSelecting\", false);\n }\n })\n).extendApi(({ api, getOptions, setOption }) => ({\n addSelectedRow: (id, options = {}) => {\n const { clear = true, delay } = options;\n const element = querySelectorSelectable(id);\n if (!element) return;\n if (!getOptions().selectedIds.has(id) && clear) {\n setOption(\"selectedIds\", /* @__PURE__ */ new Set());\n }\n api.blockSelection.setSelectedIds({\n added: [element],\n removed: []\n });\n if (delay) {\n setTimeout(() => {\n api.blockSelection.setSelectedIds({\n added: [],\n removed: [element]\n });\n }, delay);\n }\n },\n selectedAll: () => {\n const all = querySelectorAllSelectable();\n setOption(\"selectedIds\", /* @__PURE__ */ new Set());\n api.blockSelection.setSelectedIds({\n added: Array.from(all),\n removed: []\n });\n }\n})).extendTransforms(({ editor }) => ({\n /** Duplicate selected blocks */\n duplicate: bindFirst(duplicateBlockSelectionNodes, editor),\n /** Insert blocks and select */\n insertBlocksAndSelect: bindFirst(insertBlocksAndSelect, editor),\n /** Remove selected blocks */\n removeNodes: bindFirst(removeBlockSelectionNodes, editor),\n /** Select blocks */\n select: bindFirst(selectBlockSelectionNodes, editor),\n /** Set block indent */\n setIndent: bindFirst(setBlockSelectionIndent, editor),\n /** Set nodes on selected blocks */\n setNodes: bindFirst(setBlockSelectionNodes, editor),\n /** Set texts on selected blocks */\n setTexts: bindFirst(setBlockSelectionTexts, editor)\n})).overrideEditor(({ api, editor, getOptions, tf: { setSelection } }) => ({\n transforms: {\n setSelection(props) {\n if (getOptions().selectedIds.size > 0 && !editor.getOption(BlockMenuPlugin, \"openId\")) {\n api.blockSelection.unselect();\n }\n setSelection(props);\n }\n }\n}));\nexport {\n BLOCK_CONTEXT_MENU_ID,\n BlockMenuPlugin,\n BlockSelectionAfterEditable,\n BlockSelectionPlugin,\n CursorOverlayPlugin,\n FROZEN_EMPTY_ARRAY,\n copySelectedBlocks,\n duplicateBlockSelectionNodes,\n getCaretPosition,\n getCursorOverlayState,\n getSelectionRects,\n insertBlocksAndSelect,\n isSelectingOrFocused,\n onKeyDownSelection,\n pasteSelectedBlocks,\n removeBlockSelectionNodes,\n selectBlockSelectionNodes,\n selectInsertedBlocks,\n setBlockSelectionIndent,\n setBlockSelectionNodes,\n setBlockSelectionTexts,\n useBlockSelectable,\n useBlockSelected,\n useBlockSelectionFragment,\n useBlockSelectionFragmentProp,\n useBlockSelectionNodes,\n useCursorOverlay,\n useIsSelecting,\n useRefreshOnResize,\n useRequestReRender,\n useSelectionArea\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/TrailingBlockPlugin.ts\nimport {\n BaseParagraphPlugin,\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/withTrailingBlock.ts\nimport { PathApi, queryNode } from \"@udecode/plate\";\nvar withTrailingBlock = ({\n editor,\n getOptions,\n tf: { normalizeNode }\n}) => ({\n transforms: {\n normalizeNode([currentNode, currentPath]) {\n const { level, type, ...query } = getOptions();\n if (currentPath.length === 0) {\n const lastChild = editor.api.last([], { level });\n const lastChildNode = lastChild?.[0];\n if (!lastChildNode || lastChildNode.type !== type && queryNode(lastChild, query)) {\n const at = lastChild ? PathApi.next(lastChild[1]) : [0];\n editor.tf.insertNodes(editor.api.create.block({ type }, at), { at });\n return;\n }\n }\n return normalizeNode([currentNode, currentPath]);\n }\n }\n});\n\n// src/lib/TrailingBlockPlugin.ts\nvar TrailingBlockPlugin = createTSlatePlugin({\n key: \"trailingBlock\",\n options: {\n level: 0\n }\n}).overrideEditor(withTrailingBlock).extend(({ editor }) => ({\n options: {\n type: editor.getType(BaseParagraphPlugin)\n }\n}));\nexport {\n TrailingBlockPlugin,\n withTrailingBlock\n};\n//# sourceMappingURL=index.mjs.map","// src/react/KbdPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseKbdPlugin.ts\nimport { createSlatePlugin } from \"@udecode/plate\";\nvar BaseKbdPlugin = createSlatePlugin({\n key: \"kbd\",\n node: { isLeaf: true },\n parsers: {\n html: {\n deserializer: {\n rules: [{ validNodeName: [\"KBD\"] }]\n }\n }\n }\n});\n\n// src/react/KbdPlugin.tsx\nvar KbdPlugin = toPlatePlugin(BaseKbdPlugin);\nexport {\n KbdPlugin\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseIndentListPlugin.ts\nimport {\n BaseParagraphPlugin as BaseParagraphPlugin2,\n HtmlPlugin,\n createTSlatePlugin,\n isHtmlBlockElement,\n postCleanHtml,\n traverseHtmlElements\n} from \"@udecode/plate\";\n\n// src/lib/renderIndentListBelowNodes.tsx\nimport React from \"react\";\nimport { clsx } from \"clsx\";\n\n// src/lib/types.ts\nvar ListStyleType = /* @__PURE__ */ ((ListStyleType2) => {\n ListStyleType2[\"ArabicIndic\"] = \"arabic-indic\";\n ListStyleType2[\"Armenian\"] = \"armenian\";\n ListStyleType2[\"Bengali\"] = \"bengali\";\n ListStyleType2[\"Cambodian\"] = \"cambodian\";\n ListStyleType2[\"Circle\"] = \"circle\";\n ListStyleType2[\"CjkDecimal\"] = \"cjk-decimal\";\n ListStyleType2[\"CjkEarthlyBranch\"] = \"cjk-earthly-branch\";\n ListStyleType2[\"CjkHeavenlyStem\"] = \"cjk-heavenly-stem\";\n ListStyleType2[\"Decimal\"] = \"decimal\";\n ListStyleType2[\"DecimalLeadingZero\"] = \"decimal-leading-zero\";\n ListStyleType2[\"Devanagari\"] = \"devanagari\";\n ListStyleType2[\"Disc\"] = \"disc\";\n ListStyleType2[\"DisclosureClosed\"] = \"disclosure-closed\";\n ListStyleType2[\"DisclosureOpen\"] = \"disclosure-open\";\n ListStyleType2[\"EthiopicNumeric\"] = \"ethiopic-numeric\";\n ListStyleType2[\"Georgian\"] = \"georgian\";\n ListStyleType2[\"Gujarati\"] = \"gujarati\";\n ListStyleType2[\"Gurmukhi\"] = \"gurmukhi\";\n ListStyleType2[\"Hebrew\"] = \"hebrew\";\n ListStyleType2[\"Hiragana\"] = \"hiragana\";\n ListStyleType2[\"HiraganaIroha\"] = \"hiragana-iroha\";\n ListStyleType2[\"Inherit\"] = \"inherit\";\n ListStyleType2[\"Initial\"] = \"initial\";\n ListStyleType2[\"JapaneseFormal\"] = \"japanese-formal\";\n ListStyleType2[\"JapaneseInformal\"] = \"japanese-informal\";\n ListStyleType2[\"Kannada\"] = \"kannada\";\n ListStyleType2[\"Katakana\"] = \"katakana\";\n ListStyleType2[\"KatakanaIroha\"] = \"katakana-iroha\";\n ListStyleType2[\"Khmer\"] = \"khmer\";\n ListStyleType2[\"KoreanHangulFormal\"] = \"korean-hangul-formal\";\n ListStyleType2[\"KoreanHanjaFormal\"] = \"korean-hanja-formal\";\n ListStyleType2[\"KoreanHanjaInformal\"] = \"korean-hanja-informal\";\n ListStyleType2[\"Lao\"] = \"lao\";\n ListStyleType2[\"LowerAlpha\"] = \"lower-alpha\";\n ListStyleType2[\"LowerArmenian\"] = \"lower-armenian\";\n ListStyleType2[\"LowerGreek\"] = \"lower-greek\";\n ListStyleType2[\"LowerLatin\"] = \"lower-latin\";\n ListStyleType2[\"LowerRoman\"] = \"lower-roman\";\n ListStyleType2[\"Malayalam\"] = \"malayalam\";\n ListStyleType2[\"Mongolian\"] = \"mongolian\";\n ListStyleType2[\"Myanmar\"] = \"myanmar\";\n ListStyleType2[\"None\"] = \"none\";\n ListStyleType2[\"Oriya\"] = \"oriya\";\n ListStyleType2[\"Persian\"] = \"persian\";\n ListStyleType2[\"SimpChineseFormal\"] = \"simp-chinese-formal\";\n ListStyleType2[\"SimpChineseInformal\"] = \"simp-chinese-informal\";\n ListStyleType2[\"Square\"] = \"square\";\n ListStyleType2[\"Tamil\"] = \"tamil\";\n ListStyleType2[\"Telugu\"] = \"telugu\";\n ListStyleType2[\"Thai\"] = \"thai\";\n ListStyleType2[\"Tibetan\"] = \"tibetan\";\n ListStyleType2[\"TradChineseFormal\"] = \"trad-chinese-formal\";\n ListStyleType2[\"TradChineseInformal\"] = \"trad-chinese-informal\";\n ListStyleType2[\"UpperAlpha\"] = \"upper-alpha\";\n ListStyleType2[\"UpperArmenian\"] = \"upper-armenian\";\n ListStyleType2[\"UpperLatin\"] = \"upper-latin\";\n ListStyleType2[\"UpperRoman\"] = \"upper-roman\";\n return ListStyleType2;\n})(ListStyleType || {});\nvar ULIST_STYLE_TYPES = [\n \"disc\" /* Disc */,\n \"circle\" /* Circle */,\n \"square\" /* Square */,\n \"disclosure-open\" /* DisclosureOpen */,\n \"disclosure-closed\" /* DisclosureClosed */\n];\n\n// src/lib/renderIndentListBelowNodes.tsx\nvar renderIndentListBelowNodes = (injectProps) => {\n const { element } = injectProps;\n const listStyleType = element[BaseIndentListPlugin.key];\n const listStart = element[INDENT_LIST_KEYS.listStart];\n if (listStyleType) {\n let className = clsx(`slate-${BaseIndentListPlugin.key}-${listStyleType}`);\n const style = {\n listStyleType,\n margin: 0,\n padding: 0,\n position: \"relative\"\n };\n return function Component({ children, ...props }) {\n const { editor } = props;\n const { listStyleTypes = {} } = editor.getOptions(BaseIndentListPlugin);\n let listOptions = listStyleTypes[listStyleType];\n let isOrdered = true;\n if (listOptions) {\n isOrdered = !!listOptions.isOrdered;\n } else {\n if (ULIST_STYLE_TYPES.includes(listStyleType)) {\n isOrdered = false;\n }\n listOptions = {};\n }\n className = isOrdered ? clsx(className, \"slate-ol\") : clsx(className, \"slate-ul\");\n const List = isOrdered ? \"ol\" : \"ul\";\n const { liComponent: Li, markerComponent: Marker = () => null } = listOptions;\n return /* @__PURE__ */ React.createElement(List, { className, style, start: listStart }, /* @__PURE__ */ React.createElement(Marker, { ...props }), Li ? /* @__PURE__ */ React.createElement(Li, { ...props }, children) : /* @__PURE__ */ React.createElement(\"li\", null, children));\n };\n }\n};\n\n// src/lib/withIndentList.ts\nimport {\n NodeApi as NodeApi5,\n PathApi as PathApi3\n} from \"@udecode/plate\";\nimport { BaseIndentPlugin as BaseIndentPlugin8 } from \"@udecode/plate-indent\";\n\n// src/lib/normalizers/normalizeFirstIndentListStart.ts\nimport { isDefined } from \"@udecode/plate\";\nvar normalizeFirstIndentListStart = (editor, [node, path]) => {\n if (isDefined(node[INDENT_LIST_KEYS.listStart])) {\n editor.tf.unsetNodes(INDENT_LIST_KEYS.listStart, { at: path });\n return true;\n }\n};\n\n// src/lib/normalizers/normalizeIndentListNotIndented.ts\nimport { isDefined as isDefined2 } from \"@udecode/plate\";\nimport { BaseIndentPlugin } from \"@udecode/plate-indent\";\nvar normalizeIndentListNotIndented = (editor, [node, path]) => {\n if (!isDefined2(node[BaseIndentPlugin.key]) && (node[BaseIndentListPlugin.key] || node[INDENT_LIST_KEYS.listStart])) {\n editor.tf.unsetNodes(\n [BaseIndentListPlugin.key, INDENT_LIST_KEYS.listStart],\n {\n at: path\n }\n );\n return true;\n }\n};\n\n// src/lib/normalizers/normalizeIndentListStart.ts\nimport {\n NodeApi as NodeApi3\n} from \"@udecode/plate\";\n\n// src/lib/queries/getNextIndentList.ts\nimport {\n NodeApi,\n PathApi\n} from \"@udecode/plate\";\n\n// src/lib/queries/getSiblingIndentList.ts\nimport {\n isDefined as isDefined3\n} from \"@udecode/plate\";\nimport { BaseIndentPlugin as BaseIndentPlugin2 } from \"@udecode/plate-indent\";\nvar getSiblingIndentList = (editor, [node, path], {\n breakOnEqIndentNeqListStyleType = true,\n breakOnListRestart = false,\n breakOnLowerIndent = true,\n breakQuery,\n eqIndent = true,\n getNextEntry,\n getPreviousEntry,\n query\n}) => {\n if (!getPreviousEntry && !getNextEntry) return;\n const getSiblingEntry = getNextEntry ?? getPreviousEntry;\n let nextEntry = getSiblingEntry([node, path]);\n while (true) {\n if (!nextEntry) return;\n const [nextNode, nextPath] = nextEntry;\n const indent = node[BaseIndentPlugin2.key];\n const nextIndent = nextNode[BaseIndentPlugin2.key];\n if (breakQuery?.(nextNode, node)) return;\n if (!isDefined3(nextIndent)) return;\n if (breakOnListRestart) {\n if (getPreviousEntry && node[INDENT_LIST_KEYS.listRestart]) {\n return;\n }\n if (getNextEntry && nextNode[INDENT_LIST_KEYS.listRestart]) {\n return;\n }\n }\n if (breakOnLowerIndent && nextIndent < indent) return;\n if (breakOnEqIndentNeqListStyleType && nextIndent === indent && nextNode[BaseIndentListPlugin.key] !== node[BaseIndentListPlugin.key])\n return;\n let valid = !query || query(nextNode, node);\n if (valid) {\n valid = !eqIndent || nextIndent === indent;\n if (valid) return [nextNode, nextPath];\n }\n nextEntry = getSiblingEntry(nextEntry);\n }\n};\n\n// src/lib/queries/getNextIndentList.ts\nvar getNextIndentList = (editor, entry, options) => {\n return getSiblingIndentList(editor, entry, {\n getNextEntry: ([, currPath]) => {\n const nextPath = PathApi.next(currPath);\n const nextNode = NodeApi.get(editor, nextPath);\n if (!nextNode) return;\n return [nextNode, nextPath];\n },\n ...options,\n getPreviousEntry: void 0\n });\n};\n\n// src/lib/queries/getPreviousIndentList.ts\nimport {\n NodeApi as NodeApi2,\n PathApi as PathApi2\n} from \"@udecode/plate\";\nvar getPreviousIndentList = (editor, entry, options) => {\n return getSiblingIndentList(editor, entry, {\n getPreviousEntry: ([, currPath]) => {\n const prevPath = PathApi2.previous(currPath);\n if (!prevPath) return;\n const prevNode = NodeApi2.get(editor, prevPath);\n if (!prevNode) return;\n return [prevNode, prevPath];\n },\n ...options,\n getNextEntry: void 0\n });\n};\n\n// src/lib/normalizers/normalizeIndentListStart.ts\nvar normalizeNextIndentListStart = (editor, entry, prevEntry) => {\n const [node, path] = entry;\n const [prevNode] = prevEntry ?? [null];\n const prevListStart = prevNode?.[INDENT_LIST_KEYS.listStart] ?? 1;\n const currListStart = node[INDENT_LIST_KEYS.listStart] ?? 1;\n const restart = node[INDENT_LIST_KEYS.listRestart];\n const listStart = restart == null ? prevListStart + 1 : restart;\n if (currListStart !== listStart) {\n editor.tf.setNodes(\n { [INDENT_LIST_KEYS.listStart]: listStart },\n { at: path }\n );\n return true;\n }\n return false;\n};\nvar normalizeIndentListStart = (editor, entry, options) => {\n return editor.tf.withoutNormalizing(() => {\n const [node] = entry;\n const listStyleType = node[BaseIndentListPlugin.key];\n if (!listStyleType) return;\n let normalized = false;\n let prevEntry = getPreviousIndentList(editor, entry, options);\n if (!prevEntry) {\n normalized = normalizeFirstIndentListStart(editor, entry);\n if (!normalized) return;\n }\n let normalizeNext = true;\n let currEntry = entry;\n while (normalizeNext) {\n normalizeNext = normalizeNextIndentListStart(editor, currEntry, prevEntry) || normalized;\n if (normalizeNext) normalized = true;\n prevEntry = [NodeApi3.get(editor, currEntry[1]), currEntry[1]];\n currEntry = getNextIndentList(editor, currEntry, options);\n if (!currEntry) break;\n }\n return normalized;\n });\n};\n\n// src/lib/normalizers/shouldMergeNodesRemovePrevNodeIndentList.ts\nimport { isDefined as isDefined4 } from \"@udecode/plate\";\nvar shouldMergeNodesRemovePrevNodeIndentList = ({\n api: { shouldMergeNodesRemovePrevNode }\n}) => ({\n api: {\n shouldMergeNodesRemovePrevNode(prevEntry, curNodeEntry) {\n const prevNode = prevEntry[0];\n const curNode = curNodeEntry[0];\n if (isDefined4(curNode[BaseIndentListPlugin.key]) || isDefined4(prevNode[BaseIndentListPlugin.key])) {\n return false;\n }\n return shouldMergeNodesRemovePrevNode(prevEntry, curNodeEntry);\n }\n }\n});\n\n// src/lib/normalizers/withDeleteBackwardIndentList.ts\nimport { NodeApi as NodeApi4, isDefined as isDefined5 } from \"@udecode/plate\";\n\n// src/lib/transforms/indentList.ts\nimport { setIndent } from \"@udecode/plate-indent\";\nvar indentList = (editor, { listStyleType = \"disc\" /* Disc */, ...options } = {}) => {\n setIndent(editor, {\n offset: 1,\n setNodesProps: () => ({\n [BaseIndentListPlugin.key]: listStyleType\n }),\n ...options\n });\n};\nvar indentTodo = (editor, { listStyleType = \"disc\" /* Disc */, ...options } = {}) => {\n setIndent(editor, {\n offset: 1,\n setNodesProps: () => ({\n [BaseIndentListPlugin.key]: listStyleType,\n [INDENT_LIST_KEYS.checked]: false\n }),\n ...options\n });\n};\n\n// src/lib/transforms/outdentList.ts\nimport { setIndent as setIndent2 } from \"@udecode/plate-indent\";\nvar outdentList = (editor, options = {}) => {\n setIndent2(editor, {\n offset: -1,\n unsetNodesProps: [BaseIndentListPlugin.key, INDENT_LIST_KEYS.checked],\n ...options\n });\n};\n\n// src/lib/transforms/setIndentListNode.ts\nimport { BaseIndentPlugin as BaseIndentPlugin3 } from \"@udecode/plate-indent\";\nvar setIndentListNode = (editor, {\n at,\n indent = 0,\n listStyleType = \"disc\" /* Disc */\n}) => {\n const newIndent = indent || indent + 1;\n editor.tf.setNodes(\n {\n [BaseIndentListPlugin.key]: listStyleType,\n [BaseIndentPlugin3.key]: newIndent\n },\n { at }\n );\n};\nvar setIndentTodoNode = (editor, {\n at,\n indent = 0,\n listStyleType = INDENT_LIST_KEYS.todo\n}) => {\n const newIndent = indent || indent + 1;\n editor.tf.setNodes(\n {\n [BaseIndentListPlugin.key]: listStyleType,\n [BaseIndentPlugin3.key]: newIndent,\n [INDENT_LIST_KEYS.checked]: false\n },\n { at }\n );\n};\n\n// src/lib/transforms/setIndentListNodes.ts\nimport { BaseIndentPlugin as BaseIndentPlugin4 } from \"@udecode/plate-indent\";\nvar setIndentListNodes = (editor, entries, {\n listStyleType = \"disc\" /* Disc */\n}) => {\n editor.tf.withoutNormalizing(() => {\n entries.forEach((entry) => {\n const [node, path] = entry;\n let indent = node[BaseIndentPlugin4.key] ?? 0;\n indent = node[BaseIndentListPlugin.key] || node.hasOwnProperty(INDENT_LIST_KEYS.checked) ? indent : indent + 1;\n if (listStyleType === \"todo\") {\n editor.tf.unsetNodes(BaseIndentListPlugin.key, { at: path });\n setIndentTodoNode(editor, {\n at: path,\n indent,\n listStyleType\n });\n return;\n }\n editor.tf.unsetNodes(INDENT_LIST_KEYS.checked, { at: path });\n setIndentListNode(editor, {\n at: path,\n indent,\n listStyleType\n });\n });\n });\n};\n\n// src/lib/transforms/setIndentListSiblingNodes.ts\nimport { BaseIndentPlugin as BaseIndentPlugin5 } from \"@udecode/plate-indent\";\n\n// src/lib/queries/getIndentListSiblings.ts\nvar getIndentListSiblings = (editor, entry, {\n current = true,\n next = true,\n previous = true,\n ...options\n} = {}) => {\n const siblings = [];\n const node = entry[0];\n if (!node[BaseIndentListPlugin.key] && !node.hasOwnProperty(INDENT_LIST_KEYS.checked)) {\n return siblings;\n }\n let iterEntry = entry;\n if (previous) {\n while (true) {\n const prevEntry = getPreviousIndentList(editor, iterEntry, options);\n if (!prevEntry) break;\n siblings.push(prevEntry);\n iterEntry = prevEntry;\n }\n }\n if (current) {\n siblings.push(entry);\n }\n if (next) {\n iterEntry = entry;\n while (true) {\n const nextEntry = getNextIndentList(editor, iterEntry, options);\n if (!nextEntry) break;\n siblings.push(nextEntry);\n iterEntry = nextEntry;\n }\n }\n return siblings;\n};\n\n// src/lib/transforms/setIndentListSiblingNodes.ts\nvar setIndentListSiblingNodes = (editor, entry, {\n getSiblingIndentListOptions,\n listStyleType = \"disc\" /* Disc */\n}) => {\n editor.tf.withoutNormalizing(() => {\n const siblings = getIndentListSiblings(\n editor,\n entry,\n getSiblingIndentListOptions\n );\n siblings.forEach(([node, path]) => {\n if (listStyleType === INDENT_LIST_KEYS.todo) {\n editor.tf.unsetNodes(BaseIndentListPlugin.key, { at: path });\n setIndentTodoNode(editor, {\n at: path,\n indent: node[BaseIndentPlugin5.key],\n listStyleType\n });\n } else {\n editor.tf.unsetNodes(INDENT_LIST_KEYS.checked, { at: path });\n setIndentListNode(editor, {\n at: path,\n indent: node[BaseIndentPlugin5.key],\n listStyleType\n });\n }\n });\n });\n};\n\n// src/lib/transforms/toggleIndentList.ts\nimport { BaseIndentPlugin as BaseIndentPlugin6 } from \"@udecode/plate-indent\";\n\n// src/lib/queries/areEqListStyleType.ts\nvar areEqListStyleType = (editor, entries, {\n listStyleType = \"disc\" /* Disc */\n}) => {\n let eqListStyleType = true;\n for (const entry of entries) {\n const [block] = entry;\n if (listStyleType === INDENT_LIST_KEYS.todo) {\n if (!block.hasOwnProperty(INDENT_LIST_KEYS.checked)) {\n eqListStyleType = false;\n break;\n }\n continue;\n }\n if (!block[BaseIndentListPlugin.key] || block[BaseIndentListPlugin.key] !== listStyleType) {\n eqListStyleType = false;\n break;\n }\n }\n return eqListStyleType;\n};\n\n// src/lib/transforms/toggleIndentListSet.ts\nvar toggleIndentListSet = (editor, [node, _path], { listStyleType = \"disc\" /* Disc */, ...options }) => {\n if (node.hasOwnProperty(INDENT_LIST_KEYS.checked) || node[BaseIndentListPlugin.key])\n return;\n if (listStyleType === \"todo\") {\n indentTodo(editor, {\n listStyleType,\n ...options\n });\n } else {\n indentList(editor, {\n listStyleType,\n ...options\n });\n }\n return true;\n};\n\n// src/lib/transforms/toggleIndentListUnset.ts\nvar toggleIndentListUnset = (editor, [node, path], {\n listStyleType = \"disc\" /* Disc */\n}) => {\n if (listStyleType === INDENT_LIST_KEYS.todo && node.hasOwnProperty(INDENT_LIST_KEYS.checked)) {\n editor.tf.unsetNodes(INDENT_LIST_KEYS.checked, { at: path });\n outdentList(editor, { listStyleType });\n return true;\n }\n if (listStyleType === node[BaseIndentListPlugin.key]) {\n editor.tf.unsetNodes([BaseIndentListPlugin.key], {\n at: path\n });\n outdentList(editor, { listStyleType });\n return true;\n }\n};\n\n// src/lib/transforms/toggleIndentList.ts\nvar toggleIndentList = (editor, options, getSiblingIndentListOptions) => {\n const { listStyleType } = options;\n const { getSiblingIndentListOptions: _getSiblingIndentListOptions } = editor.getOptions(BaseIndentListPlugin);\n if (editor.api.isCollapsed()) {\n const entry = editor.api.block();\n if (!entry) return;\n if (toggleIndentListSet(editor, entry, { listStyleType })) {\n return;\n }\n if (toggleIndentListUnset(editor, entry, { listStyleType })) {\n return;\n }\n setIndentListSiblingNodes(editor, entry, {\n getSiblingIndentListOptions: {\n ..._getSiblingIndentListOptions,\n ...getSiblingIndentListOptions\n },\n listStyleType\n });\n return;\n }\n if (editor.api.isExpanded()) {\n const _entries = editor.api.nodes({ block: true });\n const entries = [..._entries];\n const eqListStyleType = areEqListStyleType(editor, entries, {\n listStyleType\n });\n if (eqListStyleType) {\n editor.tf.withoutNormalizing(() => {\n entries.forEach((entry) => {\n const [node, path] = entry;\n const indent = node[BaseIndentPlugin6.key];\n editor.tf.unsetNodes(BaseIndentListPlugin.key, { at: path });\n if (indent > 1) {\n editor.tf.setNodes(\n { [BaseIndentPlugin6.key]: indent - 1 },\n { at: path }\n );\n } else {\n editor.tf.unsetNodes(\n [BaseIndentPlugin6.key, INDENT_LIST_KEYS.checked],\n {\n at: path\n }\n );\n }\n });\n });\n return;\n }\n setIndentListNodes(editor, entries, { listStyleType });\n }\n};\n\n// src/lib/transforms/toggleIndentListByPath.ts\nimport {\n BaseParagraphPlugin\n} from \"@udecode/plate\";\nimport { BaseIndentPlugin as BaseIndentPlugin7 } from \"@udecode/plate-indent\";\nvar toggleIndentListByPath = (editor, [node, path], listStyleType) => {\n editor.tf.setNodes(\n {\n [BaseIndentListPlugin.key]: listStyleType,\n [BaseIndentPlugin7.key]: node.indent ?? 1,\n // TODO: normalized if not todo remove this property.\n [INDENT_LIST_KEYS.checked]: false,\n type: BaseParagraphPlugin.key\n },\n {\n at: path\n }\n );\n};\nvar toggleIndentListByPathUnSet = (editor, [, path]) => editor.tf.unsetNodes(\n [BaseIndentListPlugin.key, BaseIndentPlugin7.key, INDENT_LIST_KEYS.checked],\n {\n at: path\n }\n);\n\n// src/lib/normalizers/withDeleteBackwardIndentList.ts\nvar withDeleteBackwardIndentList = ({ editor, tf: { deleteBackward } }) => {\n return {\n transforms: {\n deleteBackward(unit) {\n const nodeEntry = editor.api.above();\n if (!nodeEntry) return deleteBackward(unit);\n const listNode = nodeEntry[0];\n if (editor.api.isCollapsed() && NodeApi4.string(listNode))\n return deleteBackward(unit);\n if (isDefined5(listNode[BaseIndentListPlugin.key])) {\n return outdentList(editor);\n }\n return deleteBackward(unit);\n }\n }\n };\n};\n\n// src/lib/normalizers/withInsertBreakIndentList.ts\nimport { isDefined as isDefined6 } from \"@udecode/plate\";\nvar withInsertBreakIndentList = ({ editor, tf: { insertBreak } }) => {\n return {\n transforms: {\n insertBreak() {\n const nodeEntry = editor.api.above();\n if (!nodeEntry) return insertBreak();\n const [node, path] = nodeEntry;\n if (!isDefined6(node[BaseIndentListPlugin.key]) || node[BaseIndentListPlugin.key] !== INDENT_LIST_KEYS.todo || editor.api.isExpanded() || !editor.api.isEnd(editor.selection?.focus, path)) {\n return insertBreak();\n }\n editor.tf.withoutNormalizing(() => {\n insertBreak();\n const newEntry = editor.api.above();\n if (newEntry) {\n editor.tf.setNodes(\n {\n checked: false\n },\n { at: newEntry[1] }\n );\n }\n });\n }\n }\n };\n};\n\n// src/lib/withNormalizeIndentList.ts\nvar withNormalizeIndentList = ({\n editor,\n getOptions,\n tf: { normalizeNode }\n}) => {\n return {\n transforms: {\n normalizeNode([node, path]) {\n const normalized = editor.tf.withoutNormalizing(() => {\n if (normalizeIndentListNotIndented(editor, [node, path])) return true;\n if (normalizeIndentListStart(\n editor,\n [node, path],\n getOptions().getSiblingIndentListOptions\n ))\n return true;\n });\n if (normalized) return;\n return normalizeNode([node, path]);\n }\n }\n };\n};\n\n// src/lib/withIndentList.ts\nvar withIndentList = (ctx) => {\n const {\n editor,\n getOptions,\n tf: { apply }\n } = ctx;\n return {\n transforms: {\n ...withNormalizeIndentList(ctx).transforms,\n ...withDeleteBackwardIndentList(ctx).transforms,\n ...withInsertBreakIndentList(ctx).transforms,\n apply(operation) {\n const { path } = operation;\n const { getSiblingIndentListOptions } = getOptions();\n let nodeBefore = null;\n let targetPath = null;\n if (operation.type === \"set_node\") {\n nodeBefore = NodeApi5.get(editor, path);\n }\n if (operation.type === \"insert_node\") {\n const listStyleType = operation.node[BaseIndentListPlugin.key];\n if (listStyleType && [\"lower-roman\", \"upper-roman\"].includes(\n listStyleType\n )) {\n const prevNodeEntry = getPreviousIndentList(\n editor,\n [operation.node, path],\n {\n breakOnEqIndentNeqListStyleType: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n }\n );\n if (prevNodeEntry) {\n const prevListStyleType = prevNodeEntry[0][BaseIndentListPlugin.key];\n if (prevListStyleType === \"lower-alpha\" /* LowerAlpha */ && listStyleType === \"lower-roman\" /* LowerRoman */) {\n operation.node[BaseIndentListPlugin.key] = \"lower-alpha\" /* LowerAlpha */;\n } else if (prevListStyleType === \"upper-alpha\" /* UpperAlpha */ && listStyleType === \"upper-roman\" /* UpperRoman */) {\n operation.node[BaseIndentListPlugin.key] = \"upper-alpha\" /* UpperAlpha */;\n }\n }\n }\n }\n let nextIndentListPathRef = null;\n if (operation.type === \"merge_node\") {\n const prevPath = PathApi3.previous(operation.path);\n const { properties } = operation;\n if (prevPath) {\n const prevNode = NodeApi5.get(editor, prevPath);\n if (prevNode?.[BaseIndentListPlugin.key]) {\n targetPath = prevPath;\n }\n }\n if (properties[BaseIndentListPlugin.key]) {\n const node = NodeApi5.get(editor, path);\n if (node) {\n const nextNodeEntryBefore = getNextIndentList(\n editor,\n [node, path],\n getSiblingIndentListOptions\n );\n if (nextNodeEntryBefore) {\n nextIndentListPathRef = editor.api.pathRef(\n nextNodeEntryBefore[1]\n );\n }\n }\n }\n } else if (operation.type === \"remove_node\") {\n const nextPath = PathApi3.next(operation.path);\n const nextNode = NodeApi5.get(editor, nextPath);\n const prevPath = PathApi3.previous(operation.path);\n const prevNode = prevPath ? NodeApi5.get(editor, prevPath) : null;\n if (prevNode?.[BaseIndentListPlugin.key] && nextNode?.[BaseIndentListPlugin.key]) {\n targetPath = operation.path;\n }\n }\n if (operation.type === \"split_node\" && operation.properties[BaseIndentListPlugin.key] && operation.properties[INDENT_LIST_KEYS.listRestart]) {\n const listReStart = operation.properties[INDENT_LIST_KEYS.listRestart];\n operation.properties[INDENT_LIST_KEYS.listStart] = listReStart + 1;\n operation.properties[INDENT_LIST_KEYS.listRestart] = void 0;\n const node = NodeApi5.get(editor, path);\n if (node) {\n const nextNodeEntryBefore = getNextIndentList(\n editor,\n [node, path],\n getSiblingIndentListOptions\n );\n if (nextNodeEntryBefore) {\n nextIndentListPathRef = editor.api.pathRef(\n nextNodeEntryBefore[1]\n );\n }\n }\n }\n apply(operation);\n if (operation.type === \"split_node\" && nextIndentListPathRef) {\n const nextPath = nextIndentListPathRef.unref();\n if (nextPath) {\n const nextNode = NodeApi5.get(editor, nextPath);\n if (nextNode) {\n normalizeIndentListStart(\n editor,\n [nextNode, nextPath],\n getSiblingIndentListOptions\n );\n }\n }\n }\n if ((operation.type === \"merge_node\" || operation.type === \"remove_node\") && targetPath) {\n const targetNode = NodeApi5.get(editor, operation.path);\n if (targetNode?.[BaseIndentListPlugin.key]) {\n normalizeIndentListStart(\n editor,\n [targetNode, targetPath],\n getSiblingIndentListOptions\n );\n }\n }\n if (operation.type === \"merge_node\" && nextIndentListPathRef) {\n const nextPath = nextIndentListPathRef.unref();\n if (nextPath) {\n const nextNode = NodeApi5.get(editor, nextPath);\n if (nextNode) {\n normalizeIndentListStart(\n editor,\n [nextNode, nextPath],\n getSiblingIndentListOptions\n );\n }\n }\n }\n if (nodeBefore && operation.type === \"set_node\") {\n const prevListStyleType = operation.properties[BaseIndentListPlugin.key];\n const listStyleType = operation.newProperties[BaseIndentListPlugin.key];\n if (prevListStyleType && !listStyleType) {\n const node = NodeApi5.get(editor, path);\n if (!node) return;\n const nextNodeEntry = getNextIndentList(\n editor,\n [nodeBefore, path],\n getSiblingIndentListOptions\n );\n if (!nextNodeEntry) return;\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n if ((prevListStyleType || listStyleType) && prevListStyleType !== listStyleType) {\n const node = NodeApi5.get(editor, path);\n if (!node) return;\n let nextNodeEntry = getNextIndentList(\n editor,\n [nodeBefore, path],\n getSiblingIndentListOptions\n );\n if (nextNodeEntry) {\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n nextNodeEntry = getNextIndentList(\n editor,\n [node, path],\n getSiblingIndentListOptions\n );\n if (nextNodeEntry) {\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n }\n const prevIndent = operation.properties[BaseIndentPlugin8.key];\n const indent = operation.newProperties[BaseIndentPlugin8.key];\n if (prevIndent !== indent) {\n const node = NodeApi5.get(editor, path);\n if (!node) return;\n let prevNodeEntry = getPreviousIndentList(\n editor,\n [nodeBefore, path],\n {\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n }\n );\n if (prevNodeEntry) {\n normalizeIndentListStart(\n editor,\n prevNodeEntry,\n getSiblingIndentListOptions\n );\n }\n prevNodeEntry = getPreviousIndentList(\n editor,\n [node, path],\n {\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n }\n );\n if (prevNodeEntry) {\n normalizeIndentListStart(\n editor,\n prevNodeEntry,\n getSiblingIndentListOptions\n );\n }\n let nextNodeEntry = getNextIndentList(\n editor,\n [nodeBefore, path],\n {\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n }\n );\n if (nextNodeEntry) {\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n nextNodeEntry = getNextIndentList(editor, [node, path], {\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n ...getSiblingIndentListOptions\n });\n if (nextNodeEntry) {\n normalizeIndentListStart(\n editor,\n nextNodeEntry,\n getSiblingIndentListOptions\n );\n }\n }\n }\n }\n }\n };\n};\n\n// src/lib/BaseIndentListPlugin.ts\nvar INDENT_LIST_KEYS = {\n checked: \"checked\",\n listRestart: \"listRestart\",\n listStart: \"listStart\",\n todo: \"todo\"\n};\nvar BaseIndentListPlugin = createTSlatePlugin({\n key: \"listStyleType\",\n inject: {\n plugins: {\n [HtmlPlugin.key]: {\n parser: {\n transformData: ({ data }) => {\n const document = new DOMParser().parseFromString(data, \"text/html\");\n const { body } = document;\n traverseHtmlElements(body, (element) => {\n if (element.tagName === \"LI\") {\n const { childNodes } = element;\n const liChildren = [];\n childNodes.forEach((child) => {\n if (isHtmlBlockElement(child)) {\n liChildren.push(...child.childNodes);\n } else {\n liChildren.push(child);\n }\n });\n element.replaceChildren(...liChildren);\n return false;\n }\n return true;\n });\n return postCleanHtml(body.innerHTML);\n }\n }\n }\n }\n },\n options: {\n getListStyleType: (element) => element.style.listStyleType\n },\n parsers: {\n html: {\n deserializer: {\n isElement: true,\n parse: ({ editor, element, getOptions }) => {\n const parent = element.parentElement;\n if (parent && (parent.classList.contains(\"slate-ol\") || parent.classList.contains(\"slate-ul\"))) {\n return;\n }\n return {\n // gdoc uses aria-level attribute\n indent: Number(element.getAttribute(\"aria-level\")),\n listStyleType: getOptions().getListStyleType?.(element),\n type: editor.getType(BaseParagraphPlugin2)\n };\n },\n rules: [\n {\n validNodeName: \"LI\"\n }\n ]\n }\n }\n },\n render: {\n belowNodes: renderIndentListBelowNodes\n }\n}).overrideEditor(withIndentList);\n\n// src/lib/queries/getSiblingListStyleType.ts\nvar getSiblingListStyleType = (editor, {\n entry,\n indent,\n ...options\n}) => {\n const siblingEntry = [{ ...entry[0], indent }, entry[1]];\n const siblings = getIndentListSiblings(editor, siblingEntry, {\n breakOnEqIndentNeqListStyleType: false,\n current: false,\n eqIndent: true,\n ...options\n });\n return siblings.length > 0 ? siblings[0][0][BaseIndentListPlugin.key] : entry[0][BaseIndentListPlugin.key];\n};\n\n// src/lib/queries/someIndentList.ts\nvar someIndentList = (editor, type) => {\n return !!editor.selection && editor.api.some({\n match: (n) => {\n const isHasProperty = n.hasOwnProperty(INDENT_LIST_KEYS.checked);\n if (isHasProperty) {\n return false;\n }\n const list = n[BaseIndentListPlugin.key];\n return Array.isArray(type) ? type.includes(list) : list === type;\n }\n });\n};\n\n// src/lib/queries/someIndentTodo.ts\nvar someIndentTodo = (editor) => {\n return editor.api.some({\n at: editor.selection,\n match: (n) => {\n const list = n[BaseIndentListPlugin.key];\n const isHasProperty = n.hasOwnProperty(INDENT_LIST_KEYS.checked);\n return n.type === \"p\" && isHasProperty && list === INDENT_LIST_KEYS.todo;\n }\n });\n};\nexport {\n BaseIndentListPlugin,\n INDENT_LIST_KEYS,\n ListStyleType,\n ULIST_STYLE_TYPES,\n areEqListStyleType,\n getIndentListSiblings,\n getNextIndentList,\n getPreviousIndentList,\n getSiblingIndentList,\n getSiblingListStyleType,\n indentList,\n indentTodo,\n normalizeFirstIndentListStart,\n normalizeIndentListNotIndented,\n normalizeIndentListStart,\n normalizeNextIndentListStart,\n outdentList,\n renderIndentListBelowNodes,\n setIndentListNode,\n setIndentListNodes,\n setIndentListSiblingNodes,\n setIndentTodoNode,\n shouldMergeNodesRemovePrevNodeIndentList,\n someIndentList,\n someIndentTodo,\n toggleIndentList,\n toggleIndentListByPath,\n toggleIndentListByPathUnSet,\n toggleIndentListSet,\n toggleIndentListUnset,\n withDeleteBackwardIndentList,\n withIndentList,\n withInsertBreakIndentList,\n withNormalizeIndentList\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseCalloutPlugin.ts\nimport { bindFirst, createSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/transforms/insertCallout.ts\nvar CALLOUT_STORAGE_KEY = `plate-storage-callout`;\nvar insertCallout = (editor, {\n icon,\n variant,\n ...options\n} = {}) => {\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n icon: icon ?? localStorage.getItem(CALLOUT_STORAGE_KEY) ?? \"\\u{1F4A1}\",\n type: editor.getType(BaseCalloutPlugin),\n variant\n },\n options\n );\n};\n\n// src/lib/BaseCalloutPlugin.ts\nvar BaseCalloutPlugin = createSlatePlugin({\n key: \"callout\",\n node: { isElement: true }\n}).extendEditorTransforms(({ editor }) => ({\n insert: { callout: bindFirst(insertCallout, editor) }\n}));\nexport {\n BaseCalloutPlugin,\n CALLOUT_STORAGE_KEY,\n insertCallout\n};\n//# sourceMappingURL=index.mjs.map","// src/react/CalloutPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseCalloutPlugin.ts\nimport { bindFirst, createSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/transforms/insertCallout.ts\nvar CALLOUT_STORAGE_KEY = `plate-storage-callout`;\nvar insertCallout = (editor, {\n icon,\n variant,\n ...options\n} = {}) => {\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n icon: icon ?? localStorage.getItem(CALLOUT_STORAGE_KEY) ?? \"\\u{1F4A1}\",\n type: editor.getType(BaseCalloutPlugin),\n variant\n },\n options\n );\n};\n\n// src/lib/BaseCalloutPlugin.ts\nvar BaseCalloutPlugin = createSlatePlugin({\n key: \"callout\",\n node: { isElement: true }\n}).extendEditorTransforms(({ editor }) => ({\n insert: { callout: bindFirst(insertCallout, editor) }\n}));\n\n// src/react/CalloutPlugin.tsx\nvar CalloutPlugin = toPlatePlugin(BaseCalloutPlugin);\n\n// src/react/hooks/useCalloutEmojiPicker.ts\nimport {\n useEditorReadOnly,\n useEditorRef,\n useElement\n} from \"@udecode/plate/react\";\nvar useCalloutEmojiPicker = ({\n isOpen,\n setIsOpen\n}) => {\n const editor = useEditorRef();\n const readOnly = useEditorReadOnly();\n const element = useElement();\n return {\n emojiToolbarDropdownProps: {\n isOpen,\n setIsOpen: (v) => {\n if (readOnly) return;\n setIsOpen(v);\n }\n },\n props: {\n isOpen,\n setIsOpen,\n onSelectEmoji: (emojiValue) => {\n const icon = emojiValue.skins?.[0]?.native ?? emojiValue.icon;\n editor.tf.setNodes(\n {\n icon\n },\n { at: element }\n );\n localStorage.setItem(CALLOUT_STORAGE_KEY, icon);\n setIsOpen(false);\n }\n }\n };\n};\nexport {\n CalloutPlugin,\n useCalloutEmojiPicker\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseCodeBlockPlugin.ts\nimport {\n HtmlPlugin,\n createSlatePlugin,\n createTSlatePlugin\n} from \"@udecode/plate\";\n\n// src/lib/queries/getCodeLineEntry.ts\nimport {\n ElementApi\n} from \"@udecode/plate\";\nvar getCodeLineEntry = (editor, { at = editor.selection } = {}) => {\n if (at && editor.api.some({\n at,\n match: { type: editor.getType(BaseCodeLinePlugin) }\n })) {\n const selectionParent = editor.api.parent(at);\n if (!selectionParent) return;\n const [, parentPath] = selectionParent;\n const codeLine = editor.api.above({\n at,\n match: { type: editor.getType(BaseCodeLinePlugin) }\n }) || editor.api.parent(parentPath);\n if (!codeLine) return;\n const [codeLineNode, codeLinePath] = codeLine;\n if (ElementApi.isElement(codeLineNode) && codeLineNode.type !== editor.getType(BaseCodeLinePlugin))\n return;\n const codeBlock = editor.api.parent(codeLinePath);\n if (!codeBlock) return;\n return {\n codeBlock,\n codeLine\n };\n }\n};\n\n// src/lib/queries/getIndentDepth.ts\nvar getIndentDepth = (editor, { codeLine }) => {\n const [, codeLinePath] = codeLine;\n const text = editor.api.string(codeLinePath);\n return text.search(/\\S|$/);\n};\n\n// src/lib/queries/isCodeBlockEmpty.ts\nimport { NodeApi } from \"@udecode/plate\";\nvar isCodeBlockEmpty = (editor) => {\n const { codeBlock } = getCodeLineEntry(editor) ?? {};\n if (!codeBlock) return false;\n const codeLines = Array.from(NodeApi.children(editor, codeBlock[1]));\n if (codeLines.length === 0) return true;\n if (codeLines.length > 1) return false;\n const firstCodeLineNode = codeLines[0][0];\n return !NodeApi.string(firstCodeLineNode);\n};\n\n// src/lib/queries/isSelectionAtCodeBlockStart.ts\nvar isSelectionAtCodeBlockStart = (editor) => {\n const { selection } = editor;\n if (!selection || editor.api.isExpanded()) return false;\n const { codeBlock } = getCodeLineEntry(editor) ?? {};\n if (!codeBlock) return false;\n return editor.api.isStart(selection.anchor, codeBlock[1]);\n};\n\n// src/lib/transforms/deleteStartSpace.ts\nvar deleteStartSpace = (editor, { codeLine }) => {\n const [, codeLinePath] = codeLine;\n const codeLineStart = editor.api.start(codeLinePath);\n const codeLineEnd = codeLineStart && editor.api.after(codeLineStart);\n const spaceRange = codeLineEnd && editor.api.range(codeLineStart, codeLineEnd);\n const spaceText = editor.api.string(spaceRange);\n if (/\\s/.test(spaceText)) {\n editor.tf.delete({ at: spaceRange });\n return true;\n }\n return false;\n};\n\n// src/lib/transforms/indentCodeLine.ts\nvar indentCodeLine = (editor, { codeLine, indentDepth = 2 }) => {\n const [, codeLinePath] = codeLine;\n const codeLineStart = editor.api.start(codeLinePath);\n const indent = \" \".repeat(indentDepth);\n if (!editor.api.isExpanded()) {\n const cursor = editor.selection?.anchor;\n const range = editor.api.range(codeLineStart, cursor);\n const text = editor.api.string(range);\n if (/\\S/.test(text)) {\n editor.tf.insertText(indent, { at: editor.selection });\n return;\n }\n }\n editor.tf.insertText(indent, { at: codeLineStart });\n};\n\n// src/lib/transforms/insertCodeBlock.ts\nvar insertCodeBlock = (editor, insertNodesOptions = {}) => {\n if (!editor.selection || editor.api.isExpanded()) return;\n const matchCodeElements = (node) => node.type === editor.getType(BaseCodeBlockPlugin) || node.type === editor.getType(BaseCodeLinePlugin);\n if (editor.api.some({\n match: matchCodeElements\n })) {\n return;\n }\n if (!editor.api.isAt({ start: true })) {\n editor.tf.insertBreak();\n }\n editor.tf.setNodes(\n {\n children: [{ text: \"\" }],\n type: editor.getType(BaseCodeLinePlugin)\n },\n insertNodesOptions\n );\n editor.tf.wrapNodes(\n {\n children: [],\n type: editor.getType(BaseCodeBlockPlugin)\n },\n insertNodesOptions\n );\n};\n\n// src/lib/transforms/insertCodeLine.ts\nvar insertCodeLine = (editor, indentDepth = 0) => {\n if (editor.selection) {\n const indent = \" \".repeat(indentDepth);\n editor.tf.insertNodes({\n children: [{ text: indent }],\n type: editor.getType(BaseCodeLinePlugin)\n });\n }\n};\n\n// src/lib/transforms/insertEmptyCodeBlock.ts\nimport {\n BaseParagraphPlugin\n} from \"@udecode/plate\";\nvar insertEmptyCodeBlock = (editor, {\n defaultType = editor.getType(BaseParagraphPlugin),\n insertNodesOptions\n} = {}) => {\n if (!editor.selection) return;\n if (editor.api.isExpanded() || !editor.api.isEmpty(editor.selection, { block: true })) {\n editor.tf.insertNodes(\n editor.api.create.block({ children: [{ text: \"\" }], type: defaultType }),\n {\n nextBlock: true,\n select: true,\n ...insertNodesOptions\n }\n );\n }\n insertCodeBlock(editor, insertNodesOptions);\n};\n\n// src/lib/transforms/outdentCodeLine.ts\nvar outdentCodeLine = (editor, { codeBlock, codeLine }) => {\n const deleted = deleteStartSpace(editor, { codeBlock, codeLine });\n deleted && deleteStartSpace(editor, { codeBlock, codeLine });\n};\n\n// src/lib/transforms/unwrapCodeBlock.ts\nimport {\n BaseParagraphPlugin as BaseParagraphPlugin2,\n NodeApi as NodeApi2\n} from \"@udecode/plate\";\nvar unwrapCodeBlock = (editor) => {\n if (!editor.selection) return;\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const defaultType = editor.getType(BaseParagraphPlugin2);\n editor.tf.withoutNormalizing(() => {\n const codeBlockEntries = editor.api.nodes({\n at: editor.selection,\n match: { type: codeBlockType }\n });\n const reversedCodeBlockEntries = Array.from(codeBlockEntries).reverse();\n for (const codeBlockEntry of reversedCodeBlockEntries) {\n const codeLineEntries = NodeApi2.children(editor, codeBlockEntry[1]);\n for (const [, path] of codeLineEntries) {\n editor.tf.setNodes({ type: defaultType }, { at: path });\n }\n editor.tf.unwrapNodes({\n at: codeBlockEntry[1],\n match: { type: codeBlockType },\n split: true\n });\n }\n });\n};\n\n// src/lib/transforms/toggleCodeBlock.ts\nvar toggleCodeBlock = (editor) => {\n if (!editor.selection) return;\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n const isActive = editor.api.some({\n match: { type: codeBlockType }\n });\n editor.tf.withoutNormalizing(() => {\n unwrapCodeBlock(editor);\n if (!isActive) {\n editor.tf.setNodes({\n type: codeLineType\n });\n const codeBlock = {\n children: [],\n type: codeBlockType\n };\n editor.tf.wrapNodes(codeBlock);\n }\n });\n};\n\n// src/lib/withInsertDataCodeBlock.ts\nvar withInsertDataCodeBlock = ({\n editor,\n tf: { insertData }\n}) => ({\n transforms: {\n insertData(data) {\n const text = data.getData(\"text/plain\");\n const vscodeDataString = data.getData(\"vscode-editor-data\");\n if (vscodeDataString) {\n try {\n const vscodeData = JSON.parse(vscodeDataString);\n const lines = text.split(\"\\n\");\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const node = {\n children: lines.map((line) => ({\n children: [{ text: line }],\n type: codeLineType\n })),\n lang: vscodeData?.mode,\n type: codeBlockType\n };\n editor.tf.insertNodes(node, {\n select: true\n });\n return;\n } catch (error) {\n }\n }\n insertData(data);\n }\n }\n});\n\n// src/lib/withInsertFragmentCodeBlock.ts\nimport { NodeApi as NodeApi3 } from \"@udecode/plate\";\nfunction extractCodeLinesFromCodeBlock(node) {\n return node.children;\n}\nvar withInsertFragmentCodeBlock = ({\n editor,\n tf: { insertFragment }\n}) => ({\n transforms: {\n insertFragment(fragment) {\n const [blockAbove] = editor.api.block() ?? [];\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n function convertNodeToCodeLine(node) {\n return {\n children: [{ text: NodeApi3.string(node) }],\n type: codeLineType\n };\n }\n if (blockAbove && [codeBlockType, codeLineType].includes(blockAbove?.type)) {\n return insertFragment(\n fragment.flatMap((node) => {\n const element = node;\n return element.type === codeBlockType ? extractCodeLinesFromCodeBlock(element) : convertNodeToCodeLine(element);\n })\n );\n }\n return insertFragment(fragment);\n }\n }\n});\n\n// src/lib/withNormalizeCodeBlock.tsx\nimport { ElementApi as ElementApi2, NodeApi as NodeApi4 } from \"@udecode/plate\";\nvar withNormalizeCodeBlock = ({\n editor,\n tf: { normalizeNode }\n}) => ({\n transforms: {\n normalizeNode([node, path]) {\n normalizeNode([node, path]);\n if (!ElementApi2.isElement(node)) {\n return;\n }\n const codeBlockType = editor.getType(BaseCodeBlockPlugin);\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n const isCodeBlockRoot = node.type === codeBlockType;\n if (isCodeBlockRoot) {\n const nonCodeLine = Array.from(NodeApi4.children(editor, path)).find(\n ([child]) => child.type !== codeLineType\n );\n if (nonCodeLine) {\n editor.tf.setNodes({ type: codeLineType }, { at: nonCodeLine[1] });\n }\n }\n }\n }\n});\n\n// src/lib/withCodeBlock.ts\nvar withCodeBlock = (ctx) => {\n const {\n editor,\n tf: { insertBreak }\n } = ctx;\n const insertBreakCodeBlock = () => {\n if (!editor.selection) return;\n const res = getCodeLineEntry(editor, {});\n if (!res) return;\n const { codeBlock, codeLine } = res;\n const indentDepth = getIndentDepth(editor, {\n codeBlock,\n codeLine\n });\n insertBreak();\n indentCodeLine(editor, {\n codeBlock,\n codeLine,\n indentDepth\n });\n return true;\n };\n return {\n transforms: {\n insertBreak() {\n if (insertBreakCodeBlock()) return;\n insertBreak();\n },\n ...withInsertDataCodeBlock(ctx).transforms,\n ...withInsertFragmentCodeBlock(ctx).transforms,\n ...withNormalizeCodeBlock(ctx).transforms\n }\n };\n};\n\n// src/lib/decorateCodeLine.ts\nimport { NodeApi as NodeApi5 } from \"@udecode/plate\";\nvar decorateCodeLine = ({\n editor,\n entry: [node, path],\n type\n}) => {\n const codeBlockOptions = editor.getOptions(BaseCodeBlockPlugin);\n const { prism: Prism } = codeBlockOptions;\n if (!Prism) return [];\n const { Token, languages, tokenize } = Prism;\n const ranges = [];\n if (!codeBlockOptions.syntax || node.type !== type) {\n return ranges;\n }\n const codeBlock = editor.api.parent(path);\n if (!codeBlock) {\n return ranges;\n }\n let langName = codeBlock[0].lang ?? \"\";\n if (langName === \"plain\") {\n langName = \"\";\n }\n const lang = languages[langName];\n if (!lang) {\n return ranges;\n }\n const text = NodeApi5.string(node);\n const tokens = tokenize(text, lang);\n let offset = 0;\n for (const element of tokens) {\n if (element instanceof Token) {\n ranges.push({\n [BaseCodeSyntaxPlugin.key]: true,\n anchor: { offset, path },\n focus: { offset: offset + element.length, path },\n tokenType: element.type\n });\n }\n offset += element.length;\n }\n return ranges;\n};\n\n// src/lib/deserializer/htmlDeserializerCodeBlockStatic.ts\nimport { getSlateElements, isSlatePluginElement } from \"@udecode/plate\";\nvar htmlDeserializerCodeBlockStatic = (element) => {\n if (isSlatePluginElement(element, BaseCodeBlockPlugin.key)) {\n const staticCodeLines = getSlateElements(element).filter(\n (el) => isSlatePluginElement(el, BaseCodeLinePlugin.key)\n );\n if (staticCodeLines) {\n const codeLines = staticCodeLines.map((line) => {\n const node = {\n children: [{ text: line.textContent }],\n type: BaseCodeLinePlugin.key\n };\n if (line.dataset.slateId) {\n node.id = line.dataset.slateId;\n }\n return node;\n });\n return {\n children: codeLines,\n type: BaseCodeBlockPlugin.key\n };\n }\n }\n};\n\n// src/lib/deserializer/htmlDeserializerCodeBlock.ts\nvar htmlDeserializerCodeBlock = {\n parse: ({ element }) => {\n const staticCodeBlock = htmlDeserializerCodeBlockStatic(element);\n if (staticCodeBlock) {\n return staticCodeBlock;\n }\n const languageSelectorText = [...element.childNodes].find(\n (node) => node.nodeName === \"SELECT\"\n )?.textContent || \"\";\n const textContent = element.textContent?.replace(languageSelectorText, \"\") || \"\";\n let lines = textContent.split(\"\\n\");\n if (!lines?.length) {\n lines = [textContent];\n }\n const codeLines = lines.map((line) => ({\n children: [{ text: line }],\n type: BaseCodeLinePlugin.key\n }));\n return {\n children: codeLines,\n type: BaseCodeBlockPlugin.key\n };\n },\n rules: [\n {\n validNodeName: \"PRE\"\n },\n {\n validNodeName: \"P\",\n validStyle: {\n fontFamily: \"Consolas\"\n }\n }\n ]\n};\n\n// src/lib/BaseCodeBlockPlugin.ts\nvar BaseCodeLinePlugin = createSlatePlugin({\n key: \"code_line\",\n decorate: decorateCodeLine,\n node: { isElement: true }\n});\nvar BaseCodeSyntaxPlugin = createSlatePlugin({\n key: \"code_syntax\",\n node: { isLeaf: true }\n});\nvar BaseCodeBlockPlugin = createTSlatePlugin({\n key: \"code_block\",\n inject: {\n plugins: {\n [HtmlPlugin.key]: {\n parser: {\n query: ({ editor }) => {\n const codeLineType = editor.getType(BaseCodeLinePlugin);\n return !editor.api.some({\n match: { type: codeLineType }\n });\n }\n }\n }\n }\n },\n node: { isElement: true },\n options: {\n syntax: true,\n syntaxPopularFirst: false\n },\n parsers: { html: { deserializer: htmlDeserializerCodeBlock } },\n plugins: [BaseCodeLinePlugin, BaseCodeSyntaxPlugin]\n}).overrideEditor(withCodeBlock);\nexport {\n BaseCodeBlockPlugin,\n BaseCodeLinePlugin,\n BaseCodeSyntaxPlugin,\n decorateCodeLine,\n deleteStartSpace,\n getCodeLineEntry,\n getIndentDepth,\n htmlDeserializerCodeBlock,\n htmlDeserializerCodeBlockStatic,\n indentCodeLine,\n insertCodeBlock,\n insertCodeLine,\n insertEmptyCodeBlock,\n isCodeBlockEmpty,\n isSelectionAtCodeBlockStart,\n outdentCodeLine,\n toggleCodeBlock,\n unwrapCodeBlock,\n withCodeBlock,\n withInsertDataCodeBlock,\n withInsertFragmentCodeBlock,\n withNormalizeCodeBlock\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseDatePlugin.ts\nimport { bindFirst, createSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/queries/isPointNextToNode.ts\nimport {\n PathApi\n} from \"@udecode/plate\";\nvar isPointNextToNode = (editor, options) => {\n let { at, nodeType, reverse = false } = options;\n if (!at) {\n at = editor.selection?.anchor;\n }\n if (!at) {\n throw new Error(\"No valid selection point found\");\n }\n const selectedRange = editor.api.range(at.path);\n const boundary = (() => {\n let isStart = false;\n let isEnd = false;\n if (editor.api.isStart(at, selectedRange)) {\n isStart = true;\n }\n if (editor.api.isEnd(at, selectedRange)) {\n isEnd = true;\n }\n if (isStart && isEnd) {\n return \"single\";\n }\n if (isStart) {\n return \"start\";\n }\n if (isEnd) {\n return \"end\";\n }\n return null;\n })();\n if (!boundary) return false;\n const adjacentPathFn = (path) => {\n try {\n if (reverse && boundary === \"start\") return PathApi.previous(path);\n if (!reverse && boundary === \"end\") return PathApi.next(path);\n if (boundary === \"single\") {\n return reverse ? PathApi.previous(path) : PathApi.next(path);\n }\n } catch (error) {\n return null;\n }\n };\n if (!adjacentPathFn) return false;\n const adjacentPath = adjacentPathFn(at.path);\n if (!adjacentPath) return false;\n const nextNodeEntry = editor.api.node(adjacentPath) ?? null;\n return !!(nextNodeEntry && nextNodeEntry[0].type === nodeType);\n};\n\n// src/lib/transforms/insertDate.ts\nvar insertDate = (editor, { date, ...options } = {}) => {\n editor.tf.insertNodes(\n [\n {\n children: [{ text: \"\" }],\n date: date ?? (/* @__PURE__ */ new Date()).toDateString(),\n type: editor.getType(BaseDatePlugin)\n },\n // FIXME: for not losing the editor focus\n {\n text: \" \"\n }\n ],\n options\n );\n};\n\n// src/lib/BaseDatePlugin.ts\nvar BaseDatePlugin = createSlatePlugin({\n key: \"date\",\n node: {\n isElement: true,\n isInline: true,\n isSelectable: false,\n isVoid: true\n },\n handlers: {}\n}).overrideEditor(({ editor, tf: { move }, type }) => ({\n transforms: {\n // check if cursor is next to a date node. if it is set the unit:'offset'\n // Default left/right behavior is unit:'character'.\n // This fails to distinguish between two cursor positions, such as\n // foo vs foo.\n // Here we modify the behavior to unit:'offset'.\n // This lets the user step into and out of the inline without stepping over characters.\n // You may wish to customize this further to only use unit:'offset' in specific cases.\n move: (options) => {\n const {\n distance = 1,\n reverse = false,\n unit = \"character\"\n } = options || {};\n if (unit === \"character\" && distance === 1 && editor.selection && !editor.api.isExpanded()) {\n const isNextDate = isPointNextToNode(editor, {\n nodeType: type,\n reverse\n });\n if (isNextDate) {\n return move({\n ...options,\n unit: \"offset\"\n });\n }\n }\n return move(options);\n }\n }\n})).extendEditorTransforms(({ editor }) => ({\n insert: {\n date: bindFirst(insertDate, editor)\n }\n}));\nexport {\n BaseDatePlugin,\n insertDate,\n isPointNextToNode\n};\n//# sourceMappingURL=index.mjs.map","// src/react/DatePlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseDatePlugin.ts\nimport { bindFirst, createSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/queries/isPointNextToNode.ts\nimport {\n PathApi\n} from \"@udecode/plate\";\nvar isPointNextToNode = (editor, options) => {\n let { at, nodeType, reverse = false } = options;\n if (!at) {\n at = editor.selection?.anchor;\n }\n if (!at) {\n throw new Error(\"No valid selection point found\");\n }\n const selectedRange = editor.api.range(at.path);\n const boundary = (() => {\n let isStart = false;\n let isEnd = false;\n if (editor.api.isStart(at, selectedRange)) {\n isStart = true;\n }\n if (editor.api.isEnd(at, selectedRange)) {\n isEnd = true;\n }\n if (isStart && isEnd) {\n return \"single\";\n }\n if (isStart) {\n return \"start\";\n }\n if (isEnd) {\n return \"end\";\n }\n return null;\n })();\n if (!boundary) return false;\n const adjacentPathFn = (path) => {\n try {\n if (reverse && boundary === \"start\") return PathApi.previous(path);\n if (!reverse && boundary === \"end\") return PathApi.next(path);\n if (boundary === \"single\") {\n return reverse ? PathApi.previous(path) : PathApi.next(path);\n }\n } catch (error) {\n return null;\n }\n };\n if (!adjacentPathFn) return false;\n const adjacentPath = adjacentPathFn(at.path);\n if (!adjacentPath) return false;\n const nextNodeEntry = editor.api.node(adjacentPath) ?? null;\n return !!(nextNodeEntry && nextNodeEntry[0].type === nodeType);\n};\n\n// src/lib/transforms/insertDate.ts\nvar insertDate = (editor, { date, ...options } = {}) => {\n editor.tf.insertNodes(\n [\n {\n children: [{ text: \"\" }],\n date: date ?? (/* @__PURE__ */ new Date()).toDateString(),\n type: editor.getType(BaseDatePlugin)\n },\n // FIXME: for not losing the editor focus\n {\n text: \" \"\n }\n ],\n options\n );\n};\n\n// src/lib/BaseDatePlugin.ts\nvar BaseDatePlugin = createSlatePlugin({\n key: \"date\",\n node: {\n isElement: true,\n isInline: true,\n isSelectable: false,\n isVoid: true\n },\n handlers: {}\n}).overrideEditor(({ editor, tf: { move }, type }) => ({\n transforms: {\n // check if cursor is next to a date node. if it is set the unit:'offset'\n // Default left/right behavior is unit:'character'.\n // This fails to distinguish between two cursor positions, such as\n // foo vs foo.\n // Here we modify the behavior to unit:'offset'.\n // This lets the user step into and out of the inline without stepping over characters.\n // You may wish to customize this further to only use unit:'offset' in specific cases.\n move: (options) => {\n const {\n distance = 1,\n reverse = false,\n unit = \"character\"\n } = options || {};\n if (unit === \"character\" && distance === 1 && editor.selection && !editor.api.isExpanded()) {\n const isNextDate = isPointNextToNode(editor, {\n nodeType: type,\n reverse\n });\n if (isNextDate) {\n return move({\n ...options,\n unit: \"offset\"\n });\n }\n }\n return move(options);\n }\n }\n})).extendEditorTransforms(({ editor }) => ({\n insert: {\n date: bindFirst(insertDate, editor)\n }\n}));\n\n// src/react/DatePlugin.tsx\nvar DatePlugin = toPlatePlugin(BaseDatePlugin);\nexport {\n DatePlugin\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseColumnPlugin.ts\nimport { createSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/withColumn.ts\nimport { ElementApi } from \"@udecode/plate\";\nvar withColumn = ({\n editor,\n tf: { deleteBackward, normalizeNode }\n}) => ({\n transforms: {\n deleteBackward(unit) {\n if (editor.api.isCollapsed()) {\n const entry = editor.api.above({\n match: (n) => ElementApi.isElement(n) && n.type === BaseColumnItemPlugin.key\n });\n if (entry) {\n const [node, path] = entry;\n if (node.children.length > 1) return deleteBackward(unit);\n const isStart = editor.api.isStart(editor.selection?.anchor, path);\n if (isStart) return;\n }\n }\n deleteBackward(unit);\n },\n normalizeNode([n, path]) {\n if (ElementApi.isElement(n) && n.type === BaseColumnPlugin.key) {\n const node = n;\n if (!node.children.some(\n (child) => ElementApi.isElement(child) && child.type === editor.getType(BaseColumnItemPlugin)\n )) {\n editor.tf.removeNodes({ at: path });\n return;\n }\n if (node.children.length < 2) {\n editor.tf.withoutNormalizing(() => {\n editor.tf.unwrapNodes({ at: path });\n editor.tf.unwrapNodes({ at: path });\n });\n return;\n }\n editor.tf.withoutNormalizing(() => {\n const totalColumns = node.children.length;\n let widths = node.children.map((col) => {\n const parsed = Number.parseFloat(col.width);\n return Number.isNaN(parsed) ? 0 : parsed;\n });\n const sum = widths.reduce((acc, w) => acc + w, 0);\n if (sum !== 100) {\n const diff = 100 - sum;\n const adjustment = diff / totalColumns;\n widths = widths.map((w) => w + adjustment);\n widths.forEach((w, i) => {\n const columnPath = path.concat([i]);\n editor.tf.setNodes(\n { width: `${w}%` },\n { at: columnPath }\n );\n });\n }\n });\n }\n if (ElementApi.isElement(n) && n.type === BaseColumnItemPlugin.key) {\n const node = n;\n if (node.children.length === 0) {\n editor.tf.removeNodes({ at: path });\n return;\n }\n }\n return normalizeNode([n, path]);\n }\n }\n});\n\n// src/lib/BaseColumnPlugin.ts\nvar BaseColumnItemPlugin = createSlatePlugin({\n key: \"column\",\n node: {\n isElement: true\n }\n}).overrideEditor(withColumn);\nvar BaseColumnPlugin = createSlatePlugin({\n key: \"column_group\",\n node: {\n // dangerouslyAllowAttributes: [keyToDataAttribute('layout')],\n isElement: true\n // toDataAttributes: ({ node }) => {\n // if (node.layout as TColumnGroupElement['layout']) {\n // return {\n // [keyToDataAttribute('layout')]: JSON.stringify(node.layout),\n // };\n // }\n // },\n },\n parsers: {\n html: {\n deserializer: {\n // toNodeProps: ({ element }) => {\n // const dangerouslyLayoutString = element.getAttribute(\n // keyToDataAttribute('layout')\n // );\n // if (!dangerouslyLayoutString) return;\n // const layout = JSON.parse(dangerouslyLayoutString);\n // if (!Array.isArray(layout)) return;\n // return {\n // layout: layout,\n // };\n // },\n }\n }\n },\n plugins: [BaseColumnItemPlugin]\n});\n\n// src/lib/transforms/insertColumn.ts\nvar insertColumn = (editor, { width = \"33%\", ...options } = {}) => {\n editor.tf.insertNodes(\n {\n children: [editor.api.create.block()],\n type: BaseColumnItemPlugin.key,\n width\n },\n options\n );\n};\n\n// src/lib/transforms/insertColumnGroup.ts\nvar insertColumnGroup = (editor, {\n columns = 2,\n select: selectProp,\n ...options\n} = {}) => {\n const width = 100 / columns;\n editor.tf.withoutNormalizing(() => {\n editor.tf.insertNodes(\n {\n children: Array(columns).fill(null).map(() => ({\n children: [editor.api.create.block()],\n type: BaseColumnItemPlugin.key,\n width: `${width}%`\n })),\n type: BaseColumnPlugin.key\n },\n options\n );\n if (selectProp) {\n const entry = editor.api.node({\n at: options.at,\n match: { type: editor.getType(BaseColumnPlugin) }\n });\n if (!entry) return;\n editor.tf.select(entry[1].concat([0]));\n }\n });\n};\n\n// src/lib/transforms/moveMiddleColumn.ts\nimport {\n NodeApi\n} from \"@udecode/plate\";\nvar moveMiddleColumn = (editor, [node, path], options) => {\n const direction = options?.direction || \"left\";\n if (direction === \"left\") {\n const DESCENDANT_PATH = [1];\n const middleChildNode = NodeApi.get(node, DESCENDANT_PATH);\n if (!middleChildNode) return false;\n const isEmpty = NodeApi.string(middleChildNode) === \"\";\n const middleChildPathRef = editor.api.pathRef(path.concat(DESCENDANT_PATH));\n if (isEmpty) {\n editor.tf.removeNodes({ at: middleChildPathRef.current });\n return false;\n }\n const firstNode = NodeApi.descendant(node, [0]);\n if (!firstNode) return false;\n const firstLast = path.concat([0, firstNode.children.length]);\n editor.tf.moveNodes({ at: middleChildPathRef.current, to: firstLast });\n editor.tf.unwrapNodes({ at: middleChildPathRef.current });\n middleChildPathRef.unref();\n }\n};\n\n// src/lib/transforms/resizeColumn.ts\nfunction resizeColumn(columnGroup, columnId, newWidthPercent) {\n const widths = columnGroup.children.map(\n (col) => col.width ? Number.parseFloat(col.width) : 0\n );\n const totalBefore = widths.reduce((sum, w) => sum + w, 0);\n if (totalBefore === 0) {\n const evenWidth = 100 / columnGroup.children.length;\n columnGroup.children.forEach((col) => {\n col.width = `${evenWidth}%`;\n });\n return columnGroup;\n }\n const index = columnGroup.children.findIndex((col) => col.id === columnId);\n if (index === -1) return columnGroup;\n widths[index] = newWidthPercent;\n let totalAfter = widths.reduce((sum, w) => sum + w, 0);\n const diff = 100 - totalAfter;\n if (diff !== 0) {\n const siblingIndex = (index + 1) % widths.length;\n widths[siblingIndex] = Math.max(widths[siblingIndex] + diff, 0);\n }\n totalAfter = widths.reduce((sum, w) => sum + w, 0);\n if (Math.round(totalAfter) !== 100) {\n const scale = 100 / totalAfter;\n for (let i = 0; i < widths.length; i++) {\n widths[i] = Number.parseFloat((widths[i] * scale).toFixed(2));\n }\n }\n columnGroup.children.forEach((col, i) => {\n col.width = `${widths[i]}%`;\n });\n return columnGroup;\n}\n\n// src/lib/transforms/setColumns.ts\nimport { NodeApi as NodeApi2 } from \"@udecode/plate\";\n\n// src/lib/utils/columnsToWidths.ts\nvar columnsToWidths = ({ columns = 2 } = {}) => Array(columns).fill(null).map(() => `${100 / columns}%`);\n\n// src/lib/transforms/setColumns.ts\nvar setColumns = (editor, {\n at,\n columns,\n widths\n}) => {\n editor.tf.withoutNormalizing(() => {\n if (!at) return;\n widths = widths ?? columnsToWidths({ columns });\n if (widths.length === 0) {\n return;\n }\n const columnGroup = editor.api.node(at);\n if (!columnGroup) return;\n const [{ children }, path] = columnGroup;\n const currentCount = children.length;\n const targetCount = widths.length;\n if (currentCount === targetCount) {\n widths.forEach((width, i) => {\n editor.tf.setNodes({ width }, { at: path.concat([i]) });\n });\n return;\n }\n if (targetCount > currentCount) {\n const columnsToAdd = targetCount - currentCount;\n const insertPath = path.concat([currentCount]);\n const newColumns = Array(columnsToAdd).fill(null).map((_, i) => ({\n children: [editor.api.create.block()],\n type: editor.getType(BaseColumnItemPlugin),\n width: widths[currentCount + i] || `${100 / targetCount}%`\n }));\n editor.tf.insertNodes(newColumns, { at: insertPath });\n widths.forEach((width, i) => {\n editor.tf.setNodes({ width }, { at: path.concat([i]) });\n });\n return;\n }\n if (targetCount < currentCount) {\n const keepColumnIndex = targetCount - 1;\n const keepColumnPath = path.concat([keepColumnIndex]);\n const keepColumnNode = NodeApi2.get(\n editor,\n keepColumnPath\n );\n if (!keepColumnNode) return;\n const to = keepColumnPath.concat([keepColumnNode.children.length]);\n for (let i = currentCount - 1; i > keepColumnIndex; i--) {\n const columnPath = path.concat([i]);\n const columnEntry = editor.api.node(columnPath);\n if (!columnEntry) continue;\n editor.tf.moveNodes({\n at: columnEntry[1],\n children: true,\n to\n });\n }\n for (let i = currentCount - 1; i > keepColumnIndex; i--) {\n editor.tf.removeNodes({ at: path.concat([i]) });\n }\n widths.forEach((width, i) => {\n editor.tf.setNodes({ width }, { at: path.concat([i]) });\n });\n }\n });\n};\n\n// src/lib/transforms/toggleColumnGroup.ts\nvar toggleColumnGroup = (editor, {\n at,\n columns = 2,\n widths\n} = {}) => {\n const entry = editor.api.block({ at });\n const columnGroupEntry = editor.api.block({\n above: true,\n at,\n match: { type: editor.getType(BaseColumnPlugin) }\n });\n if (!entry) return;\n const [node, path] = entry;\n if (columnGroupEntry) {\n setColumns(editor, { at: columnGroupEntry[1], columns, widths });\n } else {\n const columnWidths = widths || columnsToWidths({ columns });\n const nodes = {\n children: Array(columns).fill(null).map((_, index) => ({\n children: [index === 0 ? node : editor.api.create.block()],\n type: BaseColumnItemPlugin.key,\n width: columnWidths[index]\n })),\n type: BaseColumnPlugin.key\n };\n editor.tf.replaceNodes(nodes, {\n at: path\n });\n editor.tf.select(editor.api.start(path.concat([0])));\n }\n};\nexport {\n BaseColumnItemPlugin,\n BaseColumnPlugin,\n columnsToWidths,\n insertColumn,\n insertColumnGroup,\n moveMiddleColumn,\n resizeColumn,\n setColumns,\n toggleColumnGroup,\n withColumn\n};\n//# sourceMappingURL=index.mjs.map","// src/react/ColumnPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseColumnPlugin.ts\nimport { createSlatePlugin } from \"@udecode/plate\";\n\n// src/lib/withColumn.ts\nimport { ElementApi } from \"@udecode/plate\";\nvar withColumn = ({\n editor,\n tf: { deleteBackward, normalizeNode }\n}) => ({\n transforms: {\n deleteBackward(unit) {\n if (editor.api.isCollapsed()) {\n const entry = editor.api.above({\n match: (n) => ElementApi.isElement(n) && n.type === BaseColumnItemPlugin.key\n });\n if (entry) {\n const [node, path] = entry;\n if (node.children.length > 1) return deleteBackward(unit);\n const isStart = editor.api.isStart(editor.selection?.anchor, path);\n if (isStart) return;\n }\n }\n deleteBackward(unit);\n },\n normalizeNode([n, path]) {\n if (ElementApi.isElement(n) && n.type === BaseColumnPlugin.key) {\n const node = n;\n if (!node.children.some(\n (child) => ElementApi.isElement(child) && child.type === editor.getType(BaseColumnItemPlugin)\n )) {\n editor.tf.removeNodes({ at: path });\n return;\n }\n if (node.children.length < 2) {\n editor.tf.withoutNormalizing(() => {\n editor.tf.unwrapNodes({ at: path });\n editor.tf.unwrapNodes({ at: path });\n });\n return;\n }\n editor.tf.withoutNormalizing(() => {\n const totalColumns = node.children.length;\n let widths = node.children.map((col) => {\n const parsed = Number.parseFloat(col.width);\n return Number.isNaN(parsed) ? 0 : parsed;\n });\n const sum = widths.reduce((acc, w) => acc + w, 0);\n if (sum !== 100) {\n const diff = 100 - sum;\n const adjustment = diff / totalColumns;\n widths = widths.map((w) => w + adjustment);\n widths.forEach((w, i) => {\n const columnPath = path.concat([i]);\n editor.tf.setNodes(\n { width: `${w}%` },\n { at: columnPath }\n );\n });\n }\n });\n }\n if (ElementApi.isElement(n) && n.type === BaseColumnItemPlugin.key) {\n const node = n;\n if (node.children.length === 0) {\n editor.tf.removeNodes({ at: path });\n return;\n }\n }\n return normalizeNode([n, path]);\n }\n }\n});\n\n// src/lib/BaseColumnPlugin.ts\nvar BaseColumnItemPlugin = createSlatePlugin({\n key: \"column\",\n node: {\n isElement: true\n }\n}).overrideEditor(withColumn);\nvar BaseColumnPlugin = createSlatePlugin({\n key: \"column_group\",\n node: {\n // dangerouslyAllowAttributes: [keyToDataAttribute('layout')],\n isElement: true\n // toDataAttributes: ({ node }) => {\n // if (node.layout as TColumnGroupElement['layout']) {\n // return {\n // [keyToDataAttribute('layout')]: JSON.stringify(node.layout),\n // };\n // }\n // },\n },\n parsers: {\n html: {\n deserializer: {\n // toNodeProps: ({ element }) => {\n // const dangerouslyLayoutString = element.getAttribute(\n // keyToDataAttribute('layout')\n // );\n // if (!dangerouslyLayoutString) return;\n // const layout = JSON.parse(dangerouslyLayoutString);\n // if (!Array.isArray(layout)) return;\n // return {\n // layout: layout,\n // };\n // },\n }\n }\n },\n plugins: [BaseColumnItemPlugin]\n});\n\n// src/react/onKeyDownColumn.ts\nimport { PathApi, isHotkey } from \"@udecode/plate\";\nvar onKeyDownColumn = ({ editor, event }) => {\n if (event.defaultPrevented) return;\n const at = editor.selection;\n if (isHotkey(\"mod+a\", event) && at) {\n const aboveNode = editor.api.above();\n const ancestorNode = editor.api.block({ highest: true });\n if (!ancestorNode) return;\n if (!aboveNode) return;\n const [node] = ancestorNode;\n if (node.type !== ColumnPlugin.key) return;\n const [, abovePath] = aboveNode;\n let targetPath = PathApi.parent(abovePath);\n if (editor.api.isAt({ block: true, end: true, start: true })) {\n targetPath = PathApi.parent(targetPath);\n }\n if (targetPath.length === 0) return;\n editor.tf.select(targetPath);\n event.preventDefault();\n event.stopPropagation();\n }\n};\n\n// src/react/ColumnPlugin.tsx\nvar ColumnItemPlugin = toPlatePlugin(BaseColumnItemPlugin);\nvar ColumnPlugin = toPlatePlugin(BaseColumnPlugin, {\n plugins: [ColumnItemPlugin],\n handlers: {\n onKeyDown: onKeyDownColumn\n }\n});\n\n// src/react/hooks/useDebouncePopoverOpen.ts\nimport {\n useEditorSelector,\n useReadOnly,\n useSelected\n} from \"@udecode/plate/react\";\nvar useDebouncePopoverOpen = () => {\n const readOnly = useReadOnly();\n const selected = useSelected();\n const selectionCollapsed = useEditorSelector(\n (editor) => editor.api.isCollapsed(),\n []\n );\n return !readOnly && selected && selectionCollapsed;\n};\nexport {\n ColumnItemPlugin,\n ColumnPlugin,\n onKeyDownColumn,\n useDebouncePopoverOpen\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseEquationPlugin.ts\nimport { bindFirst as bindFirst2, createSlatePlugin as createSlatePlugin2 } from \"@udecode/plate\";\n\n// src/lib/transforms/insertEquation.ts\nvar insertEquation = (editor, options) => {\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n texExpression: \"\",\n type: editor.getType(BaseEquationPlugin)\n },\n options\n );\n};\n\n// src/lib/BaseInlineEquationPlugin.ts\nimport { bindFirst, createSlatePlugin } from \"@udecode/plate\";\nvar BaseInlineEquationPlugin = createSlatePlugin({\n key: \"inline_equation\",\n node: { isElement: true, isInline: true, isVoid: true }\n}).extendEditorTransforms(({ editor }) => ({\n insert: {\n inlineEquation: bindFirst(insertInlineEquation, editor)\n }\n}));\n\n// src/lib/transforms/insertInlineEquation.ts\nvar insertInlineEquation = (editor, texExpression, options) => {\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n texExpression: texExpression ?? editor.api.string(editor.selection),\n type: editor.getType(BaseInlineEquationPlugin)\n },\n options\n );\n};\n\n// src/lib/BaseEquationPlugin.ts\nimport \"katex/dist/katex.min.css\";\nvar BaseEquationPlugin = createSlatePlugin2({\n key: \"equation\",\n node: { isElement: true, isVoid: true }\n}).extendEditorTransforms(({ editor }) => ({\n insert: {\n equation: bindFirst2(insertEquation, editor)\n }\n}));\n\n// src/lib/utils/getEquationHtml.ts\nimport katex from \"katex\";\nvar getEquationHtml = ({\n element,\n options\n}) => katex.renderToString(element.texExpression, options);\nexport {\n BaseEquationPlugin,\n BaseInlineEquationPlugin,\n getEquationHtml,\n insertEquation,\n insertInlineEquation\n};\n//# sourceMappingURL=index.mjs.map","// src/react/EquationPlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseEquationPlugin.ts\nimport { bindFirst as bindFirst2, createSlatePlugin as createSlatePlugin2 } from \"@udecode/plate\";\n\n// src/lib/transforms/insertEquation.ts\nvar insertEquation = (editor, options) => {\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n texExpression: \"\",\n type: editor.getType(BaseEquationPlugin)\n },\n options\n );\n};\n\n// src/lib/BaseInlineEquationPlugin.ts\nimport { bindFirst, createSlatePlugin } from \"@udecode/plate\";\nvar BaseInlineEquationPlugin = createSlatePlugin({\n key: \"inline_equation\",\n node: { isElement: true, isInline: true, isVoid: true }\n}).extendEditorTransforms(({ editor }) => ({\n insert: {\n inlineEquation: bindFirst(insertInlineEquation, editor)\n }\n}));\n\n// src/lib/transforms/insertInlineEquation.ts\nvar insertInlineEquation = (editor, texExpression, options) => {\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n texExpression: texExpression ?? editor.api.string(editor.selection),\n type: editor.getType(BaseInlineEquationPlugin)\n },\n options\n );\n};\n\n// src/lib/BaseEquationPlugin.ts\nimport \"katex/dist/katex.min.css\";\nvar BaseEquationPlugin = createSlatePlugin2({\n key: \"equation\",\n node: { isElement: true, isVoid: true }\n}).extendEditorTransforms(({ editor }) => ({\n insert: {\n equation: bindFirst2(insertEquation, editor)\n }\n}));\n\n// src/react/EquationPlugin.tsx\nvar EquationPlugin = toPlatePlugin(BaseEquationPlugin);\n\n// src/react/InlineEquationPlugin.tsx\nimport { toPlatePlugin as toPlatePlugin2 } from \"@udecode/plate/react\";\nvar InlineEquationPlugin = toPlatePlugin2(BaseInlineEquationPlugin);\n\n// src/react/hooks/useEquationElement.ts\nimport React from \"react\";\nimport katex from \"katex\";\nvar useEquationElement = ({\n element,\n katexRef,\n options\n}) => {\n React.useEffect(() => {\n if (!katexRef.current) return;\n katex.render(element.texExpression, katexRef.current, options);\n }, [element.texExpression]);\n};\n\n// src/react/hooks/useEquationInput.ts\nimport React2, { useEffect, useRef } from \"react\";\nimport { isHotkey } from \"@udecode/plate\";\nimport { useEditorRef, useElement } from \"@udecode/plate/react\";\nvar useEquationInput = ({\n isInline,\n open,\n onClose\n}) => {\n const editor = useEditorRef();\n const element = useElement();\n const inputRef = useRef(null);\n const [expressionInput, setExpressionInput] = React2.useState(\n element.texExpression\n );\n const initialExpressionRef = useRef(element.texExpression);\n useEffect(() => {\n if (open) {\n setTimeout(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n if (isInline) {\n initialExpressionRef.current = element.texExpression;\n }\n }\n }, 0);\n }\n }, [open]);\n useEffect(() => {\n const setExpression = () => {\n editor.tf.setNodes(\n {\n texExpression: expressionInput || \"\"\n },\n { at: element }\n );\n };\n isInline ? editor.tf.withMerging(setExpression) : setExpression();\n }, [expressionInput]);\n const onSubmit = () => {\n onClose?.();\n };\n const onDismiss = () => {\n if (isInline) {\n editor.tf.setNodes(\n {\n texExpression: initialExpressionRef.current\n },\n { at: element }\n );\n }\n onClose?.();\n };\n return {\n props: {\n value: expressionInput,\n onChange: (e) => {\n setExpressionInput(e.target.value);\n },\n onKeyDown: (e) => {\n if (isHotkey(\"enter\")(e)) {\n e.preventDefault();\n onSubmit();\n } else if (isHotkey(\"escape\")(e)) {\n e.preventDefault();\n onDismiss();\n }\n if (isInline) {\n const { selectionEnd, selectionStart, value } = e.target;\n if (selectionStart === 0 && selectionEnd === 0 && isHotkey(\"ArrowLeft\")(e)) {\n editor.tf.select(element, {\n previous: true\n });\n }\n if (selectionEnd === value.length && selectionStart === value.length && isHotkey(\"ArrowRight\")(e)) {\n editor.tf.select(element, { next: true });\n }\n }\n }\n },\n ref: inputRef,\n onDismiss,\n onSubmit\n };\n};\nexport {\n EquationPlugin,\n InlineEquationPlugin,\n useEquationElement,\n useEquationInput\n};\n//# sourceMappingURL=index.mjs.map","// src/lib/BaseAudioPlugin.ts\nimport { createSlatePlugin } from \"@udecode/plate\";\nvar BaseAudioPlugin = createSlatePlugin({\n key: \"audio\",\n node: { isElement: true, isVoid: true }\n});\n\n// src/lib/BaseFilePlugin.ts\nimport { createSlatePlugin as createSlatePlugin2 } from \"@udecode/plate\";\nvar BaseFilePlugin = createSlatePlugin2({\n key: \"file\",\n node: { isElement: true, isVoid: true }\n});\n\n// src/lib/BaseVideoPlugin.ts\nimport { createSlatePlugin as createSlatePlugin3 } from \"@udecode/plate\";\nvar BaseVideoPlugin = createSlatePlugin3({\n key: \"video\",\n node: {\n dangerouslyAllowAttributes: [\"width\", \"height\"],\n isElement: true,\n isVoid: true\n }\n});\n\n// src/lib/image/BaseImagePlugin.ts\nimport {\n bindFirst,\n createTSlatePlugin,\n isSlatePluginElement\n} from \"@udecode/plate\";\n\n// src/lib/image/transforms/insertImage.ts\nvar insertImage = (editor, url, options = {}) => {\n const text = { text: \"\" };\n const image = {\n children: [text],\n type: editor.getType(BaseImagePlugin),\n url\n };\n editor.tf.insertNodes(image, {\n nextBlock: true,\n ...options\n });\n};\n\n// src/lib/image/transforms/insertImageFromFiles.ts\nvar insertImageFromFiles = (editor, files, options = {}) => {\n for (const file of files) {\n const reader = new FileReader();\n const [mime] = file.type.split(\"/\");\n if (mime === \"image\") {\n reader.addEventListener(\"load\", async () => {\n if (!reader.result) {\n return;\n }\n const uploadImage = editor.getOptions(BaseImagePlugin).uploadImage;\n const uploadedUrl = uploadImage ? await uploadImage(reader.result) : reader.result;\n insertImage(editor, uploadedUrl, options);\n });\n reader.readAsDataURL(file);\n }\n }\n};\n\n// src/lib/image/utils/isImageUrl.ts\nimport { isUrl } from \"@udecode/plate\";\nvar imageExtensions = /* @__PURE__ */ new Set([\n \"3dv\",\n \"PI1\",\n \"PI2\",\n \"PI3\",\n \"ai\",\n \"amf\",\n \"art\",\n \"art\",\n \"ase\",\n \"awg\",\n \"blp\",\n \"bmp\",\n \"bw\",\n \"bw\",\n \"cd5\",\n \"cdr\",\n \"cgm\",\n \"cit\",\n \"cmx\",\n \"cpt\",\n \"cr2\",\n \"cur\",\n \"cut\",\n \"dds\",\n \"dib\",\n \"djvu\",\n \"dxf\",\n \"e2d\",\n \"ecw\",\n \"egt\",\n \"egt\",\n \"emf\",\n \"eps\",\n \"exif\",\n \"fs\",\n \"gbr\",\n \"gif\",\n \"gpl\",\n \"grf\",\n \"hdp\",\n \"icns\",\n \"ico\",\n \"iff\",\n \"iff\",\n \"int\",\n \"int\",\n \"inta\",\n \"jfif\",\n \"jng\",\n \"jp2\",\n \"jpeg\",\n \"jpg\",\n \"jps\",\n \"jxr\",\n \"lbm\",\n \"lbm\",\n \"liff\",\n \"max\",\n \"miff\",\n \"mng\",\n \"msp\",\n \"nitf\",\n \"nrrd\",\n \"odg\",\n \"ota\",\n \"pam\",\n \"pbm\",\n \"pc1\",\n \"pc2\",\n \"pc3\",\n \"pcf\",\n \"pct\",\n \"pcx\",\n \"pcx\",\n \"pdd\",\n \"pdn\",\n \"pgf\",\n \"pgm\",\n \"pict\",\n \"png\",\n \"pnm\",\n \"pns\",\n \"ppm\",\n \"psb\",\n \"psd\",\n \"psp\",\n \"px\",\n \"pxm\",\n \"pxr\",\n \"qfx\",\n \"ras\",\n \"raw\",\n \"rgb\",\n \"rgb\",\n \"rgba\",\n \"rle\",\n \"sct\",\n \"sgi\",\n \"sgi\",\n \"sid\",\n \"stl\",\n \"sun\",\n \"svg\",\n \"sxd\",\n \"tga\",\n \"tga\",\n \"tif\",\n \"tiff\",\n \"v2d\",\n \"vnd\",\n \"vrml\",\n \"vtf\",\n \"wdp\",\n \"webp\",\n \"wmf\",\n \"x3d\",\n \"xar\",\n \"xbm\",\n \"xcf\",\n \"xpm\"\n]);\nvar isImageUrl = (url) => {\n if (!isUrl(url)) return false;\n const ext = new URL(url).pathname.split(\".\").pop();\n return imageExtensions.has(ext);\n};\n\n// src/lib/image/withImageEmbed.ts\nvar withImageEmbed = ({\n editor,\n getOptions,\n tf: { insertData }\n}) => ({\n transforms: {\n insertData(dataTransfer) {\n if (getOptions().disableEmbedInsert) {\n return insertData(dataTransfer);\n }\n const text = dataTransfer.getData(\"text/plain\");\n if (isImageUrl(text)) {\n insertImage(editor, text);\n return;\n }\n insertData(dataTransfer);\n }\n }\n});\n\n// src/lib/image/withImageUpload.ts\nimport {\n getInjectedPlugins,\n pipeInsertDataQuery\n} from \"@udecode/plate\";\nvar withImageUpload = ({\n editor,\n getOptions,\n plugin,\n tf: { insertData }\n}) => ({\n transforms: {\n insertData(dataTransfer) {\n if (getOptions().disableUploadInsert) {\n return insertData(dataTransfer);\n }\n const text = dataTransfer.getData(\"text/plain\");\n const { files } = dataTransfer;\n if (!text && files && files.length > 0) {\n const injectedPlugins = getInjectedPlugins(editor, plugin);\n if (!pipeInsertDataQuery(editor, injectedPlugins, {\n data: text,\n dataTransfer\n })) {\n return insertData(dataTransfer);\n }\n insertImageFromFiles(editor, files);\n } else {\n return insertData(dataTransfer);\n }\n }\n }\n});\n\n// src/lib/image/BaseImagePlugin.ts\nvar BaseImagePlugin = createTSlatePlugin({\n key: \"img\",\n node: {\n dangerouslyAllowAttributes: [\"alt\", \"width\", \"height\"],\n isElement: true,\n isVoid: true\n }\n}).overrideEditor(withImageUpload).overrideEditor(withImageEmbed).extendEditorTransforms(({ editor }) => ({\n insert: {\n imageFromFiles: bindFirst(insertImageFromFiles, editor)\n }\n})).extend(({ plugin }) => ({\n parsers: {\n html: {\n deserializer: {\n parse: ({ element, type }) => {\n if (isSlatePluginElement(element, type)) {\n return;\n }\n return {\n type: plugin.node.type,\n url: element.getAttribute(\"src\")\n };\n },\n rules: [\n {\n validNodeName: \"IMG\"\n }\n ]\n }\n }\n }\n}));\n\n// src/lib/media/insertMedia.ts\nvar insertMedia = async (editor, {\n getUrl,\n type = editor.getType(BaseImagePlugin),\n ...options\n} = {}) => {\n const url = getUrl ? await getUrl() : window.prompt(\n `Enter the URL of the ${type === BaseImagePlugin.key ? BaseImagePlugin.key : BaseMediaEmbedPlugin.key}`\n );\n if (!url) return;\n if (type === editor.getType(BaseImagePlugin)) {\n insertImage(editor, url, options);\n } else {\n insertMediaEmbed(editor, { url }, options);\n }\n};\n\n// src/lib/media/parseMediaUrl.ts\nvar allowedProtocols = /* @__PURE__ */ new Set([\"http:\", \"https:\"]);\nvar parseMediaUrl = (url, {\n urlParsers\n}) => {\n const embed = (() => {\n for (const parser of urlParsers) {\n const data = parser(url);\n if (data) {\n return data;\n }\n }\n })();\n if (embed?.url) {\n try {\n const { protocol } = new URL(embed.url);\n if (!allowedProtocols.has(protocol)) {\n return void 0;\n }\n } catch {\n console.warn(\"Could not parse URL: \" + embed.url);\n return void 0;\n }\n }\n return embed;\n};\n\n// src/lib/media-embed/BaseMediaEmbedPlugin.ts\nimport { createTSlatePlugin as createTSlatePlugin2 } from \"@udecode/plate\";\n\n// src/lib/media-embed/parseIframeUrl.ts\nvar parseIframeUrl = (url) => {\n if (!url.startsWith(\"http\")) {\n const regexMatchSrc = /src=\".*?\"/;\n const regexGroupQuotes = /\"([^\"]*)\"/;\n const src = regexMatchSrc.exec(url)?.[0];\n const returnString = src?.match(regexGroupQuotes)?.[1];\n if (returnString) {\n url = returnString;\n }\n }\n return url;\n};\n\n// src/lib/media-embed/BaseMediaEmbedPlugin.ts\nvar BaseMediaEmbedPlugin = createTSlatePlugin2({\n key: \"media_embed\",\n node: { isElement: true, isVoid: true },\n options: {\n transformUrl: parseIframeUrl\n }\n}).extend(({ type }) => ({\n parsers: {\n html: {\n deserializer: {\n parse: ({ element }) => {\n const url = element.getAttribute(\"src\");\n if (url) {\n return {\n type,\n url\n };\n }\n },\n rules: [\n {\n validNodeName: \"IFRAME\"\n }\n ]\n }\n }\n }\n}));\n\n// src/lib/media-embed/parseTwitterUrl.ts\nvar twitterRegex = /^https?:\\/\\/(?:twitter|x)\\.com\\/(?:#!\\/)?(\\w+)\\/status(es)?\\/(\\d+)/;\nvar TWITTER_ID_INDEX = 3;\nvar parseTwitterUrl = (url) => {\n const match = twitterRegex.exec(url);\n if (match) {\n return {\n id: match[TWITTER_ID_INDEX],\n provider: \"twitter\",\n url\n };\n }\n};\n\n// src/lib/media-embed/parseVideoUrl.ts\nimport { isUrl as isUrl2 } from \"@udecode/plate\";\nimport videoParser from \"js-video-url-parser\";\nvar YOUTUBE_PREFIX = \"https://www.youtube.com/embed/\";\nvar VIMEO_PREFIX = \"https://player.vimeo.com/video/\";\nvar DAILYMOTION_PREFIX = \"https://www.dailymotion.com/embed/video/\";\nvar YOUKU_PREFIX = \"https://player.youku.com/embed/\";\nvar COUB_PREFIX = \"https://coub.com/embed/\";\nvar VIDEO_PROVIDERS = [\n \"youtube\",\n \"vimeo\",\n \"dailymotion\",\n \"youku\",\n \"coub\"\n];\nvar parseVideoUrl = (url) => {\n if (!isUrl2(url)) return;\n const videoData = videoParser.parse(url);\n if (videoData?.provider && videoData.id) {\n const { id, provider } = videoData;\n const providerUrls = {\n coub: `${COUB_PREFIX}${id}`,\n dailymotion: `${DAILYMOTION_PREFIX}${id}`,\n vimeo: `${VIMEO_PREFIX}${id}`,\n youku: `${YOUKU_PREFIX}${id}`,\n youtube: `${YOUTUBE_PREFIX}${id}`\n };\n return {\n id,\n provider,\n url: providerUrls[provider]\n };\n }\n};\n\n// src/lib/media-embed/transforms/insertMediaEmbed.ts\nvar insertMediaEmbed = (editor, { url = \"\" }, options = {}) => {\n if (!editor.selection) return;\n const selectionParentEntry = editor.api.parent(editor.selection);\n if (!selectionParentEntry) return;\n const [, path] = selectionParentEntry;\n editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n type: editor.getType(BaseMediaEmbedPlugin),\n url\n },\n {\n at: path,\n nextBlock: true,\n ...options\n }\n );\n};\n\n// src/lib/placeholder/BasePlaceholderPlugin.ts\nimport {\n bindFirst as bindFirst2,\n createTSlatePlugin as createTSlatePlugin3\n} from \"@udecode/plate\";\n\n// src/lib/placeholder/transforms/insertPlaceholder.ts\nvar insertPlaceholder = (editor, mediaType, options) => {\n editor.tf.withoutNormalizing(\n () => editor.tf.insertNodes(\n {\n children: [{ text: \"\" }],\n mediaType,\n type: editor.getType(BasePlaceholderPlugin)\n },\n options\n )\n );\n};\nvar insertImagePlaceholder = (editor, options) => insertPlaceholder(editor, BaseImagePlugin.key, options);\nvar insertVideoPlaceholder = (editor, options) => insertPlaceholder(editor, BaseVideoPlugin.key, options);\nvar insertAudioPlaceholder = (editor, options) => insertPlaceholder(editor, BaseAudioPlugin.key, options);\nvar insertFilePlaceholder = (editor, options) => insertPlaceholder(editor, BaseFilePlugin.key, options);\n\n// src/lib/placeholder/transforms/setMediaNode.ts\nvar setMediaNode = (editor, props, options) => editor.tf.setNodes(props, options);\n\n// src/lib/placeholder/BasePlaceholderPlugin.ts\nvar BasePlaceholderPlugin = createTSlatePlugin3({\n key: \"placeholder\",\n node: { isElement: true, isVoid: true }\n}).extendEditorTransforms(({ editor }) => ({\n insert: {\n audioPlaceholder: bindFirst2(insertAudioPlaceholder, editor),\n filePlaceholder: bindFirst2(insertFilePlaceholder, editor),\n imagePlaceholder: bindFirst2(insertImagePlaceholder, editor),\n videoPlaceholder: bindFirst2(insertVideoPlaceholder, editor)\n }\n}));\nexport {\n BaseAudioPlugin,\n BaseFilePlugin,\n BaseImagePlugin,\n BaseMediaEmbedPlugin,\n BasePlaceholderPlugin,\n BaseVideoPlugin,\n VIDEO_PROVIDERS,\n insertAudioPlaceholder,\n insertFilePlaceholder,\n insertImage,\n insertImageFromFiles,\n insertImagePlaceholder,\n insertMedia,\n insertMediaEmbed,\n insertPlaceholder,\n insertVideoPlaceholder,\n isImageUrl,\n parseIframeUrl,\n parseMediaUrl,\n parseTwitterUrl,\n parseVideoUrl,\n setMediaNode,\n withImageEmbed,\n withImageUpload\n};\n//# sourceMappingURL=index.mjs.map","// src/components/Resizable.tsx\nimport React2 from \"react\";\nimport { useEditorRef, useElement, usePath } from \"@udecode/plate/react\";\n\n// src/utils/isTouchEvent.ts\nvar isTouchEvent = (event) => \"touches\" in event;\n\n// src/utils/resizeLengthToRelative.ts\nvar resizeLengthToRelative = (length, parentLength) => {\n if (typeof length === \"number\") {\n return `${length / parentLength * 100}%`;\n }\n return length;\n};\n\n// src/utils/resizeLengthToStatic.ts\nvar resizeLengthToStatic = (length, parentLength) => {\n if (typeof length === \"string\") {\n return parentLength * Number.parseFloat(length) / 100;\n }\n return length;\n};\n\n// src/utils/resizeLengthClamp.ts\nvar resizeLengthClampStatic = (length, { max, min }) => {\n if (min !== void 0) {\n length = Math.max(length, min);\n }\n if (max !== void 0) {\n length = Math.min(length, max);\n }\n return length;\n};\nvar resizeLengthClamp = (length, parentLength, { max, min }) => {\n const staticLength = resizeLengthToStatic(length, parentLength);\n const clampedStaticLength = resizeLengthClampStatic(staticLength, {\n max: max === void 0 ? void 0 : resizeLengthToStatic(max, parentLength),\n min: min === void 0 ? void 0 : resizeLengthToStatic(min, parentLength)\n });\n switch (typeof length) {\n case \"number\": {\n return clampedStaticLength;\n }\n case \"string\": {\n return resizeLengthToRelative(clampedStaticLength, parentLength);\n }\n default: {\n throw new Error(\"Invalid length type\");\n }\n }\n};\n\n// src/components/ResizeHandle.tsx\nimport React from \"react\";\nimport {\n createAtomStore,\n createPrimitiveComponent,\n useReadOnly\n} from \"@udecode/plate/react\";\nvar initialState = {\n onResize: null\n};\nvar { ResizeHandleProvider, useResizeHandleStore } = createAtomStore(\n initialState,\n { name: \"resizeHandle\" }\n);\nvar useResizeHandleState = ({\n direction = \"left\",\n initialSize: _initialSize,\n onHover,\n onHoverEnd,\n onMouseDown,\n onResize: onResizeProp,\n onTouchStart\n}) => {\n const readOnly = useReadOnly();\n const onResizeStore = useResizeHandleStore().get.onResize();\n const onResize = onResizeProp ?? onResizeStore;\n const [isResizing, setIsResizing] = React.useState(false);\n const [initialPosition, setInitialPosition] = React.useState(0);\n const [initialSizeState, setInitialSize] = React.useState(0);\n const initialSize = _initialSize ?? initialSizeState;\n const isHorizontal = direction === \"left\" || direction === \"right\";\n React.useEffect(() => {\n if (!isResizing) return;\n const sendResizeEvent = (event, finished) => {\n const { clientX, clientY } = isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : event;\n const currentPosition = isHorizontal ? clientX : clientY;\n const delta = currentPosition - initialPosition;\n onResize({\n delta,\n direction,\n finished,\n initialSize\n });\n };\n const handleMouseMove = (event) => sendResizeEvent(event, false);\n const handleMouseUp = (event) => {\n setIsResizing(false);\n onHoverEnd?.();\n sendResizeEvent(event, true);\n };\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchmove\", handleMouseMove);\n window.addEventListener(\"touchend\", handleMouseUp);\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchmove\", handleMouseMove);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n }, [\n isResizing,\n initialPosition,\n initialSize,\n onResize,\n isHorizontal,\n onHoverEnd,\n direction\n ]);\n return {\n direction,\n initialPosition,\n initialSize,\n isHorizontal,\n isResizing,\n readOnly,\n setInitialPosition,\n setInitialSize,\n setIsResizing,\n onHover,\n onHoverEnd,\n onMouseDown,\n onResize,\n onTouchStart\n };\n};\nvar useResizeHandle = ({\n isHorizontal,\n isResizing,\n readOnly,\n setInitialPosition,\n setInitialSize,\n setIsResizing,\n onHover,\n onHoverEnd,\n onMouseDown,\n onTouchStart\n}) => {\n const handleMouseDown = (event) => {\n const { clientX, clientY } = event;\n setInitialPosition(isHorizontal ? clientX : clientY);\n const element = event.target.parentElement;\n setInitialSize(isHorizontal ? element.offsetWidth : element.offsetHeight);\n setIsResizing(true);\n onMouseDown?.(event);\n };\n const handleTouchStart = (event) => {\n const { touches } = event;\n const touch = touches[0];\n const { clientX, clientY } = touch;\n setInitialPosition(isHorizontal ? clientX : clientY);\n const element = event.target.parentElement;\n setInitialSize(isHorizontal ? element.offsetWidth : element.offsetHeight);\n setIsResizing(true);\n onTouchStart?.(event);\n };\n const handleMouseOver = () => {\n onHover?.();\n };\n const handleMouseOut = () => {\n if (!isResizing) {\n onHoverEnd?.();\n }\n };\n return {\n hidden: readOnly,\n props: {\n onMouseDown: handleMouseDown,\n onMouseOut: handleMouseOut,\n onMouseOver: handleMouseOver,\n onTouchEnd: handleMouseOut,\n onTouchMove: handleMouseOver,\n onTouchStart: handleTouchStart\n }\n };\n};\nvar ResizeHandle = createPrimitiveComponent(\"div\")({\n propsHook: useResizeHandle,\n stateHook: useResizeHandleState\n});\n\n// src/components/useResizableStore.ts\nimport { createAtomStore as createAtomStore2 } from \"@udecode/plate/react\";\nvar { ResizableProvider, resizableStore, useResizableStore } = createAtomStore2(\n {\n width: 0\n },\n { name: \"resizable\" }\n);\n\n// src/components/Resizable.tsx\nvar useResizableState = ({\n align = \"center\",\n maxWidth = \"100%\",\n minWidth = 92\n} = {}) => {\n const editor = useEditorRef();\n const element = useElement();\n const path = usePath();\n const nodeWidth = element?.width ?? \"100%\";\n const [width, setWidth] = useResizableStore().use.width();\n const setNodeWidth = React2.useCallback(\n (w) => {\n if (w === nodeWidth) {\n editor.tf.select(path);\n } else {\n editor.tf.setNodes({ width: w }, { at: path });\n }\n },\n [editor, nodeWidth, path]\n );\n React2.useEffect(() => {\n setWidth(nodeWidth);\n }, [nodeWidth, setWidth]);\n return {\n align,\n maxWidth,\n minWidth,\n setNodeWidth,\n setWidth,\n width\n };\n};\nvar useResizable = ({\n align,\n maxWidth,\n minWidth,\n setNodeWidth,\n setWidth,\n width\n}) => {\n const wrapperRef = React2.useRef(null);\n return {\n context: {\n onResize: React2.useCallback(\n ({ delta, direction, finished, initialSize }) => {\n const wrapperStaticWidth = wrapperRef.current.offsetWidth;\n const deltaFactor = (align === \"center\" ? 2 : 1) * (direction === \"left\" ? -1 : 1);\n const newWidth = resizeLengthClamp(\n initialSize + delta * deltaFactor,\n wrapperStaticWidth,\n {\n max: maxWidth,\n min: minWidth\n }\n );\n if (finished) {\n setNodeWidth(newWidth);\n } else {\n setWidth(newWidth);\n }\n },\n [align, maxWidth, minWidth, setNodeWidth, setWidth]\n )\n },\n props: {\n style: {\n maxWidth,\n minWidth,\n position: \"relative\",\n width\n }\n },\n wrapperProps: {\n style: {\n position: \"relative\"\n }\n },\n wrapperRef\n };\n};\nvar Resizable = React2.forwardRef(({ children, options, ...rest }, ref) => {\n const state = useResizableState(options);\n const { context, props, wrapperProps, wrapperRef } = useResizable(state);\n return /* @__PURE__ */ React2.createElement(\"div\", { ref: wrapperRef, ...wrapperProps }, /* @__PURE__ */ React2.createElement(\"div\", { ref, ...props, ...rest }, /* @__PURE__ */ React2.createElement(ResizeHandleProvider, { onResize: context.onResize }, children)));\n});\nResizable.displayName = \"Resizable\";\nexport {\n Resizable,\n ResizableProvider,\n ResizeHandle,\n ResizeHandleProvider,\n isTouchEvent,\n resizableStore,\n resizeLengthClamp,\n resizeLengthClampStatic,\n resizeLengthToRelative,\n resizeLengthToStatic,\n useResizable,\n useResizableState,\n useResizableStore,\n useResizeHandle,\n useResizeHandleState,\n useResizeHandleStore\n};\n//# sourceMappingURL=index.mjs.map","// src/react/TablePlugin.tsx\nimport { toPlatePlugin } from \"@udecode/plate/react\";\n\n// src/lib/BaseTablePlugin.ts\nimport {\n bindFirst,\n createSlatePlugin,\n createTSlatePlugin,\n isSlatePluginElement\n} from \"@udecode/plate\";\n\n// src/lib/api/getEmptyCellNode.ts\nvar getEmptyCellNode = (editor, { children, header, row } = {}) => {\n header = header ?? (row ? row.children.every(\n (c) => c.type === editor.getType(BaseTableCellHeaderPlugin)\n ) : false);\n return {\n children: children ?? [editor.api.create.block()],\n type: header ? editor.getType(BaseTableCellHeaderPlugin) : editor.getType(BaseTableCellPlugin)\n };\n};\n\n// src/lib/api/getEmptyRowNode.ts\nvar getEmptyRowNode = (editor, { colCount = 1, ...cellOptions } = {}) => {\n const { api } = editor.getPlugin({ key: \"table\" });\n return {\n children: Array.from({ length: colCount }).fill(colCount).map(() => api.create.tableCell(cellOptions)),\n type: editor.getType(BaseTableRowPlugin)\n };\n};\n\n// src/lib/api/getEmptyTableNode.ts\nvar getEmptyTableNode = (editor, {\n colCount,\n header,\n rowCount = 0,\n ...cellOptions\n} = {}) => {\n const { api } = editor.getPlugin({ key: \"table\" });\n const rows = Array.from({ length: rowCount }).fill(rowCount).map(\n (_, index) => api.create.tableRow({\n colCount,\n ...cellOptions,\n header: header && index === 0\n })\n );\n return {\n children: rows,\n type: editor.getType(BaseTablePlugin)\n };\n};\n\n// src/lib/merge/deleteColumn.ts\nimport { getEditorPlugin as getEditorPlugin13 } from \"@udecode/plate\";\nimport cloneDeep5 from \"lodash/cloneDeep.js\";\n\n// src/lib/constants.ts\nvar KEY_SHIFT_EDGES = {\n \"shift+down\": \"bottom\",\n \"shift+left\": \"left\",\n \"shift+right\": \"right\",\n \"shift+up\": \"top\"\n};\n\n// src/lib/utils/computeCellIndices.ts\nimport { getEditorPlugin } from \"@udecode/plate\";\nfunction computeCellIndices(editor, {\n all,\n cellNode,\n tableNode\n}) {\n const { api, getOptions, setOption } = getEditorPlugin(editor, {\n key: \"table\"\n });\n if (!tableNode) {\n if (!cellNode) return;\n tableNode = editor.api.above({\n at: cellNode,\n match: { type: editor.getType(BaseTablePlugin) }\n })?.[0];\n if (!tableNode) return;\n }\n const { _cellIndices: prevIndices } = getOptions();\n const cellIndices = { ...prevIndices };\n let hasIndicesChanged = false;\n const skipCells = [];\n let targetIndices;\n for (let rowIndex = 0; rowIndex < tableNode.children.length; rowIndex++) {\n const row = tableNode.children[rowIndex];\n let colIndex = 0;\n for (const cellElement of row.children) {\n while (skipCells[rowIndex]?.[colIndex]) {\n colIndex++;\n }\n const currentIndices = { col: colIndex, row: rowIndex };\n const prevIndicesForCell = prevIndices[cellElement.id];\n if (prevIndicesForCell?.col !== currentIndices.col || prevIndicesForCell?.row !== currentIndices.row) {\n hasIndicesChanged = true;\n }\n cellIndices[cellElement.id] = currentIndices;\n if (cellElement.id === cellNode?.id) {\n targetIndices = currentIndices;\n if (!all) break;\n }\n const colSpan = api.table.getColSpan(cellElement);\n const rowSpan = api.table.getRowSpan(cellElement);\n for (let r = 0; r < rowSpan; r++) {\n skipCells[rowIndex + r] = skipCells[rowIndex + r] || [];\n for (let c = 0; c < colSpan; c++) {\n skipCells[rowIndex + r][colIndex + c] = true;\n }\n }\n colIndex += colSpan;\n }\n }\n if (hasIndicesChanged) {\n setOption(\"_cellIndices\", cellIndices);\n }\n return targetIndices;\n}\n\n// src/lib/utils/getCellIndices.ts\nimport { getEditorPlugin as getEditorPlugin2 } from \"@udecode/plate\";\nvar getCellIndices = (editor, element) => {\n const { getOption } = getEditorPlugin2(editor, {\n key: \"table\"\n });\n let indices = getOption(\"cellIndices\", element.id);\n if (!indices) {\n indices = computeCellIndices(editor, {\n cellNode: element\n });\n if (!indices) {\n editor.api.debug.warn(\n \"No cell indices found for element. Make sure all table cells have an id.\",\n \"TABLE_CELL_INDICES\"\n );\n }\n }\n return indices;\n};\n\n// src/lib/utils/getCellRowIndexByPath.ts\nvar getCellRowIndexByPath = (cellPath) => {\n const index = cellPath.at(-2);\n if (index === void 0)\n throw new Error(`can not get rowIndex of path ${cellPath}`);\n return index;\n};\n\n// src/lib/utils/getCellType.ts\nimport { getPluginTypes } from \"@udecode/plate\";\nvar getCellTypes = (editor) => getPluginTypes(editor, [BaseTableCellPlugin, BaseTableCellHeaderPlugin]);\n\n// src/lib/normalizeInitialValueTable.ts\nvar normalizeInitialValueTable = ({\n editor,\n type\n}) => {\n const tables = editor.api.nodes({\n at: [],\n match: { type }\n });\n for (const [table] of tables) {\n computeCellIndices(editor, {\n tableNode: table\n });\n }\n};\n\n// src/lib/withApplyTable.ts\nimport { RangeApi } from \"@udecode/plate\";\n\n// src/lib/transforms/overrideSelectionFromCell.ts\nimport { isHotkey } from \"@udecode/plate\";\n\n// src/lib/transforms/moveSelectionFromCell.ts\nimport { NodeApi as NodeApi2 } from \"@udecode/plate\";\n\n// src/lib/queries/getTableGridAbove.ts\nimport {\n PathApi\n} from \"@udecode/plate\";\n\n// src/lib/queries/getTableGridByRange.ts\nimport {\n NodeApi\n} from \"@udecode/plate\";\n\n// src/lib/merge/getTableGridByRange.ts\nimport {\n getEditorPlugin as getEditorPlugin3\n} from \"@udecode/plate\";\n\n// src/lib/queries/getColSpan.ts\nvar getColSpan = (cellElem) => {\n return cellElem.colSpan || Number(cellElem.attributes?.colspan) || 1;\n};\n\n// src/lib/queries/getRowSpan.ts\nvar getRowSpan = (cellElem) => {\n return cellElem.rowSpan || Number(cellElem.attributes?.rowspan) || 1;\n};\n\n// src/lib/merge/getCellIndicesWithSpans.ts\nvar getCellIndicesWithSpans = ({ col, row }, endCell) => {\n return {\n col: col + getColSpan(endCell) - 1,\n row: row + getRowSpan(endCell) - 1\n };\n};\n\n// src/lib/merge/findCellByIndexes.ts\nvar findCellByIndexes = (editor, table, searchRowIndex, searchColIndex) => {\n const allCells = table.children.flatMap(\n (current) => current.children\n );\n const foundCell = allCells.find((cellNode) => {\n const indices = getCellIndices(editor, cellNode);\n const { col: _startColIndex, row: _startRowIndex } = indices;\n const { col: _endColIndex, row: _endRowIndex } = getCellIndicesWithSpans(\n indices,\n cellNode\n );\n if (searchColIndex >= _startColIndex && searchColIndex <= _endColIndex && searchRowIndex >= _startRowIndex && searchRowIndex <= _endRowIndex) {\n return true;\n }\n return false;\n });\n return foundCell;\n};\n\n// src/lib/merge/getTableGridByRange.ts\nvar getTableMergeGridByRange = (editor, { at, format }) => {\n const { api, type } = getEditorPlugin3(editor, BaseTablePlugin);\n const startCellEntry = editor.api.node({\n at: at.anchor.path,\n match: { type: getCellTypes(editor) }\n });\n const endCellEntry = editor.api.node({\n at: at.focus.path,\n match: { type: getCellTypes(editor) }\n });\n const startCell = startCellEntry[0];\n const endCell = endCellEntry[0];\n const startCellPath = at.anchor.path;\n const tablePath = startCellPath.slice(0, -2);\n const tableEntry = editor.api.node({\n at: tablePath,\n match: { type }\n });\n const realTable = tableEntry[0];\n const { col: _startColIndex, row: _startRowIndex } = getCellIndicesWithSpans(\n getCellIndices(editor, startCell),\n startCell\n );\n const { col: _endColIndex, row: _endRowIndex } = getCellIndicesWithSpans(\n getCellIndices(editor, endCell),\n endCell\n );\n let startRowIndex = Math.min(_startRowIndex, _endRowIndex);\n let endRowIndex = Math.max(_startRowIndex, _endRowIndex);\n let startColIndex = Math.min(_startColIndex, _endColIndex);\n let endColIndex = Math.max(_startColIndex, _endColIndex);\n const relativeRowIndex = endRowIndex - startRowIndex;\n const relativeColIndex = endColIndex - startColIndex;\n let table = api.create.table({\n children: [],\n colCount: relativeColIndex + 1,\n rowCount: relativeRowIndex + 1\n });\n let cellEntries = [];\n let cellsSet = /* @__PURE__ */ new WeakSet();\n let rowIndex = startRowIndex;\n let colIndex = startColIndex;\n while (true) {\n const cell = findCellByIndexes(editor, realTable, rowIndex, colIndex);\n if (!cell) {\n break;\n }\n const indicies = getCellIndices(editor, cell);\n const { col: cellColWithSpan, row: cellRowWithSpan } = getCellIndicesWithSpans(indicies, cell);\n const { col: cellCol, row: cellRow } = indicies;\n const hasOverflowTop = cellRow < startRowIndex;\n const hasOverflowBottom = cellRowWithSpan > endRowIndex;\n const hasOverflowLeft = cellCol < startColIndex;\n const hasOverflowRight = cellColWithSpan > endColIndex;\n if (hasOverflowTop || hasOverflowBottom || hasOverflowLeft || hasOverflowRight) {\n cellsSet = /* @__PURE__ */ new WeakSet();\n cellEntries = [];\n startRowIndex = Math.min(startRowIndex, cellRow);\n endRowIndex = Math.max(endRowIndex, cellRowWithSpan);\n startColIndex = Math.min(startColIndex, cellCol);\n endColIndex = Math.max(endColIndex, cellColWithSpan);\n rowIndex = startRowIndex;\n colIndex = startColIndex;\n const newRelativeRowIndex = endRowIndex - startRowIndex;\n const newRelativeColIndex = endColIndex - startColIndex;\n table = api.create.table({\n children: [],\n colCount: newRelativeColIndex + 1,\n rowCount: newRelativeRowIndex + 1\n });\n continue;\n }\n if (!cellsSet.has(cell)) {\n cellsSet.add(cell);\n const rows = table.children[rowIndex - startRowIndex].children;\n rows[colIndex - startColIndex] = cell;\n const cellPath = editor.api.findPath(cell);\n cellEntries.push([cell, cellPath]);\n }\n if (colIndex + 1 <= endColIndex) {\n colIndex = colIndex + 1;\n } else if (rowIndex + 1 <= endRowIndex) {\n colIndex = startColIndex;\n rowIndex = rowIndex + 1;\n } else {\n break;\n }\n }\n const formatType = format || \"table\";\n if (formatType === \"cell\") {\n return cellEntries;\n }\n table.children?.forEach((rowEl) => {\n const rowElement = rowEl;\n const filteredChildren = rowElement.children?.filter((cellEl) => {\n const cellElement = cellEl;\n return api.table.getCellChildren(cellElement).length > 0;\n });\n rowElement.children = filteredChildren;\n });\n if (formatType === \"table\") {\n return [[table, tablePath]];\n }\n return {\n cellEntries,\n tableEntries: [[table, tablePath]]\n };\n};\n\n// src/lib/queries/getTableGridByRange.ts\nvar getTableGridByRange = (editor, { at, format = \"table\" }) => {\n const { api } = editor.getPlugin({ key: \"table\" });\n const { disableMerge } = editor.getOptions(BaseTablePlugin);\n if (!disableMerge) {\n return getTableMergeGridByRange(editor, { at, format });\n }\n const startCellPath = at.anchor.path;\n const endCellPath = at.focus.path;\n const _startRowIndex = startCellPath.at(-2);\n const _endRowIndex = endCellPath.at(-2);\n const _startColIndex = startCellPath.at(-1);\n const _endColIndex = endCellPath.at(-1);\n const startRowIndex = Math.min(_startRowIndex, _endRowIndex);\n const endRowIndex = Math.max(_startRowIndex, _endRowIndex);\n const startColIndex = Math.min(_startColIndex, _endColIndex);\n const endColIndex = Math.max(_startColIndex, _endColIndex);\n const tablePath = startCellPath.slice(0, -2);\n const relativeRowIndex = endRowIndex - startRowIndex;\n const relativeColIndex = endColIndex - startColIndex;\n const table = api.create.table({\n children: [],\n colCount: relativeColIndex + 1,\n rowCount: relativeRowIndex + 1\n });\n let rowIndex = startRowIndex;\n let colIndex = startColIndex;\n const cellEntries = [];\n while (true) {\n const cellPath = tablePath.concat([rowIndex, colIndex]);\n const cell = NodeApi.get(editor, cellPath);\n if (!cell) break;\n const rows = table.children[rowIndex - startRowIndex].children;\n rows[colIndex - startColIndex] = cell;\n cellEntries.push([cell, cellPath]);\n if (colIndex + 1 <= endColIndex) {\n colIndex += 1;\n } else if (rowIndex + 1 <= endRowIndex) {\n colIndex = startColIndex;\n rowIndex += 1;\n } else {\n break;\n }\n }\n if (format === \"cell\") {\n return cellEntries;\n }\n return [[table, tablePath]];\n};\n\n// src/lib/queries/getTableGridAbove.ts\nvar getTableGridAbove = (editor, { format = \"table\", ...options } = {}) => {\n const { api } = editor.getPlugin({ key: \"table\" });\n const edges = editor.api.edgeBlocks({\n match: {\n type: getCellTypes(editor)\n },\n ...options\n });\n if (edges) {\n const [start, end] = edges;\n if (!PathApi.equals(start[1], end[1])) {\n return getTableGridByRange(editor, {\n at: {\n anchor: {\n offset: 0,\n path: start[1]\n },\n focus: {\n offset: 0,\n path: end[1]\n }\n },\n format\n });\n }\n if (format === \"table\") {\n const table = api.create.table({ rowCount: 1 });\n table.children[0].children = [start[0]];\n return [[table, start[1].slice(0, -2)]];\n }\n return [start];\n }\n return [];\n};\n\n// src/lib/transforms/moveSelectionFromCell.ts\nvar moveSelectionFromCell = (editor, {\n at,\n edge,\n fromOneCell,\n reverse\n} = {}) => {\n if (edge) {\n const cellEntries = getTableGridAbove(editor, { at, format: \"cell\" });\n const minCell = fromOneCell ? 0 : 1;\n if (cellEntries.length > minCell) {\n const [, firstCellPath] = cellEntries[0];\n const [, lastCellPath] = cellEntries.at(-1);\n const anchorPath = [...firstCellPath];\n const focusPath = [...lastCellPath];\n switch (edge) {\n case \"bottom\": {\n focusPath[focusPath.length - 2] += 1;\n break;\n }\n case \"left\": {\n anchorPath[anchorPath.length - 1] -= 1;\n break;\n }\n case \"right\": {\n focusPath[focusPath.length - 1] += 1;\n break;\n }\n case \"top\": {\n anchorPath[anchorPath.length - 2] -= 1;\n break;\n }\n }\n if (NodeApi2.has(editor, anchorPath) && NodeApi2.has(editor, focusPath)) {\n editor.tf.select({\n anchor: editor.api.start(anchorPath),\n focus: editor.api.start(focusPath)\n });\n }\n return true;\n }\n return;\n }\n const cellEntry = editor.api.block({\n at,\n match: { type: getCellTypes(editor) }\n });\n if (cellEntry) {\n const [, cellPath] = cellEntry;\n const nextCellPath = [...cellPath];\n const offset = reverse ? -1 : 1;\n nextCellPath[nextCellPath.length - 2] += offset;\n if (NodeApi2.has(editor, nextCellPath)) {\n editor.tf.select(editor.api.start(nextCellPath));\n } else {\n const tablePath = cellPath.slice(0, -2);\n if (reverse) {\n editor.tf.withoutNormalizing(() => {\n editor.tf.select(editor.api.start(tablePath));\n editor.tf.move({ reverse: true });\n });\n } else {\n editor.tf.withoutNormalizing(() => {\n editor.tf.select(editor.api.end(tablePath));\n editor.tf.move();\n });\n }\n }\n return true;\n }\n};\n\n// src/lib/transforms/overrideSelectionFromCell.ts\nvar overrideSelectionFromCell = (editor, newSelection) => {\n let hotkey;\n if (!editor.currentKeyboardEvent || ![\"up\", \"down\", \"shift+up\", \"shift+right\", \"shift+down\", \"shift+left\"].some(\n (key) => {\n const valid = isHotkey(key, editor.currentKeyboardEvent);\n if (valid) hotkey = key;\n return valid;\n }\n ) || !editor.selection?.focus || !newSelection?.focus || !editor.api.isAt({\n at: {\n anchor: editor.selection.focus,\n focus: newSelection.focus\n },\n blocks: true,\n match: { type: getCellTypes(editor) }\n })) {\n return;\n }\n if (!hotkey) return;\n const edge = KEY_SHIFT_EDGES[hotkey];\n if (edge && !editor.api.isAt({ block: true, match: { type: getCellTypes(editor) } })) {\n return;\n }\n const prevSelection = editor.selection;\n const reverse = [\"shift+up\", \"up\"].includes(hotkey);\n setTimeout(() => {\n moveSelectionFromCell(editor, {\n at: prevSelection,\n edge,\n fromOneCell: true,\n reverse\n });\n }, 0);\n};\n\n// src/lib/withApplyTable.ts\nvar withApplyTable = ({\n editor,\n getOptions,\n tf: { apply },\n type\n}) => ({\n transforms: {\n apply(op) {\n if (op.type === \"set_selection\" && op.newProperties) {\n const newSelection = {\n ...editor.selection,\n ...op.newProperties\n };\n if (RangeApi.isRange(newSelection) && editor.api.isAt({\n at: newSelection,\n blocks: true,\n match: (n) => n.type === type\n })) {\n const anchorEntry = editor.api.block({\n at: newSelection.anchor,\n match: (n) => n.type === type\n });\n if (anchorEntry) {\n const [, anchorPath] = anchorEntry;\n const isBackward = RangeApi.isBackward(newSelection);\n if (isBackward) {\n op.newProperties.focus = editor.api.start(anchorPath);\n } else {\n const pointBefore = editor.api.before(anchorPath);\n if (pointBefore) {\n op.newProperties.focus = editor.api.end(anchorPath);\n }\n }\n } else {\n const focusEntry = editor.api.block({\n at: newSelection.focus,\n match: (n) => n.type === type\n });\n if (focusEntry) {\n const [, focusPath] = focusEntry;\n const isBackward = RangeApi.isBackward(newSelection);\n if (isBackward) {\n const startPoint = editor.api.start(focusPath);\n const pointBefore = editor.api.before(startPoint);\n op.newProperties.focus = pointBefore ?? startPoint;\n } else {\n op.newProperties.focus = editor.api.end(focusPath);\n }\n }\n }\n }\n overrideSelectionFromCell(editor, newSelection);\n }\n const isTableOperation = op.type === \"remove_node\" && op.node.type && [\n editor.getType(BaseTableRowPlugin),\n type,\n ...getCellTypes(editor)\n ].includes(op.node.type);\n if (isTableOperation) {\n const cells = [\n ...editor.api.nodes({\n at: op.path,\n match: { type: getCellTypes(editor) }\n })\n ];\n const cellIndices = getOptions()._cellIndices;\n cells.forEach(([cell]) => {\n delete cellIndices[cell.id];\n });\n }\n apply(op);\n let table;\n if (isTableOperation && // There is no new indices when removing a table\n op.node.type !== type) {\n table = editor.api.node({\n at: op.path,\n match: { type }\n })?.[0];\n if (table) {\n computeCellIndices(editor, {\n tableNode: table\n });\n }\n }\n }\n }\n});\n\n// src/lib/withDeleteTable.ts\nimport {\n PointApi\n} from \"@udecode/plate\";\nvar preventDeleteTableCell = (editor, {\n reverse,\n unit\n}) => {\n const { selection } = editor;\n const getNextPoint = reverse ? editor.api.after : editor.api.before;\n if (editor.api.isCollapsed()) {\n const cellEntry = editor.api.block({\n match: { type: getCellTypes(editor) }\n });\n if (cellEntry) {\n const [, cellPath] = cellEntry;\n const start = reverse ? editor.api.end(cellPath) : editor.api.start(cellPath);\n if (selection && PointApi.equals(selection.anchor, start)) {\n return true;\n }\n } else {\n const nextPoint = getNextPoint(selection, { unit });\n const nextCellEntry = editor.api.block({\n at: nextPoint,\n match: { type: getCellTypes(editor) }\n });\n if (nextCellEntry) {\n editor.tf.move({ reverse: !reverse });\n return true;\n }\n }\n }\n};\nvar withDeleteTable = ({\n editor,\n tf: { deleteBackward, deleteForward, deleteFragment },\n type\n}) => ({\n transforms: {\n deleteBackward(unit) {\n if (preventDeleteTableCell(editor, { unit })) return;\n deleteBackward(unit);\n },\n deleteForward(unit) {\n if (preventDeleteTableCell(editor, {\n reverse: true,\n unit\n }))\n return;\n deleteForward(unit);\n },\n deleteFragment(direction) {\n if (editor.api.isAt({ block: true, match: (n) => n.type === type })) {\n const cellEntries = getTableGridAbove(editor, { format: \"cell\" });\n if (cellEntries.length > 1) {\n editor.tf.withoutNormalizing(() => {\n cellEntries.forEach(([, cellPath]) => {\n editor.tf.replaceNodes(editor.api.create.block(), {\n at: cellPath,\n children: true\n });\n });\n editor.tf.select({\n anchor: editor.api.start(cellEntries[0][1]),\n focus: editor.api.end(cellEntries.at(-1)[1])\n });\n });\n return;\n }\n }\n deleteFragment(direction);\n }\n }\n});\n\n// src/lib/withGetFragmentTable.ts\nvar withGetFragmentTable = ({\n api,\n api: { getFragment },\n editor,\n type\n}) => ({\n api: {\n getFragment() {\n const fragment = getFragment();\n const newFragment = [];\n fragment.forEach((node) => {\n if (node.type === type) {\n const rows = node.children;\n const rowCount = rows.length;\n if (!rowCount) return;\n const colCount = rows[0].children.length;\n const hasOneCell = rowCount <= 1 && colCount <= 1;\n if (hasOneCell) {\n const cell = rows[0];\n const cellChildren = api.table.getCellChildren(cell);\n newFragment.push(...cellChildren[0].children);\n return;\n } else {\n const subTable = getTableGridAbove(editor);\n if (subTable.length > 0) {\n newFragment.push(subTable[0][0]);\n return;\n }\n }\n }\n newFragment.push(node);\n });\n return newFragment;\n }\n }\n});\n\n// src/lib/withInsertFragmentTable.ts\nimport {\n NodeApi as NodeApi3\n} from \"@udecode/plate\";\nimport cloneDeep from \"lodash/cloneDeep.js\";\nvar withInsertFragmentTable = ({\n api,\n editor,\n getOptions,\n tf: { insert, insertFragment },\n type\n}) => ({\n transforms: {\n insertFragment(fragment) {\n const insertedTable = fragment.find(\n (n) => n.type === type\n );\n if (!insertedTable) {\n const tableEntry = getTableAbove(editor, {\n at: editor.selection?.anchor\n });\n if (tableEntry) {\n const cellEntries = getTableGridAbove(editor, {\n format: \"cell\"\n });\n if (cellEntries.length > 1) {\n cellEntries.forEach((cellEntry) => {\n if (cellEntry) {\n const [, cellPath] = cellEntry;\n editor.tf.replaceNodes(cloneDeep(fragment), {\n at: cellPath,\n children: true\n });\n }\n });\n editor.tf.select({\n anchor: editor.api.start(cellEntries[0][1]),\n focus: editor.api.end(cellEntries.at(-1)[1])\n });\n return;\n }\n }\n }\n if (insertedTable) {\n const tableEntry = getTableAbove(editor, {\n at: editor.selection?.anchor\n });\n if (tableEntry) {\n const [cellEntry] = getTableGridAbove(editor, {\n at: editor.selection?.anchor,\n format: \"cell\"\n });\n if (cellEntry) {\n editor.tf.withoutNormalizing(() => {\n const [, startCellPath] = cellEntry;\n const cellPath = [...startCellPath];\n const startColIndex = cellPath.at(-1);\n let lastCellPath = null;\n let initRow = true;\n const insertedRows = insertedTable.children;\n insertedRows.forEach((row) => {\n cellPath[cellPath.length - 1] = startColIndex;\n if (!initRow) {\n const fromRow = cellPath.slice(0, -1);\n cellPath[cellPath.length - 2] += 1;\n if (!NodeApi3.has(editor, cellPath)) {\n if (getOptions().disableExpandOnInsert) {\n return;\n } else {\n insert.tableRow({\n fromRow\n });\n }\n }\n }\n initRow = false;\n const insertedCells = row.children;\n let initCell = true;\n insertedCells.forEach((cell) => {\n if (!initCell) {\n const fromCell = [...cellPath];\n cellPath[cellPath.length - 1] += 1;\n if (!NodeApi3.has(editor, cellPath)) {\n if (getOptions().disableExpandOnInsert) {\n return;\n } else {\n insert.tableColumn({\n fromCell\n });\n }\n }\n }\n initCell = false;\n const cellChildren = api.table.getCellChildren(\n cell\n );\n editor.tf.replaceNodes(cloneDeep(cellChildren), {\n at: cellPath,\n children: true\n });\n lastCellPath = [...cellPath];\n });\n });\n if (lastCellPath) {\n editor.tf.select({\n anchor: editor.api.start(startCellPath),\n focus: editor.api.end(lastCellPath)\n });\n }\n });\n return;\n }\n } else if (fragment.length === 1 && fragment[0].type === BaseTablePlugin.key) {\n editor.tf.insertNodes(fragment[0]);\n return;\n }\n }\n insertFragment(fragment);\n }\n }\n});\n\n// src/lib/queries/getCellInNextTableRow.ts\nimport {\n PathApi as PathApi2\n} from \"@udecode/plate\";\nvar getCellInNextTableRow = (editor, currentRowPath) => {\n const nextRow = editor.api.node(PathApi2.next(currentRowPath));\n if (!nextRow) return;\n const [nextRowNode, nextRowPath] = nextRow;\n const nextCell = nextRowNode?.children?.[0];\n const nextCellPath = nextRowPath.concat(0);\n if (nextCell && nextCellPath) {\n return editor.api.node(nextCellPath);\n }\n};\n\n// src/lib/queries/getCellInPreviousTableRow.ts\nimport {\n PathApi as PathApi3\n} from \"@udecode/plate\";\nvar getCellInPreviousTableRow = (editor, currentRowPath) => {\n const prevPath = PathApi3.previous(currentRowPath);\n if (!prevPath) return;\n const previousRow = editor.api.node(prevPath);\n if (!previousRow) return;\n const [previousRowNode, previousRowPath] = previousRow;\n const previousCell = previousRowNode?.children?.[previousRowNode.children.length - 1];\n const previousCellPath = previousRowPath.concat(\n previousRowNode.children.length - 1\n );\n if (previousCell && previousCellPath) {\n return editor.api.node(previousCellPath);\n }\n};\n\n// src/lib/queries/getLeftTableCell.ts\nimport { PathApi as PathApi4 } from \"@udecode/plate\";\nvar getLeftTableCell = (editor, {\n at: cellPath\n} = {}) => {\n if (!cellPath) {\n cellPath = editor.api.node({\n match: { type: getCellTypes(editor) }\n })?.[1];\n if (!cellPath) return;\n }\n const cellIndex = cellPath.at(-1);\n if (!cellIndex) return;\n const prevCellPath = PathApi4.previous(cellPath);\n return editor.api.node(prevCellPath);\n};\n\n// src/lib/queries/getNextTableCell.ts\nimport {\n PathApi as PathApi5\n} from \"@udecode/plate\";\nvar getNextTableCell = (editor, currentCell, currentPath, currentRow) => {\n const cell = editor.api.node(PathApi5.next(currentPath));\n if (cell) return cell;\n const [, currentRowPath] = currentRow;\n return getCellInNextTableRow(editor, currentRowPath);\n};\n\n// src/lib/queries/getPreviousTableCell.ts\nimport {\n PathApi as PathApi6\n} from \"@udecode/plate\";\nvar getPreviousTableCell = (editor, currentCell, currentPath, currentRow) => {\n const prevPath = PathApi6.previous(currentPath);\n if (!prevPath) {\n const [, currentRowPath] = currentRow;\n return getCellInPreviousTableRow(editor, currentRowPath);\n }\n const cell = editor.api.node(prevPath);\n if (cell) return cell;\n};\n\n// src/lib/queries/getTableAbove.ts\nvar getTableAbove = (editor, options) => editor.api.block({\n above: true,\n match: {\n type: editor.getType(BaseTablePlugin)\n },\n ...options\n});\n\n// src/lib/queries/getTableCellBorders.ts\nvar getTableCellBorders = (editor, {\n cellIndices,\n defaultBorder = {\n size: 1\n },\n element\n}) => {\n const cellPath = editor.api.findPath(element);\n const [rowNode, rowPath] = editor.api.parent(cellPath);\n const [tableNode] = editor.api.parent(rowPath);\n const { col } = cellIndices ?? getCellIndices(editor, element);\n const isFirstCell = col === 0;\n const isFirstRow = tableNode.children?.[0] === rowNode;\n const getBorder = (dir) => {\n const border = element.borders?.[dir];\n return {\n color: border?.color ?? defaultBorder.color,\n size: border?.size ?? defaultBorder.size,\n style: border?.style ?? defaultBorder.style\n };\n };\n return {\n bottom: getBorder(\"bottom\"),\n left: isFirstCell ? getBorder(\"left\") : void 0,\n right: getBorder(\"right\"),\n top: isFirstRow ? getBorder(\"top\") : void 0\n };\n};\n\n// src/lib/queries/getTableCellSize.ts\nimport { getEditorPlugin as getEditorPlugin4 } from \"@udecode/plate\";\nvar getTableCellSize = (editor, {\n cellIndices,\n colSizes,\n element,\n rowSize\n}) => {\n const { api } = getEditorPlugin4(editor, {\n key: \"table\"\n });\n const path = editor.api.findPath(element);\n if (!rowSize) {\n const [rowElement] = editor.api.parent(path);\n rowSize = rowElement.size;\n }\n if (!colSizes) {\n const [, rowPath] = editor.api.parent(path);\n const [tableNode] = editor.api.parent(rowPath);\n colSizes = getTableOverriddenColSizes(tableNode);\n }\n const colSpan = api.table.getColSpan(element);\n const { col } = cellIndices ?? getCellIndices(editor, element);\n const width = (colSizes ?? []).slice(col, col + colSpan).reduce((total, w) => total + (w || 0), 0);\n return { minHeight: rowSize, width };\n};\n\n// src/lib/queries/getTableColumnCount.ts\nvar getTableColumnCount = (tableNode) => {\n if (tableNode.children?.[0]?.children) {\n return tableNode.children[0].children.map(\n (element) => element.colSpan || element?.attributes?.colspan || 1\n ).reduce((total, num) => Number(total) + Number(num));\n }\n return 0;\n};\n\n// src/lib/queries/getTableEntries.ts\nvar getTableEntries = (editor, { at = editor.selection } = {}) => {\n if (!at) return;\n const cellEntry = editor.api.node({\n at,\n match: {\n type: getCellTypes(editor)\n }\n });\n if (!cellEntry) return;\n const [, cellPath] = cellEntry;\n const rowEntry = editor.api.above({\n at: cellPath,\n match: { type: editor.getType(BaseTableRowPlugin) }\n });\n if (!rowEntry) return;\n const [, rowPath] = rowEntry;\n const tableEntry = editor.api.above({\n at: rowPath,\n match: { type: editor.getType(BaseTablePlugin) }\n });\n if (!tableEntry) return;\n return {\n cell: cellEntry,\n row: rowEntry,\n table: tableEntry\n };\n};\n\n// src/lib/queries/getTableOverriddenColSizes.ts\nvar getTableOverriddenColSizes = (tableNode, colSizeOverrides) => {\n const colCount = getTableColumnCount(tableNode);\n const colSizes = (tableNode.colSizes ? [...tableNode.colSizes] : Array.from({ length: colCount }).fill(0)).map((size, index) => colSizeOverrides?.get?.(index) ?? size);\n return colSizes;\n};\n\n// src/lib/queries/getTopTableCell.ts\nimport { PathApi as PathApi7 } from \"@udecode/plate\";\nvar getTopTableCell = (editor, {\n at: cellPath\n} = {}) => {\n if (!cellPath) {\n cellPath = editor.api.node({\n match: { type: getCellTypes(editor) }\n })?.[1];\n if (!cellPath) return;\n }\n const cellIndex = cellPath.at(-1);\n const rowIndex = cellPath.at(-2);\n if (rowIndex === 0) return;\n const cellAbovePath = [\n ...PathApi7.parent(PathApi7.parent(cellPath)),\n rowIndex - 1,\n cellIndex\n ];\n return editor.api.node(cellAbovePath);\n};\n\n// src/lib/queries/isTableBorderHidden.ts\nvar isTableBorderHidden = (editor, border) => {\n if (border === \"left\") {\n const node = getLeftTableCell(editor)?.[0];\n if (node) {\n return node.borders?.right?.size === 0;\n }\n }\n if (border === \"top\") {\n const node = getTopTableCell(editor)?.[0];\n if (node) {\n return node.borders?.bottom?.size === 0;\n }\n }\n return editor.api.node({\n match: { type: getCellTypes(editor) }\n })?.[0].borders?.[border]?.size === 0;\n};\n\n// src/lib/withInsertTextTable.ts\nvar withInsertTextTable = ({\n editor,\n tf: { insertText }\n}) => ({\n transforms: {\n insertText(text) {\n if (editor.api.isExpanded()) {\n const entry = getTableAbove(editor, {\n at: editor.selection?.anchor\n });\n if (entry) {\n const cellEntries = getTableGridAbove(editor, {\n format: \"cell\"\n });\n if (cellEntries.length > 1) {\n editor.tf.collapse({\n edge: \"focus\"\n });\n }\n }\n }\n insertText(text);\n }\n }\n});\n\n// src/lib/withMarkTable.tsx\nimport { TextApi } from \"@udecode/plate\";\nvar withMarkTable = ({\n api: { marks },\n editor,\n tf: { addMark, removeMark }\n}) => ({\n api: {\n marks() {\n const { selection } = editor;\n if (!selection || editor.api.isCollapsed()) return marks();\n const matchesCell = getTableGridAbove(editor, { format: \"cell\" });\n if (matchesCell.length === 0) return marks();\n const totalMarks = {};\n matchesCell.forEach(([_cell, cellPath]) => {\n const textNodeEntry = editor.api.nodes({\n at: cellPath,\n match: (n) => TextApi.isText(n)\n });\n Array.from(textNodeEntry, (item) => item[0]).forEach((item) => {\n const keys = Object.keys(item);\n if (keys.length === 1) return;\n keys.splice(keys.indexOf(\"text\"), 1);\n keys.forEach((k) => {\n totalMarks[k] = item[k];\n });\n });\n });\n return totalMarks;\n }\n },\n transforms: {\n addMark(key, value) {\n const { selection } = editor;\n if (!selection || editor.api.isCollapsed()) return addMark(key, value);\n const matchesCell = getTableGridAbove(editor, { format: \"cell\" });\n if (matchesCell.length <= 1) return addMark(key, value);\n matchesCell.forEach(([_cell, cellPath]) => {\n editor.tf.setNodes(\n {\n [key]: value\n },\n {\n at: cellPath,\n match: (n) => TextApi.isText(n),\n split: true,\n voids: true\n }\n );\n });\n },\n removeMark(key) {\n const { selection } = editor;\n if (!selection || editor.api.isCollapsed()) return removeMark(key);\n const matchesCell = getTableGridAbove(editor, { format: \"cell\" });\n if (matchesCell.length === 0) return removeMark(key);\n matchesCell.forEach(([_cell, cellPath]) => {\n editor.tf.unsetNodes(key, {\n at: cellPath,\n match: (n) => TextApi.isText(n),\n split: true,\n voids: true\n });\n });\n }\n }\n});\n\n// src/lib/withNormalizeTable.ts\nimport {\n ElementApi,\n TextApi as TextApi2\n} from \"@udecode/plate\";\nvar withNormalizeTable = ({\n editor,\n getOption,\n getOptions,\n tf: { normalizeNode },\n type\n}) => ({\n transforms: {\n normalizeNode([n, path]) {\n const { enableUnsetSingleColSize, initialTableWidth } = getOptions();\n if (ElementApi.isElement(n)) {\n if (n.type === type) {\n const node = n;\n if (!node.children.some(\n (child) => ElementApi.isElement(child) && child.type === editor.getType(BaseTableRowPlugin)\n )) {\n editor.tf.removeNodes({ at: path });\n return;\n }\n if (node.colSizes && node.colSizes.length > 0 && enableUnsetSingleColSize && getTableColumnCount(node) < 2) {\n editor.tf.unsetNodes(\"colSizes\", {\n at: path\n });\n return;\n }\n const tableEntry = editor.api.block({\n above: true,\n at: path,\n match: { type }\n });\n if (tableEntry) {\n editor.tf.unwrapNodes({\n at: path\n });\n return;\n }\n if (initialTableWidth) {\n const tableNode = node;\n const colCount = tableNode.children[0]?.children?.length;\n if (colCount) {\n const colSizes = [];\n if (!tableNode.colSizes) {\n for (let i = 0; i < colCount; i++) {\n colSizes.push(initialTableWidth / colCount);\n }\n } else if (tableNode.colSizes.some((size) => !size)) {\n tableNode.colSizes.forEach((colSize) => {\n colSizes.push(colSize || initialTableWidth / colCount);\n });\n }\n if (colSizes.length > 0) {\n editor.tf.setNodes({ colSizes }, { at: path });\n return;\n }\n }\n }\n }\n if (n.type === editor.getType(BaseTableRowPlugin)) {\n const parentEntry = editor.api.parent(path);\n if (parentEntry?.[0].type !== type) {\n editor.tf.unwrapNodes({\n at: path\n });\n return;\n }\n }\n if (getCellTypes(editor).includes(n.type)) {\n const node = n;\n const cellIndices = getOption(\"cellIndices\", node.id);\n if (node.id && !cellIndices) {\n computeCellIndices(editor, {\n all: true,\n cellNode: node\n });\n }\n const { children } = node;\n const parentEntry = editor.api.parent(path);\n if (parentEntry?.[0].type !== editor.getType(BaseTableRowPlugin)) {\n editor.tf.unwrapNodes({\n at: path\n });\n return;\n }\n if (TextApi2.isText(children[0])) {\n editor.tf.wrapNodes(editor.api.create.block({}, path), {\n at: path,\n children: true\n });\n return;\n }\n }\n }\n normalizeNode([n, path]);\n }\n }\n});\n\n// src/lib/withSetFragmentDataTable.ts\nvar withSetFragmentDataTable = ({\n api,\n editor,\n plugin,\n tf: { setFragmentData }\n}) => ({\n transforms: {\n setFragmentData(data, originEvent) {\n const tableEntry = getTableGridAbove(editor, {\n format: \"table\"\n })?.[0];\n const selectedCellEntries = getTableGridAbove(editor, {\n format: \"cell\"\n });\n const initialSelection = editor.selection;\n if (!tableEntry || !initialSelection) {\n setFragmentData(data, originEvent);\n return;\n }\n const [tableNode, tablePath] = tableEntry;\n const tableRows = tableNode.children;\n tableNode.children = tableNode.children.filter(\n (v) => v.children.length > 0\n );\n let textCsv = \"\";\n let textTsv = \"\";\n const divElement = document.createElement(\"div\");\n const tableElement = document.createElement(\"table\");\n if (tableEntry && initialSelection && selectedCellEntries.length === 1 && (originEvent === \"copy\" || originEvent === \"cut\")) {\n setFragmentData(data);\n return;\n }\n editor.tf.withoutNormalizing(() => {\n tableRows.forEach((row) => {\n const rowCells = row.children;\n const cellStrings = [];\n const rowElement = row.type === editor.getType(BaseTableCellHeaderPlugin) ? document.createElement(\"th\") : document.createElement(\"tr\");\n rowCells.forEach((cell) => {\n data.clearData();\n const cellPath = editor.api.findPath(cell);\n editor.tf.select({\n anchor: editor.api.start(cellPath),\n focus: editor.api.end(cellPath)\n });\n setFragmentData(data);\n cellStrings.push(data.getData(\"text/plain\"));\n const cellElement = document.createElement(\"td\");\n const colSpan = api.table.getColSpan(cell);\n cellElement.colSpan = colSpan;\n const rowSpan = api.table.getRowSpan(cell);\n cellElement.rowSpan = rowSpan;\n cellElement.innerHTML = data.getData(\"text/html\");\n rowElement.append(cellElement);\n });\n tableElement.append(rowElement);\n textCsv += `${cellStrings.join(\",\")}\n`;\n textTsv += `${cellStrings.join(\"\t\")}\n`;\n });\n const _tableEntry = editor.api.node({\n at: tablePath,\n match: { type: BaseTablePlugin.key }\n });\n if (_tableEntry != null && _tableEntry.length > 0) {\n const realTable = _tableEntry[0];\n if (realTable.attributes != null) {\n Object.entries(realTable.attributes).forEach(([key, value]) => {\n if (value != null && plugin.node.dangerouslyAllowAttributes?.includes(key)) {\n tableElement.setAttribute(key, String(value));\n }\n });\n }\n }\n editor.tf.select(initialSelection);\n divElement.append(tableElement);\n });\n data.setData(\"text/csv\", textCsv);\n data.setData(\"text/tsv\", textTsv);\n data.setData(\"text/plain\", textTsv);\n data.setData(\"text/html\", divElement.innerHTML);\n const selectedFragmentStr = JSON.stringify([tableNode]);\n const encodedFragment = window.btoa(\n encodeURIComponent(selectedFragmentStr)\n );\n data.setData(\"application/x-slate-fragment\", encodedFragment);\n }\n }\n});\n\n// src/lib/withTable.ts\nvar withTable = (ctx) => {\n const mark = withMarkTable(ctx);\n return {\n api: {\n // getFragment\n ...withGetFragmentTable(ctx).api,\n ...mark.api\n },\n transforms: {\n // normalize\n ...withNormalizeTable(ctx).transforms,\n // delete\n ...withDeleteTable(ctx).transforms,\n // insertFragment\n ...withInsertFragmentTable(ctx).transforms,\n // insertText\n ...withInsertTextTable(ctx).transforms,\n // apply\n ...withApplyTable(ctx).transforms,\n // setFragmentData\n ...withSetFragmentDataTable(ctx).transforms,\n // addMark, removeMark\n ...mark.transforms\n }\n };\n};\n\n// src/lib/transforms/deleteColumn.ts\nimport {\n getEditorPlugin as getEditorPlugin5\n} from \"@udecode/plate\";\n\n// src/lib/merge/deleteColumnWhenExpanded.ts\nimport {\n NodeApi as NodeApi4,\n RangeApi as RangeApi2\n} from \"@udecode/plate\";\nvar deleteColumnWhenExpanded = (editor, tableEntry) => {\n const [start, end] = RangeApi2.edges(editor.selection);\n const firstRow = NodeApi4.child(tableEntry[0], 0);\n const lastRow = NodeApi4.child(\n tableEntry[0],\n tableEntry[0].children.length - 1\n );\n const firstSelectionRow = editor.api.above({\n at: start,\n match: (n) => n.type === BaseTableRowPlugin.key\n });\n const lastSelectionRow = editor.api.above({\n at: end,\n match: (n) => n.type === BaseTableRowPlugin.key\n });\n if (!firstSelectionRow || !lastSelectionRow) return;\n if (firstRow.id === firstSelectionRow[0].id && lastSelectionRow[0].id === lastRow.id)\n deleteSelection(editor);\n};\nvar deleteSelection = (editor) => {\n const cells = getTableGridAbove(editor, {\n format: \"cell\"\n });\n const pathRefs = [];\n cells.forEach(([_cell, cellPath]) => {\n pathRefs.push(editor.api.pathRef(cellPath));\n });\n pathRefs.forEach((pathRef) => {\n editor.tf.removeNodes({ at: pathRef.unref() });\n });\n};\n\n// src/lib/transforms/deleteColumn.ts\nvar deleteColumn = (editor) => {\n const { getOptions, type } = getEditorPlugin5(editor, {\n key: \"table\"\n });\n const { disableMerge } = getOptions();\n const tableEntry = editor.api.above({\n match: { type }\n });\n if (!tableEntry) return;\n editor.tf.withoutNormalizing(() => {\n if (!disableMerge) {\n deleteTableMergeColumn(editor);\n return;\n }\n if (editor.api.isExpanded())\n return deleteColumnWhenExpanded(editor, tableEntry);\n const tdEntry = editor.api.above({\n match: { type: getCellTypes(editor) }\n });\n const trEntry = editor.api.above({\n match: { type: editor.getType(BaseTableRowPlugin) }\n });\n if (tdEntry && trEntry && tableEntry && // Cannot delete the last cell\n trEntry[0].children.length > 1) {\n const [tableNode, tablePath] = tableEntry;\n const tdPath = tdEntry[1];\n const colIndex = tdPath.at(-1);\n const pathToDelete = tdPath.slice();\n const replacePathPos = pathToDelete.length - 2;\n tableNode.children.forEach((row, rowIdx) => {\n pathToDelete[replacePathPos] = rowIdx;\n if (row.children.length === 1 || colIndex > row.children.length - 1)\n return;\n editor.tf.removeNodes({ at: pathToDelete });\n });\n const { colSizes } = tableNode;\n if (colSizes) {\n const newColSizes = [...colSizes];\n newColSizes.splice(colIndex, 1);\n editor.tf.setNodes(\n { colSizes: newColSizes },\n { at: tablePath }\n );\n }\n }\n });\n};\n\n// src/lib/transforms/deleteRow.ts\nimport { getEditorPlugin as getEditorPlugin8 } from \"@udecode/plate\";\n\n// src/lib/merge/deleteRow.ts\nimport { getEditorPlugin as getEditorPlugin7 } from \"@udecode/plate\";\nimport cloneDeep2 from \"lodash/cloneDeep.js\";\n\n// src/lib/merge/deleteRowWhenExpanded.ts\nimport {\n getEditorPlugin as getEditorPlugin6\n} from \"@udecode/plate\";\nvar deleteRowWhenExpanded = (editor, [table, tablePath]) => {\n const { api } = getEditorPlugin6(editor, BaseTablePlugin);\n const columnCount = getTableMergedColumnCount(table);\n const cells = getTableGridAbove(editor, {\n format: \"cell\"\n });\n const firsRowIndex = getCellRowIndexByPath(cells[0][1]);\n if (firsRowIndex === null) return;\n let acrossColumn = 0;\n let lastRowIndex = -1;\n let rowSpanCarry = 0;\n let acrossRow = 0;\n cells.forEach(([cell, cellPath]) => {\n if (cellPath.at(-2) === firsRowIndex) {\n acrossColumn += cell.colSpan ?? 1;\n }\n const currentRowIndex = getCellRowIndexByPath(cellPath);\n if (lastRowIndex !== currentRowIndex) {\n if (rowSpanCarry !== 0) {\n rowSpanCarry--;\n return;\n }\n const rowSpan = api.table.getRowSpan(cell);\n rowSpanCarry = rowSpan && rowSpan > 1 ? rowSpan - 1 : 0;\n acrossRow += rowSpan ?? 1;\n }\n lastRowIndex = currentRowIndex;\n });\n if (acrossColumn === columnCount) {\n const pathRefs = [];\n for (let i = firsRowIndex; i < firsRowIndex + acrossRow; i++) {\n const removedPath = tablePath.concat(i);\n pathRefs.push(editor.api.pathRef(removedPath));\n }\n pathRefs.forEach((item) => {\n editor.tf.removeNodes({ at: item.unref() });\n });\n }\n};\n\n// src/lib/merge/deleteRow.ts\nvar deleteTableMergeRow = (editor) => {\n const { api, tf, type } = getEditorPlugin7(editor, {\n key: \"table\"\n });\n if (editor.api.some({\n match: { type }\n })) {\n const currentTableItem = editor.api.above({\n match: { type }\n });\n if (!currentTableItem) return;\n if (editor.api.isExpanded())\n return deleteRowWhenExpanded(editor, currentTableItem);\n const table = currentTableItem[0];\n const selectedCellEntry = editor.api.above({\n match: { type: getCellTypes(editor) }\n });\n if (!selectedCellEntry) return;\n const selectedCell = selectedCellEntry[0];\n const { row: deletingRowIndex } = getCellIndices(editor, selectedCell);\n const rowsDeleteNumber = api.table.getRowSpan(selectedCell);\n const endingRowIndex = deletingRowIndex + rowsDeleteNumber - 1;\n const colNumber = getTableColumnCount(table);\n const affectedCellsSet = /* @__PURE__ */ new Set();\n Array.from({ length: colNumber }, (_, i) => i).forEach((cI) => {\n return Array.from({ length: rowsDeleteNumber }, (_, i) => i).forEach(\n (rI) => {\n const rowIndex = deletingRowIndex + rI;\n const found = findCellByIndexes(editor, table, rowIndex, cI);\n affectedCellsSet.add(found);\n }\n );\n });\n const affectedCells = Array.from(affectedCellsSet);\n const { moveToNextRowCells, squizeRowSpanCells } = affectedCells.reduce(\n (acc, cur) => {\n if (!cur) return acc;\n const currentCell = cur;\n const { row: curRowIndex } = getCellIndices(editor, currentCell);\n const curRowSpan = api.table.getRowSpan(currentCell);\n if (curRowIndex < deletingRowIndex && curRowSpan > 1) {\n acc.squizeRowSpanCells.push(currentCell);\n } else if (curRowSpan > 1 && curRowIndex + curRowSpan - 1 > endingRowIndex) {\n acc.moveToNextRowCells.push(currentCell);\n }\n return acc;\n },\n { moveToNextRowCells: [], squizeRowSpanCells: [] }\n );\n const nextRowIndex = deletingRowIndex + rowsDeleteNumber;\n const nextRow = table.children[nextRowIndex];\n if (nextRow === void 0 && deletingRowIndex === 0) {\n tf.remove.table();\n return;\n }\n if (nextRow) {\n for (let index = 0; index < moveToNextRowCells.length; index++) {\n const curRowCell = moveToNextRowCells[index];\n const { col: curRowCellColIndex, row: curRowCellRowIndex } = getCellIndices(editor, curRowCell);\n const curRowCellRowSpan = api.table.getRowSpan(curRowCell);\n const startingCellIndex = nextRow.children.findIndex((curC) => {\n const cell = curC;\n const { col: curColIndex } = getCellIndices(editor, cell);\n return curColIndex >= curRowCellColIndex;\n });\n if (startingCellIndex === -1) {\n const startingCell2 = nextRow.children.at(-1);\n const startingCellPath2 = editor.api.findPath(startingCell2);\n const tablePath2 = startingCellPath2.slice(0, -2);\n const colPath2 = startingCellPath2.at(-1) + index + 1;\n const nextRowStartCellPath2 = [...tablePath2, nextRowIndex, colPath2];\n const rowsNumberAffected2 = endingRowIndex - curRowCellRowIndex + 1;\n const rowSpan2 = curRowCellRowSpan - rowsNumberAffected2;\n const newCell2 = cloneDeep2({ ...curRowCell, rowSpan: rowSpan2 });\n if (newCell2.attributes?.rowspan) {\n newCell2.attributes.rowspan = rowSpan2.toString();\n }\n editor.tf.insertNodes(newCell2, {\n at: nextRowStartCellPath2\n });\n continue;\n }\n const startingCell = nextRow.children[startingCellIndex];\n const { col: startingColIndex } = getCellIndices(editor, startingCell);\n let incrementBy = index;\n if (startingColIndex < curRowCellColIndex) {\n incrementBy += 1;\n }\n const startingCellPath = editor.api.findPath(startingCell);\n const tablePath = startingCellPath.slice(0, -2);\n const colPath = startingCellPath.at(-1);\n const nextRowStartCellPath = [\n ...tablePath,\n nextRowIndex,\n colPath + incrementBy\n ];\n const rowsNumberAffected = endingRowIndex - curRowCellRowIndex + 1;\n const rowSpan = curRowCellRowSpan - rowsNumberAffected;\n const newCell = cloneDeep2({ ...curRowCell, rowSpan });\n if (newCell.attributes?.rowspan) {\n newCell.attributes.rowspan = rowSpan.toString();\n }\n editor.tf.insertNodes(newCell, {\n at: nextRowStartCellPath\n });\n }\n }\n squizeRowSpanCells.forEach((cur) => {\n const curRowCell = cur;\n const { row: curRowCellRowIndex } = getCellIndices(editor, curRowCell);\n const curRowCellRowSpan = api.table.getRowSpan(curRowCell);\n const curCellPath = editor.api.findPath(curRowCell);\n const curCellEndingRowIndex = Math.min(\n curRowCellRowIndex + curRowCellRowSpan - 1,\n endingRowIndex\n );\n const rowsNumberAffected = curCellEndingRowIndex - deletingRowIndex + 1;\n const rowSpan = curRowCellRowSpan - rowsNumberAffected;\n const newCell = cloneDeep2({ ...curRowCell, rowSpan });\n if (newCell.attributes?.rowspan) {\n newCell.attributes.rowspan = rowSpan.toString();\n }\n editor.tf.setNodes(newCell, { at: curCellPath });\n });\n const rowToDelete = table.children[deletingRowIndex];\n const rowPath = editor.api.findPath(rowToDelete);\n Array.from({ length: rowsDeleteNumber }).forEach(() => {\n editor.tf.removeNodes({\n at: rowPath\n });\n });\n }\n};\n\n// src/lib/transforms/deleteRow.ts\nvar deleteRow = (editor) => {\n const { getOptions, type } = getEditorPlugin8(editor, {\n key: \"table\"\n });\n const { disableMerge } = getOptions();\n if (!disableMerge) {\n return deleteTableMergeRow(editor);\n }\n if (editor.api.some({\n match: { type }\n })) {\n const currentTableItem = editor.api.above({\n match: { type }\n });\n if (!currentTableItem) return;\n if (editor.api.isExpanded())\n return deleteRowWhenExpanded(editor, currentTableItem);\n const currentRowItem = editor.api.above({\n match: { type: editor.getType(BaseTableRowPlugin) }\n });\n if (currentRowItem && currentTableItem && // Cannot delete the last row\n currentTableItem[0].children.length > 1) {\n editor.tf.removeNodes({\n at: currentRowItem[1]\n });\n }\n }\n};\n\n// src/lib/transforms/deleteTable.ts\nvar deleteTable = (editor) => {\n if (editor.api.some({\n match: { type: editor.getType(BaseTablePlugin) }\n })) {\n const tableItem = editor.api.above({\n match: { type: editor.getType(BaseTablePlugin) }\n });\n if (tableItem) {\n editor.tf.removeNodes({\n at: tableItem[1]\n });\n }\n }\n};\n\n// src/lib/transforms/insertTable.ts\nimport {\n PathApi as PathApi8\n} from \"@udecode/plate\";\nvar insertTable = (editor, { colCount = 2, header, rowCount = 2 } = {}, { select: shouldSelect, ...options } = {}) => {\n const { api } = editor.getPlugin({ key: \"table\" });\n const type = editor.getType(BaseTablePlugin);\n editor.tf.withoutNormalizing(() => {\n const newTable = api.create.table({\n colCount,\n header,\n rowCount\n });\n if (!options.at) {\n const currentTableEntry = editor.api.block({\n match: { type }\n });\n if (currentTableEntry) {\n const [, tablePath] = currentTableEntry;\n const insertPath = PathApi8.next(tablePath);\n editor.tf.insertNodes(newTable, {\n at: insertPath,\n ...options\n });\n if (editor.selection) {\n editor.tf.select(editor.api.start(insertPath));\n }\n return;\n }\n }\n editor.tf.insertNodes(newTable, {\n nextBlock: !options.at,\n select: shouldSelect,\n ...options\n });\n if (shouldSelect) {\n const tableEntry = editor.api.node({\n at: options.at,\n match: { type }\n });\n if (!tableEntry) return;\n editor.tf.select(editor.api.start(tableEntry[1]));\n }\n });\n};\n\n// src/lib/transforms/insertTableColumn.ts\nimport {\n NodeApi as NodeApi6,\n PathApi as PathApi10,\n getEditorPlugin as getEditorPlugin10\n} from \"@udecode/plate\";\n\n// src/lib/merge/insertTableColumn.ts\nimport {\n NodeApi as NodeApi5,\n PathApi as PathApi9,\n getEditorPlugin as getEditorPlugin9\n} from \"@udecode/plate\";\nimport cloneDeep3 from \"lodash/cloneDeep.js\";\n\n// src/lib/merge/getCellPath.ts\nvar getCellPath = (editor, tableEntry, curRowIndex, curColIndex) => {\n const [tableNode, tablePath] = tableEntry;\n const rowElem = tableNode.children[curRowIndex];\n const foundColIndex = rowElem.children.findIndex((c) => {\n const cE = c;\n const { col: colIndex } = getCellIndices(editor, cE);\n return colIndex === curColIndex;\n });\n return tablePath.concat([curRowIndex, foundColIndex]);\n};\n\n// src/lib/merge/insertTableColumn.ts\nvar insertTableMergeColumn = (editor, {\n at,\n before,\n fromCell,\n header,\n select: shouldSelect\n} = {}) => {\n const { api, getOptions, type } = getEditorPlugin9(editor, BaseTablePlugin);\n const { initialTableWidth, minColumnWidth } = getOptions();\n if (at && !fromCell) {\n const table = NodeApi5.get(editor, at);\n if (table?.type === editor.getType(BaseTablePlugin)) {\n fromCell = NodeApi5.lastChild(editor, at.concat([0]))[1];\n at = void 0;\n }\n }\n const cellEntry = fromCell ? editor.api.node({\n at: fromCell,\n match: { type: getCellTypes(editor) }\n }) : editor.api.block({\n match: { type: getCellTypes(editor) }\n });\n if (!cellEntry) return;\n const [, cellPath] = cellEntry;\n const cell = cellEntry[0];\n const tableEntry = editor.api.block({\n above: true,\n at: cellPath,\n match: { type }\n });\n if (!tableEntry) return;\n const [tableNode, tablePath] = tableEntry;\n const { col: cellColIndex } = getCellIndices(editor, cell);\n const cellColSpan = api.table.getColSpan(cell);\n let nextColIndex;\n let checkingColIndex;\n if (PathApi9.isPath(at)) {\n nextColIndex = cellColIndex;\n checkingColIndex = cellColIndex - 1;\n } else {\n nextColIndex = before ? cellColIndex : cellColIndex + cellColSpan;\n checkingColIndex = before ? cellColIndex : cellColIndex + cellColSpan - 1;\n }\n const rowNumber = tableNode.children.length;\n const firstCol = nextColIndex <= 0;\n let placementCorrection = before ? 0 : 1;\n if (firstCol) {\n checkingColIndex = 0;\n placementCorrection = 0;\n }\n const affectedCellsSet = /* @__PURE__ */ new Set();\n Array.from({ length: rowNumber }, (_, i) => i).forEach((rI) => {\n const found = findCellByIndexes(editor, tableNode, rI, checkingColIndex);\n if (found) {\n affectedCellsSet.add(found);\n }\n });\n const affectedCells = Array.from(affectedCellsSet);\n affectedCells.forEach((curCell) => {\n const { col: curColIndex, row: curRowIndex } = getCellIndices(\n editor,\n curCell\n );\n const curRowSpan = api.table.getRowSpan(curCell);\n const curColSpan = api.table.getColSpan(curCell);\n const currentCellPath = getCellPath(\n editor,\n tableEntry,\n curRowIndex,\n curColIndex\n );\n const endCurI = curColIndex + curColSpan - 1;\n if (endCurI >= nextColIndex && !firstCol && !before) {\n const colSpan = curColSpan + 1;\n const newCell = cloneDeep3({ ...curCell, colSpan });\n if (newCell.attributes?.colspan) {\n newCell.attributes.colspan = colSpan.toString();\n }\n editor.tf.setNodes(newCell, { at: currentCellPath });\n } else {\n const curRowPath = currentCellPath.slice(0, -1);\n const curColPath = currentCellPath.at(-1);\n const placementPath = [\n ...curRowPath,\n before ? curColPath : curColPath + placementCorrection\n ];\n const row = editor.api.parent(currentCellPath);\n const rowElement = row[0];\n const emptyCell = {\n ...api.create.tableCell({ header, row: rowElement }),\n colSpan: 1,\n rowSpan: curRowSpan\n };\n editor.tf.insertNodes(emptyCell, {\n at: placementPath,\n select: shouldSelect\n });\n }\n });\n editor.tf.withoutNormalizing(() => {\n const { colSizes } = tableNode;\n if (colSizes) {\n let newColSizes = [\n ...colSizes.slice(0, nextColIndex),\n 0,\n ...colSizes.slice(nextColIndex)\n ];\n if (initialTableWidth) {\n newColSizes[nextColIndex] = colSizes[nextColIndex] ?? colSizes[nextColIndex - 1] ?? initialTableWidth / colSizes.length;\n const oldTotal = colSizes.reduce((a, b) => a + b, 0);\n const newTotal = newColSizes.reduce((a, b) => a + b, 0);\n const maxTotal = Math.max(oldTotal, initialTableWidth);\n if (newTotal > maxTotal) {\n const factor = maxTotal / newTotal;\n newColSizes = newColSizes.map(\n (size) => Math.max(minColumnWidth ?? 0, Math.floor(size * factor))\n );\n }\n }\n editor.tf.setNodes(\n {\n colSizes: newColSizes\n },\n {\n at: tablePath\n }\n );\n }\n });\n};\n\n// src/lib/transforms/insertTableColumn.ts\nvar insertTableColumn = (editor, options = {}) => {\n const { api, getOptions, type } = getEditorPlugin10(editor, BaseTablePlugin);\n const { disableMerge, initialTableWidth, minColumnWidth } = getOptions();\n if (!disableMerge) {\n return insertTableMergeColumn(editor, options);\n }\n const { before, header, select: shouldSelect } = options;\n let { at, fromCell } = options;\n if (at && !fromCell) {\n const table = NodeApi6.get(editor, at);\n if (table?.type === editor.getType(BaseTablePlugin)) {\n fromCell = NodeApi6.lastChild(editor, at.concat([0]))[1];\n at = void 0;\n }\n }\n const cellEntry = editor.api.block({\n at: fromCell,\n match: { type: getCellTypes(editor) }\n });\n if (!cellEntry) return;\n const [, cellPath] = cellEntry;\n const tableEntry = editor.api.block({\n above: true,\n at: cellPath,\n match: { type }\n });\n if (!tableEntry) return;\n const [tableNode, tablePath] = tableEntry;\n let nextCellPath;\n let nextColIndex;\n if (PathApi10.isPath(at)) {\n nextCellPath = at;\n nextColIndex = at.at(-1);\n } else {\n nextCellPath = before ? cellPath : PathApi10.next(cellPath);\n nextColIndex = before ? cellPath.at(-1) : cellPath.at(-1) + 1;\n }\n const currentRowIndex = cellPath.at(-2);\n editor.tf.withoutNormalizing(() => {\n tableNode.children.forEach((row, rowIndex) => {\n const insertCellPath = [...nextCellPath];\n if (PathApi10.isPath(at)) {\n insertCellPath[at.length - 2] = rowIndex;\n } else {\n insertCellPath[cellPath.length - 2] = rowIndex;\n }\n const isHeaderRow = header === void 0 ? row.children.every(\n (c) => c.type === editor.getType(BaseTableCellHeaderPlugin)\n ) : header;\n editor.tf.insertNodes(\n api.create.tableCell({\n header: isHeaderRow\n }),\n {\n at: insertCellPath,\n select: shouldSelect && rowIndex === currentRowIndex\n }\n );\n });\n const { colSizes } = tableNode;\n if (colSizes) {\n let newColSizes = [\n ...colSizes.slice(0, nextColIndex),\n 0,\n ...colSizes.slice(nextColIndex)\n ];\n if (initialTableWidth) {\n newColSizes[nextColIndex] = colSizes[nextColIndex] ?? colSizes[nextColIndex - 1] ?? initialTableWidth / colSizes.length;\n const oldTotal = colSizes.reduce((a, b) => a + b, 0);\n const newTotal = newColSizes.reduce((a, b) => a + b, 0);\n const maxTotal = Math.max(oldTotal, initialTableWidth);\n if (newTotal > maxTotal) {\n const factor = maxTotal / newTotal;\n newColSizes = newColSizes.map(\n (size) => Math.max(minColumnWidth ?? 0, Math.floor(size * factor))\n );\n }\n }\n editor.tf.setNodes(\n {\n colSizes: newColSizes\n },\n {\n at: tablePath\n }\n );\n }\n });\n};\n\n// src/lib/transforms/insertTableRow.ts\nimport {\n NodeApi as NodeApi8,\n PathApi as PathApi12,\n getEditorPlugin as getEditorPlugin12\n} from \"@udecode/plate\";\n\n// src/lib/merge/insertTableRow.ts\nimport {\n NodeApi as NodeApi7,\n PathApi as PathApi11,\n getEditorPlugin as getEditorPlugin11\n} from \"@udecode/plate\";\nimport cloneDeep4 from \"lodash/cloneDeep.js\";\nvar insertTableMergeRow = (editor, {\n at,\n before,\n fromRow,\n header,\n select: shouldSelect\n} = {}) => {\n const { api, type } = getEditorPlugin11(editor, BaseTablePlugin);\n if (at && !fromRow) {\n const table = NodeApi7.get(editor, at);\n if (table?.type === editor.getType(BaseTablePlugin)) {\n fromRow = NodeApi7.lastChild(editor, at)[1];\n at = void 0;\n }\n }\n const trEntry = editor.api.block({\n at: fromRow,\n match: { type: editor.getType(BaseTableRowPlugin) }\n });\n if (!trEntry) return;\n const [, trPath] = trEntry;\n const tableEntry = editor.api.block({\n above: true,\n at: trPath,\n match: { type }\n });\n if (!tableEntry) return;\n const tableNode = tableEntry[0];\n const cellEntry = editor.api.node({\n at: fromRow,\n match: { type: getCellTypes(editor) }\n });\n if (!cellEntry) return;\n const [cellNode, cellPath] = cellEntry;\n const cellElement = cellNode;\n const cellRowSpan = api.table.getRowSpan(cellElement);\n const { row: cellRowIndex } = getCellIndices(editor, cellElement);\n const rowPath = cellPath.at(-2);\n const tablePath = cellPath.slice(0, -2);\n let nextRowIndex;\n let checkingRowIndex;\n let nextRowPath;\n if (PathApi11.isPath(at)) {\n nextRowIndex = at.at(-1);\n checkingRowIndex = cellRowIndex - 1;\n nextRowPath = at;\n } else {\n nextRowIndex = before ? cellRowIndex : cellRowIndex + cellRowSpan;\n checkingRowIndex = before ? cellRowIndex - 1 : cellRowIndex + cellRowSpan - 1;\n nextRowPath = [...tablePath, before ? rowPath : rowPath + cellRowSpan];\n }\n const firstRow = nextRowIndex === 0;\n if (firstRow) {\n checkingRowIndex = 0;\n }\n const colCount = getTableColumnCount(tableNode);\n const affectedCellsSet = /* @__PURE__ */ new Set();\n Array.from({ length: colCount }, (_, i) => i).forEach((cI) => {\n const found = findCellByIndexes(editor, tableNode, checkingRowIndex, cI);\n if (found) {\n affectedCellsSet.add(found);\n }\n });\n const affectedCells = Array.from(affectedCellsSet);\n const newRowChildren = [];\n affectedCells.forEach((cur) => {\n if (!cur) return;\n const curCell = cur;\n const { col: curColIndex, row: curRowIndex } = getCellIndices(\n editor,\n curCell\n );\n const curRowSpan = api.table.getRowSpan(curCell);\n const curColSpan = api.table.getColSpan(curCell);\n const currentCellPath = getCellPath(\n editor,\n tableEntry,\n curRowIndex,\n curColIndex\n );\n const endCurI = curRowIndex + curRowSpan - 1;\n if (endCurI >= nextRowIndex && !firstRow) {\n const rowSpan = curRowSpan + 1;\n const newCell = cloneDeep4({ ...curCell, rowSpan });\n if (newCell.attributes?.rowspan) {\n newCell.attributes.rowspan = rowSpan.toString();\n }\n editor.tf.setNodes(newCell, { at: currentCellPath });\n } else {\n const row = editor.api.parent(currentCellPath);\n const rowElement = row[0];\n const emptyCell = api.create.tableCell({ header, row: rowElement });\n newRowChildren.push({\n ...emptyCell,\n colSpan: curColSpan,\n rowSpan: 1\n });\n }\n });\n editor.tf.withoutNormalizing(() => {\n editor.tf.insertNodes(\n {\n children: newRowChildren,\n type: editor.getType(BaseTableRowPlugin)\n },\n {\n at: nextRowPath,\n select: false\n }\n );\n if (shouldSelect) {\n const cellEntry2 = editor.api.node({\n at: nextRowPath,\n match: { type: getCellTypes(editor) }\n });\n if (cellEntry2) {\n const [, nextCellPath] = cellEntry2;\n editor.tf.select(nextCellPath);\n }\n }\n });\n};\n\n// src/lib/transforms/insertTableRow.ts\nvar insertTableRow = (editor, options = {}) => {\n const { api, getOptions, type } = getEditorPlugin12(editor, BaseTablePlugin);\n const { disableMerge } = getOptions();\n if (!disableMerge) {\n return insertTableMergeRow(editor, options);\n }\n const { before, header, select: shouldSelect } = options;\n let { at, fromRow } = options;\n if (at && !fromRow) {\n const table = NodeApi8.get(editor, at);\n if (table?.type === editor.getType(BaseTablePlugin)) {\n fromRow = NodeApi8.lastChild(editor, at)[1];\n at = void 0;\n }\n }\n const trEntry = editor.api.block({\n at: fromRow,\n match: { type: editor.getType(BaseTableRowPlugin) }\n });\n if (!trEntry) return;\n const [trNode, trPath] = trEntry;\n const tableEntry = editor.api.block({\n above: true,\n at: trPath,\n match: { type }\n });\n if (!tableEntry) return;\n const getEmptyRowNode2 = () => ({\n children: trNode.children.map((_, i) => {\n const hasSingleRow = tableEntry[0].children.length === 1;\n const isHeaderColumn = !hasSingleRow && tableEntry[0].children.every(\n (n) => n.children[i].type === editor.getType(BaseTableCellHeaderPlugin)\n );\n return api.create.tableCell({\n header: header ?? isHeaderColumn\n });\n }),\n type: editor.getType(BaseTableRowPlugin)\n });\n editor.tf.withoutNormalizing(() => {\n editor.tf.insertNodes(getEmptyRowNode2(), {\n at: PathApi12.isPath(at) ? at : before ? trPath : PathApi12.next(trPath)\n });\n });\n if (shouldSelect) {\n const cellEntry = editor.api.block({\n match: { type: getCellTypes(editor) }\n });\n if (!cellEntry) return;\n const [, nextCellPath] = cellEntry;\n if (PathApi12.isPath(at)) {\n nextCellPath[nextCellPath.length - 2] = at.at(-2);\n } else {\n nextCellPath[nextCellPath.length - 2] = before ? nextCellPath.at(-2) : nextCellPath.at(-2) + 1;\n }\n editor.tf.select(nextCellPath);\n }\n};\n\n// src/lib/transforms/setBorderSize.ts\nimport {\n ElementApi as ElementApi2\n} from \"@udecode/plate\";\nvar setBorderSize = (editor, size, {\n at,\n border = \"all\"\n} = {}) => {\n const cellEntry = editor.api.node({\n at,\n match: { type: getCellTypes(editor) }\n });\n if (!cellEntry) return;\n const [cellNode, cellPath] = cellEntry;\n const cellIndex = cellPath.at(-1);\n const rowIndex = cellPath.at(-2);\n const borderStyle = {\n size\n };\n const setNodesOptions = {\n match: (n) => ElementApi2.isElement(n) && getCellTypes(editor).includes(n.type)\n };\n if (border === \"top\") {\n const isFirstRow = rowIndex === 0;\n if (isFirstRow) {\n const newBorders2 = {\n ...cellNode.borders,\n top: borderStyle\n };\n editor.tf.setNodes(\n { borders: newBorders2 },\n {\n at: cellPath,\n ...setNodesOptions\n }\n );\n return;\n }\n const cellAboveEntry = getTopTableCell(editor, { at: cellPath });\n if (!cellAboveEntry) return;\n const [cellAboveNode, cellAbovePath] = cellAboveEntry;\n const newBorders = {\n ...cellAboveNode.borders,\n bottom: borderStyle\n };\n editor.tf.setNodes(\n { borders: newBorders },\n {\n at: cellAbovePath,\n ...setNodesOptions\n }\n );\n } else if (border === \"bottom\") {\n const newBorders = {\n ...cellNode.borders,\n bottom: borderStyle\n };\n editor.tf.setNodes(\n { borders: newBorders },\n {\n at: cellPath,\n ...setNodesOptions\n }\n );\n }\n if (border === \"left\") {\n const isFirstCell = cellIndex === 0;\n if (isFirstCell) {\n const newBorders2 = {\n ...cellNode.borders,\n left: borderStyle\n };\n editor.tf.setNodes(\n { borders: newBorders2 },\n {\n at: cellPath,\n ...setNodesOptions\n }\n );\n return;\n }\n const prevCellEntry = getLeftTableCell(editor, { at: cellPath });\n if (!prevCellEntry) return;\n const [prevCellNode, prevCellPath] = prevCellEntry;\n const newBorders = {\n ...prevCellNode.borders,\n right: borderStyle\n };\n editor.tf.setNodes(\n { borders: newBorders },\n {\n at: prevCellPath,\n ...setNodesOptions\n }\n );\n } else if (border === \"right\") {\n const newBorders = {\n ...cellNode.borders,\n right: borderStyle\n };\n editor.tf.setNodes(\n { borders: newBorders },\n {\n at: cellPath,\n ...setNodesOptions\n }\n );\n }\n if (border === \"all\") {\n editor.tf.withoutNormalizing(() => {\n setBorderSize(editor, size, { at, border: \"top\" });\n setBorderSize(editor, size, { at, border: \"bottom\" });\n setBorderSize(editor, size, { at, border: \"left\" });\n setBorderSize(editor, size, { at, border: \"right\" });\n });\n }\n};\n\n// src/lib/transforms/setTableColSize.ts\nvar setTableColSize = (editor, { colIndex, width }, options = {}) => {\n const table = editor.api.node({\n match: { type: BaseTablePlugin.key },\n ...options\n });\n if (!table) return;\n const [tableNode, tablePath] = table;\n const colSizes = tableNode.colSizes ? [...tableNode.colSizes] : Array.from({ length: getTableColumnCount(tableNode) }).fill(0);\n colSizes[colIndex] = width;\n editor.tf.setNodes({ colSizes }, { at: tablePath });\n};\n\n// src/lib/transforms/setTableMarginLeft.ts\nvar setTableMarginLeft = (editor, { marginLeft }, options = {}) => {\n const table = editor.api.node({\n match: { type: BaseTablePlugin.key },\n ...options\n });\n if (!table) return;\n const [, tablePath] = table;\n editor.tf.setNodes({ marginLeft }, { at: tablePath });\n};\n\n// src/lib/transforms/setTableRowSize.ts\nvar setTableRowSize = (editor, { height, rowIndex }, options = {}) => {\n const table = editor.api.node({\n match: { type: BaseTablePlugin.key },\n ...options\n });\n if (!table) return;\n const [, tablePath] = table;\n const tableRowPath = [...tablePath, rowIndex];\n editor.tf.setNodes({ size: height }, { at: tableRowPath });\n};\n\n// src/lib/merge/deleteColumn.ts\nvar deleteTableMergeColumn = (editor) => {\n const type = editor.getType(BaseTablePlugin);\n const tableEntry = editor.api.above({\n match: { type }\n });\n if (!tableEntry) return;\n editor.tf.withoutNormalizing(() => {\n const { api } = getEditorPlugin13(editor, BaseTablePlugin);\n if (editor.api.isExpanded()) {\n return deleteColumnWhenExpanded(editor, tableEntry);\n }\n const table = tableEntry[0];\n const selectedCellEntry = editor.api.above({\n match: {\n type: getCellTypes(editor)\n }\n });\n if (!selectedCellEntry) return;\n const selectedCell = selectedCellEntry[0];\n const { col: deletingColIndex } = getCellIndices(editor, selectedCell);\n const colsDeleteNumber = api.table.getColSpan(selectedCell);\n const endingColIndex = deletingColIndex + colsDeleteNumber - 1;\n const rowNumber = table.children.length;\n const affectedCellsSet = /* @__PURE__ */ new Set();\n Array.from({ length: rowNumber }, (_, i) => i).forEach((rI) => {\n return Array.from({ length: colsDeleteNumber }, (_, i) => i).forEach(\n (cI) => {\n const colIndex = deletingColIndex + cI;\n const found = findCellByIndexes(editor, table, rI, colIndex);\n if (found) {\n affectedCellsSet.add(found);\n }\n }\n );\n });\n const affectedCells = Array.from(affectedCellsSet);\n const { squizeColSpanCells } = affectedCells.reduce(\n (acc, cur) => {\n if (!cur) return acc;\n const currentCell = cur;\n const { col: curColIndex } = getCellIndices(editor, currentCell);\n const curColSpan = api.table.getColSpan(currentCell);\n if (curColIndex < deletingColIndex && curColSpan > 1) {\n acc.squizeColSpanCells.push(currentCell);\n } else if (curColSpan > 1 && curColIndex + curColSpan - 1 > endingColIndex) {\n acc.squizeColSpanCells.push(currentCell);\n }\n return acc;\n },\n { squizeColSpanCells: [] }\n );\n squizeColSpanCells.forEach((cur) => {\n const curCell = cur;\n const { col: curColIndex, row: curColRowIndex } = getCellIndices(\n editor,\n curCell\n );\n const curColSpan = api.table.getColSpan(curCell);\n const curCellPath = getCellPath(\n editor,\n tableEntry,\n curColRowIndex,\n curColIndex\n );\n const curCellEndingColIndex = Math.min(\n curColIndex + curColSpan - 1,\n endingColIndex\n );\n const colsNumberAffected = curCellEndingColIndex - deletingColIndex + 1;\n const colSpan = curColSpan - colsNumberAffected;\n const newCell = cloneDeep5({ ...curCell, colSpan });\n if (newCell.attributes?.colspan) {\n newCell.attributes.colspan = colSpan.toString();\n }\n editor.tf.setNodes(newCell, { at: curCellPath });\n });\n const trEntry = editor.api.above({\n match: { type: editor.getType(BaseTableRowPlugin) }\n });\n if (selectedCell && trEntry && tableEntry && // Cannot delete the last cell\n trEntry[0].children.length > 1) {\n const [tableNode, tablePath] = tableEntry;\n const paths = [];\n affectedCells.forEach((cur) => {\n const curCell = cur;\n const { col: curColIndex, row: curRowIndex } = getCellIndices(\n editor,\n curCell\n );\n if (!squizeColSpanCells.includes(curCell) && curColIndex >= deletingColIndex && curColIndex <= endingColIndex) {\n const cellPath = getCellPath(\n editor,\n tableEntry,\n curRowIndex,\n curColIndex\n );\n if (!paths[curRowIndex]) {\n paths[curRowIndex] = [];\n }\n paths[curRowIndex].push(cellPath);\n }\n });\n paths.forEach((cellPaths) => {\n const pathToDelete = cellPaths[0];\n cellPaths.forEach(() => {\n editor.tf.removeNodes({\n at: pathToDelete\n });\n });\n });\n const { colSizes } = tableNode;\n if (colSizes) {\n const newColSizes = [...colSizes];\n newColSizes.splice(deletingColIndex, 1);\n editor.tf.setNodes(\n { colSizes: newColSizes },\n { at: tablePath }\n );\n }\n }\n });\n};\n\n// src/lib/merge/getTableMergedColumnCount.ts\nvar getTableMergedColumnCount = (tableNode) => {\n return tableNode.children?.[0]?.children?.reduce(\n (prev, cur) => prev + (getColSpan(cur) ?? 1),\n 0\n );\n};\n\n// src/lib/merge/isTableRectangular.ts\nvar allEqual = (arr) => arr.every((val) => val === arr[0]);\nvar isTableRectangular = (table) => {\n const arr = [];\n table?.children?.forEach((row, rI) => {\n const rowEl = row;\n rowEl.children?.forEach((cell) => {\n const cellElem = cell;\n Array.from({\n length: getRowSpan(cellElem) || 1\n }).forEach((_, i) => {\n if (!arr[rI + i]) {\n arr[rI + i] = 0;\n }\n arr[rI + i] += getColSpan(cellElem);\n });\n });\n });\n return allEqual(arr);\n};\n\n// src/lib/merge/mergeTableCells.ts\nimport {\n getEditorPlugin as getEditorPlugin14\n} from \"@udecode/plate\";\nimport cloneDeep6 from \"lodash/cloneDeep.js\";\nvar mergeTableCells = (editor) => {\n const { api } = getEditorPlugin14(editor, BaseTablePlugin);\n const cellEntries = getTableGridAbove(editor, {\n format: \"cell\"\n });\n editor.tf.withoutNormalizing(() => {\n let colSpan = 0;\n for (const entry of cellEntries) {\n const [cell, path] = entry;\n const rowIndex = path.at(-2);\n if (rowIndex === cellEntries[0][1].at(-2)) {\n const cellColSpan = api.table.getColSpan(cell);\n colSpan += cellColSpan;\n }\n }\n let rowSpan = 0;\n const { col } = getCellIndices(editor, cellEntries[0][0]);\n cellEntries.forEach((entry) => {\n const cell = entry[0];\n const { col: curCol } = getCellIndices(editor, cell);\n if (col === curCol) {\n rowSpan += api.table.getRowSpan(cell);\n }\n });\n const mergingCellChildren = [];\n for (const cellEntry of cellEntries) {\n const [el] = cellEntry;\n const cellChildren = api.table.getCellChildren(el);\n if (cellChildren.length !== 1 || !editor.api.isEmpty(cellChildren[0])) {\n mergingCellChildren.push(...cloneDeep6(cellChildren));\n }\n }\n const cols = {};\n cellEntries.forEach(([_entry, path]) => {\n const rowIndex = path.at(-2);\n if (cols[rowIndex]) {\n cols[rowIndex].push(path);\n } else {\n cols[rowIndex] = [path];\n }\n });\n Object.values(cols).forEach((paths) => {\n paths?.forEach(() => {\n editor.tf.removeNodes({ at: paths[0] });\n });\n });\n const mergedCell = {\n ...api.create.tableCell({\n children: mergingCellChildren,\n header: cellEntries[0][0].type === editor.getType(BaseTableCellHeaderPlugin)\n }),\n colSpan,\n rowSpan\n };\n editor.tf.insertNodes(mergedCell, { at: cellEntries[0][1] });\n });\n editor.tf.select(editor.api.end(cellEntries[0][1]));\n};\n\n// src/lib/merge/splitTableCell.ts\nimport {\n getEditorPlugin as getEditorPlugin15\n} from \"@udecode/plate\";\nvar splitTableCell = (editor) => {\n const { api } = getEditorPlugin15(editor, BaseTablePlugin);\n const tableRowType = editor.getType(BaseTableRowPlugin);\n const cellEntries = getTableGridAbove(editor, { format: \"cell\" });\n const [[cellElem, path]] = cellEntries;\n editor.tf.withoutNormalizing(() => {\n const createEmptyCell = (children) => {\n return {\n ...api.create.tableCell({\n children,\n header: cellElem.type === editor.getType(BaseTableCellHeaderPlugin)\n }),\n colSpan: 1,\n rowSpan: 1\n };\n };\n const tablePath = path.slice(0, -2);\n const cellPath = path.slice(-2);\n const [rowPath, colPath] = cellPath;\n const colSpan = api.table.getColSpan(cellElem);\n const rowSpan = api.table.getRowSpan(cellElem);\n const colPaths = [];\n for (let i = 0; i < colSpan; i++) {\n colPaths.push(colPath + i);\n }\n const { col } = getCellIndices(editor, cellElem);\n editor.tf.removeNodes({ at: path });\n const getClosestColPathForRow = (row, targetCol) => {\n const rowEntry = editor.api.node({\n at: [...tablePath, row],\n match: { type: tableRowType }\n });\n if (!rowEntry) {\n return 0;\n }\n const rowEl = rowEntry[0];\n let closestColPath = [];\n let smallestDiff = Number.POSITIVE_INFINITY;\n let isDirectionLeft = false;\n rowEl.children.forEach((cell) => {\n const cellElement = cell;\n const { col: cellCol } = getCellIndices(editor, cellElement);\n const diff = Math.abs(cellCol - targetCol);\n if (diff < smallestDiff) {\n smallestDiff = diff;\n closestColPath = editor.api.findPath(cellElement);\n isDirectionLeft = cellCol < targetCol;\n }\n });\n if (closestColPath.length > 0) {\n const lastIndex = closestColPath.at(-1);\n if (isDirectionLeft) {\n return lastIndex + 1;\n }\n return lastIndex;\n }\n return 1;\n };\n for (let i = 0; i < rowSpan; i++) {\n const currentRowPath = rowPath + i;\n const pathForNextRows = getClosestColPathForRow(currentRowPath, col);\n const newRowChildren = [];\n const _rowPath = [...tablePath, currentRowPath];\n const rowEntry = editor.api.node({\n at: _rowPath,\n match: { type: tableRowType }\n });\n for (let j = 0; j < colPaths.length; j++) {\n const cellChildren = api.table.getCellChildren(cellElem);\n const cellToInsert = i === 0 && j === 0 ? createEmptyCell(cellChildren) : createEmptyCell();\n if (rowEntry) {\n const currentColPath = i === 0 ? colPaths[j] : pathForNextRows;\n const pathForNewCell = [...tablePath, currentRowPath, currentColPath];\n editor.tf.insertNodes(cellToInsert, { at: pathForNewCell });\n } else {\n newRowChildren.push(cellToInsert);\n }\n }\n if (!rowEntry) {\n editor.tf.insertNodes(\n {\n children: newRowChildren,\n type: editor.getType(BaseTableRowPlugin)\n },\n { at: _rowPath }\n );\n }\n }\n });\n editor.tf.select(editor.api.end(path));\n};\n\n// src/lib/BaseTablePlugin.ts\nvar BaseTableRowPlugin = createSlatePlugin({\n key: \"tr\",\n node: { isElement: true },\n parsers: {\n html: {\n deserializer: {\n rules: [{ validNodeName: \"TR\" }]\n }\n }\n }\n});\nvar BaseTableCellPlugin = createSlatePlugin({\n key: \"td\",\n node: {\n dangerouslyAllowAttributes: [\"colspan\", \"rowspan\"],\n isElement: true,\n props: ({ element }) => ({\n nodeProps: {\n colSpan: element?.attributes?.colspan,\n rowSpan: element?.attributes?.rowspan\n }\n })\n }\n}).extend(({ type }) => ({\n parsers: {\n html: {\n deserializer: {\n attributeNames: [\"rowspan\", \"colspan\"],\n parse: getParse(type),\n rules: [{ validNodeName: \"TD\" }]\n }\n }\n }\n}));\nvar BaseTableCellHeaderPlugin = createSlatePlugin({\n key: \"th\",\n node: {\n dangerouslyAllowAttributes: [\"colspan\", \"rowspan\"],\n isElement: true,\n props: ({ element }) => ({\n nodeProps: {\n colSpan: element?.attributes?.colspan,\n rowSpan: element?.attributes?.rowspan\n }\n })\n }\n}).extend(({ type }) => ({\n parsers: {\n html: {\n deserializer: {\n attributeNames: [\"rowspan\", \"colspan\"],\n parse: getParse(type),\n rules: [{ validNodeName: \"TH\" }]\n }\n }\n }\n}));\nvar BaseTablePlugin = createTSlatePlugin({\n key: \"table\",\n // dependencies: [NodeIdPlugin.key],\n node: {\n // dangerouslyAllowAttributes: [keyToDataAttribute('colSizes')],\n isElement: true\n // toDataAttributes: ({ node }) => {\n // if (node.colSizes as TTableElement['colSizes']) {\n // return {\n // [keyToDataAttribute('colSizes')]: JSON.stringify(node.colSizes),\n // };\n // }\n // },\n },\n normalizeInitialValue: normalizeInitialValueTable,\n options: {\n _cellIndices: {},\n disableMerge: false,\n minColumnWidth: 48\n },\n parsers: {\n html: {\n deserializer: {\n parse: ({ element, type }) => {\n const parent = element.parentNode?.parentNode;\n if (parent && element.tagName === \"TABLE\" && isSlatePluginElement(parent, type)) {\n return;\n }\n return { type };\n },\n rules: [{ validNodeName: \"TABLE\" }]\n // toNodeProps: ({ element }) => {\n // const dangerouslyColSizesString = element.getAttribute(\n // keyToDataAttribute('colSizes')\n // );\n // if (!dangerouslyColSizesString) return;\n // const colSizes = JSON.parse(dangerouslyColSizesString);\n // if (!Array.isArray(colSizes)) return;\n // return {\n // colSizes: colSizes,\n // };\n // },\n }\n }\n },\n plugins: [BaseTableRowPlugin, BaseTableCellPlugin, BaseTableCellHeaderPlugin]\n}).extendOptions(({ getOptions }) => ({\n cellIndices: (id) => getOptions()._cellIndices[id]\n})).extendEditorApi(({ editor }) => ({\n create: {\n table: bindFirst(getEmptyTableNode, editor),\n tableCell: bindFirst(getEmptyCellNode, editor),\n tableRow: bindFirst(getEmptyRowNode, editor)\n },\n table: {\n getCellBorders: bindFirst(getTableCellBorders, editor),\n getCellChildren: (cell) => cell.children,\n getCellSize: bindFirst(getTableCellSize, editor),\n getColSpan,\n getRowSpan\n }\n})).extendEditorTransforms(({ editor }) => ({\n insert: {\n table: bindFirst(insertTable, editor),\n tableColumn: bindFirst(insertTableColumn, editor),\n tableRow: bindFirst(insertTableRow, editor)\n },\n remove: {\n table: bindFirst(deleteTable, editor),\n tableColumn: bindFirst(deleteColumn, editor),\n tableRow: bindFirst(deleteRow, editor)\n },\n table: {\n merge: bindFirst(mergeTableCells, editor),\n split: bindFirst(splitTableCell, editor)\n }\n})).overrideEditor(withTable);\nvar getParse = (type) => {\n return ({ element }) => {\n const background = element.style.background || element.style.backgroundColor;\n if (background) {\n return {\n background,\n type\n };\n }\n return { type };\n };\n};\n\n// src/react/onKeyDownTable.ts\nimport { Hotkeys, isHotkey as isHotkey2 } from \"@udecode/plate\";\nvar onKeyDownTable = ({\n editor,\n event,\n type\n}) => {\n if (event.defaultPrevented) return;\n const compositeKeyCode = 229;\n if (\n // This exception only occurs when IME composition is triggered, and can be identified by this keycode\n event.which === compositeKeyCode && editor.selection && editor.api.isExpanded()\n ) {\n const tdEntries = Array.from(\n editor.api.nodes({\n at: editor.selection,\n match: { type: getCellTypes(editor) }\n })\n );\n if (tdEntries.length > 1) {\n editor.tf.collapse({\n edge: \"end\"\n });\n return;\n }\n }\n const isKeyDown = {\n \"shift+down\": isHotkey2(\"shift+down\", event),\n \"shift+left\": isHotkey2(\"shift+left\", event),\n \"shift+right\": isHotkey2(\"shift+right\", event),\n \"shift+up\": isHotkey2(\"shift+up\", event)\n };\n Object.keys(isKeyDown).forEach((key) => {\n if (isKeyDown[key] && // if many cells are selected\n moveSelectionFromCell(editor, {\n edge: KEY_SHIFT_EDGES[key],\n reverse: key === \"shift+up\"\n })) {\n event.preventDefault();\n event.stopPropagation();\n }\n });\n const isTab = Hotkeys.isTab(editor, event);\n const isUntab = Hotkeys.isUntab(editor, event);\n if (isTab || isUntab) {\n const entries = getTableEntries(editor);\n if (!entries) return;\n const { cell, row } = entries;\n const [, cellPath] = cell;\n if (isUntab) {\n const previousCell = getPreviousTableCell(editor, cell, cellPath, row);\n if (previousCell) {\n const [, previousCellPath] = previousCell;\n editor.tf.select(previousCellPath);\n }\n } else if (isTab) {\n const nextCell = getNextTableCell(editor, cell, cellPath, row);\n if (nextCell) {\n const [, nextCellPath] = nextCell;\n editor.tf.select(nextCellPath);\n }\n }\n event.preventDefault();\n event.stopPropagation();\n }\n if (isHotkey2(\"mod+a\", event)) {\n const res = editor.api.above({ match: { type } });\n if (!res) return;\n const [, tablePath] = res;\n editor.tf.select(tablePath);\n event.preventDefault();\n event.stopPropagation();\n }\n};\n\n// src/react/TablePlugin.tsx\nvar TableRowPlugin = toPlatePlugin(BaseTableRowPlugin);\nvar TableCellPlugin = toPlatePlugin(BaseTableCellPlugin);\nvar TableCellHeaderPlugin = toPlatePlugin(BaseTableCellHeaderPlugin);\nvar TablePlugin = toPlatePlugin(BaseTablePlugin, {\n plugins: [TableRowPlugin, TableCellPlugin, TableCellHeaderPlugin],\n handlers: {\n onKeyDown: onKeyDownTable\n }\n});\n\n// src/react/components/TableCellElement/getOnSelectTableBorderFactory.ts\nvar getOnSelectTableBorderFactory = (editor, selectedCells) => (border) => () => {\n if (selectedCells) return;\n if (border === \"none\") {\n setBorderSize(editor, 0, { border: \"all\" });\n } else if (border === \"outer\") {\n setBorderSize(editor, 1, { border: \"all\" });\n } else {\n const size = isTableBorderHidden(editor, border) ? 1 : 0;\n setBorderSize(editor, size, { border });\n }\n setTimeout(() => {\n editor.tf.focus();\n }, 50);\n};\n\n// src/react/components/TableCellElement/roundCellSizeToStep.ts\nvar roundCellSizeToStep = (size, step) => {\n return step ? Math.round(size / step) * step : size;\n};\n\n// src/react/components/TableCellElement/useIsCellSelected.ts\nimport { useMemoizedSelector } from \"@udecode/plate/react\";\n\n// src/react/stores/useTableStore.ts\nimport React from \"react\";\nimport { atom, createAtomStore } from \"@udecode/plate/react\";\nvar { TableProvider, tableStore, useTableStore } = createAtomStore(\n {\n colSizeOverrides: atom(/* @__PURE__ */ new Map()),\n marginLeftOverride: null,\n rowSizeOverrides: atom(/* @__PURE__ */ new Map()),\n selectedCells: null,\n selectedTables: null\n },\n { name: \"table\" }\n);\nvar useOverrideSizeFactory = (setOverrides) => React.useCallback(\n (index, size) => {\n setOverrides((overrides) => {\n const newOverrides = new Map(overrides);\n if (size === null) {\n newOverrides.delete(index);\n } else {\n newOverrides.set(index, size);\n }\n return newOverrides;\n });\n },\n [setOverrides]\n);\nvar useOverrideColSize = () => {\n const setColSizeOverrides = useTableStore().set.colSizeOverrides();\n return useOverrideSizeFactory(setColSizeOverrides);\n};\nvar useOverrideRowSize = () => {\n const setRowSizeOverrides = useTableStore().set.rowSizeOverrides();\n return useOverrideSizeFactory(setRowSizeOverrides);\n};\nvar useOverrideMarginLeft = () => useTableStore().set.marginLeftOverride();\n\n// src/react/components/TableCellElement/useIsCellSelected.ts\nvar useIsCellSelected = (element) => {\n const selectedCells = useTableStore().get.selectedCells();\n return useMemoizedSelector(\n () => !!selectedCells?.includes(element),\n [element, selectedCells]\n );\n};\n\n// src/react/components/TableCellElement/useTableBordersDropdownMenuContentState.ts\nimport { useEditorRef, useEditorSelector } from \"@udecode/plate/react\";\nvar useTableBordersDropdownMenuContentState = () => {\n const editor = useEditorRef();\n const selectedCells = useTableStore().get.selectedCells();\n const hasBottomBorder = useEditorSelector(\n (editor2) => !isTableBorderHidden(editor2, \"bottom\"),\n []\n );\n const hasTopBorder = useEditorSelector(\n (editor2) => !isTableBorderHidden(editor2, \"top\"),\n []\n );\n const hasLeftBorder = useEditorSelector(\n (editor2) => !isTableBorderHidden(editor2, \"left\"),\n []\n );\n const hasRightBorder = useEditorSelector(\n (editor2) => !isTableBorderHidden(editor2, \"right\"),\n []\n );\n const hasOuterBorders = hasBottomBorder && hasTopBorder && hasLeftBorder && hasRightBorder;\n const hasNoBorders = !hasBottomBorder && !hasTopBorder && !hasLeftBorder && !hasRightBorder;\n return {\n getOnSelectTableBorder: getOnSelectTableBorderFactory(\n editor,\n selectedCells\n ),\n hasBottomBorder,\n hasLeftBorder,\n hasNoBorders,\n hasOuterBorders,\n hasRightBorder,\n hasTopBorder\n };\n};\n\n// src/react/components/TableCellElement/useTableCellBorders.ts\nimport React3 from \"react\";\nimport { useEditorPlugin as useEditorPlugin2, useElement as useElement2 } from \"@udecode/plate/react\";\n\n// src/react/hooks/useCellIndices.ts\nimport React2 from \"react\";\nimport { useEditorPlugin, useElement } from \"@udecode/plate/react\";\nvar useCellIndices = () => {\n const { editor, useOption } = useEditorPlugin(TablePlugin);\n const element = useElement();\n const cellIndices = useOption(\"cellIndices\", element.id);\n return React2.useMemo(() => {\n if (!cellIndices) {\n return computeCellIndices(editor, {\n cellNode: element\n });\n }\n return cellIndices;\n }, [cellIndices, editor, element]);\n};\n\n// src/react/components/TableCellElement/useTableCellBorders.ts\nfunction useTableCellBorders() {\n const { editor } = useEditorPlugin2(TablePlugin);\n const element = useElement2();\n const cellIndices = useCellIndices();\n return React3.useMemo(() => {\n return getTableCellBorders(editor, { cellIndices, element });\n }, [editor, element, cellIndices]);\n}\n\n// src/react/components/TableCellElement/useTableCellElement.ts\nimport { useEditorPlugin as useEditorPlugin5, useElement as useElement5 } from \"@udecode/plate/react\";\n\n// src/react/components/TableCellElement/useTableCellSize.ts\nimport React5 from \"react\";\nimport {\n useEditorPlugin as useEditorPlugin4,\n useElement as useElement4,\n useElementSelector as useElementSelector2\n} from \"@udecode/plate/react\";\n\n// src/react/components/TableElement/useSelectedCells.ts\nimport React4 from \"react\";\nimport { useEditorRef as useEditorRef2, useReadOnly, useSelected } from \"@udecode/plate/react\";\nvar useSelectedCells = () => {\n const readOnly = useReadOnly();\n const selected = useSelected();\n const editor = useEditorRef2();\n const [selectedCells, setSelectedCells] = useTableStore().use.selectedCells();\n const setSelectedTables = useTableStore().set.selectedTables();\n React4.useEffect(() => {\n if (!selected || readOnly) {\n setSelectedCells(null);\n setSelectedTables(null);\n }\n }, [selected, editor, setSelectedCells, readOnly, setSelectedTables]);\n React4.useEffect(() => {\n if (readOnly) return;\n const tableEntries = getTableGridAbove(editor, { format: \"table\" });\n const cellEntries = getTableGridAbove(editor, { format: \"cell\" });\n if (cellEntries?.length > 1) {\n const cells = cellEntries.map((entry) => entry[0]);\n const tables = tableEntries.map((entry) => entry[0]);\n if (JSON.stringify(cells) !== JSON.stringify(selectedCells)) {\n setSelectedCells(cells);\n setSelectedTables(tables);\n }\n } else if (selectedCells) {\n setSelectedCells(null);\n setSelectedTables(null);\n }\n }, [\n editor,\n editor.selection,\n readOnly,\n selectedCells,\n setSelectedCells,\n setSelectedTables\n ]);\n};\n\n// src/react/components/TableElement/useTableColSizes.ts\nimport { PathApi as PathApi13 } from \"@udecode/plate\";\nimport { useElementSelector } from \"@udecode/plate/react\";\nvar useTableColSizes = ({\n disableOverrides = false,\n transformColSizes\n} = {}) => {\n const colSizeOverrides = useTableStore().get.colSizeOverrides();\n const overriddenColSizes = useElementSelector(\n ([tableNode]) => {\n const colSizes = getTableOverriddenColSizes(\n tableNode,\n disableOverrides ? void 0 : colSizeOverrides\n );\n if (transformColSizes) {\n return transformColSizes(colSizes);\n }\n return colSizes;\n },\n [disableOverrides, colSizeOverrides, transformColSizes],\n {\n key: TablePlugin.key,\n equalityFn: (a, b) => !!a && !!b && PathApi13.equals(a, b)\n }\n );\n return overriddenColSizes;\n};\n\n// src/react/components/TableElement/useTableElement.ts\nimport { useEditorPlugin as useEditorPlugin3, useElement as useElement3 } from \"@udecode/plate/react\";\nvar useTableElement = () => {\n const { editor, getOptions } = useEditorPlugin3(TablePlugin);\n const { disableMarginLeft } = getOptions();\n const element = useElement3();\n const selectedCells = useTableStore().get.selectedCells();\n const marginLeftOverride = useTableStore().get.marginLeftOverride();\n const marginLeft = disableMarginLeft ? 0 : marginLeftOverride ?? element.marginLeft ?? 0;\n useSelectedCells();\n return {\n isSelectingCell: !!selectedCells,\n marginLeft,\n props: {\n onMouseDown: () => {\n if (selectedCells) {\n editor.tf.collapse();\n }\n }\n }\n };\n};\n\n// src/react/components/TableCellElement/useTableCellSize.ts\nfunction useTableCellSize() {\n const { api } = useEditorPlugin4(TablePlugin);\n const element = useElement4();\n const colSizes = useTableColSizes();\n const cellIndices = useCellIndices();\n const rowSize = useElementSelector2(\n ([node]) => node.size,\n [],\n {\n key: TableRowPlugin.key\n }\n );\n return React5.useMemo(\n () => api.table.getCellSize({ cellIndices, colSizes, element, rowSize }),\n [api.table, cellIndices, colSizes, element, rowSize]\n );\n}\n\n// src/react/components/TableCellElement/useTableCellElement.ts\nvar useTableCellElement = () => {\n const { api } = useEditorPlugin5(TablePlugin);\n const element = useElement5();\n const isCellSelected = useIsCellSelected(element);\n const selectedCells = useTableStore().get.selectedCells();\n const rowSizeOverrides = useTableStore().get.rowSizeOverrides();\n const { minHeight, width } = useTableCellSize();\n const borders = useTableCellBorders();\n const { col, row } = useCellIndices();\n const colSpan = api.table.getColSpan(element);\n const rowSpan = api.table.getRowSpan(element);\n const endingRowIndex = row + rowSpan - 1;\n const endingColIndex = col + colSpan - 1;\n return {\n borders,\n colIndex: endingColIndex,\n colSpan,\n isSelectingCell: !!selectedCells,\n minHeight: rowSizeOverrides.get?.(endingRowIndex) ?? minHeight,\n rowIndex: endingRowIndex,\n selected: isCellSelected,\n width\n };\n};\n\n// src/react/components/TableCellElement/useTableCellElementResizable.ts\nimport React6 from \"react\";\nimport {\n useEditorPlugin as useEditorPlugin6,\n useElement as useElement6,\n useElementSelector as useElementSelector3\n} from \"@udecode/plate/react\";\nimport {\n resizeLengthClampStatic\n} from \"@udecode/plate-resizable\";\nvar useTableCellElementResizable = ({\n colIndex,\n colSpan,\n rowIndex,\n step,\n stepX = step,\n stepY = step\n}) => {\n const { editor, getOptions } = useEditorPlugin6(TablePlugin);\n const element = useElement6();\n const { disableMarginLeft, minColumnWidth = 0 } = getOptions();\n const initialWidth = useElementSelector3(\n ([node]) => colSpan > 1 ? node.colSizes?.[colIndex] : void 0,\n [colSpan, colIndex],\n { key: TablePlugin.key }\n );\n const marginLeft = useElementSelector3(\n ([node]) => node.marginLeft ?? 0,\n [],\n { key: TablePlugin.key }\n );\n const colSizesWithoutOverrides = useTableColSizes({ disableOverrides: true });\n const colSizesWithoutOverridesRef = React6.useRef(colSizesWithoutOverrides);\n React6.useEffect(() => {\n colSizesWithoutOverridesRef.current = colSizesWithoutOverrides;\n }, [colSizesWithoutOverrides]);\n const overrideColSize = useOverrideColSize();\n const overrideRowSize = useOverrideRowSize();\n const overrideMarginLeft = useOverrideMarginLeft();\n const setColSize = React6.useCallback(\n (colIndex2, width) => {\n setTableColSize(editor, { colIndex: colIndex2, width }, { at: element });\n setTimeout(() => overrideColSize(colIndex2, null), 0);\n },\n [editor, element, overrideColSize]\n );\n const setRowSize = React6.useCallback(\n (rowIndex2, height) => {\n setTableRowSize(editor, { height, rowIndex: rowIndex2 }, { at: element });\n setTimeout(() => overrideRowSize(rowIndex2, null), 0);\n },\n [editor, element, overrideRowSize]\n );\n const setMarginLeft = React6.useCallback(\n (marginLeft2) => {\n setTableMarginLeft(editor, { marginLeft: marginLeft2 }, { at: element });\n setTimeout(() => overrideMarginLeft(null), 0);\n },\n [editor, element, overrideMarginLeft]\n );\n const handleResizeRight = React6.useCallback(\n ({ delta, finished, initialSize: currentInitial }) => {\n const nextInitial = colSizesWithoutOverridesRef.current[colIndex + 1];\n const complement = (width) => currentInitial + nextInitial - width;\n const currentNew = roundCellSizeToStep(\n resizeLengthClampStatic(currentInitial + delta, {\n max: nextInitial ? complement(minColumnWidth) : void 0,\n min: minColumnWidth\n }),\n stepX\n );\n const nextNew = nextInitial ? complement(currentNew) : void 0;\n const fn = finished ? setColSize : overrideColSize;\n fn(colIndex, currentNew);\n if (nextNew) fn(colIndex + 1, nextNew);\n },\n [colIndex, minColumnWidth, overrideColSize, setColSize, stepX]\n );\n const handleResizeBottom = React6.useCallback(\n (event) => {\n const newHeight = roundCellSizeToStep(\n event.initialSize + event.delta,\n stepY\n );\n if (event.finished) {\n setRowSize(rowIndex, newHeight);\n } else {\n overrideRowSize(rowIndex, newHeight);\n }\n },\n [overrideRowSize, rowIndex, setRowSize, stepY]\n );\n const handleResizeLeft = React6.useCallback(\n (event) => {\n const initial = colSizesWithoutOverridesRef.current[colIndex];\n const complement = (width) => initial + marginLeft - width;\n const newMargin = roundCellSizeToStep(\n resizeLengthClampStatic(marginLeft + event.delta, {\n max: complement(minColumnWidth),\n min: 0\n }),\n stepX\n );\n const newWidth = complement(newMargin);\n if (event.finished) {\n setMarginLeft(newMargin);\n setColSize(colIndex, newWidth);\n } else {\n overrideMarginLeft(newMargin);\n overrideColSize(colIndex, newWidth);\n }\n },\n [\n colIndex,\n marginLeft,\n minColumnWidth,\n overrideColSize,\n overrideMarginLeft,\n setColSize,\n setMarginLeft,\n stepX\n ]\n );\n const hasLeftHandle = colIndex === 0 && !disableMarginLeft;\n return {\n bottomProps: React6.useMemo(\n () => ({\n options: {\n direction: \"bottom\",\n onResize: handleResizeBottom\n }\n }),\n [handleResizeBottom]\n ),\n hiddenLeft: !hasLeftHandle,\n leftProps: React6.useMemo(\n () => ({\n options: {\n direction: \"left\",\n onResize: handleResizeLeft\n }\n }),\n [handleResizeLeft]\n ),\n rightProps: React6.useMemo(\n () => ({\n options: {\n direction: \"right\",\n initialSize: initialWidth,\n onResize: handleResizeRight\n }\n }),\n [initialWidth, handleResizeRight]\n )\n };\n};\n\n// src/react/hooks/useTableMergeState.ts\nimport {\n useEditorPlugin as useEditorPlugin7,\n useEditorSelector as useEditorSelector2,\n useReadOnly as useReadOnly2,\n useSelected as useSelected2\n} from \"@udecode/plate/react\";\nvar useTableMergeState = () => {\n const { api, getOptions } = useEditorPlugin7(TablePlugin);\n const { disableMerge } = getOptions();\n if (disableMerge) return { canMerge: false, canSplit: false };\n const readOnly = useReadOnly2();\n const selected = useSelected2();\n const selectionExpanded = useEditorSelector2(\n (editor) => editor.api.isExpanded(),\n []\n );\n const collapsed = !readOnly && selected && !selectionExpanded;\n const selectedTables = useTableStore().get.selectedTables();\n const selectedTable = selectedTables?.[0];\n const selectedCellEntries = useEditorSelector2(\n (editor) => getTableGridAbove(editor, {\n format: \"cell\"\n }),\n []\n );\n if (!selectedCellEntries) return { canMerge: false, canSplit: false };\n const canMerge = !readOnly && selected && selectionExpanded && selectedCellEntries.length > 1 && isTableRectangular(selectedTable);\n const canSplit = collapsed && selectedCellEntries.length === 1 && (api.table.getColSpan(selectedCellEntries[0][0]) > 1 || api.table.getRowSpan(selectedCellEntries[0][0]) > 1);\n return { canMerge, canSplit };\n};\nexport {\n TableCellHeaderPlugin,\n TableCellPlugin,\n TablePlugin,\n TableProvider,\n TableRowPlugin,\n getOnSelectTableBorderFactory,\n onKeyDownTable,\n roundCellSizeToStep,\n tableStore,\n useCellIndices,\n useIsCellSelected,\n useOverrideColSize,\n useOverrideMarginLeft,\n useOverrideRowSize,\n useSelectedCells,\n useTableBordersDropdownMenuContentState,\n useTableCellBorders,\n useTableCellElement,\n useTableCellElementResizable,\n useTableCellSize,\n useTableColSizes,\n useTableElement,\n useTableMergeState,\n useTableStore\n};\n//# sourceMappingURL=index.mjs.map","// packages/react/primitive/src/Primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\n\n// src/cmdk.tsx\nimport * as React from \"react\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim/index.js\";\n\n// src/internal/command-score.ts\nvar PENALTY_CASE_MISMATCH = 0.9999;\nvar PENALTY_NOT_COMPLETE = 0.99;\nvar PENALTY_SKIPPED = 0.999;\nvar SCORE_CHARACTER_JUMP = 0.17;\nvar SCORE_CONTINUE_MATCH = 1;\nvar SCORE_NON_SPACE_WORD_JUMP = 0.8;\nvar SCORE_SPACE_WORD_JUMP = 0.9;\nvar SCORE_TRANSPOSITION = 0.1;\nvar COUNT_GAPS_REGEXP = /[\"#&(+./@[\\\\_{]/g;\nvar COUNT_SPACE_REGEXP = /[\\s-]/g;\nvar IS_GAP_REGEXP = /[\"#&(+./@[\\\\_{]/;\nvar IS_SPACE_REGEXP = /[\\s-]/;\nfunction commandScoreInner(string, abbreviation, lowerString, lowerAbbreviation, stringIndex, abbreviationIndex, memoizedResults) {\n if (abbreviationIndex === abbreviation.length) {\n if (stringIndex === string.length) {\n return SCORE_CONTINUE_MATCH;\n }\n return PENALTY_NOT_COMPLETE;\n }\n const memoizeKey = `${stringIndex},${abbreviationIndex}`;\n if (memoizedResults[memoizeKey] !== void 0) {\n return memoizedResults[memoizeKey];\n }\n const abbreviationChar = lowerAbbreviation.charAt(abbreviationIndex);\n let index = lowerString.indexOf(abbreviationChar, stringIndex);\n let highScore = 0;\n let score, spaceBreaks, transposedScore, wordBreaks;\n while (index >= 0) {\n score = commandScoreInner(\n string,\n abbreviation,\n lowerString,\n lowerAbbreviation,\n index + 1,\n abbreviationIndex + 1,\n memoizedResults\n );\n if (score > highScore) {\n if (index === stringIndex) {\n score *= SCORE_CONTINUE_MATCH;\n } else if (IS_GAP_REGEXP.test(string.charAt(index - 1))) {\n score *= SCORE_NON_SPACE_WORD_JUMP;\n wordBreaks = string.slice(stringIndex, index - 1).match(COUNT_GAPS_REGEXP);\n if (wordBreaks && stringIndex > 0) {\n score *= Math.pow(PENALTY_SKIPPED, wordBreaks.length);\n }\n } else if (IS_SPACE_REGEXP.test(string.charAt(index - 1))) {\n score *= SCORE_SPACE_WORD_JUMP;\n spaceBreaks = string.slice(stringIndex, index - 1).match(COUNT_SPACE_REGEXP);\n if (spaceBreaks && stringIndex > 0) {\n score *= Math.pow(PENALTY_SKIPPED, spaceBreaks.length);\n }\n } else {\n score *= SCORE_CHARACTER_JUMP;\n if (stringIndex > 0) {\n score *= Math.pow(PENALTY_SKIPPED, index - stringIndex);\n }\n }\n if (string.charAt(index) !== abbreviation.charAt(abbreviationIndex)) {\n score *= PENALTY_CASE_MISMATCH;\n }\n }\n if (score < SCORE_TRANSPOSITION && lowerString.charAt(index - 1) === lowerAbbreviation.charAt(abbreviationIndex + 1) || lowerAbbreviation.charAt(abbreviationIndex + 1) === lowerAbbreviation.charAt(abbreviationIndex) && // allow duplicate letters. Ref #7428\n lowerString.charAt(index - 1) !== lowerAbbreviation.charAt(abbreviationIndex)) {\n transposedScore = commandScoreInner(\n string,\n abbreviation,\n lowerString,\n lowerAbbreviation,\n index + 1,\n abbreviationIndex + 2,\n memoizedResults\n );\n if (transposedScore * SCORE_TRANSPOSITION > score) {\n score = transposedScore * SCORE_TRANSPOSITION;\n }\n }\n if (score > highScore) {\n highScore = score;\n }\n index = lowerString.indexOf(abbreviationChar, index + 1);\n }\n memoizedResults[memoizeKey] = highScore;\n return highScore;\n}\nfunction formatInput(string) {\n return string.toLowerCase().replaceAll(COUNT_SPACE_REGEXP, \" \");\n}\nfunction commandScore(string, abbreviation, aliases) {\n string = aliases && aliases.length > 0 ? `${string + \" \" + aliases.join(\" \")}` : string;\n return commandScoreInner(\n string,\n abbreviation,\n formatInput(string),\n formatInput(abbreviation),\n 0,\n 0,\n {}\n );\n}\n\n// src/cmdk.tsx\nvar GROUP_SELECTOR = `[cmdk-group=\"\"]`;\nvar GROUP_ITEMS_SELECTOR = `[cmdk-group-items=\"\"]`;\nvar GROUP_HEADING_SELECTOR = `[cmdk-group-heading=\"\"]`;\nvar ITEM_SELECTOR = `[cmdk-item=\"\"]`;\nvar VALID_ITEM_SELECTOR = `${ITEM_SELECTOR}:not([aria-disabled=\"true\"])`;\nvar SELECT_EVENT = `cmdk-item-select`;\nvar VALUE_ATTR = `data-value`;\nvar defaultFilter = (value, search, keywords) => commandScore(value, search, keywords);\nvar CommandContext = React.createContext(void 0);\nvar useCommand = () => React.useContext(CommandContext);\nvar StoreContext = React.createContext(void 0);\nvar ActionsContext = React.createContext(void 0);\nvar useStore = () => React.useContext(StoreContext);\nvar useCommandActions = () => {\n const context = React.useContext(ActionsContext);\n if (context === void 0) {\n throw new Error(\n \"useCommandActions must be used within a Command component\"\n );\n }\n return context;\n};\nvar GroupContext = React.createContext(void 0);\nvar Command = React.forwardRef(\n (props, forwardedRef) => {\n const state = useLazyRef(() => {\n var _a2, _b;\n return {\n filtered: {\n /** The count of all visible items. */\n count: 0,\n /** Set of groups with at least one visible item. */\n groups: /* @__PURE__ */ new Set(),\n /** Map from visible item id to its search score. */\n items: /* @__PURE__ */ new Map()\n },\n /** Value of the search query. */\n search: \"\",\n /** Currently selected item value. */\n value: (_b = (_a2 = props.value) != null ? _a2 : props.defaultValue) != null ? _b : \"\"\n };\n });\n const allItems = useLazyRef(() => /* @__PURE__ */ new Set());\n const allGroups = useLazyRef(() => /* @__PURE__ */ new Map());\n const ids = useLazyRef(\n () => /* @__PURE__ */ new Map()\n );\n const listeners = useLazyRef(() => /* @__PURE__ */ new Set());\n const propsRef = useAsRef(props);\n const _a = props, {\n children,\n disablePointerSelection = false,\n filter,\n label,\n loop,\n shouldFilter,\n value,\n vimBindings = true,\n onValueChange\n } = _a, etc = __objRest(_a, [\n \"children\",\n \"disablePointerSelection\",\n \"filter\",\n \"label\",\n \"loop\",\n \"shouldFilter\",\n \"value\",\n \"vimBindings\",\n \"onValueChange\"\n ]);\n const listId = useId();\n const labelId = useId();\n const inputId = useId();\n const listInnerRef = React.useRef(null);\n const schedule = useScheduleLayoutEffect();\n useLayoutEffect2(() => {\n if (value !== void 0) {\n const v = value.trim();\n state.current.value = v;\n store.emit();\n }\n }, [value]);\n useLayoutEffect2(() => {\n schedule(6, scrollSelectedIntoView);\n }, []);\n const store = React.useMemo(() => {\n return {\n emit: () => {\n listeners.current.forEach((l) => l());\n },\n setState: (key, value2, opts) => {\n var _a2, _b, _c;\n if (Object.is(state.current[key], value2)) return;\n state.current[key] = value2;\n if (key === \"search\") {\n filterItems();\n sort();\n schedule(1, selectFirstItem);\n } else if (key === \"value\") {\n if (!opts) {\n schedule(5, scrollSelectedIntoView);\n }\n if (((_a2 = propsRef.current) == null ? void 0 : _a2.value) !== void 0) {\n const newValue = value2 != null ? value2 : \"\";\n (_c = (_b = propsRef.current).onValueChange) == null ? void 0 : _c.call(_b, newValue);\n return;\n }\n }\n store.emit();\n },\n snapshot: () => {\n return state.current;\n },\n subscribe: (cb) => {\n listeners.current.add(cb);\n return () => listeners.current.delete(cb);\n }\n };\n }, []);\n const context = React.useMemo(\n () => ({\n filter: () => {\n return propsRef.current.shouldFilter;\n },\n getDisablePointerSelection: () => {\n return propsRef.current.disablePointerSelection;\n },\n // Track group lifecycle (mount, unmount)\n group: (id) => {\n if (!allGroups.current.has(id)) {\n allGroups.current.set(id, /* @__PURE__ */ new Set());\n }\n return () => {\n ids.current.delete(id);\n allGroups.current.delete(id);\n };\n },\n inputId,\n // Track item lifecycle (mount, unmount)\n item: (id, groupId) => {\n allItems.current.add(id);\n if (groupId) {\n if (allGroups.current.has(groupId)) {\n allGroups.current.get(groupId).add(id);\n } else {\n allGroups.current.set(groupId, /* @__PURE__ */ new Set([id]));\n }\n }\n schedule(3, () => {\n filterItems();\n sort();\n if (!state.current.value) {\n selectFirstItem();\n }\n store.emit();\n });\n return () => {\n ids.current.delete(id);\n allItems.current.delete(id);\n state.current.filtered.items.delete(id);\n const selectedItem = getSelectedItem();\n schedule(4, () => {\n filterItems();\n if ((selectedItem == null ? void 0 : selectedItem.getAttribute(\"id\")) === id) selectFirstItem();\n store.emit();\n });\n };\n },\n label: label != null ? label : props[\"aria-label\"],\n labelId,\n listId,\n listInnerRef,\n // Keep id → {value, keywords} mapping up-to-date\n value: (id, value2, keywords) => {\n var _a2;\n if (value2 !== ((_a2 = ids.current.get(id)) == null ? void 0 : _a2.value)) {\n ids.current.set(id, { keywords, value: value2 });\n state.current.filtered.items.set(id, score(value2, keywords));\n schedule(2, () => {\n sort();\n store.emit();\n });\n }\n }\n }),\n []\n );\n function score(value2, keywords) {\n var _a2, _b;\n const filter2 = (_b = (_a2 = propsRef.current) == null ? void 0 : _a2.filter) != null ? _b : defaultFilter;\n return value2 ? filter2 == null ? void 0 : filter2(value2, state.current.search, keywords) : 0;\n }\n function sort() {\n if (!state.current.search || // Explicitly false, because true | undefined is the default\n propsRef.current.shouldFilter === false) {\n return;\n }\n const scores = state.current.filtered.items;\n const groups = [];\n state.current.filtered.groups.forEach((value2) => {\n const items = allGroups.current.get(value2);\n let max = 0;\n items == null ? void 0 : items.forEach((item) => {\n const score2 = scores.get(item);\n max = Math.max(score2, max);\n });\n groups.push([value2, max]);\n });\n const listInsertionElement = listInnerRef.current;\n getValidItems().sort((a, b) => {\n var _a2, _b;\n const valueA = a.getAttribute(\"id\");\n const valueB = b.getAttribute(\"id\");\n return ((_a2 = scores.get(valueB)) != null ? _a2 : 0) - ((_b = scores.get(valueA)) != null ? _b : 0);\n }).forEach((item) => {\n const group = item.closest(GROUP_ITEMS_SELECTOR);\n if (group) {\n group.append(\n item.parentElement === group ? item : item.closest(`${GROUP_ITEMS_SELECTOR} > *`)\n );\n } else {\n listInsertionElement.append(\n item.parentElement === listInsertionElement ? item : item.closest(`${GROUP_ITEMS_SELECTOR} > *`)\n );\n }\n });\n groups.sort((a, b) => b[1] - a[1]).forEach((group) => {\n var _a2, _b;\n const element = (_a2 = listInnerRef.current) == null ? void 0 : _a2.querySelector(\n `${GROUP_SELECTOR}[${VALUE_ATTR}=\"${encodeURIComponent(group[0])}\"]`\n );\n (_b = element == null ? void 0 : element.parentElement) == null ? void 0 : _b.append(element);\n });\n }\n function selectFirstItem() {\n const item = getValidItems().find(\n (item2) => item2.getAttribute(\"aria-disabled\") !== \"true\"\n );\n const value2 = item == null ? void 0 : item.getAttribute(VALUE_ATTR);\n store.setState(\"value\", value2 != null ? value2 : void 0);\n }\n function filterItems() {\n var _a2, _b, _c, _d;\n if (!state.current.search || // Explicitly false, because true | undefined is the default\n propsRef.current.shouldFilter === false) {\n state.current.filtered.count = allItems.current.size;\n return;\n }\n state.current.filtered.groups = /* @__PURE__ */ new Set();\n let itemCount = 0;\n for (const id of allItems.current) {\n const value2 = (_b = (_a2 = ids.current.get(id)) == null ? void 0 : _a2.value) != null ? _b : \"\";\n const keywords = (_d = (_c = ids.current.get(id)) == null ? void 0 : _c.keywords) != null ? _d : [];\n const rank = score(value2, keywords);\n state.current.filtered.items.set(id, rank);\n if (rank > 0) itemCount++;\n }\n for (const [groupId, group] of allGroups.current) {\n for (const itemId of group) {\n if (state.current.filtered.items.get(itemId) > 0) {\n state.current.filtered.groups.add(groupId);\n break;\n }\n }\n }\n state.current.filtered.count = itemCount;\n }\n function scrollSelectedIntoView() {\n var _a2, _b, _c;\n const item = getSelectedItem();\n if (item) {\n if (((_a2 = item.parentElement) == null ? void 0 : _a2.firstChild) === item) {\n (_c = (_b = item.closest(GROUP_SELECTOR)) == null ? void 0 : _b.querySelector(GROUP_HEADING_SELECTOR)) == null ? void 0 : _c.scrollIntoView({ block: \"nearest\" });\n }\n item.scrollIntoView({ block: \"nearest\" });\n }\n }\n function getSelectedItem() {\n var _a2;\n return (_a2 = listInnerRef.current) == null ? void 0 : _a2.querySelector(\n `${ITEM_SELECTOR}[aria-selected=\"true\"]`\n );\n }\n function getValidItems() {\n var _a2;\n return Array.from(\n ((_a2 = listInnerRef.current) == null ? void 0 : _a2.querySelectorAll(VALID_ITEM_SELECTOR)) || []\n );\n }\n function updateSelectedToIndex(index) {\n const items = getValidItems();\n const item = items[index];\n if (item) store.setState(\"value\", item.getAttribute(VALUE_ATTR));\n }\n function updateSelectedByItem(change) {\n var _a2;\n const selected = getSelectedItem();\n const items = getValidItems();\n const index = items.indexOf(selected);\n let newSelected = items[index + change];\n if ((_a2 = propsRef.current) == null ? void 0 : _a2.loop) {\n newSelected = index + change < 0 ? items.at(-1) : index + change === items.length ? items[0] : items[index + change];\n }\n if (newSelected)\n store.setState(\"value\", newSelected.getAttribute(VALUE_ATTR));\n }\n function updateSelectedByGroup(change) {\n const selected = getSelectedItem();\n let group = selected == null ? void 0 : selected.closest(GROUP_SELECTOR);\n let item;\n while (group && !item) {\n group = change > 0 ? findNextSibling(group, GROUP_SELECTOR) : findPreviousSibling(group, GROUP_SELECTOR);\n item = group.querySelector(VALID_ITEM_SELECTOR);\n }\n if (item) {\n store.setState(\"value\", item.getAttribute(VALUE_ATTR));\n } else {\n updateSelectedByItem(change);\n }\n }\n const last = () => updateSelectedToIndex(getValidItems().length - 1);\n const next = (e) => {\n e.preventDefault();\n if (e.metaKey) {\n last();\n } else if (e.altKey) {\n updateSelectedByGroup(1);\n } else {\n updateSelectedByItem(1);\n }\n };\n const prev = (e) => {\n e.preventDefault();\n if (e.metaKey) {\n updateSelectedToIndex(0);\n } else if (e.altKey) {\n updateSelectedByGroup(-1);\n } else {\n updateSelectedByItem(-1);\n }\n };\n const selectItem = () => {\n const item = getSelectedItem();\n if (item) {\n const event = new Event(SELECT_EVENT);\n item.dispatchEvent(event);\n }\n };\n const setSearch = (search) => {\n store.setState(\"search\", search);\n };\n const actions = React.useMemo(() => {\n return {\n selectCurrentItem: selectItem,\n selectFirstItem,\n selectItem: updateSelectedToIndex,\n selectLastItem: last,\n selectNextGroup: (e) => updateSelectedByGroup(1),\n selectNextItem: next,\n selectPrevGroup: (e) => updateSelectedByGroup(-1),\n selectPrevItem: prev,\n setSearch\n };\n }, []);\n return /* @__PURE__ */ React.createElement(\n Primitive.div,\n __spreadProps(__spreadValues({\n ref: forwardedRef,\n tabIndex: -1\n }, etc), {\n onKeyDown: (e) => {\n var _a2;\n (_a2 = etc.onKeyDown) == null ? void 0 : _a2.call(etc, e);\n if (!e.defaultPrevented) {\n switch (e.key) {\n case \"ArrowDown\": {\n next(e);\n break;\n }\n case \"ArrowUp\": {\n prev(e);\n break;\n }\n case \"End\": {\n e.preventDefault();\n last();\n break;\n }\n case \"Enter\": {\n if (!e.nativeEvent.isComposing && e.keyCode !== 229) {\n e.preventDefault();\n const item = getSelectedItem();\n if (item) {\n const event = new Event(SELECT_EVENT);\n item.dispatchEvent(event);\n }\n }\n }\n case \"Home\": {\n e.preventDefault();\n updateSelectedToIndex(0);\n break;\n }\n case \"j\":\n case \"n\": {\n if (vimBindings && e.ctrlKey) {\n next(e);\n }\n break;\n }\n case \"k\":\n case \"p\": {\n if (vimBindings && e.ctrlKey) {\n prev(e);\n }\n break;\n }\n }\n }\n },\n \"cmdk-root\": \"\"\n }),\n /* @__PURE__ */ React.createElement(\n \"label\",\n {\n id: context.labelId,\n style: srOnlyStyles,\n \"cmdk-label\": \"\",\n htmlFor: context.inputId\n },\n label\n ),\n SlottableWithNestedChildren(props, (child) => /* @__PURE__ */ React.createElement(StoreContext.Provider, { value: store }, /* @__PURE__ */ React.createElement(ActionsContext.Provider, { value: actions }, /* @__PURE__ */ React.createElement(CommandContext.Provider, { value: context }, child))))\n );\n }\n);\nvar Item = React.forwardRef(\n (props, forwardedRef) => {\n var _a, _b;\n const id = useId();\n const ref = React.useRef(null);\n const groupContext = React.useContext(GroupContext);\n const context = useCommand();\n const propsRef = useAsRef(props);\n const forceMount = (_b = (_a = propsRef.current) == null ? void 0 : _a.forceMount) != null ? _b : groupContext == null ? void 0 : groupContext.forceMount;\n useLayoutEffect2(() => {\n if (!forceMount) {\n return context.item(id, groupContext == null ? void 0 : groupContext.id);\n }\n }, [forceMount]);\n const value = useValue(id, ref, [props.value, props.children, ref]);\n const store = useStore();\n const selected = useCmdk(\n (state) => state.value && state.value === value.current\n );\n const render = useCmdk(\n (state) => forceMount ? true : context.filter() === false ? true : state.search ? state.filtered.items.get(id) > 0 : true\n );\n React.useEffect(() => {\n const element = ref.current;\n if (!element || props.disabled) return;\n element.addEventListener(SELECT_EVENT, onSelect);\n return () => element.removeEventListener(SELECT_EVENT, onSelect);\n }, [render, props.onSelect, props.disabled]);\n function onSelect() {\n var _a2, _b2;\n select();\n (_b2 = (_a2 = propsRef.current).onSelect) == null ? void 0 : _b2.call(_a2, value.current);\n }\n function select() {\n store.setState(\"value\", value.current, true);\n }\n if (!render) return null;\n const _c = props, {\n disabled,\n forceMount: ___,\n keywords: ____,\n value: _,\n onSelect: __\n } = _c, etc = __objRest(_c, [\n \"disabled\",\n \"forceMount\",\n \"keywords\",\n \"value\",\n \"onSelect\"\n ]);\n return /* @__PURE__ */ React.createElement(\n Primitive.div,\n __spreadProps(__spreadValues({\n ref: mergeRefs([ref, forwardedRef])\n }, etc), {\n id,\n onClick: disabled ? void 0 : onSelect,\n onPointerMove: disabled || context.getDisablePointerSelection() ? void 0 : select,\n \"aria-disabled\": Boolean(disabled),\n \"aria-selected\": Boolean(selected),\n \"data-disabled\": Boolean(disabled),\n \"data-selected\": Boolean(selected),\n \"cmdk-item\": \"\",\n role: \"option\"\n }),\n props.children\n );\n }\n);\nvar Group = React.forwardRef(\n (props, forwardedRef) => {\n const _a = props, { children, forceMount, heading } = _a, etc = __objRest(_a, [\"children\", \"forceMount\", \"heading\"]);\n const id = useId();\n const ref = React.useRef(null);\n const headingRef = React.useRef(null);\n const headingId = useId();\n const context = useCommand();\n const render = useCmdk(\n (state) => forceMount ? true : context.filter() === false ? true : state.search ? state.filtered.groups.has(id) : true\n );\n useLayoutEffect2(() => {\n return context.group(id);\n }, []);\n useValue(id, ref, [props.value, props.heading, headingRef]);\n const contextValue = React.useMemo(\n () => ({ id, forceMount }),\n [forceMount]\n );\n return /* @__PURE__ */ React.createElement(\n Primitive.div,\n __spreadProps(__spreadValues({\n ref: mergeRefs([ref, forwardedRef])\n }, etc), {\n \"cmdk-group\": \"\",\n hidden: render ? void 0 : true,\n role: \"presentation\"\n }),\n heading && /* @__PURE__ */ React.createElement(\n \"div\",\n {\n id: headingId,\n ref: headingRef,\n \"aria-hidden\": true,\n \"cmdk-group-heading\": \"\"\n },\n heading\n ),\n SlottableWithNestedChildren(props, (child) => /* @__PURE__ */ React.createElement(\n \"div\",\n {\n \"aria-labelledby\": heading ? headingId : void 0,\n \"cmdk-group-items\": \"\",\n role: \"group\"\n },\n /* @__PURE__ */ React.createElement(GroupContext.Provider, { value: contextValue }, child)\n ))\n );\n }\n);\nvar Separator = React.forwardRef(\n (props, forwardedRef) => {\n const _a = props, { alwaysRender } = _a, etc = __objRest(_a, [\"alwaysRender\"]);\n const ref = React.useRef(null);\n const render = useCmdk((state) => !state.search);\n if (!alwaysRender && !render) return null;\n return /* @__PURE__ */ React.createElement(\n Primitive.div,\n __spreadProps(__spreadValues({\n ref: mergeRefs([ref, forwardedRef])\n }, etc), {\n \"cmdk-separator\": \"\",\n role: \"separator\"\n })\n );\n }\n);\nvar Input = React.forwardRef(\n (props, forwardedRef) => {\n const _a = props, { onValueChange } = _a, etc = __objRest(_a, [\"onValueChange\"]);\n const isControlled = props.value != null;\n const store = useStore();\n const search = useCmdk((state) => state.search);\n const value = useCmdk((state) => state.value);\n const context = useCommand();\n const selectedItemId = React.useMemo(() => {\n var _a2;\n const item = (_a2 = context.listInnerRef.current) == null ? void 0 : _a2.querySelector(\n `${ITEM_SELECTOR}[${VALUE_ATTR}=\"${encodeURIComponent(value)}\"]`\n );\n return item == null ? void 0 : item.getAttribute(\"id\");\n }, []);\n React.useEffect(() => {\n if (props.value != null) {\n store.setState(\"search\", props.value);\n }\n }, [props.value]);\n return /* @__PURE__ */ React.createElement(\n Primitive.input,\n __spreadProps(__spreadValues({\n ref: forwardedRef\n }, etc), {\n id: context.inputId,\n value: isControlled ? props.value : search,\n onChange: (e) => {\n if (!isControlled) {\n store.setState(\"search\", e.target.value);\n }\n onValueChange == null ? void 0 : onValueChange(e.target.value);\n },\n \"aria-activedescendant\": selectedItemId,\n \"aria-autocomplete\": \"list\",\n \"aria-controls\": context.listId,\n \"aria-expanded\": true,\n \"aria-labelledby\": context.labelId,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n \"cmdk-input\": \"\",\n role: \"combobox\",\n spellCheck: false,\n type: \"text\"\n })\n );\n }\n);\nvar List = React.forwardRef(\n (props, forwardedRef) => {\n const _a = props, { children, label = \"Suggestions\" } = _a, etc = __objRest(_a, [\"children\", \"label\"]);\n const ref = React.useRef(null);\n const height = React.useRef(null);\n const context = useCommand();\n React.useEffect(() => {\n if (height.current && ref.current) {\n const el = height.current;\n const wrapper = ref.current;\n let animationFrame;\n const observer = new ResizeObserver(() => {\n animationFrame = requestAnimationFrame(() => {\n const height2 = el.offsetHeight;\n wrapper.style.setProperty(\n `--cmdk-list-height`,\n height2.toFixed(1) + \"px\"\n );\n });\n });\n observer.observe(el);\n return () => {\n cancelAnimationFrame(animationFrame);\n observer.unobserve(el);\n };\n }\n }, []);\n return /* @__PURE__ */ React.createElement(\n Primitive.div,\n __spreadProps(__spreadValues({\n ref: mergeRefs([ref, forwardedRef])\n }, etc), {\n id: context.listId,\n \"aria-label\": label,\n \"cmdk-list\": \"\",\n role: \"listbox\"\n }),\n SlottableWithNestedChildren(props, (child) => /* @__PURE__ */ React.createElement(\n \"div\",\n {\n ref: mergeRefs([height, context.listInnerRef]),\n \"cmdk-list-sizer\": \"\"\n },\n child\n ))\n );\n }\n);\nvar Dialog = React.forwardRef(\n (props, forwardedRef) => {\n const _a = props, {\n container,\n contentClassName,\n open,\n overlayClassName,\n onOpenChange\n } = _a, etc = __objRest(_a, [\n \"container\",\n \"contentClassName\",\n \"open\",\n \"overlayClassName\",\n \"onOpenChange\"\n ]);\n return /* @__PURE__ */ React.createElement(RadixDialog.Root, { open, onOpenChange }, /* @__PURE__ */ React.createElement(RadixDialog.Portal, { container }, /* @__PURE__ */ React.createElement(RadixDialog.Overlay, { className: overlayClassName, \"cmdk-overlay\": \"\" }), /* @__PURE__ */ React.createElement(\n RadixDialog.Content,\n {\n className: contentClassName,\n \"aria-label\": props.label,\n \"cmdk-dialog\": \"\"\n },\n /* @__PURE__ */ React.createElement(Command, __spreadValues({ ref: forwardedRef }, etc))\n )));\n }\n);\nvar Empty = React.forwardRef(\n (props, forwardedRef) => {\n const render = useCmdk((state) => state.filtered.count === 0);\n if (!render) return null;\n return /* @__PURE__ */ React.createElement(\n Primitive.div,\n __spreadProps(__spreadValues({\n ref: forwardedRef\n }, props), {\n \"cmdk-empty\": \"\",\n role: \"presentation\"\n })\n );\n }\n);\nvar Loading = React.forwardRef(\n (props, forwardedRef) => {\n const _a = props, { children, label = \"Loading...\", progress } = _a, etc = __objRest(_a, [\"children\", \"label\", \"progress\"]);\n return /* @__PURE__ */ React.createElement(\n Primitive.div,\n __spreadProps(__spreadValues({\n ref: forwardedRef\n }, etc), {\n \"aria-label\": label,\n \"aria-valuemax\": 100,\n \"aria-valuemin\": 0,\n \"aria-valuenow\": progress,\n \"cmdk-loading\": \"\",\n role: \"progressbar\"\n }),\n SlottableWithNestedChildren(props, (child) => /* @__PURE__ */ React.createElement(\"div\", { \"aria-hidden\": true }, child))\n );\n }\n);\nvar pkg = Object.assign(Command, {\n Dialog,\n Empty,\n Group,\n Input,\n Item,\n List,\n Loading,\n Separator\n});\nfunction findNextSibling(el, selector) {\n let sibling = el.nextElementSibling;\n while (sibling) {\n if (sibling.matches(selector)) return sibling;\n sibling = sibling.nextElementSibling;\n }\n}\nfunction findPreviousSibling(el, selector) {\n let sibling = el.previousElementSibling;\n while (sibling) {\n if (sibling.matches(selector)) return sibling;\n sibling = sibling.previousElementSibling;\n }\n}\nfunction useAsRef(data) {\n const ref = React.useRef(data);\n useLayoutEffect2(() => {\n ref.current = data;\n });\n return ref;\n}\nvar useLayoutEffect2 = typeof window === \"undefined\" ? React.useEffect : React.useLayoutEffect;\nfunction useLazyRef(fn) {\n const ref = React.useRef();\n if (ref.current === void 0) {\n ref.current = fn();\n }\n return ref;\n}\nfunction mergeRefs(refs) {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\nfunction useCmdk(selector) {\n const store = useStore();\n const cb = () => selector(store.snapshot());\n return useSyncExternalStore(store.subscribe, cb, cb);\n}\nfunction useValue(id, ref, deps, aliases = []) {\n const valueRef = React.useRef();\n const context = useCommand();\n useLayoutEffect2(() => {\n var _a;\n const value = (() => {\n var _a2;\n for (const part of deps) {\n if (typeof part === \"string\") {\n return part.trim();\n }\n if (typeof part === \"object\" && \"current\" in part) {\n if (part.current) {\n return (_a2 = part.current.textContent) == null ? void 0 : _a2.trim();\n }\n return valueRef.current;\n }\n }\n })();\n const keywords = aliases.map((alias) => alias.trim());\n context.value(id, value, keywords);\n (_a = ref.current) == null ? void 0 : _a.setAttribute(VALUE_ATTR, value);\n valueRef.current = value;\n });\n return valueRef;\n}\nvar useScheduleLayoutEffect = () => {\n const [s, ss] = React.useState();\n const fns = useLazyRef(() => /* @__PURE__ */ new Map());\n useLayoutEffect2(() => {\n fns.current.forEach((f) => f());\n fns.current = /* @__PURE__ */ new Map();\n }, [s]);\n return (id, cb) => {\n fns.current.set(id, cb);\n ss({});\n };\n};\nfunction renderChildren(children) {\n const childrenType = children.type;\n if (typeof childrenType === \"function\") return childrenType(children.props);\n else if (\"render\" in childrenType) return childrenType.render(children.props);\n else return children;\n}\nfunction SlottableWithNestedChildren({ asChild, children }, render) {\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(\n renderChildren(children),\n { ref: children.ref },\n render(children.props.children)\n );\n }\n return render(children);\n}\nvar srOnlyStyles = {\n borderWidth: \"0\",\n clip: \"rect(0, 0, 0, 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: \"1px\"\n};\nexport {\n pkg as Command,\n Dialog as CommandDialog,\n Empty as CommandEmpty,\n Group as CommandGroup,\n Input as CommandInput,\n Item as CommandItem,\n List as CommandList,\n Loading as CommandLoading,\n Command as CommandRoot,\n Separator as CommandSeparator,\n defaultFilter,\n useCommandActions,\n useCmdk as useCommandState\n};\n//# sourceMappingURL=index.mjs.map","// src/DndPlugin.tsx\nimport React4 from \"react\";\nimport { createTPlatePlugin } from \"@udecode/plate/react\";\n\n// src/components/Scroller/DndScroller.tsx\nimport React3 from \"react\";\nimport { useEditorRef } from \"@udecode/plate/react\";\n\n// src/components/Scroller/Scroller.tsx\nimport React2 from \"react\";\n\n// src/components/Scroller/ScrollArea.tsx\nimport React from \"react\";\nimport throttle from \"lodash/throttle.js\";\nimport raf from \"raf\";\nvar getCoords = (e) => {\n if (e.type === \"touchmove\") {\n return { x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY };\n }\n return { x: e.clientX, y: e.clientY };\n};\nfunction ScrollArea({\n containerRef,\n enabled = true,\n height = 100,\n minStrength = 0.15,\n placement,\n scrollAreaProps,\n strengthMultiplier = 25,\n zIndex = 1e4\n}) {\n const ref = React.useRef();\n const scaleYRef = React.useRef(0);\n const frameRef = React.useRef(null);\n const direction = placement === \"top\" ? -1 : 1;\n const style = {\n height,\n opacity: 0,\n position: \"fixed\",\n width: \"100%\",\n zIndex,\n ...scrollAreaProps?.style\n };\n if (placement === \"top\") {\n style.top = 0;\n } else if (placement === \"bottom\") {\n style.bottom = 0;\n }\n const stopScrolling = () => {\n scaleYRef.current = 0;\n if (frameRef.current) {\n raf.cancel(frameRef.current);\n frameRef.current = null;\n }\n };\n const startScrolling = () => {\n const tick = () => {\n const scaleY = scaleYRef.current;\n if (strengthMultiplier === 0 || scaleY === 0) {\n stopScrolling();\n return;\n }\n const container = containerRef?.current ?? window;\n container.scrollBy(0, scaleY * strengthMultiplier * direction);\n frameRef.current = raf(tick);\n };\n tick();\n };\n const updateScrolling = throttle(\n (e) => {\n const container = ref.current;\n if (!container) return;\n const { height: h, top: y } = container.getBoundingClientRect();\n const coords = getCoords(e);\n const strength = Math.max(Math.max(coords.y - y, 0) / h, minStrength);\n scaleYRef.current = direction === -1 ? 1 - strength : strength;\n if (!frameRef.current && scaleYRef.current) {\n startScrolling();\n }\n },\n 100,\n { trailing: false }\n );\n const handleEvent = (e) => {\n updateScrolling(e);\n };\n React.useEffect(() => {\n if (!enabled) {\n stopScrolling();\n }\n }, [enabled]);\n if (!enabled) return null;\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n ref,\n style,\n onDragEnd: stopScrolling,\n onDragLeave: stopScrolling,\n onDragOver: handleEvent,\n onTouchMove: handleEvent,\n ...scrollAreaProps\n }\n );\n}\n\n// src/components/Scroller/Scroller.tsx\nfunction Scroller(props) {\n return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(ScrollArea, { placement: \"top\", ...props }), /* @__PURE__ */ React2.createElement(ScrollArea, { placement: \"bottom\", ...props }));\n}\n\n// src/components/Scroller/DndScroller.tsx\nfunction DndScroller(props) {\n const editor = useEditorRef();\n const isDragging = editor.useOption(DndPlugin, \"isDragging\");\n const [show, setShow] = React3.useState(false);\n React3.useEffect(() => {\n if (isDragging) {\n const timeout = setTimeout(() => {\n setShow(true);\n }, 100);\n return () => clearTimeout(timeout);\n }\n setShow(false);\n }, [isDragging, show]);\n return /* @__PURE__ */ React3.createElement(Scroller, { enabled: isDragging && show, ...props });\n}\n\n// src/DndPlugin.tsx\nvar DRAG_ITEM_BLOCK = \"block\";\nvar DndPlugin = createTPlatePlugin({\n key: \"dnd\",\n options: {\n draggingId: null,\n dropTarget: { id: null, line: \"\" },\n isDragging: false\n },\n handlers: {\n onDragEnd: ({ editor, plugin }) => {\n editor.setOption(plugin, \"isDragging\", false);\n },\n onDragStart: ({ editor, event, plugin }) => {\n const target = event.target;\n const dataTransfer = event.dataTransfer;\n dataTransfer.effectAllowed = \"move\";\n dataTransfer.dropEffect = \"move\";\n const id = target.dataset.blockId;\n if (!id) return;\n editor.setOption(plugin, \"draggingId\", id);\n editor.setOption(plugin, \"isDragging\", true);\n },\n onDrop: ({ editor, getOptions }) => {\n const id = getOptions().draggingId;\n setTimeout(() => {\n id && editor.getApi({ key: \"blockSelection\" }).blockSelection?.addSelectedRow?.(id);\n }, 0);\n return getOptions().isDragging;\n }\n }\n}).extend(({ getOptions }) => ({\n render: {\n afterEditable: getOptions().enableScroller ? () => /* @__PURE__ */ React4.createElement(DndScroller, { ...getOptions()?.scrollerProps }) : void 0\n }\n}));\n\n// src/components/useDraggable.ts\nimport React5 from \"react\";\nimport { useEditorRef as useEditorRef2 } from \"@udecode/plate/react\";\nvar useDraggable = (props) => {\n const {\n element,\n orientation = \"vertical\",\n type = DRAG_ITEM_BLOCK,\n onDropHandler\n } = props;\n const editor = useEditorRef2();\n const nodeRef = React5.useRef(null);\n if (!editor.plugins.dnd) return {};\n const { dragRef, isDragging } = useDndNode({\n id: element.id,\n nodeRef,\n orientation,\n type,\n onDropHandler,\n ...props\n });\n return {\n isDragging,\n previewRef: nodeRef,\n handleRef: dragRef\n };\n};\n\n// src/components/useDropLine.ts\nimport { useEditorPlugin, useElement } from \"@udecode/plate/react\";\nvar useDropLine = ({\n id: idProp,\n orientation = \"vertical\"\n} = {}) => {\n const element = useElement();\n const id = idProp || element.id;\n const dropTarget = useEditorPlugin(DndPlugin).useOption(\"dropTarget\");\n const dropLine = dropTarget?.line;\n if (id && dropTarget?.id !== id) {\n return {\n dropLine: \"\"\n };\n }\n if (orientation) {\n const isHorizontalDropLine = dropLine === \"left\" || dropLine === \"right\";\n const isVerticalDropLine = dropLine === \"top\" || dropLine === \"bottom\";\n if (orientation === \"vertical\" && isHorizontalDropLine || orientation === \"horizontal\" && isVerticalDropLine) {\n return {\n dropLine: \"\"\n };\n }\n }\n return {\n dropLine\n };\n};\n\n// src/hooks/useDndNode.ts\nimport { useEffect } from \"react\";\nimport { NativeTypes, getEmptyImage } from \"react-dnd-html5-backend\";\nimport { useEditorRef as useEditorRef3 } from \"@udecode/plate/react\";\n\n// src/hooks/useDragNode.ts\nimport { useDrag } from \"react-dnd\";\nvar useDragNode = (editor, { id, item, ...options }) => {\n return useDrag(\n () => ({\n collect: (monitor) => ({\n isDragging: monitor.isDragging()\n }),\n end: () => {\n editor.setOption(DndPlugin, \"isDragging\", false);\n document.body.classList.remove(\"dragging\");\n },\n item(monitor) {\n editor.setOption(DndPlugin, \"isDragging\", true);\n document.body.classList.add(\"dragging\");\n const _item = typeof item === \"function\" ? item(monitor) : item;\n return {\n id,\n editorId: editor.id,\n ..._item\n };\n },\n ...options\n }),\n []\n );\n};\n\n// src/hooks/useDropNode.ts\nimport {\n useDrop\n} from \"react-dnd\";\n\n// src/transforms/onDropNode.ts\nimport { PathApi } from \"@udecode/plate\";\n\n// src/utils/getHoverDirection.ts\nvar getHoverDirection = ({\n id,\n dragItem,\n monitor,\n nodeRef,\n orientation = \"vertical\"\n}) => {\n if (!nodeRef.current) return;\n const dragId = dragItem.id;\n if (dragId === id) return;\n const hoverBoundingRect = nodeRef.current?.getBoundingClientRect();\n if (!hoverBoundingRect) {\n return;\n }\n const clientOffset = monitor.getClientOffset();\n if (!clientOffset) {\n return;\n }\n if (orientation === \"vertical\") {\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n if (hoverClientY < hoverMiddleY) {\n return \"top\";\n }\n if (hoverClientY >= hoverMiddleY) {\n return \"bottom\";\n }\n } else {\n const hoverMiddleX = (hoverBoundingRect.right - hoverBoundingRect.left) / 2;\n const hoverClientX = clientOffset.x - hoverBoundingRect.left;\n return hoverClientX < hoverMiddleX ? \"left\" : \"right\";\n }\n};\n\n// src/utils/getNewDirection.ts\nvar getNewDirection = (previousDir, dir) => {\n if (!dir && previousDir) {\n return \"\";\n }\n if (dir === \"top\" && previousDir !== \"top\") {\n return \"top\";\n }\n if (dir === \"bottom\" && previousDir !== \"bottom\") {\n return \"bottom\";\n }\n if (dir === \"left\" && previousDir !== \"left\") {\n return \"left\";\n }\n if (dir === \"right\" && previousDir !== \"right\") {\n return \"right\";\n }\n};\n\n// src/transforms/onDropNode.ts\nvar getDropPath = (editor, {\n id,\n canDropNode,\n dragItem,\n monitor,\n nodeRef,\n orientation = \"vertical\"\n}) => {\n const direction = getHoverDirection({\n id,\n dragItem,\n monitor,\n nodeRef,\n orientation\n });\n if (!direction) return;\n const dragEntry = editor.api.node({\n id: dragItem.id,\n at: []\n });\n if (!dragEntry) return;\n const dropEntry = editor.api.node({ id, at: [] });\n if (!dropEntry) return;\n if (canDropNode && !canDropNode({ dragEntry, dragItem, dropEntry, editor })) {\n return;\n }\n const [, dragPath] = dragEntry;\n const [, hoveredPath] = dropEntry;\n editor.tf.focus();\n let dropPath;\n if (direction === \"bottom\" || direction === \"right\") {\n dropPath = hoveredPath;\n if (PathApi.equals(dragPath, PathApi.next(dropPath))) return;\n }\n if (direction === \"top\" || direction === \"left\") {\n dropPath = [...hoveredPath.slice(0, -1), hoveredPath.at(-1) - 1];\n if (PathApi.equals(dragPath, dropPath)) return;\n }\n const _dropPath = dropPath;\n const before = PathApi.isBefore(dragPath, _dropPath) && PathApi.isSibling(dragPath, _dropPath);\n const to = before ? _dropPath : PathApi.next(_dropPath);\n return { direction, dragPath, to };\n};\nvar onDropNode = (editor, {\n id,\n canDropNode,\n dragItem,\n monitor,\n nodeRef,\n orientation = \"vertical\"\n}) => {\n const result = getDropPath(editor, {\n id,\n canDropNode,\n dragItem,\n monitor,\n nodeRef,\n orientation\n });\n if (!result) return;\n const { dragPath, to } = result;\n editor.tf.moveNodes({\n at: dragPath,\n to\n });\n};\n\n// src/transforms/onHoverNode.ts\nvar onHoverNode = (editor, {\n id,\n canDropNode,\n dragItem,\n monitor,\n nodeRef,\n orientation = \"vertical\"\n}) => {\n const { dropTarget } = editor.getOptions(DndPlugin);\n const currentId = dropTarget?.id ?? null;\n const currentLine = dropTarget?.line ?? \"\";\n const result = getDropPath(editor, {\n id,\n canDropNode,\n dragItem,\n monitor,\n nodeRef,\n orientation\n });\n if (!result) {\n if (currentId || currentLine) {\n editor.setOption(DndPlugin, \"dropTarget\", { id: null, line: \"\" });\n }\n return;\n }\n const { direction } = result;\n const newDropTarget = { id, line: direction };\n if (newDropTarget.id !== currentId || newDropTarget.line !== currentLine) {\n editor.setOption(DndPlugin, \"dropTarget\", newDropTarget);\n }\n if (direction && editor.api.isExpanded()) {\n editor.tf.focus();\n editor.tf.collapse();\n }\n};\n\n// src/hooks/useDropNode.ts\nvar useDropNode = (editor, {\n id,\n canDropNode,\n nodeRef,\n orientation,\n onDropHandler,\n ...options\n}) => {\n return useDrop({\n collect: (monitor) => ({\n isOver: monitor.isOver({\n shallow: true\n })\n }),\n drop: (dragItem, monitor) => {\n if (!dragItem.id) {\n const result = getDropPath(editor, {\n id,\n canDropNode,\n dragItem,\n monitor,\n nodeRef,\n orientation\n });\n const onDropFiles = editor.getOptions(DndPlugin).onDropFiles;\n if (!result || !onDropFiles) return;\n return onDropFiles({\n id,\n dragItem,\n editor,\n monitor,\n nodeRef,\n target: result.to\n });\n }\n const handled = !!onDropHandler && onDropHandler(editor, {\n id,\n dragItem,\n monitor,\n nodeRef\n });\n if (handled) return;\n onDropNode(editor, {\n id,\n dragItem,\n monitor,\n nodeRef,\n orientation\n });\n },\n hover(item, monitor) {\n onHoverNode(editor, {\n id,\n canDropNode,\n dragItem: item,\n monitor,\n nodeRef,\n orientation\n });\n },\n ...options\n });\n};\n\n// src/hooks/useDndNode.ts\nvar useDndNode = ({\n id = \"\",\n canDropNode,\n drag: dragOptions,\n drop: dropOptions,\n nodeRef,\n orientation = \"vertical\",\n preview: previewOptions = {},\n type = DRAG_ITEM_BLOCK,\n onDropHandler\n}) => {\n const editor = useEditorRef3();\n const [{ isDragging }, dragRef, preview] = useDragNode(editor, {\n id,\n type,\n ...dragOptions\n });\n const [{ isOver }, drop] = useDropNode(editor, {\n id,\n accept: [type, NativeTypes.FILE],\n canDropNode,\n nodeRef,\n orientation,\n onDropHandler,\n ...dropOptions\n });\n if (previewOptions.disable) {\n drop(nodeRef);\n preview(getEmptyImage(), { captureDraggingState: true });\n } else if (previewOptions.ref) {\n drop(nodeRef);\n preview(previewOptions.ref);\n } else {\n preview(drop(nodeRef));\n }\n useEffect(() => {\n if (!isOver && editor.getOptions(DndPlugin).dropTarget?.id) {\n editor.setOption(DndPlugin, \"dropTarget\", { id: null, line: \"\" });\n }\n }, [isOver, editor]);\n return {\n dragRef,\n isDragging,\n isOver\n };\n};\n\n// src/queries/getBlocksWithId.ts\nvar getBlocksWithId = (editor, options) => {\n const _nodes = editor.api.nodes({\n match: (n) => editor.api.isBlock(n) && !!n.id,\n ...options\n });\n return Array.from(_nodes);\n};\n\n// src/transforms/focusBlockStartById.ts\nvar focusBlockStartById = (editor, id) => {\n const path = editor.api.node({ id, at: [] })?.[1];\n if (!path) return;\n editor.tf.select(editor.api.start(path));\n editor.tf.focus();\n};\n\n// src/transforms/removeBlocksAndFocus.ts\nvar removeBlocksAndFocus = (editor, options) => {\n const nodeEntries = getBlocksWithId(editor, options);\n editor.tf.removeNodes({ at: editor.api.nodesRange(nodeEntries) });\n editor.tf.focus();\n};\n\n// src/transforms/selectBlockById.ts\nvar selectBlockById = (editor, id) => {\n const path = editor.api.node({ id, at: [] })?.[1];\n if (!path) return;\n editor.tf.select(editor.api.range(path));\n editor.tf.focus();\n};\n\n// src/transforms/selectBlocksBySelectionOrId.ts\nvar selectBlocksBySelectionOrId = (editor, id) => {\n if (!editor.selection) return;\n const blockEntries = getBlocksWithId(editor, { at: editor.selection });\n const isBlockSelected = blockEntries.some(\n (blockEntry) => blockEntry[0].id === id\n );\n if (isBlockSelected) {\n editor.tf.select(editor.api.nodesRange(blockEntries));\n editor.tf.focus();\n } else {\n selectBlockById(editor, id);\n }\n};\nexport {\n DRAG_ITEM_BLOCK,\n DndPlugin,\n DndScroller,\n ScrollArea,\n Scroller,\n focusBlockStartById,\n getBlocksWithId,\n getDropPath,\n getHoverDirection,\n getNewDirection,\n onDropNode,\n onHoverNode,\n removeBlocksAndFocus,\n selectBlockById,\n selectBlocksBySelectionOrId,\n useDndNode,\n useDragNode,\n useDraggable,\n useDropLine,\n useDropNode\n};\n//# sourceMappingURL=index.mjs.map"],"names":["IS_APPLE","navigator","userAgent","includes","findHtmlParentElement","el","nodeName","parentElement","protocolAndDomainRE","emailLintRE","localhostDomainRE","nonLocalhostDomainRE","isUrl","string","generalMatch","exec","emailLinkMatch","match","everythingAfterProtocol","URL","test","sanitizeUrl","url","allowedSchemes","permitInvalid","parsedUrl","protocol","slice","href","isDefined","arg","obj","isUndefined","isNull","bindFirst","fn","firstArg","args","createSlotComponent","element","React","forwardRef","as","asChild","props","ref","Comp","Slot","createElement","Box","React2","memo","children","Fragment","Text","useComposedRef","refs","React4","useCallback","node","forEach","value","current","setRef","composeRefs","createPrimitiveComponent","propsHook","stateHook","React5","className","classNameProp","getClassName","options","state","stateProp","hidden","hookProps","hookRef","_ref","clsx","style","_a","setProps","call","createPrimitiveElement","tag","React6","useIsomorphicLayoutEffect","window","document","React8","useLayoutEffect","useEffect","useMemoOnce","factory","deps","initialized","React9","useRef","prevDepsRef","memoizedValueRef","some","dep","i","checkClass","cl","classList","contains","hasIgnoreClass","e","ignoreClass","target","Array","isArray","c","getEventOptions","type","addEventListener","passive","Object","defineProperty","get","noop","removeEventListener","canUsePassiveEvents","useOnClickOutside","callback","detectIFrame","disabled","eventTypes","excludeScrollbar","refsOpt","refsState","setRefsState","React11","useState","callbackRef","prevState","length","getEls","els","push","handler","documentElement","clientWidth","clientX","clientHeight","clientY","clickedOnScrollbar","every","blurHandler","setTimeout","activeElement","tagName","JSON","stringify","withRef","renderFunction","React14","cn","inputs","twMerge","cx","withProps","Component","defaultProps","ComponentWithClassName","withCn","withVariants","variants","onlyVariantsProps","allProps","rest","key","_objectWithoutProperties","source","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","prototype","propertyIsEnumerable","_typeof","o","Symbol","iterator","constructor","_toPropertyKey","input","hint","prim","toPrimitive","res","TypeError","String","Number","_toPrimitive","_defineProperty","enumerable","configurable","writable","EditorContext","createContext","useSlateStatic","editor","useContext","Error","ReactEditor","DOMEditor","ownKeys$5","r","t","filter","getOwnPropertyDescriptor","apply","_objectSpread$5","arguments","getOwnPropertyDescriptors","defineProperties","createAndroidInputManager","scheduleOnDOMSelectionChange","onDOMSelectionChange","flushing","compositionEndTimeoutId","flushTimeoutId","actionTimeoutId","idCounter","insertPositionHint","applyPendingSelection","pendingSelection","EDITOR_TO_PENDING_SELECTION","delete","selection","normalized","normalizeRange","Range","equals","Transforms$1","select","flush","clearTimeout","hasPendingDiffs","hasPendingAction","selectionRef","Editor","rangeRef","affinity","EDITOR_TO_USER_MARKS","set","marks","EDITOR_TO_PENDING_ACTION","EDITOR_TO_PENDING_DIFFS","diff","scheduleSelectionChange","_EDITOR_TO_PENDING_DI","_EDITOR_TO_PENDING_DI2","pendingMarks","EDITOR_TO_PENDING_INSERTION_MARKS","range","targetRange","text","insertText","deleteFragment","_ref2","id","verifyDiffState","cancel","unref","action","at","Point","isPoint","normalizePoint","_targetRange","run","userMarks","onChange","updatePlaceholderVisibility","forceHide","placeholderElement","EDITOR_TO_PLACEHOLDER_ELEMENT","display","removeProperty","storeDiff","path","_EDITOR_TO_PENDING_DI3","pendingDiffs","Node","leaf","idx","findIndex","change","Path","normalizeStringDiff","merged","mergeStringDiffs","splice","scheduleAction","_EDITOR_TO_PENDING_DI4","handleUserSelect","pathChanged","anchor","parentPathChanged","scheduleFlush","hasPendingChanges","isFlushing","handleCompositionEnd","_event","IS_COMPOSING","handleCompositionStart","handleDOMBeforeInput","event","_targetRange2","IS_NODE_MAP_DIRTY","inputType","data","dataTransfer","nativeTargetRange","getTargetRanges","toSlateRange","exactMatch","suppressThrow","domSelection","getWindow","getSelection","canStoreDiff","startsWith","isExpanded","_start","_end","edges","offset","next","Text$1","isText","focus","direction","endsWith","start","end","relevantPendingDiffs","find","diffs","applyStringDiff","point","isCollapsed","targetNode","deleteForward","_nativeTargetRange","_anchor","nativeCollapsed","isDOMSelection","collapsed","deleteBackward","unit","insertSoftBreak","insertBreak","name","insertData","_text","replace","parts","split","line","Editor$1","_start2","_end2","_diff","hintPosition","search","handleKeyDown","_","handleDomMutations","mutations","_EDITOR_TO_FORCE_REND","mutation","isTrackedMutation","EDITOR_TO_FORCE_RENDER","handleInput","CAN_USE_DOM","_excluded$2","ownKeys$4","MUTATION_OBSERVER_CONFIG$1","subtree","childList","characterData","useAndroidInputManager","IS_ANDROID","isMountedRef","isMounted","inputManager","_objectSpread$4","mutationObserver","MutationObserver","takeRecords","observe","disconnect","EDITOR_TO_SCHEDULE_FLUSH","ownKeys$3","String$1","isLast","parent","findPath","parentPath","isMarkPlaceholder","Boolean","MARK_PLACEHOLDER_SYMBOL","isVoid","ZeroWidthString","isInline","TextString","isTrailing","isLineBreak","getTextContent","concat","initialText","textWithTrailing","textContent","MemoizedText$1","attributes","_objectSpread$3","IS_IOS","ownKeys$2","_objectSpread$2","PLACEHOLDER_DELAY","clearTimeoutRef","timeoutRef","Leaf","renderPlaceholder","renderLeaf","DefaultLeaf","placeholderResizeObserver","placeholderRef","showPlaceholder","setShowPlaceholder","showPlaceholderTimeoutRef","callbackPlaceholderRef","placeholderEl","releaseObserver","disconnectPlaceholderResizeObserver","_leaf$onPlaceholderRe","onPlaceholderResize","ResizeObserver$1","ResizeObserver","_leaf$onPlaceholderRe2","leafIsPlaceholder","PLACEHOLDER_SYMBOL","placeholderProps","placeholder","position","top","pointerEvents","width","maxWidth","opacity","userSelect","textDecoration","WebkitUserModify","IS_WEBKIT","contentEditable","MemoizedLeaf","prev","decorations","leaves","findKey","span","KEY_TO_ELEMENT","EDITOR_TO_KEY_TO_ELEMENT","NODE_TO_ELEMENT","ELEMENT_TO_NODE","MemoizedText","isTextDecorationsEqual","ownKeys$1","_objectSpread$1","Element","renderElement","DefaultElement","p","readOnly","useReadOnly","useChildren","hasInlines","dir","getDirection","Tag","texts","height","color","outline","NODE_TO_INDEX","NODE_TO_PARENT","MemoizedElement","isElementDecorationsEqual","DecorateContext","SelectedContext","useSelected","decorate","isLeafBlock","Element$1","isElement","n","sel","intersection","ds","dec","d","Provider","ReadOnlyContext","SlateContext","useSlate","context","MUTATION_OBSERVER_CONFIG","characterDataOldValue","RestoreDOMComponent","super","_defineProperty$1","this","_this$mutationObserve","componentDidMount","receivedUserInput","manager","bufferedMutations","clear","registerMutations","trackedMutations","restoreDOM","reverse","removedNodes","insertBefore","nextSibling","addedNodes","removeChild","createRestoreDomManager","getSnapshotBeforeUpdate","_this$mutationObserve2","_this$mutationObserve3","_this$manager2","_this$manager","pendingMutations","componentDidUpdate","_this$manager3","componentWillUnmount","_this$mutationObserve4","render","RestoreDOM","ComposingContext","_excluded$1","_excluded2","ownKeys","_objectSpread","Children","Editable","forwardedRef","defaultRenderPlaceholder","DefaultPlaceholder","autoFocus","defaultDecorate","onDOMBeforeInput","propsOnDOMBeforeInput","scrollSelectionIntoView","defaultScrollSelectionIntoView","userStyle","disableDefaultStyles","isComposing","setIsComposing","deferredOperations","placeholderHeight","setPlaceholderHeight","processing","onUserInput","animationFrameIdRef","cancelAnimationFrame","requestAnimationFrame","reactExports","useTrackUserInput","forceRender","useReducer","s","IS_READ_ONLY","useMemo","isDraggingInternally","isUpdatingSelection","latestElement","hasMarkPlaceholder","androidInputManagerRef","throttle","root","toDOMNode","getRootNode","ShadowRoot","getActiveElement","execCommand","Transforms","deselect","androidInputManager","_root","findDocumentOrShadowRoot","_el","IS_FOCUSED","anchorNode","focusNode","anchorNodeSelectable","hasEditableTarget","isTargetInsideNonReadonlyVoid","focusNodeInEditor","hasTarget","debounce","_androidInputManagerR","_androidInputManagerR2","getDefaultView","EDITOR_TO_WINDOW","EDITOR_TO_ELEMENT","isFocused","setDomSelection","forceChange","hasDomSelection","IS_FIREFOX","rangeCount","firstRange","getRangeAt","lastRange","startContainer","endContainer","editorElement","hasDomSelectionInEditor","slateRange","_anchorNode","hasAttribute","hasRange","newDomRange","toDOMRange","collapseToEnd","isBackward","setBaseAndExtent","endOffset","startOffset","removeAllRanges","ensureSelection","timeoutId","animationFrameId","ensureDomSelection","newRange","setStart","setEnd","preventDefault","stopImmediatePropagation","isDOMEventHandled","_EDITOR_TO_USER_SELEC","isCompositionChange","native","_node$parentElement","_window$getComputedSt","toDOMPoint","closest","_window","hasDOMNode","_lastText$textContent","lastText","createTreeWalker","NodeFilter","SHOW_TEXT","lastChild","getComputedStyle","whiteSpace","block","above","isBlock","_range","EDITOR_TO_USER_SELECTION","toRestore","HAS_BEFORE_INPUT_SUPPORT","stoppedDragging","from","placeHolderResizeHandler","_placeholderEl$getBou","getBoundingClientRect","loose","unset","fromEntries","map","mark","role","spellCheck","autoCorrect","autoCapitalize","zindex","suppressContentEditableWarning","wordWrap","minHeight","onBeforeInput","isEventHandled","hasSelectableTarget","_text2","onInput","op","nativeEvent","maybeHistoryEditor","undo","redo","onBlur","relatedTarget","isDOMElement","isDOMNode","toSlateNode","onClick","hasPath","detail","TRIPLE_CLICK","blockPath","_block$","startVoid","void","endVoid","_range2","onCompositionEnd","_androidInputManagerR3","Promise","resolve","then","IS_FIREFOX_LEGACY","IS_WECHATBROWSER","IS_UC_MOBILE","placeholderMarks","onCompositionUpdate","onCompositionStart","_androidInputManagerR4","onCopy","isDOMEventTargetInput","setFragmentData","clipboardData","onCut","onDragOver","onDragStart","voids","onDrop","draggedRange","findEventRange","onDragEnd","onFocus","onKeyDown","_androidInputManagerR5","isRTL","Hotkeys","isRedo","isUndo","_maybeHistoryEditor","isMoveLineBackward","move","isMoveLineForward","isExtendLineBackward","edge","isExtendLineForward","isMoveBackward","collapse","isMoveForward","isMoveWordBackward","isMoveWordForward","IS_CHROME","isDeleteBackward","isDeleteForward","currentNode","isBold","isItalic","isTransposeCharacter","isSoftBreak","isSplitBlock","isDeleteLineBackward","isDeleteLineForward","isDeleteWordBackward","isDeleteWordForward","onPaste","isPlainTextOnlyPaste","domRange","leafEl","bind","scrollIntoView","scrollMode","shouldTreatEventAsHandled","isDefaultPrevented","isPropagationStopped","HTMLInputElement","HTMLTextAreaElement","defaultPrevented","FocusedContext","useFocused","SlateSelectorContext","REACT_MAJOR_VERSION","parseInt","version","_excluded","Slate","onSelectionChange","onValueChange","initialValue","setContext","isNodeList","Scrubber","isEditor","assign","v","selectorContext","handleSelectorChange","eventListeners","slateRef","listener","getSlate","useSelectorContext","onContextChange","_options$operation","operation","prevContext","EDITOR_TO_ON_CHANGE","setIsFocused","PathRef","transform","PointRef","RangeRef","DIRTY_PATHS","WeakMap","DIRTY_PATH_KEYS","FLUSHING","NORMALIZING","PATH_REFS","POINT_REFS","RANGE_REFS","ancestors","paths","levels","common","another","av","compare","min","Math","endsAfter","bs","bv","endsAt","endsBefore","hasPrevious","isAfter","isAncestor","isBefore","isChild","isCommon","isDescendant","isParent","isPath","isSibling","list","last","operationCanTransformPath","previous","relative","ancestor","_op","_op2","_op3","_position","_op4","newPath","onp","copy","ownKeys$e","_objectSpread$e","GeneralTransforms","createDraft","index","points","_path","_node","before","after","_point","_key","_path2","_node2","prevPath","_parent","_index","_point2","_key2","_path3","_node3","_parent2","_index2","truePath","newParent","newIndex","_point3","_key3","_path4","_index3","_point4","_key4","result","_prev","preferNext","_path5","_offset","_node4","_before","_after","_point5","_key5","_path6","properties","newProperties","_node5","_key6","_key7","hasOwnProperty","_newProperties","isRange","_key8","_value","_path7","_properties","newNode","_node6","_parent4","_index4","_before2","_after2","_before3","_after3","_point6","_key9","applyToDraft","finishDraft","isDraft","NodeTransforms","insertNodes","nodes","liftNodes","mergeNodes","moveNodes","removeNodes","setNodes","splitNodes","unsetNodes","unwrapNodes","wrapNodes","SelectionTransforms","setPoint","setSelection","isDeepEqual","a","b","isPlainObject","_excluded$4","ownKeys$d","surrounds","intersectionRange","rs","re","ts","te","isAfterStart","isBeforeEnd","s1","e1","s2","e2","_objectSpread$d","isForward","produce","affinityAnchor","affinityFocus","isElementList","val","isElementProps","isElementType","elementVal","elementKey","matches","_excluded$3","_excluded2$3","IS_NODE_LIST_CACHE","entry","child","childPath","descendant","descendants","elements","extractProps","first","fragment","nodeEntries","pass","_leaf","getIf","has","isNode","cachedResult","isTextProps","to","visited","Set","add","nextIndex","join","ownKeys$c","_objectSpread$c","Operation","isNodeOperation","isOperation","isOperationList","isSelectionOperation","isTextOperation","inverse","inversePath","inverseNewPath","IS_EDITOR_CACHE","cachedIsEditor","addMark","insertFragment","insertNode","isElementReadOnly","isSelectable","normalizeNode","removeMark","getDirtyPaths","operations","elementReadOnly","hasBlocks","hasTexts","isEdge","isEmpty","isEnd","isNormalizing","isStart","getMarks","normalize","pathRef","pathRefs","pointRef","pointRefs","positions","rangeRefs","setNormalizing","unhangRange","withoutNormalizing","shouldMergeNodesRemovePrevNode","prevNode","curNode","Location","isLocation","Span","isSpan","ownKeys$b","_objectSpread$b","_scrubber","setScrubber","scrubber","_excluded2$2","ownKeys$a","_objectSpread$a","CodepointType","omitText","isTextList","merge","mergeDecoration","leafEnd","decorationStart","decorationEnd","leafStart","middle","off","_off","getDefaultInsertLocation","matchPath","getCharacterDistance","str","isLTR","codepoints","codepointsIteratorRTL","left","None","right","distance","gb12Or13","char","code","codePointAt","getCodepointType","intersects","ZWJ","ExtPict","endsWithEmojiZWJ","substring","RI","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","splitByCharacterDistance","dist","isWordCharacter","remaining","charDist","nextChar","nextRemaining","char1","charAt","isLowSurrogate","charCodeAt","char2","isHighSurrogate","charCode","reExtend","rePrepend","reSpacingMark","reL","reV","reT","reLV","reLVT","reExtPict","Any","Extend","Prepend","SpacingMark","L","V","T","LV","LVT","x","y","NonBoundaryPairs","endingEmojiZWJ","endingRIs","TextTransforms","startRef","endRef","startPoint","endPoint","ownKeys$9","_objectSpread$9","BATCHING_DIRTY_PATHS","updateDirtyPaths","newDirtyPaths","dirtyPaths","dirtyPathKeys","oldDirtyPaths","oldDirtyPathKeys","isBatchingDirtyPaths","oldAncestors","newAncestors","_ancestor","_p","resultPath","getFragment","shouldHaveInlines","_child","isInlineOrText","shouldNormalize","iteration","initialDirtyPathsLength","maxIterations","mode","ownKeys$8","_objectSpread$8","parentNode","markableVoid","expandedSelection","markAcceptingVoidSelected","selectedNode","selectedPath","ownKeys$7","_objectSpread$7","ownKeys$6","_objectSpread$6","getVoid","always","_excluded2$1","force","popDirtyPath","pop","allPaths","allPathKeys","dirtyPath","_dirtyPath","_entry","depth","firstPath","lastPath","ignoreNonSelectable","isNewBlock","blockText","leafTextRemaining","leafTextOffset","isFirst","calcDistance","started","getWordDistance","endBlock","skip","deleteText","_Editor$void","_Editor$void2","hanging","furthestVoid","voidPath","opts","endOfDoc","startBlock","isAcrossBlocks","isSingleText","startNonEditable","endNonEditable","removedText","startUnref","endUnref","batchDirty","inlineElementMatch","_inlinePath","blockMatch","isBlockStart","isBlockEnd","isBlockEmpty","mergeStart","mergeEnd","matcher","starts","middles","ends","starting","inlineMatch","inlinePath","isInlineStart","isInlineEnd","middleRef","oldProps","newProps","k","isAtEnd","batchedOps","update","batchDirtyPaths","_loop","parentNodeEntry","toPath","_toPath","splitPath","_toPath2","hasSingleChildNest","toRef","targets","depths","splitMode","endAtEndOfNode","startAtStartOfNode","prop","nodeProp","hasChanges","deleteRange","afterRef","beforeRef","highest","voidMatch","voidNode","afterPath","highestPath","lowestPath","_afterRef","roots","rootPath","commonPath","commonNodeEntry","commonNode","wrapperPath","wrapper","createEditor","_len","_len2","_len3","_len4","_len5","_len6","_len7","_len8","_len9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","_len15","_key15","_len16","_key16","_len17","_key17","_len18","_key18","_len19","_key19","_len20","_key20","_len21","_key21","_len22","_key22","_len23","_key23","_len24","_key24","_len25","_key25","_len26","_key26","_len27","_key27","_len28","_key28","_len29","_key29","_len30","_key30","_len31","_key31","_len32","_key32","_len33","_key33","_len34","_key34","_len35","_key35","_len36","_key36","_len37","_key37","_len38","_key38","_len39","_key39","_len40","_key40","_len41","_key41","_len42","_key42","_len43","_key43","isPreviousSibling","emptyAncestor","emptyRef","_len44","_key44","_len45","_key45","_len46","_key46","pointAfterLocation","_len47","_key47","_len48","_key48","universal","hit","isLower","emit","_len49","_key49","_len50","_key50","_len51","_key51","_len52","_key52","_len53","_key53","_len54","_key54","_len55","_key55","_len56","_key56","_len57","_key57","_len58","_key58","pointBeforeLocation","_len59","_key59","_len60","_key60","_len61","_key61","_len62","_key62","_len63","_key63","_len64","_key64","_len65","_key65","_len66","_key66","_len67","_key67","_len68","_key68","_len69","_key69","_len70","_key70","_len71","_key71","_len72","_key72","_len73","_key73","_len74","_key74","_len75","_key75","_len76","_key76","_len77","_key77","ElementApi","SlateElement","PathApi","SlatePath","path2","firstChild","lastIndex","last2","NodeExtension","NodeApi","endIndex","firstText","isLastChild","parent2","TextApi","SlateText","SlateNode","hasSingleChild","node2","LocationApi","SlateLocation","isAt","SpanApi","SlateSpan","OperationApi","SlateOperation","RangeApi","SlateRange","range2","targetStart","targetEnd","PointApi","SlatePoint","focus2","point2","blur","deselectDOM","DOMEditor2","DOMEditor3","DOMEditor4","DOMEditor5","findNodePath","nodeEntry","api","DOMEditor6","retries","reselect","at2","tf","DOMEditor7","error","console","DOMEditor8","DOMEditor9","DOMEditor10","DOMEditor11","DOMEditor12","DOMEditor13","DOMEditor14","DOMEditor15","isReadOnly","DOMEditor16","DOMEditor17","DOMEditor18","DOMEditor19","DOMEditor20","domNode","DOMEditor21","toSlatePoint","domPoint","DOMEditor22","DOMEditor23","getAt","predicate","entries","values","castArray","getMatch","block2","empty","matchObjOrFn","hasMatch","matchFn","combineMatch","getQueryOptions","match2","match1","aboveBase","addMarkBase","createPathRef","createPointRef","createRangeRef","deleteBackwardBase","deleteForwardBase","deleteFragmentBase","LEGACY_TRANSFORMS","LEGACY_API","assignLegacyTransforms","transforms","legacyTransforms","reduce","acc","assignLegacyApi","legacyApi","syncLegacyMethods","getEndPoint","prevEntry","getLeafNode","getPointAfter","getPointBefore","matchString","beforeBase","unitOffset","matchStrings","castArray2","matchByRegex","beforeAt","previousBeforePoint","stackLength","stack","count","beforePoint","matchBlockStart","blocks","beforeString","beforeStringToMatch","unshift","afterMatch","_b","skipInvalid","getStartPoint","nextEntry","getVoidNode","isBlockBase","first2","withoutNormalizingBase","next2","previous2","selectBase","deleteMerge","EditorInterface","start2","end2","after2","_nodes","pathRefs2","point3","pathRef2","castArray4","queryNode","allow","exclude","level","maxLevel","allows","excludes","atOrOptions","nodeOptions","nodeBase","pathBase","getEdgePoints","getEditorString","getFirstNode","getFragmentBase","structuralTypes","nodes2","unwrap","nodes3","unwrapStructuralNodes","getLevels","getPathRefs","getPoint","getPointRefs","getPositions","getRangeRefs","hasBlocksBase","hasInlinesBase","hasTextsBase","insertBreakBase","isEdgePoint","isEditorNormalizing","isEmptyBase","blockAbove","selectionParentEntry","selectionParentPath","siblingNodes","siblingNode","isEndPoint","isStartPoint","lastNodeEntry","lastBase","levelPath","getNodeAtLevel","normalizeEditor","parentBase","getPrevious","previousBase","sibling","previousPath","rangeBase","removeEditorMark","character","unhang","pointAfter","pointBefore","unhangRangeBase","edgeBlocks","_at","above2","_match","marks2","hasMark","isSelected","blocks2","word","afterRange","afterText","isEditorEnd","nodesRange","firstBlockPath","lastBlockPath","defaultValue","getProp","getNodeValue","nodeValue","textEntries","textValue","collapseSelection","deleteTextBase","deselectBase","fragment2","insertFragmentBase","nextBlock","removeEmpty","blockEntry","queryNodeOptions","insertNodes$1","liftNodesBase","mergeNode","removeEmptyAncestor","pointRef2","_levels","levels2","emptyPath","fromIndex","opt","moved","childNode","moveNodesBase","moveSelection","previousEmptyBlock","removeNodesBase","parentEntry","isExpandedRange","selectedEntry","setNodesBase","setPoint$1","setSelectionBase","splitNodesBase","unsetNodesBase","unwrapNodesBase","firstChildPath","wrapNodesBase","wrapNodes$1","addMarks","remove","removeMarks","castArray5","duplicateNodes","lastEntry","insertPath","nodesToInsert","shouldChange","castArray6","replaceNodes","removeOptions","reset","create","history","undos","redos","toggleBlock","defaultType","defaultTypeProp","someOptions","wrap","isActive","toggleMark","castArray7","SAVING","MERGING","SPLITTING_ONCE","HistoryApi","isHistory","isPlainObject2","isMerging","isSaving","isSplittingOnce","setSplittingOnce","withMerging","withNewBatch","withoutMerging","withoutSaving","returnValue","warn","createSlateEditor","writeHistory","insertFragmentData","insertTextData","withHistory","apply2","batch","selectionBefore","inverseOps","lastBatch","lastOp","save","shouldSave","shouldMerge","shift","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","BoundHotkeysProxyProvider","useBoundHotkeysProxy","deepEqual","isEqual","HotkeysContext","createContext2","activeScopes","disableScope","enableScope","hotkeys","toggleScope","useHotkeysContext","useContext2","reservedModifierKeywords","mappedKeys","AltLeft","AltRight","ControlLeft","ControlRight","MetaLeft","MetaRight","OSLeft","OSRight","ShiftLeft","ShiftRight","down","esc","return","up","mapKey","trim","toLowerCase","parseKeysHookInput","delimiter","parseHotkey","hotkey","splitKey","useKey","description","toLocaleLowerCase","modifiers","alt","ctrl","meta","mod","singleCharKeys","pushToCurrentlyPressedKeys","removeFromCurrentlyPressedKeys","currentlyPressedKeys","isReadonlyArray","hotkeyArray","key2","isHotkeyModifier","Key","useDeepEqualMemo","isHotkeyEnabledOnTag","enabledOnTags","targetTagName","isHotkeyMatchingKeyboardEvent","ignoreModifiers","altKey","ctrlKey","producedKey","metaKey","shiftKey","mappedCode","isHotkeyPressed","stopPropagation","useSafeLayoutEffect","useHotkeys","dependencies","useState3","hasTriggeredRef","useRef2","_options","_keys","keyCombo","toString","_deps","memoisedCB","useCallback3","cbRef","memoisedOptions","proxy","enabled","scopes","scope","isScopeActive","isKeyUp","enableOnFormTags","rootNode","Document","isContentEditable","enableOnContentEditable","_a2","_c","ignoreEventWhenPrevented","ignoreEventWhen","isHotkeyEnabled","maybePreventDefault","keydown","keyup","handleKeyUp","addHotkey","removeHotkey","isFunction","mergePlugins","basePlugin","sourcePlugins","mergeWith","objValue","srcValue","createSlatePlugin","config","baseConfig","initialExtension","plugin","__apiExtensions","__configuration","__extensions","__optionExtensions","inject","override","parser","parsers","plugins","priority","shortcuts","handlers","configure","config2","newPlugin","ctx","configurePlugin","configureNestedPlugin","found","updatedPlugins","nestedPlugin","result2","extendEditorApi","extension","isPluginSpecific","extendOptions","extendApi","extendEditorTransforms","isTransform","extendTransforms","overrideEditor","isOverride","extend","extendConfig","clone","extendPlugin","extendNestedPlugin","createTSlatePlugin","getEditorPlugin","getPlugin","getOption","getOptions","setOption","keyOrOptions","setOptions","resolvePlugin","_plugin","__resolved","configResult","targetPluginToInject","targetPlugins","targetPlugin","component","_d","validatePlugin","debug","isLeaf","resolvePluginStores","pluginList","store","createZustandStore","mutative","extendedOptions","extendSelectors","optionsStore","resolvePluginMethods","apiKey","apiFunction","newExtensions","merge4","merge2","resolvePluginShortcuts","shortcutsByPriority","item","existingIndex","sort","hotkeyWithoutPriority","resolveAndSortPlugins","pluginMap","Map","processPlugin","resolvedPlugin","existingPlugin","flattenAndResolvePlugins","enabledPlugins","orderedPlugins","visit","depKey","depPlugin","applyPluginsToEditor","resolvePluginOverrides","applyOverrides","overriddenPlugins","enabledOverrides","componentOverrides","pluginOverrides","components","updatedPlugin","AstPlugin","deserialize","decoded","decodeURIComponent","atob","parsed","parse","format","DOMPlugin","HistoryPlugin","extendEditor","InlineVoidPlugin","voidTypes","inlineTypes","markableVoidTypes","nonSelectableTypes","isMarkableVoid","pipeInsertFragment","injectedPlugins","preInsert","pipeTransformData","transformData","pipeTransformFragment","transformFragment","applyDeepToNodes","query","Function","applyDeepToNodes$1","getKeyByType","plugin2","getInjectMatch","excludeBelowPlugins","excludePlugins","_isBlock","_isElement","excludeTypes","types","getKeysByTypes","getInjectedPlugins","injectedPlugin","getNodeDataAttributeKeys","kebabCase","keyToDataAttribute","pipeInjectNodeProps","nodeProps","getElementPath","injectNodeProps","classNames","defaultNodeValue","nodeKey","styleKey","transformClassName","transformNodeValue","transformProps","transformStyle","validNodeValues","injectMatch","queryResult","isDefined2","transformOptions","pluginInjectNodeProps","PlateError","message","DebugPlugin","isProduction","logLevel","logger","details","info","log","throwErrors","logLevels","isHtmlElement","nodeType","ELEMENT_NODE","isHtmlText","TEXT_NODE","inlineTagNames","isHtmlInlineElement","tagNameIsInline","displayProperty","isHtmlBlockElement","endInlineFormattingContext","inlineFormattingContext","collapseWhiteSpaceText","isWhiteSpaceOnly","atStart","lastHasTrailingWhiteSpace","upsertInlineFormattingContext","whiteSpaceRule","trimStart","trimEnd","isLastNonEmptyTextOfInlineFormattingContext","shouldCollapseWhiteSpace","normal","pre","collapsedTextContent","whiteSpaceIncludesNewlines","replaceAll","collapseString","collapseWhiteSpaceNode","collapseWhiteSpaceElement","collapseWhiteSpaceChildren","childNodes","isInlineElement","previousWhiteSpaceRule","inferredWhiteSpaceRule","whiteSpaceProperty","inferWhiteSpaceRule","deserializeHtmlNodeChildren","flatMap","deserializeHtmlNode","getDataNodeProps","toNodeProps","html","deserializer","defaultNodeProps","disabledDefaultNodeProps","pluginKey","isSlatePluginNode","dataAttributes","dataset","attributeKey","parsedValue","isNaN","getDefaultNodeProps","customNodeProps","pluginDeserializeHtml","deserializeLeaf","isElementRoot","isLeafRoot","rules","staticRules","rule","validClassName","validNodeName","getDeserializedWithStaticRules","attributeNames","isElementRule","isLeafRule","validAttribute","validStyle","validNodeNames","getAttributeNames","attributeName","attributeValue","attributeValues","elAttribute","getAttribute","isDefined3","elementAttributes","elementAttributeNames","elementAttributeName","htmlElementToElement","deserialized","pipeDeserializeHtmlElement","withoutChildren","jsx2","slateVoid","isSlateVoid","htmlElementToLeaf","pipeDeserializeHtmlLeaf","arr","ElementApi2","TextApi2","merge3","jsx3","textNode","platePreventDeserialization","htmlTextNodeToString","breakLine","htmlBrToNewLine","jsx","htmlBodyToFragment","deserializeHtml","collapseWhiteSpace","rawHtml","innerHTML","htmlStringToDOMNode","clonedElement","cloneNode","deserializeHtmlElement","normalizeDescendantsToDocumentFragment","HtmlPlugin","document2","DOMParser","parseFromString","body","LengthPlugin","maxLength","overflowLength","BaseParagraphPlugin","fontFamily","SlateExtensionPlugin","resetMarks","getType","prevSelection","currentKeyboardEvent","setValue","makeDefaultBlock","normalizeDifferentNodeTypes","hasDifferentNodes","prevDescendant","hasDifferentChildNodes","precedingBlock","normalizeEmptyChildren","ElementApi3","TextApi3","isInlineNode","pipeInsertDataQuery","ParserPlugin","mimeTypes","formats","mimeTypeList","fmt","mimeType","getData","withSlate","autoSelect","rootPlugin","shouldNormalizeEditor","pluginConfig","nanoid","isFallback","getApi","getTransforms","editorPlugin","getSlatePlugin","getPluginType","getInjectProps","getOptionsStore","getter","value2","setter","draft","corePlugins","customPluginsMap","corePlugin","customPlugin","getCorePlugins","rootPluginInstance","resolvedPlugins","resolvePlugins","normalizeInitialValue","pipeNormalizeInitialValue","methodsToWrap","toPlatePlugin","method","originalMethod","withComponent","toTPlatePlugin","createPlatePlugin","createTPlatePlugin","getEditorPlugin2","useOption","omitPluginContext","rootProps","leafToAttributes","clsx2","useDefaultLeaf","EXPOSED_STORE_KEYS","PlateControllerProvider","PlateController","plateControllerStore","usePlateControllerStore","createAtomStore","activeId","atom2","editorStores","primaryEditorIds","usePlateControllerActions","usePlateControllerEditorStore","idProp","storeAtom","atom","forId","lookupOrder","PlateProvider","PlateStoreProvider","plateStore","usePlateStore","containerRef","primary","scrollRef","versionDecorate","versionEditor","versionSelection","versionValue","atoms","trackedEditor","atom3","trackedSelection","trackedValue","createPlateStore","usePlateEditorStore","debugHookName","localStore","warnIfNoStore","localStoreExists","React3","plateControllerExists","fallbackStore","createStore","usePlateSelectors","usePlateActions","useIncrementVersion","previousVersionRef","nextVersion","useEditorContainerRef","useEditorId","SlateReactExtensionPlugin","persist","redecorate","isDefined4","_memo","EventEditorStore","createZustandStore2","eventEditorActions","eventEditorSelectors","useEventEditorSelectors","use","EventEditorPlugin","dispatchEvent","CustomEvent","ParagraphPlugin","toggleParagraph","ReactPlugin","withDOM","ReactDOM","unstable_batchedUpdates","withReact","createPlateEditor","createEditor2","useOptions","selector","equalityFn","useStore","withPlate","DOM_HANDLERS","getRenderNodeProps","pick","dangerouslyAllowAttributes","getPluginNodeProps","clsx3","pipeHandler","editableProps","handlerKey","propsHandler","relevantPlugins","handledEvent","Event","domEvent","propagationStopped","bubbles","cancelable","currentTarget","eventPhase","isTrusted","timeStamp","convertDomEventToSyntheticEvent","pluginHandler","pipeRenderLeaf","renderLeafProp","renderLeafs","ctxProps","pluginRenderLeaf","newChildren","useEditableProps","readOnlyProp","useEditorRef","selectors","storeReadOnly","storeDecorate","storeRenderLeaf","storeRenderElement","decorateMemo","decorateProp","ranges","addRanges","newRanges","pipeDecorate","pipeRenderElement","useDeepCompareMemo","_props","omit","clsx4","useNodePath","memoizedValue","setMemoizedValue","React10","previousValueRef","newValue","useMemoizedSelector","useSlateProps","onChangeProp","onValueChangeProp","onSelectionChangeProp","eventIsHandled","pipeOnChange","ElementProvider","elementStore","useElementStore","ElementContent","useElement","_children","aboveNodes","belowNodes","withHOC2","hoc","renderElementProp","renderElements","pluginRenderElement","createPlateFallbackEditor","useEditorPlugin","useEditorReadOnly","useEditorSelector","storeOptions","selectorAtom","React12","selectAtom","usePath","EditorHotkeysEffect","editableRef","hotkeyString","hotkeyConfig","isDefined5","HotkeyEffect","setHotkeyRef","eventDetails","useEffect2","EditorMethodsEffect","updateDecorate","useRedecorate","plateStore2","storeSetters","memorizedStoreSetters","useMemoOnce2","React15","setPlateState","optionKey","EditorRefPluginEffect","useHooks","EditorRefEffect","setIsMounted","React16","EditorStateEffect","React17","editorState","updateVersionEditor","updateVersionSelection","prevSelectionRef","sameSelection","isSelectionEqual","PlateInner","Plate","useId","React19","suppressInstanceWarning","React18","globalThis","__PLATE_INSTANCES__","uid","PlateControllerEffect","idFromStore","currentStoreAtom","React20","focusAtom","optic","setCurrentStore","setPrimaryEditorIds","focused","setActiveId","ids","PlateSlate","slateProps","aboveSlate","AboveSlate","PlateContent","React22","autoFocusOnEditable","renderEditable","combinedRef","editable","afterEditable","beforeEditable","AfterEditable","BeforeEditable","aboveEditable","AboveEditable","prevReadOnly","usePlateEditor","useMemoOnce3","displayName","withHOC","HOC","hocProps","hocRef","React24","componentRef","PlateElement","rootRef","elementToAttributes","mounted","usePlateElement","PlateLeaf","omitPluginContext2","useComposedRef2","usePlateLeaf","createNodesHOC","childrenProps","createNodeHOC","_components","optionsByKey","useFormInputProps","preventDefaultOnEnterKeydown","onKeyDownCapture","keyCode","handleEnterKeydownCapture","useMarkToolbarButtonState","pressed","useEditorSelector2","useMarkToolbarButton","onMouseDown","usePlaceholderState","hideOnBlur","selected","composing","useEditorRef2","useRemoveNodeButton","useEditorRef3","useSelectionFragmentProp","useEditorSelector4","getPluginTypes","getNodeDataAttributes","toDataAttributes","getRenderNodeStaticProps","getSlateClass","pipeRenderElementStatic","pluginRenderElementStatic","SlateLeaf","pipeRenderLeafStatic","pluginRenderLeafStatic","ElementStatic","LeafStatic","l","leafElement","isSlatePluginElement","slateNode","getSlateElements","querySelectorAll","HOTKEYS","bold","compose","extendBackward","extendForward","italic","moveBackward","moveForward","moveWordBackward","moveWordForward","splitBlock","tab","untab","APPLE_HOTKEYS","deleteLineBackward","deleteLineForward","deleteWordBackward","deleteWordForward","extendLineBackward","extendLineForward","moveLineBackward","moveLineForward","transposeCharacter","WINDOWS_HOTKEYS","createHotkey","generic","apple","windows","isGeneric","isKeyHotkey","isApple","isWindows","createComposing","isCompose","isExtendBackward","isExtendForward","isTab","isUntab","traverseHtmlNode","currentChild","previousChild","previousSibling","traverseHtmlElements","someHtmlElement","findHtmlElement","postCleanHtml","RegExp","ElementApi4","TextApi4","BaseExitBreakPlugin","isHotkey","queryEdge","exitBreakAtEdges","selectionPath","slicedPath","exitBreak","SingleLinePlugin","toPlatePlugin2","SoftBreakPlugin","toPlatePlugin3","createTSlatePlugin2","isHotkey2","queryNode2","HEADING_KEYS","h1","h2","h3","h4","h5","h6","HEADING_LEVELS","BaseTocPlugin","isScroll","topOffset","insertToc","AlignPlugin","textAlign","getMatchRange","trigger","triggers","autoformatBlock","allowSameTypeAbove","preFormat","triggerAtBlockStart","matchRange","textFromBlockStart","getMatchPoints","afterStartMatchPoint","beforeStartMatchPoint","beforeEndMatchPoint","isPreviousCharacterEmpty","autoformatMark","ignoreTrim","castArray3","matched","matchText","autoformatText","formatEnd","formatStart","AutoformatPlugin","insertTrigger","autoformatter","enableUndoOnDelete","byKey","charRange","matchers","rule2","textRule","matchArray","BaseBoldPlugin","fontWeight","BaseCodePlugin","createSlatePlugin2","BaseItalicPlugin","createSlatePlugin3","someHtmlElement2","fontStyle","BaseStrikethroughPlugin","createSlatePlugin4","someHtmlElement3","BaseSubscriptPlugin","createSlatePlugin5","verticalAlign","BaseSuperscriptPlugin","createSlatePlugin6","BaseUnderlinePlugin","createSlatePlugin7","someHtmlElement4","BaseBasicMarksPlugin","createSlatePlugin8","BoldPlugin","toggleBold","CodePlugin","toggleCode","Key2","ItalicPlugin","toggleItalic","Key3","StrikethroughPlugin","toPlatePlugin4","toggleStrikethrough","Key4","SuperscriptPlugin","toPlatePlugin5","toggleSuperscript","Key5","SubscriptPlugin","toPlatePlugin6","toggleSubscript","Key6","UnderlinePlugin","toPlatePlugin7","toggleUnderline","Key7","toPlatePlugin8","BaseBlockquotePlugin","prevNodeEntry","curNodeEntry","BlockquotePlugin","toggleBlockquote","BaseCaptionPlugin","focusEndPath","focusStartPath","visibleId","isVisible","elementId","newSelection","caption","CaptionPlugin","getPluginTypes2","Caption","useElement2","captionString","nodeCaption","NodeApi2","useCaptionString","showCaption2","_readOnly","useCaptionButtonState","useElement3","useCaptionButton","TextareaAutosize","isRerendered","setIsRerendered","ReactTextareaAutosize","CaptionTextarea","createPrimitiveComponent2","captionValue","textareaRef","handleChange","isHotkey3","nextNodePath","useElement4","setCaptionValue","NodeApi3","updateEditorCaptionValue","useReadOnly2","focusCaptionPath","useCaptionTextareaFocus","getCodeLineEntry","BaseCodeLinePlugin","selectionParent","codeLine","codeLineNode","codeLinePath","codeBlock","deleteStartSpace","codeLineStart","codeLineEnd","spaceRange","spaceText","indentCodeLine","indentDepth","indent","repeat","cursor","outdentCodeLine","withInsertDataCodeBlock","vscodeDataString","vscodeData","lines","codeLineType","codeBlockType","BaseCodeBlockPlugin","lang","withInsertFragmentCodeBlock","extractCodeLinesFromCodeBlock","convertNodeToCodeLine","withNormalizeCodeBlock","nonCodeLine","htmlDeserializerCodeBlock","staticCodeBlock","staticCodeLines","slateId","htmlDeserializerCodeBlockStatic","languageSelectorText","codeBlockOptions","prism","Prism","Token","languages","tokenize","syntax","langName","tokens","NodeApi4","BaseCodeSyntaxPlugin","tokenType","syntaxPopularFirst","getIndentDepth","insertBreakCodeBlock","CodeLinePlugin","CodeSyntaxPlugin","CodeBlockPlugin","_codeLines","codeLines","firstLinePath","codeBlockPath","toggleCodeBlock","useCodeBlockComboboxState","useCodeBlockCombobox","commandItemProps","onSelect","useCodeBlockElementState","domLoaded","setDomLoaded","codeClassName","useCodeSyntaxLeaf","tokenProps","HeadingPlugin","TocPlugin","HighlightPlugin","toggleHighlight","BaseIndentPlugin","indentMax","setIndent","getNodesOptions","setNodesProps","unsetNodesProps","newIndent","IndentPlugin","outdent","BaseParagraphPlugin2","ULIST_STYLE_TYPES","getSiblingIndentList","breakOnEqIndentNeqListStyleType","breakOnListRestart","breakOnLowerIndent","breakQuery","eqIndent","getNextEntry","getPreviousEntry","getSiblingEntry","nextNode","nextPath","BaseIndentPlugin2","nextIndent","INDENT_LIST_KEYS","listRestart","BaseIndentListPlugin","valid","getNextIndentList","currPath","getPreviousIndentList","PathApi2","normalizeNextIndentListStart","prevListStart","listStart","currListStart","restart","normalizeIndentListStart","normalizeFirstIndentListStart","normalizeNext","currEntry","outdentList","setIndent2","checked","withDeleteBackwardIndentList","listNode","withInsertBreakIndentList","todo","newEntry","withNormalizeIndentList","normalizeIndentListNotIndented","getSiblingIndentListOptions","liChildren","replaceChildren","getListStyleType","listStyleType","injectProps","margin","padding","listStyleTypes","listOptions","isOrdered","List","liComponent","Li","markerComponent","Marker","nodeBefore","targetPath","NodeApi5","prevListStyleType","nextIndentListPathRef","PathApi3","nextNodeEntryBefore","listReStart","nextNodeEntry","BaseIndentPlugin7","IndentListPlugin","currentPath","onError","strictType","withRemoveEmptyNodes","RemoveEmptyNodesPlugin","getDefaultBoundingClientRect","bottom","useFloatingToolbarState","editorId","floatingOptions","focusedEditorId","hideToolbar","showWhenReadOnly","selectionExpanded","selectionText","open","setOpen","waitForCollapsedSelection","setWaitForCollapsedSelection","mousedown","setMousedown","floating","useVirtualFloating","overrideProps","handlerKeys","handlerQuery","mapProps","mergeProps","getSelectionBoundingClientRect","onOpenChange","useFloatingToolbar","mouseup","mousedown2","clickOutsideRef","setFloating","getBoundingClientRect2","virtualElementRef","visible","setVisible","floatingResult","useFloating","whileElementsMounted","autoUpdate","middlewareData","strategy","setReference","hide","referenceHidden","visibility","getDOMSelectionBoundingClientRect","getRangeBoundingClientRect","getLinkAttributes","link","dangerouslySkipSanitization","defaultLinkAttributes","createLinkNode","BaseLinkPlugin","validateUrl","isUrl2","sanitizeUrl2","unwrapLink","_e","_f","upsertLinkText","newLink","newLinkNode","newLinkPath","upsertLink","insertNodesOptions","insertTextInLink","skipValidation","linkAbove","linkEntry","linkNode","linkPath","shouldReplaceText","wrapLink","createLinkNodeOptions","insertLink","keepSelectedTextOnPaste","rangeBeforeOptions","wrapLink2","getUrlHref","beforeWordRange","beforeWordText","RangeApi2","newPoint","textHref","nextPoint","LinkPlugin","isEditing","mouseDown","newTab","openEditorId","triggerFloatingLinkHotkeys","updated","getAttributes","floatingLink","show","isOpen","useLink","onMouseOver","setChecked","FloatingLinkUrlInput","useEditorPlugin2","encodeURI","URIError","encodeUrlIfNeeded","decodeURI","safeDecodeUrl","LinkOpenButton","createPrimitiveComponent3","useEditorSelection","triggerFloatingLinkEdit","useFloatingLinkEnter","useEditorPlugin3","getEditorPlugin3","forceSubmit","transformInput","inputUrl","submitFloatingLink","useFloatingLinkEscape","useEditorPlugin4","useHotkeys2","useVirtualFloatingLink","useEditorPlugin5","useFloatingLinkEditState","useEditorPlugin6","useEditorVersion","useFloatingLinkEdit","useHotkeys3","editButtonProps","zIndex","unlinkButtonProps","triggerFloatingLinkInsert","getEditorPlugin4","useFloatingLinkInsertState","useEditorPlugin7","useEditorReadOnly2","getDOMSelectionBoundingClientRect2","useFloatingLinkInsert","useOnClickOutside2","useHotkeys4","updatedValue","textInputProps","triggerFloatingLink","getEditorPlugin5","BaseResetNodePlugin","disableFirstBlockReset","disableEditorReset","deleteFragmentPlugin","SIMULATE_BACKSPACE","which","onKeyDownResetNode","onReset","ResetNodePlugin","isListNested","listPath","listParentNode","BaseListItemPlugin","getListTypes","BaseNumberedListPlugin","BaseBulletedListPlugin","getHighestEmptyList","diffListPath","liPath","liParent","getListItemEntry","liType","listItem","getListRoot","parentList","parentListPath","BaseTodoListPlugin","getTodoListItemEntry","insertTodoListItem","insertBreakTodoList","todoType","hasListChild","isAcrossListItems","RangeApi3","isListRoot","moveListItemsToList","deleteFromList","fromList","fromListItem","fromStartIndex","_to","toList","toListIndex","fromListPath","fromListItemSublist","lastChildPath","unwrapList","ancestorListTypeCheck","moveListItemUp","liNode","toListPath2","PathApi4","condA","condB","toListNode","liParentPath","toListPath","movedUpLiPath","removeFirstListItem","moveListItems","enableResetOnShiftTab","increase","BaseListItemContentPlugin","lics","highestLicPaths","highestLicPathRefs","lic","licPath","PathApi5","highestLiPath","licPathRefsToMove","licPathRef","_moved","listItemPath","previousListItemPath","previousSiblingItem","previousNode","sublist","moveListItemDown","inheritCheckStateOnLineEndBreak","inheritCheckStateOnLineStartBreak","todoEntry","paragraphPath","success","nextParagraphPath","PathApi7","moveListItemSublistItemsToListItemSublist","toListItem","fromListItemPath","toListItemPath","fromListItemSublistPath","toListItemSublist","toListItemSublistPath","PathApi8","NodeApi6","fromListNode","fromListType","removeListItem","previousLiPath","PathApi9","previousLi","tempLiPath","tempLi","tempLiPathRef","toggleList","validLiChildrenTypes","BaseListPlugin","RangeApi4","commonEntry","NodeApi7","startList","endList","rangeLength","rootPathLength","_n","toggleBulletedList","toggleNumberedList","toggle","bulletedList","numberedList","withDeleteForwardList","skipDefaultDelete","defaultDelete","isNodeLi","isSiblingOfNodeLi","NodeApi8","PathApi10","liWithSiblings","pointAfterListItem2","nextSiblingListRes","listRoot","siblingListItem","siblingList","pointAfterListItem","licType","nextSelectableLic","leftoverListItem","nestedList","nestedListItem","selectionIsInAListHandler","pointAfterSelection","parentBlockEntity","sublistRes","selectionIsNotInAListHandler","deleteForwardList","getLiStart","withDeleteFragmentList","deleted","liEnd","liEndPathRef","deleteMerge2","liStart","liEndPath","deletePath","deleteFragmentList","withInsertFragmentList","listItemType","listItemContentType","findListItemsWithContent","trimList","_texts","NodeApi9","commonAncestorEntry","commonAncestor","textEntry","PathApi11","getFirstAncestorOfType","wrapNodeIntoListItem","getTextAndListItemNodes","liEntry","licEntry","licNode","isEmptyNode","listItemNodes","isSingleLic","li","currentSublists","newLic","newSublists","getDeepInlineChildren","inlineChildren","NodeApi10","withNormalizeList","ElementApi5","nonLiChild","NodeApi11","match5","PathApi14","match4","PathApi13","normalizeNestedList","changed","allValidLiChildrenTypes","invalidLiChildrenPathRefs","firstLiChild","firstLiChildNode","firstLiChildPath","match3","licChildren","blockPathRefs","licChild","PathApi12","normalizeListItem","onKeyDownList","workRange","RangeApi5","listSelected","withDeleteBackwardList","PathApi15","BaseParagraphPlugin3","pointBeforeListItem","currentLic","hasMultipleChildren","deleteMerge3","deleteBackwardList","withInsertBreakList","onKeyDownResetNode2","createTSlatePlugin3","BaseParagraphPlugin4","_editor","SIMULATE_BACKSPACE2","inserted","listItemEntry","listItemNode","PathApi6","nextListItemPath","insertListItem","insertBreakList","BulletedListPlugin","NumberedListPlugin","ListItemContentPlugin","ListItemPlugin","ListPlugin","TodoListPlugin","toggleTodoList","useTodoListElementState","useTodoListElement","checkboxProps","onCheckedChange","BaseAudioPlugin","BaseFilePlugin","BaseVideoPlugin","insertImage","image2","BaseImagePlugin","insertImageFromFiles","files","file","reader","FileReader","mime","async","uploadImage","uploadedUrl","insertImage$1","readAsDataURL","imageExtensions","disableUploadInsert","text2","disableEmbedInsert","ext","pathname","isImageUrl","insert","imageFromFiles","allowedProtocols","BaseMediaEmbedPlugin","transformUrl","regexGroupQuotes","src","returnString","VIDEO_PROVIDERS","insertPlaceholder","mediaType","BasePlaceholderPlugin","insertImagePlaceholder","insertVideoPlaceholder","insertAudioPlaceholder","insertFilePlaceholder","audioPlaceholder","bindFirst2","filePlaceholder","imagePlaceholder","videoPlaceholder","ImagePlugin","MediaEmbedPlugin","AudioPlugin","FilePlugin","VideoPlugin","ImagePreviewStore","boundingClientRect","currentPreview","isEditingScale","previewList","scale","translate","extendActions","close","imagePreviewActions","useImagePreviewSelectors","openImagePreview","urlList","enties","getUrlList","useZoom","setScale","setTranslate","zoomIn","nextScale","zoomOut","previousScale","useImagePreviewState","scrollSpeed","setCurrentPreView","setIsEditingScale","useImagePreview","wheel","deltaX","deltaY","windowWidth","innerWidth","windowHeight","innerHeight","leftOffset","currentPreviewIndex","onClose","useCallback2","prevDisabled","nextDisabled","zoomOutDisabled","zoomInDisabled","closeProps","currentUrlIndex","maskLayerProps","nextProps","prevProps","scaleTextProps","zommOutProps","zoomInProps","Image","draggable","onDoubleClickCapture","PreviewImage","imageRef","setBoundingClientRect","isZoomIn","useMemo2","useScaleInputState","inputRef","useScaleInput","useEffect3","toFixed","showCaption","useMediaState","urlParsers","align","isUpload","embed","parseMediaUrl","isTweet","provider","isVideo","isYoutube","unsafeUrl","FloatingMediaStore","floatingMediaActions","floatingMediaSelectors","useFloatingMediaSelectors","FloatingMediaEditButton","FloatingMedia","EditButton","UrlInput","createPrimitiveComponent4","useEditorRef5","_isUrl","isUrl3","submitFloatingMedia","UploadErrorCode","UploadErrorCode2","createUploadError","lookup","lastIndexOf","max","extname","extensions2","types2","inittedMaps","preference","exts","extensions","populateMaps","charset","matchFileType","allowedTypes","type2","getMediaType","historyMarks","isHistoryMarking","updateUploadHistory","findLastIndex","batch2","PlaceholderPlugin","placeholderId","newOperations","newBatch","FILESIZE_UNITS","fileSizeToBytes","fileSize","regex","sizeValue","parseFloat","sizeUnit","toUpperCase","bytes","pow","floor","validateFileItem","maxFileCount","Infinity","maxFileSize","minFileCount","fileType","f","size","validateFiles","fileList","fileTypeMap","FileTypeMap","audio","blob","image","pdf","video","groupFilesByType","itemConfig","itemFiles","insertMedia2","uploadConfig","multiple","isUploadError","currentAt","restOptions","addUploadingFile","withHistoryMark","disableEmptyPlaceholder","disableFileDrop","uploadingFiles","media","bindFirst3","getUploadingFile","removeUploadingFile","PlaceholderProvider","placeholderStore","usePlaceholderStore","createAtomStore2","isUploading","progresses","updatedFiles","NodeIdPlugin","filterInline","filterText","idKey","firstNode","lastNode","addNodeId","entry2","idCreator","idPropsCreator","filterNode","removeIdFromNodeIfDuplicate","reuseId","overrideIdIfSet","_id","disableInsertOverrides","cloneDeep","defaults","DeletePlugin","isValidNode","removeNodeIfEmpty","prevCell","BlockMenuPlugin","openId","showContextMenu","blockId","blockSelection","addSelectedRow","blockMenu","button","extractSelectableIds","useBlockSelected","BlockSelectionPlugin","getRemoveCursorHandler","cursorOverlay","removeCursor","createTPlatePlugin2","cursors","addCursor","newCursors","isSelecting2","plateFocus","onDragLeave","dnd","isDragging","EventTarget","__publicField","cb","_listeners","ok","unbindAllListeners","unitify","css","attr","eventListener","items","events","HTMLCollection","NodeList","ev","capture","on","simplifyEvent","evt","touches","intersectsScroll","container","containerRect","scrollLeft","scrollTop","selectAll","doc","abs","ceil","SelectionArea","x1","x2","y1","y2","DOMRect","added","removed","stored","touched","_bindStartEvents","boundaries","selectables","selectionAreaClass","startAreas","behaviour","intersect","overlap","scrolling","manualSpeed","speedDivider","startScrollMargins","startThreshold","features","touch","singleTap","getOwnPropertyNames","getPrototypeOf","_area","willChange","_frame","previousArgs","frameId","lock","frames","_recalculateSelectionAreaRect","_updateElementSelection","_emitEvent","_redrawSelectionArea","enable","activate","_onTapStart","_delayedTapMove","_areaLocation","_areaClientLocation","_onTapStop","_onTapMove","_container","append","resolveSelectables","_singleClick","_manualScroll","_setupSelectionArea","_handleMoveEvent","_selection","matchMedia","_scrollAvailable","_keepSelection","addedElements","wheelTimer","Ry","_containerRect","Rx","_onScroll","scrollingElement","_initScrollDelta","_scrollDelta","_onSingleTap","_selectables","_latestElement","reference","preceding","following","compareDocumentPosition","rangeItems","_scrollSpeed","_scrollingActive","scroll","silent","slateEditor","plateSelectable","MouseEvent","reqButtonIsPressed","allReqModifiersArePressed","modifier","shouldTrigger","resolvedBoundaries","evtPath","composedPath","scrollElement","clearSelection","_areaRect","scrollHeight","scrollWidth","x3","y3","x4","y4","invert","newlyTouched","keep","keepEvent","includeStored","quiet","destroy","disable","getSelectionArea","copySelectedBlocks","selectedIds","selectedEntries","getNodes","selectedFragment","copyToClipboard","textPlain","div","divChild","setData","selectedFragmentStr","encodedFragment","btoa","encodeURIComponent","selectInsertedBlocks","topPath","bottomPath","shiftSelection","topNode","bottomNode","anchorId","anchorIndex","anchorIsTop","anchorIsBottom","newSelected","belowEntry","belowNode","aboveEntry","aboveNode","abovePath","duplicateBlockSelectionNodes","lastBlock","setSelectedIds","insertBlocksAndSelect","insertedNodes","removeBlockSelectionNodes","selectBlockSelectionNodes","resetSelectedIds","setBlockSelectionNodes","setBlockSelectionIndent","currentIndent","setBlockSelectionTexts","createTPlatePlugin3","onContextMenu","enableContextMenu","id2","isOpenAlways","plateOpenContextMenu","useBlockSelectable","areaOptions","isSelecting","isSelectionAreaVisible","shadowInputRef","preventScroll","isReadonly","onKeyDownSelecting","unselect","handleCopy","handleCut","handlePaste","pasteSelectedBlocks","createPortal","ancestorNode","selectedAll","platePreventUnselect","isSelectingSome","delay","querySelector","querySelectorSelectable","all","duplicate","setTexts","TrailingBlockPlugin","lastChildNode","KbdPlugin","ListStyleType","ListStyleType2","isDefined6","BaseIndentPlugin8","insertCallout","icon","variant","localStorage","getItem","BaseCalloutPlugin","callout","CalloutPlugin","insertCodeBlock","insertDate","date","Date","toDateString","BaseDatePlugin","isNextDate","selectedRange","boundary","adjacentPathFn","adjacentPath","isPointNextToNode","DatePlugin","BaseColumnItemPlugin","BaseColumnPlugin","totalColumns","widths","col","sum","w","adjustment","columnPath","insertColumnGroup","columns","selectProp","fill","columnsToWidths","toggleColumnGroup","columnGroupEntry","columnGroup","currentCount","targetCount","columnsToAdd","newColumns","keepColumnIndex","keepColumnPath","keepColumnNode","columnEntry","setColumns","columnWidths","ColumnItemPlugin","ColumnPlugin","insertEquation","texExpression","BaseEquationPlugin","BaseInlineEquationPlugin","inlineEquation","insertInlineEquation","equation","EquationPlugin","InlineEquationPlugin","insertMedia","getUrl","prompt","insertMediaEmbed","twitterRegex","parseTwitterUrl","parseVideoUrl","videoData","videoParser","coub","dailymotion","vimeo","youku","youtube","resizeLengthToStatic","parentLength","resizeLengthClamp","clampedStaticLength","resizeLengthClampStatic","resizeLengthToRelative","ResizeHandleProvider","useResizeHandleStore","onResize","useResizeHandleState","initialSize","_initialSize","onHover","onHoverEnd","onResizeProp","onTouchStart","onResizeStore","isResizing","setIsResizing","initialPosition","setInitialPosition","initialSizeState","setInitialSize","isHorizontal","sendResizeEvent","finished","isTouchEvent","changedTouches","delta","handleMouseMove","handleMouseUp","useResizeHandle","handleMouseOver","handleMouseOut","offsetWidth","offsetHeight","onMouseOut","onTouchEnd","onTouchMove","ResizableProvider","resizableStore","useResizableStore","Resizable","minWidth","nodeWidth","setWidth","setNodeWidth","useResizableState","wrapperProps","wrapperRef","wrapperStaticWidth","newWidth","useResizable","getEmptyCellNode","header","row","BaseTableCellHeaderPlugin","BaseTableCellPlugin","getEmptyRowNode","colCount","cellOptions","tableCell","BaseTableRowPlugin","getEmptyTableNode","rowCount","tableRow","BaseTablePlugin","KEY_SHIFT_EDGES","computeCellIndices","cellNode","tableNode","_cellIndices","prevIndices","cellIndices","hasIndicesChanged","skipCells","targetIndices","rowIndex","colIndex","cellElement","currentIndices","prevIndicesForCell","colSpan","table","getColSpan","rowSpan","getRowSpan","getCellIndices","indices","getCellRowIndexByPath","cellPath","getCellTypes","cellElem","colspan","rowspan","getCellIndicesWithSpans","endCell","findCellByIndexes","searchRowIndex","searchColIndex","_startColIndex","_startRowIndex","_endColIndex","_endRowIndex","getTableGridByRange","disableMerge","startCellEntry","endCellEntry","startCell","tablePath","realTable","startRowIndex","endRowIndex","startColIndex","endColIndex","relativeRowIndex","relativeColIndex","cellEntries","cellsSet","WeakSet","cell","indicies","cellColWithSpan","cellRowWithSpan","cellCol","cellRow","newRelativeRowIndex","newRelativeColIndex","formatType","rowEl","rowElement","filteredChildren","cellEl","getCellChildren","tableEntries","getTableMergeGridByRange","startCellPath","endCellPath","getTableGridAbove","moveSelectionFromCell","fromOneCell","minCell","firstCellPath","lastCellPath","anchorPath","focusPath","cellEntry","nextCellPath","withApplyTable","anchorEntry","focusEntry","overrideSelectionFromCell","isTableOperation","cells","preventDeleteTableCell","getNextPoint","withDeleteTable","withGetFragmentTable","newFragment","rows","cellChildren","subTable","withInsertFragmentTable","insertedTable","getTableAbove","initRow","fromRow","disableExpandOnInsert","insertedCells","initCell","fromCell","tableColumn","getNextTableCell","currentCell","currentRow","currentRowPath","nextRow","nextRowNode","nextRowPath","nextCell","getCellInNextTableRow","getPreviousTableCell","previousRow","previousRowNode","previousRowPath","previousCell","previousCellPath","getCellInPreviousTableRow","getTableCellBorders","defaultBorder","rowNode","rowPath","isFirstCell","isFirstRow","getBorder","border","borders","getTableCellSize","colSizes","rowSize","getTableOverriddenColSizes","total","getTableColumnCount","num","colSizeOverrides","withInsertTextTable","withNormalizeTable","enableUnsetSingleColSize","initialTableWidth","colSize","withSetFragmentDataTable","originEvent","tableEntry","selectedCellEntries","initialSelection","tableRows","textCsv","textTsv","divElement","tableElement","rowCells","cellStrings","clearData","_tableEntry","setAttribute","deleteColumnWhenExpanded","firstRow","lastRow","firstSelectionRow","lastSelectionRow","deleteSelection","_cell","deleteColumn","deleteTableMergeColumn","tdEntry","trEntry","tdPath","pathToDelete","replacePathPos","rowIdx","newColSizes","deleteRowWhenExpanded","getEditorPlugin6","columnCount","getTableMergedColumnCount","firsRowIndex","acrossColumn","lastRowIndex","rowSpanCarry","acrossRow","currentRowIndex","removedPath","deleteRow","getEditorPlugin8","getEditorPlugin7","currentTableItem","selectedCellEntry","selectedCell","deletingRowIndex","rowsDeleteNumber","endingRowIndex","colNumber","affectedCellsSet","cI","rI","affectedCells","moveToNextRowCells","squizeRowSpanCells","cur","curRowIndex","curRowSpan","nextRowIndex","curRowCell","curRowCellColIndex","curRowCellRowIndex","curRowCellRowSpan","startingCellIndex","curC","curColIndex","startingCell2","startingCellPath2","nextRowStartCellPath2","rowSpan2","newCell2","cloneDeep2","startingCell","startingColIndex","incrementBy","startingCellPath","nextRowStartCellPath","newCell","curCellPath","rowToDelete","deleteTableMergeRow","currentRowItem","deleteTable","tableItem","insertTable","shouldSelect","newTable","currentTableEntry","getCellPath","foundColIndex","cE","insertTableColumn","getEditorPlugin10","minColumnWidth","getEditorPlugin9","cellColIndex","cellColSpan","nextColIndex","checkingColIndex","rowNumber","firstCol","placementCorrection","curCell","curColSpan","currentCellPath","cloneDeep3","curRowPath","curColPath","placementPath","emptyCell","oldTotal","newTotal","maxTotal","factor","insertTableMergeColumn","insertCellPath","isHeaderRow","insertTableRow","getEditorPlugin12","getEditorPlugin11","trPath","cellRowSpan","cellRowIndex","checkingRowIndex","newRowChildren","cloneDeep4","cellEntry2","insertTableMergeRow","trNode","isHeaderColumn","getEditorPlugin13","deletingColIndex","colsDeleteNumber","endingColIndex","squizeColSpanCells","curColRowIndex","cloneDeep5","cellPaths","mergeTableCells","getEditorPlugin14","curCol","mergingCellChildren","cloneDeep6","cols","mergedCell","splitTableCell","getEditorPlugin15","tableRowType","createEmptyCell","colPath","colPaths","getClosestColPathForRow","targetCol","rowEntry","closestColPath","smallestDiff","POSITIVE_INFINITY","isDirectionLeft","pathForNextRows","_rowPath","j","cellToInsert","currentColPath","pathForNewCell","getParse","tables","getCellBorders","getCellSize","matchesCell","totalMarks","textNodeEntry","withMarkTable","background","backgroundColor","TableRowPlugin","TableCellPlugin","TableCellHeaderPlugin","TablePlugin","isKeyDown","getTableEntries","marginLeftOverride","rowSizeOverrides","selectedCells","selectedTables","Primitive","primitive","React.forwardRef","primitiveProps","for","node3","__objRest","PENALTY_CASE_MISMATCH","PENALTY_NOT_COMPLETE","PENALTY_SKIPPED","SCORE_CHARACTER_JUMP","SCORE_CONTINUE_MATCH","SCORE_NON_SPACE_WORD_JUMP","SCORE_SPACE_WORD_JUMP","SCORE_TRANSPOSITION","COUNT_GAPS_REGEXP","COUNT_SPACE_REGEXP","IS_GAP_REGEXP","IS_SPACE_REGEXP","commandScoreInner","abbreviation","lowerString","lowerAbbreviation","stringIndex","abbreviationIndex","memoizedResults","memoizeKey","abbreviationChar","score","spaceBreaks","transposedScore","wordBreaks","highScore","formatInput","commandScore","aliases","GROUP_SELECTOR","GROUP_ITEMS_SELECTOR","ITEM_SELECTOR","VALID_ITEM_SELECTOR","SELECT_EVENT","VALUE_ATTR","defaultFilter","keywords","CommandContext","React.createContext","useCommand","React.useContext","StoreContext","ActionsContext","GroupContext","Command","useLazyRef","filtered","groups","allItems","allGroups","listeners","propsRef","useAsRef","disablePointerSelection","label","loop","shouldFilter","vimBindings","etc","listId","labelId","inputId","listInnerRef","React.useRef","schedule","useScheduleLayoutEffect","useLayoutEffect2","scrollSelectedIntoView","React.useMemo","setState","is","selectFirstItem","snapshot","subscribe","getDisablePointerSelection","group","groupId","selectedItem","getSelectedItem","filter2","scores","score2","listInsertionElement","getValidItems","valueA","valueB","item2","filterItems","itemCount","rank","itemId","updateSelectedToIndex","updateSelectedByItem","updateSelectedByGroup","findNextSibling","findPreviousSibling","selectItem","setSearch","actions","selectCurrentItem","selectLastItem","selectNextGroup","selectNextItem","selectPrevGroup","selectPrevItem","tabIndex","srOnlyStyles","htmlFor","SlottableWithNestedChildren","React.createElement","Item","groupContext","forceMount","useValue","useCmdk","_b2","React.useEffect","___","____","__","mergeRefs","onPointerMove","Group","heading","headingRef","headingId","contextValue","Separator","alwaysRender","Input","isControlled","selectedItemId","autoComplete","animationFrame","observer","height2","setProperty","unobserve","Dialog","contentClassName","overlayClassName","RadixDialog.Root","RadixDialog.Portal","RadixDialog.Overlay","RadixDialog.Content","Empty","Loading","progress","pkg","nextElementSibling","previousElementSibling","React.useLayoutEffect","useSyncExternalStore","valueRef","part","alias","ss","React.useState","fns","React.isValidElement","React.cloneElement","cloneElement","childrenType","renderChildren","borderWidth","clip","overflow","getCoords","ScrollArea","minStrength","placement","scrollAreaProps","strengthMultiplier","scaleYRef","frameRef","stopScrolling","raf","updateScrolling","h","coords","strength","tick","scaleY","scrollBy","trailing","handleEvent","Scroller","DndScroller","DndPlugin","setShow","timeout","DRAG_ITEM_BLOCK","draggingId","dropTarget","effectAllowed","dropEffect","enableScroller","scrollerProps","useDraggable","orientation","onDropHandler","nodeRef","dragRef","useDndNode","previewRef","handleRef","getDropPath","canDropNode","dragItem","monitor","hoverBoundingRect","clientOffset","getClientOffset","hoverMiddleX","hoverMiddleY","hoverClientY","getHoverDirection","dragEntry","dropEntry","dragPath","hoveredPath","dropPath","_dropPath","useDropNode","useDrop","collect","isOver","shallow","drop","onDropFiles","onDropNode","hover","currentId","currentLine","newDropTarget","onHoverNode","drag","dragOptions","dropOptions","preview","previewOptions","useDrag","_item","useDragNode","accept","NativeTypes.FILE","getEmptyImage","captureDraggingState"],"mappings":"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yC,EAAQlC,EAAKhH,GAI3Dq7C,GAAgB,CAACnyC,EAAQiE,EAAIxM,IAAYq8B,GAAQ9zB,EAAQiE,EAAIxM,GAI7D26C,GAAiB,CAACpyC,EAAQ4uC,EAAQn3C,IAAYu8B,GAASh0B,EAAQ4uC,EAAQn3C,GAIvE46C,GAAiB,CAACryC,EAAQsuC,EAAQ72C,IAAYgL,GAASzC,EAAQsuC,EAAQ72C,GAIvE4R,GAAiB,CAACrJ,EAAQsJ,EAAO,eACnCgpC,GAAmBtyC,EAAQsJ,EAAI,EAK7BP,GAAgB,CAAC/I,EAAQsJ,EAAO,eAClCipC,GAAkBvyC,EAAQsJ,EAAI,EAK5B5F,GAAiB,CAAC1D,EAAQvI,IAAY+6C,GAAmBxyC,EAAQvI,GAMjEg7C,OAAwC/gB,IAAI,CAC9C,UACA,QACA,OACA,WACA,SACA,iBACA,gBACA,iBACA,WACA,cACA,QACA,cACA,aACA,iBACA,qBACA,aACA,cACA,kBACA,aACA,iBACA,YACA,aACA,OACA,YACA,YACA,gBACA,OACA,aACA,cACA,SACA,kBACA,WACA,WACA,eACA,mBACA,aACA,OACA,aACA,cACA,cACA,eACA,iBACA,qBACA,gBACA,YACA,iBAEEghB,OAAiChhB,IAAI,CACvC,QACA,QACA,SACA,QACA,kBACA,MACA,2BACA,iBACA,UACA,WACA,QACA,WACA,gBACA,cACA,WACA,YACA,YACA,aACA,oBACA,aACA,UACA,WACA,sBACA,YACA,WACA,eACA,UACA,cACA,SACA,oBACA,UACA,QACA,YACA,WACA,YACA,gBACA,aACA,WACA,eACA,kBACA,UACA,gCACA,SACA,OACA,OACA,SACA,eAEA,OACA,OACA,QACA,YACA,WACA,aACA,SACA,OACA,UACA,WACA,QACA,WACA,YACA,YACA,WACA,QACA,WACA,YACA,YACA,iBACA,iCACA,kBACA,QACA,SACA,YACA,aACA,aACA,cACA,eACA,eACA,cACA,SAEEihB,GAAyB,CAAC3yC,EAAQ4yC,KACpC,IAAKA,EAAY,OACjB,MAAM94C,EAAIkG,EACJ6yC,EAAmBr4C,OAAO42C,QAAQwB,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OujE,WAAa,CAAChb,EAAQib,EAAUC,KAC/B,MAAAtX,EAAQnsD,EAAOg9D,gBAAgBzU,GACrC,OAAK4D,EAGEA,EAAMuX,SAASF,EAAUC,GAFvB,EAEiC,EAE5CzjE,EAAOw+D,UAAY,CAACjW,EAAQzqD,KAAQxI,KAC5B,MAAA62D,EAAQnsD,EAAOg9D,gBAAgBzU,GACrC,IAAK4D,EACH,OAEI,MAAA3wD,QAAW2wD,WAAOuW,IAAI5kE,GAC5B,GAAItC,EACK,OAAAA,KAAYlG,GAErB0K,EAAOqvC,IAAI0c,MAAMnc,MACf,qBAAqB9xC,qCAAuCyqD,EAAOzqD,MACnE,mBAAA,EAGGkC,CAAA,EAMA2jE,CAAU3jE,EAAQvI,GAgBvBmsE,GAAe,CAEjB,SACA,gBACA,QACA,eACA,UACA,iBAEA,mBACA,0BACA,qBACA,4BACA,sBACA,6BAEA,UACA,iBACA,SACA,gBAEA,mBACA,gBACA,uBACA,UACA,iBACA,UACA,iBACA,WACA,kBACA,YACA,mBAEA,SACA,gBAEA,YACA,mBACA,aACA,oBACA,UACA,iBAEA,UACA,iBACA,YACA,mBACA,mBACA,0BACA,mBACA,0BACA,YACA,mBACA,cACA,qBACA,UACA,iBACA,eACA,sBACA,mBACA,0BACA,cACA,qBACA,UACA,iBACA,SACA,gBACA,YACA,mBACA,aACA,oBACA,eACA,sBACA,WACA,kBACA,YACA,mBACA,YACA,mBACA,YACA,mBACA,eACA,sBACA,iBACA,wBACA,YACA,mBAEA,aACA,oBACA,UACA,iBACA,gBACA,uBACA,gBACA,uBACA,SACA,gBACA,YACA,mBACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,SACA,gBACA,cACA,qBACA,eACA,eACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,YACA,mBAEA,WACA,kBAEA,gBACA,uBACA,aACA,oBACA,cACA,qBACA,eACA,sBAEA,gBACA,uBACA,gBACA,cACA,qBACA,kBACA,yBACA,iBACA,iBACA,gBACA,uBACA,eACA,sBACA,sBACA,6BAC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O/nG,EAAU,CAAA,KACnD,IAAA,MAAWgoG,KAAQD,EAAO,CAClB,MAAAE,EAAS,IAAIC,YACZC,GAAQH,EAAKplG,KAAKyP,MAAM,KAClB,UAAT81F,IACKF,EAAAplG,iBAAiB,QAAQulG,UAC1B,IAACH,EAAOv0E,OACV,OAEF,MAAM20E,EAAc9/F,EAAOirD,WAAWq0C,IAAiBQ,YACjDC,EAAcD,QAAoBA,EAAYJ,EAAOv0E,QAAUu0E,EAAOv0E,OAChE60E,GAAAhgG,EAAQ+/F,EAAatoG,EAAO,IAE1CioG,EAAOO,cAAcR,GAExB,GAKCS,OAAsCxuE,IAAI,CAC5C,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,OACA,MACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,QAgEE4tE,GAAkBz0C,GAAmB,CACvC/sD,IAAK,MACLlH,KAAM,CACJmtE,2BAA4B,CAAC,MAAO,QAAS,UAC7CxxD,WAAW,EACX5F,QAAQ,KAET29C,gBArCmB,EACpBtqD,SACAirD,aACA1C,SACA7Y,IAAMhmC,kBACD,CACLkpC,WAAY,CACV,UAAAlpC,CAAW1C,GACL,GAAAikD,IAAak1C,oBACf,OAAOz2F,EAAW1C,GAEd,MAAAo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AA,KAClC+L,MACAwnG,EAAQ,CACZ30G,SAAU,CAFC,CAAEmN,KAAM,KAGnBnJ,KAAM2F,EAAO66D,QAAQykC,IACrB/qG,OAEKyL,EAAA0vC,GAAGliB,YAAYw9E,EAAO,CAC3B9vD,WAAW,KACRzjD,GACJ,EAIC8nG,GAAuB,CAACv/F,EAAQw/F,EAAO/nG,EAAU,CAAA,KACnD,IAAA,MAAWgoG,KAAQD,EAAO,CAClB,MAAAE,EAAS,IAAIC,YACZC,GAAQH,EAAKplG,KAAKyP,MAAM,KAClB,UAAT81F,IACKF,EAAAplG,iBAAiB,QAAQulG,UAC1B,IAACH,EAAOv0E,OACV,OAEF,MAAM20E,EAAc9/F,EAAOirD,WAAWq0C,IAAiBQ,YACjDC,EAAcD,QAAoBA,EAAYJ,EAAOv0E,QAAUu0E,EAAOv0E,OAChEi0E,GAAAp/F,EAAQ+/F,EAAatoG,EAAO,IAE1CioG,EAAOO,cAAcR,GAExB,GAKCS,OAAsCxuE,IAAI,CAC5C,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,OACA,MACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,QAgEE4tE,GAAkBz0C,GAAmB,CACvC/sD,IAAK,MACLlH,KAAM,CACJmtE,2BAA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50]}