quill-table-up 2.2.4 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.d.ts +978 -930
- package/dist/index.js +136 -2
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +136 -2
- package/dist/index.umd.js.map +1 -1
- package/package.json +22 -23
- package/src/__tests__/e2e/table-menu.test.ts +9 -8
- package/src/__tests__/e2e/table-selection.test.ts +97 -9
- package/src/__tests__/unit/table-blots.test.ts +102 -1
- package/src/__tests__/unit/table-cell-merge.test.ts +76 -1
- package/src/__tests__/unit/table-clipboard.test.ts +181 -0
- package/src/__tests__/unit/table-hack.test.ts +14 -18
- package/src/__tests__/unit/table-redo-undo.test.ts +51 -0
- package/src/formats/container-format.ts +0 -9
- package/src/formats/table-cell-inner-format.ts +24 -0
- package/src/formats/table-col-format.ts +37 -37
- package/src/formats/table-wrapper-format.ts +7 -2
- package/src/modules/table-clipboard.ts +54 -14
- package/src/modules/table-resize/table-resize-common.ts +29 -6
- package/src/modules/table-selection.ts +1 -1
- package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/src/style/index.less +1 -0
- package/src/table-up.ts +17 -15
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/utils/constants.ts","../src/utils/bem.ts","../src/utils/blot-helper.ts","../src/utils/color.ts","../src/utils/is.ts","../src/utils/components/button.ts","../src/utils/components/color-picker.ts","../src/utils/components/dialog.ts","../src/utils/components/input.ts","../src/utils/components/table/creator.ts","../src/utils/components/table/select-box.ts","../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/.pnpm/@floating-ui+core@1.6.8/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/.pnpm/@floating-ui+dom@1.6.13/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../src/utils/components/tooltip.ts","../src/utils/transition-event-helper.ts","../src/utils/position.ts","../src/utils/resize-observer-helper.ts","../src/utils/scroll-event-handle.ts","../src/utils/transformer.ts","../src/utils/utils.ts","../src/formats/container-format.ts","../src/formats/utils.ts","../src/formats/table-cell-inner-format.ts","../src/formats/table-row-format.ts","../src/formats/table-body-format.ts","../src/formats/overrides/block.ts","../src/formats/overrides/scroll.ts","../src/formats/table-caption-format.ts","../src/formats/table-cell-format.ts","../src/formats/table-col-format.ts","../src/formats/table-main-format.ts","../src/formats/table-colgroup-format.ts","../src/formats/table-wrapper-format.ts","../src/formats/index.ts","../src/modules/table-align.ts","../src/modules/table-clipboard.ts","../src/modules/table-menu/constants.ts","../src/modules/table-menu/table-menu-common.ts","../src/modules/table-menu/table-menu-contextmenu.ts","../src/modules/table-menu/table-menu-select.ts","../src/modules/table-resize/utils.ts","../src/modules/table-resize/table-resize-common.ts","../src/modules/table-resize/table-resize-box.ts","../src/modules/table-resize/table-resize-line.ts","../src/modules/table-resize/table-resize-scale.ts","../src/modules/table-scrollbar.ts","../src/modules/table-selection.ts","../src/table-up.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,"/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["blotName","container","tableCaption","tableWrapper","tableMain","tableColgroup","tableCol","tableBody","tableRow","tableCell","tableCellInner","tableUpSize","colMinWidthPre","colMinWidthPx","colDefaultWidth","rowMinHeightPx","tableUpEvent","AFTER_TABLE_RESIZE","tableUpInternal","moduleName","defaultColorMap","cssNamespace","tableCantInsert","Set","isForbidInTable","current","parent","blot","has","statics","createBEM","b","n","prefix","concat","be","e","bm","m","bem","ns","s","bs","cv","v","is","findParentBlot","targetBlotName","target","scroll","Error","findParentBlots","targetBlotNames","resultBlots","Array","length","blotNameIndexMaps","Map","map","name","i","size","get","delete","from","keys","join","findAllParentBlot","Blot","blots","set","findChildBlot","descendants","next","children","iterator","cur","push","mixinProps","source","_step","_iterator","_createForOfIteratorHelper","Object","getOwnPropertyNames","done","prop","value","test","defineProperty","getOwnPropertyDescriptor","err","f","normalizeValue","max","Math","min","Number","parseFloat","abs","validateHSB","hsb","h","a","RGBtoHSB","rgb","r","g","d","HSBtoRGB","floor","p","q","t","mod","round","RGBtoHEX","hex","toString","key","HSBtoHEX","isFunction","val","isArray","isString","isObject","_typeof","createButton","options","_ref","_ref$type","type","content","btn","document","createElement","classList","add","textContent","appendChild","createColorPicker","arguments","undefined","contentWidth","contentHeight","handleSizeSec","hsbValue","color","startsWith","slice","parseInt","toFixed","root","colorSelector","colorBackground","colorHandle","colorAlpha","alphaBg","alphaHandle","colorHue","colorHueHandle","action","_map2","_slicedToArray","item","label","toUpperCase","colorInput","addEventListener","replaceAll","updateValue","assign","_defineProperty","updateUI","colorRInput","colorGInput","colorBInput","colorAInput","colorDragging","hueDragging","alphaDragging","updateInput","entries","_step$value","String","_HSBtoRGB","style","left","top","backgroundColor","background","onChange","pickColor","event","rect","getBoundingClientRect","window","pageYOffset","documentElement","scrollTop","body","scrollLeft","pageX","pageY","pickHue","pickAlpha","width","onDrag","preventDefault","onColorSelectorDragEnd","removeEventListener","onColorHueDragEnd","onColorAlphaDragEnd","zindex","createDialog","child","_ref$target","_ref$beforeClose","beforeClose","appendTo","dialog","zIndex","overlay","stopPropagation","originOverflow","getComputedStyle","overflow","close","remove","createInputItem","inputItem","inputLabel","inputInput","input","setAttribute","errorTip","msg","contains","querySelector","removeError","showTableCreator","_showTableCreator","apply","this","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","box","inputContent","_createInputItem","rowItem","rowInput","rowErrorTip","_createInputItem2","colItem","colInput","colErrorTip","control","confirmBtn","cancelBtn","validateInput","_keyboardClose","_args2","wrap","_context2","prev","rowText","row","colText","col","confirmText","cancelText","isNaN","notPositiveNumberError","keyboardClose","abrupt","Promise","resolve","reject","focus","_i","_arr","result","_callee","_context","stop","createSelectBox","selectDom","selectBlock","c","selectItem","dataset","updateSelectBlockItems","_selectDom$dataset","_Array$from","querySelectorAll","childs","_childs$i$dataset","childRow","childCol","_e$target$dataset","removeAttribute","_selectDom$dataset2","onSelect","customBtn","texts","selectCustom","customBtnText","res","sent","createCoords","x","y","oppositeSideMap","right","bottom","oppositeAlignmentMap","start","end","clamp","evaluate","param","getSide","placement","split","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","includes","getAlignmentAxis","getOppositeAlignmentPlacement","replace","alignment","getOppositePlacement","side","rectToClientRect","height","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","padding","paddingObject","expandPaddingObject","getPaddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","hasWindow","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflowX","overflowY","display","isTableElement","isTopLayer","some","selector","matches","isContainingBlock","elementOrCss","webkit","isWebKit","css","containerType","backdropFilter","filter","willChange","contain","CSS","supports","isLastTraversableNode","getNodeScroll","scrollX","scrollY","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","visualViewport","getPrototypeOf","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","ignoreScrollbarX","htmlRect","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","htmlOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","currentNode","getContainingBlock","topLayer","clippingAncestors","cache","cachedResult","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","data","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","getClientRects","isRTL","rectsAreEqual","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","shift","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","flip","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","initialSideAxis","isBasePlacement","oppositePlacement","getExpandedPlacements","hasFallbackAxisSideDirection","isStart","lr","rl","tb","bt","getSideList","getOppositeAxisPlacements","placements","overflows","overflowsData","sides","mainAlignmentSide","getAlignmentSides","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","sort","_overflowsData$filter2","currentSideAxis","acc","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","computePosition","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition$1","tooltipContainer","createTooltip","_options$msg","_options$delay","delay","_options$direction","_options$type","onOpen","onClose","closed","onDestroy","showTimer","closeTimer","tooltip","then","transitionendHandler","removeChild","openTooltip","force","allow","closeTooltip","domNode","duration","handler","lastTimer","handleIfTransitionend","once","displayMethods","hover","eventListeners","bind","open","prepare","_eventListeners","listener","show","hide","destroy","_i2","_eventListeners2","click","_displayMethods$type","destroyDisplay","isRectanglesIntersect","notOverlapX","notOverlapY","tolerance","edgeJudge","minAx","minAy","maxAx","x1","maxAy","y1","minBx","minBy","maxBx","maxBy","limitDomInViewPort","_document$documentEle","leftLimited","topLimited","createResizeObserver","callback","ignoreFirstBindSymbol","Symbol","observeEls","observer","ignoreFirstBind","entry","originVal","originObserve","call","originUnobserve","originDisconnect","values","addScrollEvent","dom","handle","scrollHandler","clearScrollEvent","_this$scrollHandler$i","cssTextToObject","cssText","styleObject","styles","trim","colonPosition","indexOf","property","toCamelCase","objectToCssText","obj","_ref2","toKebabCase","all","letter","randomId","random","debounce","timestamp","_this","_len","args","_key","Parchment","Quill","import","Container","Block","BlockEmbed","ContainerFormat","_Container","_classCallCheck","_callSuper","_inherits","_createClass","def","find","defaultChild","create","_superPropGet","checkMerge","moveChildren","allowedChildren","scope","Scope","BLOCK_BLOT","splitAfter","unwrap","ParentBlot","_value","tagName","className","getValidCellspan","TableCellInnerFormat","_ContainerFormat","isEnabled","isAllowStyle","setFormatValue","allowDataAttrs","attrName","tableId","rowId","colId","rowspan","colspan","getColIds","_Object$entries","_Object$entries$_i","formats","blotValue","afterBlock","uiNode","firstChild","insertBefore","ref","cellInnerBlot","cellInnerBlotValue","selfValue","_ref3","_findParentBlots2","selfRow","selfCell","newCellInner","forEachAt","block","cell","str","_step2","_iterator2","allowStyle","_domNode$dataset","TableRowFormat","foreachCellInner","cellInner","colIds","targetIndex","curIndex","getCellByColId","getCellInner","skipRowNum","stopIndex","cellEndIndex","columnIndexData","getCellByColumIndex","_columnIndexData","func","context","TableBodyFormat","tableBlot","rows","insertColIds","colIndex","BlockOverride","_Block","replacement","selfParent","attributes","copy","_unused","console","error","ScrollOverride","_ScrollBlot","tableCellInnerFormat","inners","tableCaptionFormat","_Array$from2","refBlot","createBlotName","_i3","query","BLOCK","BLOT","_objectSpread","_i4","_Object$entries2","_Object$entries2$_i","formatAt","Inline","Text","TableCaptionFormat","_BlockOverride","attachUI","createUI","_this2","innerHTML","captionSide","TableCellFormat","allowAttrs","setStyleBoder","head","setValue","getNearByCell","td","descendant","_toConsumableArray","nearByCell","startColIndex","getColumnIndex","endColIndex","borderColIds","_","trReachCurrent","getAttribute","_step3","_iterator3","inlineStyles","TableColFormat","_BlockEmbed","full","table","closest","validWidth","hasOwn","align","isAllFull","lines","text","pop","blocks","line","insertAt","tableColgroupBlot","tableMainBlot","tableBodyBlot","insertBlot","nextBlotRef","cellInners","newBlock","newTableBody","widthNumber","TableMainFormat","updateAlign","cols","getCols","colsWidth","sum","colWidthFillTable","tableWidth","marginLeft","marginRight","getRows","_Object$values","isCaptionFirst","isColgroupSecond","isColgroupFirst","isBodyLast","tail","clone","TableColgroupFormat","TypeError","findCol","TableWrapperFormat","BlockBlot","emitter","on","events","TEXT_CHANGE","insertLineAround","tableBodys","tableColgroups","off","dataTransfer","dropEffect","getTableMainRect","TableAlign","tableModule","quill","tableWrapperBlot","alignBox","buildTool","updateWhenTextChange","addContainer","icons","alignIcons","center","_loop","iconStr","setTableAlign","SCROLL_OPTIMIZE","tableSelection","tableResize","tableResizeScale","tableScrollbar","_this3","Delta","getCellWidth","styleWidth","TableClipboard","_Clipboard","addMatcher","matchTable","matchTbody","matchColgroup","matchCol","matchTr","matchTd","matchCaption","ELEMENT_NODE","matchTdAttributor","delta","ops","bodyStartIndex","_delta$ops$i","insert","_blotName$tableCell","attrs","_objectWithoutProperties","_toPropertyKey","hasCol","newCols","tableNode","colNums","colWidths","fill","_rows","cellWidth","calculateCols","colOps","splice","rowspanCount","cellCount","colCount","_op$attributes","op","_op$attributes$blotNa","_excluded","styleObj","_step3$value","span","_step4","_iterator4","_op$attributes2","_tableCellInner$style","cellFormat","_this$rowspanCount$_i","border","_step5","_iterator5","_op$attributes3","other","_excluded2","_blotName$tableCell2","endsWith","toLocaleLowerCase","_step6","_iterator6","_excluded3","_excluded4","bgTemp","cellTemp","_step7","_iterator7","menuColorSelectClassName","tableMenuTools","Break","CopyCell","tip","icon","selectedTds","getTextByCell","getHTMLByCell","clipboardItem","ClipboardItem","Blob","navigator","clipboard","write","hideTableTools","CutCell","InsertTop","appendRow","InsertRight","appendCol","InsertBottom","InsertLeft","MergeCell","mergeCells","SplitCell","splitCell","DeleteRow","removeRow","DeleteColumn","removeCol","DeleteTable","deleteTable","BackgroundColor","isColorChoose","setCellAttrs","BorderColor","SwitchWidth","cancelFull","setFull","InsertCaption","colorClassName","selectWrapper","used","mapRow","TableMenuCommon","isMenuDisplay","resolveOptions","storageValue","localStorage","getItem","localstorageKey","colorValue","JSON","parse","usedColors","updateUsedColor","saveColors","clear","setItem","stringify","_usedColorWrappers","colorItemClass","usedColorWrapper","newColorItem","tipText","tools","toolBox","tool","attrKey","_tool$tip","iconDom","tooltipItem","createColorChoose","getSelectedTds","createTipText","colorSelectWrapper","colorMap","colors","colorMapRow","colorItem","marginTop","transparentColor","transparent","clearColor","customColor","custom","colorPicker","_createTooltip","hideColorPicker","destroyColorPicker","usedColorWrap","recordColor","hideDisplay","setActiveTooltip","updateWithSelectedTds","showDisplay","activeTooltip","colorChooseTooltipOption","isColorPick","_this$tableModule$tab","tipTextDom","menu","TableMenuContextmenu","_TableMenuCommon","path","composedPath","buildTools","clientX","clientY","listenContextmenu","items","getElementsByClassName","isDisplaySelection","_limitDomInViewPort","limitLeft","limitTop","TableMenuSelect","cellSelect","isTableAlignRight","TableResizeCommon","handleColMouseUp","handleColMouseMove","handleColMouseDown","handleRowMouseUp","handleRowMouseMove","handleRowMouseDown","_e","_w","_isFull","_createConfirmDialog","message","confirm","cancel","fontSize","lineHeight","btnWrapper","justifyContent","gap","_x","_handleColMouseUp","w","isFull","needUpdate","updateInfo","tableMainWidth","pre","oldWidthPre","totalWidthNextPre","resultWidth","skipColIndex","_index","_step2$value","info","_index2","_width","dragColBreak","handleColMouseUpFunc","handleColMouseMoveFunc","dragging","t0","finish","createConfirmDialog","perWidthInsufficient","colWidthChange","px","emit","changeColRect","tableRect","resX","minWidth","maxRange","minRange","button","_getTableMainRect","findCurrentColIndex","colWidthAttr","divDom","dragBEM","styleValue","_h","dragRowBreak","rowIndex","setHeight","rowHeightChange","handleRowMouseUpFunc","handleRowMouseMoveFunc","resY","findCurrentRowIndex","tableMainRect","TableResizeBox","_TableResizeCommon","tableCaptionBlot","_possibleConstructorReturn","isX","shiftKey","lastHeaderSelect","currentBoundary","lastX","lastY","computeSelectedTds","tableColHeads","tableColHeadSeparators","colHeadWrapper","handleResizerHeader","_tableColHeadSeparato","handleColMouseDownFunc","tableRowHeads","tableRowHeadSeparators","rowHeadWrapper","_tableRowHeadSeparato","handleRowMouseDownFunc","tableWrapperRect","rootRect","cornerTranslateX","rowHeadWrapperTranslateX","tableCaptionIsTop","corner","transform","_this4","tableCols","tableRows","_getTableMainRect2","colHeadStr","colHead","maxWidth","bindColEvents","rowHeadStr","rowHead","maxHeight","bindRowEvents","_step5$value","TableResizeLine","findTableCell","tableCellBlot","currentTableCell","updateColResizer","updateRowResizer","colResizer","rowResizer","mousemoveHandler","hideWhenTextChange","curColIndex","tableBodyect","tableCellRect","findIndex","curRowIndex","currentRow","tableBodynRect","TableResizeScale","buildResizer","blockSize","originColWidth","originRowHeight","handleMouseMove","isRight","diffX","startX","diffY","startY","itemWidth","itemHeight","handleMouseUp","isTableOutofEditor","resizeobserver","editorRect","_this$tableWrapperBlo","rootWidth","rootHeight","blockStyle","Scrollbar","scrollbarContainer","X","Y","cursorLeave","scrollbar","hideScrollbarTransitionend","cursorDown","parentElement","propertyMap","scrollDirection","scrollSize","client","calculateSize","ob","createScrollbar","setScrollbarPosition","showScrollbar","_getTableMainRect$rec","tableHeight","_this$quill$root","editorScrollX","editorScrollY","rootOffsetLeft","rootOffsetTop","_this$container","containerOffsetLeft","containerOffsetTop","_tableBodyBlot$domNod","bodyOffsetLeft","bodyOffsetTop","_this$container$getBo","containerWidth","containerHeight","containerScrollHandler","originalHeight","pow","originalWidth","minSize","ratioY","ratioX","sizeWidth","sizeHeight","thumb","originDocSelect","mouseMoveDocumentHandler","prevPage","thumbState","offsetRatio","thumbPositionPercentage","mouseUpDocumentHandler","hideScrollbar","onselectstart","_window$getSelection","ctrlKey","getSelection","removeAllRanges","stopImmediatePropagation","startDrag","currentTarget","_displayListener","move","TableVirtualScrollbar","TableSelection","anchorNode","anchorOffset","focusNode","focusOffset","range","_oldRange","sources","API","getFormat","getLine","isInCell","containsLine","selection","anchorBlot","focusBlot","anchorNames","focusNames","isAnchorInColgroup","isFocusInColgroup","newAnchorNode","newAnchorOffset","newFocusNode","newFocusOffset","setSelectionData","isAnchorInCellInner","isFocusInCellInner","isNotSameCellInner","anchorCellBlot","focusCellBlot","lastSelection","mousedownEvent","closestTable","closestTableBody","setSelectionTable","startTableId","startPoint","mouseMoveHandler","mousemoveEvent","tableMenu","movePoint","blur","mouseUpHandler","deleteAt","cells","cellSelectWrap","helpLinesInitial","updateAfterEvent","mouseDownHandler","selectionChangeHandler","SELECTION_CHANGE","quillSelectionChangeHandler","tableMenuOptions","childNodes","nodeType","TEXT_NODE","tempRange","createRange","selectNodeContents","collapse","startOffset","selectionData","isUpFromDown","selectionDirectionUp","setStart","setEnd","addRange","extend","nodePosition","compareDocumentPosition","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","points","startNode","endNode","endOffset","selectColor","setProperty","endPoint","tableCells","_this$getTableViewScr","getTableViewScroll","tableScrollX","tableScrollY","_this$getQuillViewScr","getQuillViewScroll","selectedTableScrollX","selectedTableScrollY","selectedEditorScrollX","selectedEditorScrollY","targetRect","containerRect","startPointX","startScrollX","startPointY","startScrollY","selectedCells","findEnd","__rect","_cell$__rect","Infinity","_this$getQuillViewScr2","_this$getTableViewScr2","wrapLeft","wrapTop","removeCell","generateTableArrowHandler","up","bindInHead","collapsed","format","aroundLine","childDirection","targetRow","cellIndex","targetCell","targetChild","setSelection","USER","TableUp","balanceTables","initialContainer","scrollbarBEM","selectionOptions","toolbar","getModule","theme","pickers","controls","_ref4","toolName","select","picker","buildCustomSelect","customSelect","labelRect","keyboard","keyboradHandler","bindings","unshift","addBinding","evt","tableAlign","showTableTools","EDITOR_CHANGE","quillHack","listenBalanceCells","constructor","toolboxBEM","resizeOb","quillRootRect","_this2$quill$root","classes","classname","resolveTexts","fullSwitch","alignOptions","scrollbarOptions","resizeOptions","resizeScaleOptions","fullCheckboxText","originGetSemanticHTML","getSemanticHTML","tableWrapperFormat","doc","DOMParser","parseFromString","originFormat","prototype","EmbedBlot","tableUpModule","setOrigin","tdRanges","innerTd","resultValue","_step3$value$","lastIndex","retain","updateDelta","updateContents","modules","_toolbar$handlers","cleanHandler","handlers","clean","cleanFormatExcludeTable","changeCellStyle","getText","_this3$quill$getLine2","suffixLength","suffix","contents","getContents","diff","deltaIndex","_blotName$tableCellIn","tableCellInnerValue","newStyle","warn","editTds","tds","cleanBorder","allCells","cellIndexMap","_tds$_i","_tds","styleStr","cellDiff","_this$tableSelection","resize","resizeScale","_this$tableSelection2","_buildCustomSelect","isFulllLabel","isFullCheckbox","isFullCheckboxText","_this5","checked","_x2","attr","isStyle","_step8","_iterator8","_step9","_iterator9","isCut","_step0","_iterator0","tdParentMain","_unused2","_step1","tableIndex","getIndex","tableLength","tableHTML","cellColWidth","cellColIds","cellIds","_iterator1","rowCount","lastRowId","_i5","_Array$from3","colsValue","_step10","totalWidth","total","_iterator10","_step10$value","_step11","_iterator11","_step12","_iterator12","columns","currentBlot","getLeaf","borderWidth","calculateTableCellBorderWidth","rootStyle","paddingRight","colWidth","j","SILENT","tableStr","div","visibility","tempTableStyle","trBlots","tableColIds","_step13","cellSpanMap","_iterator13","_step13$value","indexTr","tr","indexTd","indexCol","curCellSpan","curTd","_step14","_iterator14","fixUnusuaDeletelTable","_this6","mutations","mutation","fixTableByLisenter","_step15","_iterator15","mutationTarget","sortMergeChildren","isDown","baseTd","_findParentBlots4","baseTdParentTr","insertRowIndex","insertRow","_selectedTds$reduce","columnIndex","newColId","colgroup","insertColByIndex","trs","spanCols","_i7","_Object$values2","spanCol","nextSpanCols","insertCell","_step16","_iterator16","_step16$value","_step17","colIdMap","idMap","reverseTrBlots","reverse","removeTr","_iterator17","_loop2","_step17$value","_i8","_Object$values3","_i9","_Object$values4","_step18","_iterator18","_step18$value","_step19","_iterator19","_step20","endTrIndex","nextTrIndex","_iterator20","patchTds","_loop3","nextTr","_i0","_Object$entries$_i$","fixTableByRemove","_step21","colspanMap","_iterator21","colspanCount","_i1","_Object$values5","_step22","_iterator22","_step22$value","removeColByIndex","counts","selectTd","_findParentBlots6","baseTr","curTr","_step23","_iterator23","id","_objectSpread4","requiredContainer","overrides","formatMap","_mixinClass","_class","mixinClass","base","mixins","targetClass","_base","props","register","offsetInline","_range","insertTable"],"mappings":"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","x_google_ignoreList":[11,12,13,14]}
|
|
1
|
+
{"version":3,"file":"index.umd.js","names":["tableCantInsert: Set<string>","blot: TypeParchment.Blot","current: TypeParchment.Blot","b: string","n: string","e?: string","m?: string","s?: string","v?: string","n","blot: TypeParchment.Blot","targetBlotName: U","targetBlotNames: T","resultBlots: TypeParchment.Parent[]","Blot: TypeParchment.Blot","blots: Map<string, TypeParchment.Blot>","parent: TypeParchment.Parent","blot: T","descendants: InstanceType<T>[]","cur: TypeParchment.Blot | null","target: T","source: U","base: T","mixins: U","targetClass: any","value: number | string","max: number | string","max","hsb: HSB","hex: string","rgb: RGB","min","h: number","val: unknown","options?: Partial<ButtonOptions>","bem","options: Partial<ColorPickerOptions>","hsbValue: HSB","bem","value: Partial<HSB>","event: MouseEvent","e: MouseEvent","bem","close","label: string","options: InputOptions","bem","msg: string","errorTip: HTMLElement","errorTip","n","options: Partial<TableCreatorOptions>","bem","row: number","col: number","e: KeyboardEvent","close","options: Partial<TableSelectOptions>","bem","o","r","computePosition","platform","flip","placements","sides","side","placement","overflow","offset","shift","min","max","limitShift","getComputedStyle","domNode: HTMLElement","duration: number","handler: () => void","options?: boolean | AddEventListenerOptions","lastTimer?: ReturnType<typeof setTimeout>","tooltipContainer: HTMLElement","target: HTMLElement","options: ToolTipOptions","bem","showTimer: ReturnType<typeof setTimeout> | undefined","closeTimer: ReturnType<typeof setTimeout> | undefined","cleanup: () => void","force: boolean","close","prepare","e: MouseEvent","show","e: Event","a: T","b: T","edgeJudge: boolean","targetRect: Omit<RelactiveRect, 'x1' | 'y1'>","container: HTMLElement","rect: { left: number; top: number; width: number; height: number }","callback: (entries: ResizeObserverEntry[]) => void","options: Partial<CreateResizeObserverOptions>","observeEls: Set<ResizeObserveTarget>","target: ResizeObserveTarget","options?: ResizeObserverOptions","options","dom: HTMLElement","handle: (e: Event) => void","cssText: string","styleObject: Record<string, string>","obj: Record<string, any>","key: string","fn: T","delay: number","timestamp: ReturnType<typeof setTimeout>","Parchment","Block","BlockEmbed","_value?: unknown","_context: Record<string, any>","child: TypeParchment.Blot","def: TypeParchment.BlotConstructor","value: unknown","Block","BlockEmbed","str: string","value: TableCellValue","domNode: HTMLElement","value: Record<string, any>","scroll: TypeScroll","_value: TableCellValue","name: string","value: any","isStyle: boolean","value: number","index: number","length: number","name","value","value: string","def?: any","blot: TypeParchment.Blot","ref?: TypeParchment.Blot | null","value: TableRowValue","value: string","colId: string","direction: 'next' | 'prev'","cur: null | TableCellFormat","targetIndex: number","value: TableCellValue","skip: SkipRowCount","stopIndex: number","skip: number[]","func: (tableCell: TableCellInnerFormat, index: number) => boolean | void","cur: TableCellFormat | null","context: Record<string, any>","value: string","targetIndex: number","context: Record<string, any>","Parchment","name: string | TypeParchment.Blot","value?: any","block: TypeBlock | null","name: string","value: any","Parchment","attributes: Record<string, any>","refBlot?: TypeParchment.Blot","createBlotName: string | undefined","formats: Record<string, any>","Parchment","value: TableCaptionValue","domNode: HTMLElement","scroll: TypeScroll","_value: TableCaptionValue","ArrowUpDown","value: TableCaptionValue['side']","name: string","value: any","context: Record<string, any>","str: string","value: TableCellValue","domNode: HTMLElement","value: Record<string, any>","inlineStyles: Record<string, any>","value","name: string","value?: any","direction: 'left' | 'top'","colIds: string[]","cur: null | TableCellFormat","i","context: Record<string, any>","width: string | number","full: boolean","value: TableColValue","domNode: HTMLElement","value: Record<string, any>","width: number | string | null","value: string | number","value: boolean","value: string","context: Record<string, any>","tableColgroup","index: number","def?: any","insertBlot: TypeParchment.Parent","nextBlotRef: TypeParchment.Blot | null","value","value: TableValue","scroll: TypeScroll","domNode: HTMLElement","_value: unknown","value: boolean","value: string","style: Record<string, string | null>","context: Record<string, any>","childs: Record<string, ContainerFormat[]>","value: TableValue","value: boolean","value: string","index: number","cur: TableColFormat | null","value: TableColValue","context: Record<string, any>","Parchment","value: string","scroll: any","node: Node","_value: string","Quill","index: number","length: number","blot: TypeParchment.Blot","tableMainBlot: TableMainFormat","tableModule: TableUp","table: HTMLElement","quill: Quill","Quill","icons","tableBlot: TableMainFormat","align: string","Delta","cell: HTMLElement","tableNode: HTMLElement","colNums: number","quill: Quill","options: Partial<ClipboardOptions>","quill","node: Node","delta: TypeDelta","ops: Record<string, any>[]","cols: Record<string, any>[]","_delta: TypeDelta","formats: Record<string, unknown>","tableMenuTools: Record<string, Tool>","Copy","Cut","InsertTop","InsertRight","InsertBottom","InsertLeft","MergeCell","SplitCell","RemoveRow","RemoveColumn","RemoveTable","Background","Border","AutoFull","TableHead","tableModule: TableUp","quill: Quill","options: TableMenuOptionsInput","c: string","color?: string","Quill","item: HTMLElement","colorMapRow","item","tooltip: MenuTooltipInstance","tooltip: MenuTooltipInstance | null","text: string","tableModule: TableUp","quill: Quill","options: TableMenuOptionsInput","quill","e: MouseEvent","item: HTMLElement","text: string","position?: { x: number; y: number }","style: Record<string, any>","tableModule: TableUp","quill: Quill","options: TableMenuOptionsInput","quill","tableMainBlot: TableMainFormat","tableModule: TableUp","quill: Quill","_e: MouseEvent","_i: number","_w: sizeChangeValue","_isFull: boolean","this","updateInfo: { index: number; width: number }[]","columnIndex: number","e: MouseEvent","_h: number","tableModule: TableUp","table: HTMLElement","quill: Quill","quill","e: MouseEvent","offset","Quill","isX: boolean","index: number","currentBoundary: [Point, Point]","lastX: number","lastY: number","i: number","w: sizeChangeValue","isFull: boolean","h: number","tableModule: TableUp","table: HTMLElement","quill: Quill","quill","e: MouseEvent","Quill","tableModule: TableUp","table: HTMLElement","quill: Quill","options: Partial<TableResizeScaleOptions>","Quill","originColWidth: { blot: TableColFormat; width: number }[]","originRowHeight: { blot: TableRowFormat; height: number }[]","e: MouseEvent","quill: Quill","isVertical: boolean","table: HTMLElement","scrollbarContainer: HTMLElement","originDocSelect: typeof document.onselectstart","e: MouseEvent","offset","wrap: HTMLElement","tableModule: TableUp","quill","Quill","tableModule: TableUp","quill: Quill","options: Partial<TableSelectionOptions>","range: TypeRange | null","_oldRange: TypeRange | null","source: EmitterSource","Quill","mousedownEvent: MouseEvent","mousemoveEvent: MouseEvent","closestTableBody","target","button","clientX","clientY","e: KeyboardEvent","quill","dom: HTMLElement | Node","node: Node","selection: Selection","selectionData: SelectionData","selection: SelectionData","points: { node: Node | null; offset: number }[]","startNode: Node | null","endNode: Node | null","offset","startPoint: { x: number; y: number }","endPoint: { x: number; y: number }","table: HTMLTableElement | undefined","scroll: TypeParchment.ScrollBlot","data: Partial<TableConstantsData>","tableModule: TableUp","picker: QuillThemePicker","row: number","col: number","up: boolean","range: TypeRange","context: Context","tableBlot: TableWrapperFormat","tableMain: TableMainFormat","tableRow: TableRowFormat","tableCell: TableCellFormat","Quill","quill: Quill","options: Partial<TableUpOptions>","quill","picker","evt: MouseEvent","type: typeof Quill.events.TEXT_CHANGE | typeof Quill.events.SELECTION_CHANGE","classes: string | HTMLElement","options: Partial<TableTextOptions>","index: number","length?: number","name: string","value: unknown","source: EmitterSource","length: number","changeCellStyle: false | ((styleStr: string | undefined) => string)","offset","op: Op","tds: { td: TableCellFormat; cleanBorder: 'bottom' | 'right' | true }[]","styleStr: string | undefined","acc: Record<string, string>","key: string","table: HTMLElement","customSelect: ((module: TableUp, picker: QuillThemePicker) => HTMLElement | Promise<HTMLElement>) | undefined","this","bem","selectedTds: TableCellInnerFormat[]","attr: string","value?: any","isStyle: boolean","tds: TableCellInnerFormat[]","tableMain: TableMainFormat | null","cellColWidth: string[]","lastRowId: string | null","rows: number","columns: number","delta: Record<string, any>[]","tableBlot: TableMainFormat","mutations: MutationRecord[]","isDown: boolean","isRight: boolean","columnIndex","spanCols: number[]","removeTr: number[]","index","sum","patchTds: {\r\n [key: string]: {\r\n rowspan: number;\r\n colspan: number;\r\n colIndex: number;\r\n };\r\n }","colspanMap: Record<string, number>","i","value: TableCellValue","_range: TypeRange","_context: Context"],"sources":["../src/utils/constants.ts","../src/utils/bem.ts","../src/utils/blot-helper.ts","../src/utils/color.ts","../src/utils/is.ts","../src/utils/components/button.ts","../src/utils/components/color-picker.ts","../src/utils/components/dialog.ts","../src/utils/components/input.ts","../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/esm/asyncToGenerator.js","../src/utils/components/table/creator.ts","../src/utils/components/table/select-box.ts","../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/esm/typeof.js","../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/esm/toPrimitive.js","../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/esm/toPropertyKey.js","../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/esm/defineProperty.js","../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/esm/objectSpread2.js","../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/esm/objectWithoutProperties.js","../node_modules/.pnpm/@floating-ui+core@1.7.1/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/.pnpm/@floating-ui+dom@1.7.1/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../src/utils/transition-event-helper.ts","../src/utils/components/tooltip.ts","../src/utils/position.ts","../src/utils/resize-observer-helper.ts","../src/utils/scroll-event-handle.ts","../src/utils/transformer.ts","../src/utils/utils.ts","../src/formats/container-format.ts","../src/formats/utils.ts","../src/formats/table-cell-inner-format.ts","../src/formats/table-row-format.ts","../src/formats/table-body-format.ts","../src/formats/overrides/block.ts","../src/formats/overrides/scroll.ts","../src/svg/arrow-up-down.svg","../src/formats/table-caption-format.ts","../src/formats/table-cell-format.ts","../src/formats/table-col-format.ts","../src/formats/table-main-format.ts","../src/formats/table-colgroup-format.ts","../src/formats/table-wrapper-format.ts","../src/formats/index.ts","../src/modules/table-align.ts","../src/modules/table-clipboard.ts","../src/svg/auto-full.svg","../src/svg/background.svg","../src/svg/border.svg","../src/svg/copy.svg","../src/svg/cut.svg","../src/svg/insert-bottom.svg","../src/svg/insert-left.svg","../src/svg/insert-right.svg","../src/svg/insert-top.svg","../src/svg/merge-cell.svg","../src/svg/remove-column.svg","../src/svg/remove-row.svg","../src/svg/remove-table.svg","../src/svg/split-cell.svg","../src/svg/table-head.svg","../src/modules/table-menu/constants.ts","../src/modules/table-menu/table-menu-common.ts","../src/modules/table-menu/table-menu-contextmenu.ts","../src/modules/table-menu/table-menu-select.ts","../src/modules/table-resize/utils.ts","../src/modules/table-resize/table-resize-common.ts","../src/modules/table-resize/table-resize-box.ts","../src/modules/table-resize/table-resize-line.ts","../src/modules/table-resize/table-resize-scale.ts","../src/modules/table-scrollbar.ts","../src/modules/table-selection.ts","../src/table-up.ts","../src/index.ts"],"sourcesContent":["import type { Parchment as TypeParchment } from 'quill';\r\n\r\nexport const blotName = {\r\n container: 'table-up-container',\r\n tableCaption: 'table-up-caption',\r\n tableWrapper: 'table-up',\r\n tableMain: 'table-up-main',\r\n tableColgroup: 'table-up-colgroup',\r\n tableCol: 'table-up-col',\r\n tableBody: 'table-up-body',\r\n tableRow: 'table-up-row',\r\n tableCell: 'table-up-cell',\r\n tableCellInner: 'table-up-cell-inner',\r\n} as const;\r\n\r\nexport const tableUpSize = {\r\n colMinWidthPre: 5,\r\n colMinWidthPx: 40,\r\n colDefaultWidth: 100,\r\n rowMinHeightPx: 36,\r\n};\r\n\r\nexport const tableUpEvent = {\r\n AFTER_TABLE_RESIZE: 'after-table-resize',\r\n};\r\n\r\nexport const tableUpInternal = {\r\n moduleName: 'table-up',\r\n};\r\n\r\nexport const defaultColorMap = [\r\n [\r\n 'rgb(255, 255, 255)',\r\n 'rgb(0, 0, 0)',\r\n 'rgb(72, 83, 104)',\r\n 'rgb(41, 114, 244)',\r\n 'rgb(0, 163, 245)',\r\n 'rgb(49, 155, 98)',\r\n 'rgb(222, 60, 54)',\r\n 'rgb(248, 136, 37)',\r\n 'rgb(245, 196, 0)',\r\n 'rgb(153, 56, 215)',\r\n ],\r\n [\r\n 'rgb(242, 242, 242)',\r\n 'rgb(127, 127, 127)',\r\n 'rgb(243, 245, 247)',\r\n 'rgb(229, 239, 255)',\r\n 'rgb(229, 246, 255)',\r\n 'rgb(234, 250, 241)',\r\n 'rgb(254, 233, 232)',\r\n 'rgb(254, 243, 235)',\r\n 'rgb(254, 249, 227)',\r\n 'rgb(253, 235, 255)',\r\n ],\r\n [\r\n 'rgb(216, 216, 216)',\r\n 'rgb(89, 89, 89)',\r\n 'rgb(197, 202, 211)',\r\n 'rgb(199, 220, 255)',\r\n 'rgb(199, 236, 255)',\r\n 'rgb(195, 234, 213)',\r\n 'rgb(255, 201, 199)',\r\n 'rgb(255, 220, 196)',\r\n 'rgb(255, 238, 173)',\r\n 'rgb(242, 199, 255)',\r\n ],\r\n [\r\n 'rgb(191, 191, 191)',\r\n 'rgb(63, 63, 63)',\r\n 'rgb(128, 139, 158)',\r\n 'rgb(153, 190, 255)',\r\n 'rgb(153, 221, 255)',\r\n 'rgb(152, 215, 182)',\r\n 'rgb(255, 156, 153)',\r\n 'rgb(255, 186, 132)',\r\n 'rgb(255, 226, 112)',\r\n 'rgb(213, 142, 255)',\r\n ],\r\n [\r\n 'rgb(165, 165, 165)',\r\n 'rgb(38, 38, 38)',\r\n 'rgb(53, 59, 69)',\r\n 'rgb(20, 80, 184)',\r\n 'rgb(18, 116, 165)',\r\n 'rgb(39, 124, 79)',\r\n 'rgb(158, 30, 26)',\r\n 'rgb(184, 96, 20)',\r\n 'rgb(163, 130, 0)',\r\n 'rgb(94, 34, 129)',\r\n ],\r\n [\r\n 'rgb(147, 147, 147)',\r\n 'rgb(13, 13, 13)',\r\n 'rgb(36, 39, 46)',\r\n 'rgb(12, 48, 110)',\r\n 'rgb(10, 65, 92)',\r\n 'rgb(24, 78, 50)',\r\n 'rgb(88, 17, 14)',\r\n 'rgb(92, 48, 10)',\r\n 'rgb(102, 82, 0)',\r\n 'rgb(59, 21, 81)',\r\n ],\r\n];\r\n\r\nexport const cssNamespace = 'table-up';\r\n\r\n// Blots that cannot be inserted into a table\r\nexport const tableCantInsert: Set<string> = new Set([blotName.tableCellInner]);\r\n\r\nexport const isForbidInTableBlot = (blot: TypeParchment.Blot) => tableCantInsert.has(blot.statics.blotName);\r\nexport function isForbidInTable(current: TypeParchment.Blot): boolean {\n return current && current.parent\r\n ? isForbidInTableBlot(current.parent)\r\n ? true\r\n : isForbidInTable(current.parent)\r\n : false;\n}\r\n","import { cssNamespace } from './constants';\r\n\r\nexport function createBEM(b: string, n: string = cssNamespace) {\r\n const prefix = n ? `${n}-` : '';\r\n return {\r\n /** n-b */\r\n b: () => `${prefix}${b}`,\r\n /** n-b__e */\r\n be: (e?: string) => e ? `${prefix}${b}__${e}` : '',\r\n /** n-b--m */\r\n bm: (m?: string) => m ? `${prefix}${b}--${m}` : '',\r\n /** n-b__e--m */\r\n bem: (e?: string, m?: string) => e && m ? `${prefix}${b}__${e}--${m}` : '',\r\n /** n-s */\r\n ns: (s?: string) => s ? `${prefix}${s}` : '',\r\n /** n-b-s */\r\n bs: (s?: string) => s ? `${prefix}${b}-${s}` : '',\r\n /** --n-v */\r\n cv: (v?: string) => v ? `--${prefix}${v}` : '',\r\n /** is-n */\r\n is: (n: string) => `is-${n}`,\r\n };\r\n}\r\n","import type { Parchment as TypeParchment } from 'quill';\r\nimport type { TableBodyFormat, TableCellFormat, TableCellInnerFormat, TableColFormat, TableColgroupFormat, TableMainFormat, TableRowFormat, TableWrapperFormat } from '../formats';\r\nimport type { blotName } from './constants';\r\nimport type { Constructor } from './types';\r\n\r\ninterface ParentBlotReturnMap {\r\n [blotName.tableWrapper]: TableWrapperFormat;\r\n [blotName.tableMain]: TableMainFormat;\r\n [blotName.tableCol]: TableColFormat;\r\n [blotName.tableColgroup]: TableColgroupFormat;\r\n [blotName.tableBody]: TableBodyFormat;\r\n [blotName.tableRow]: TableRowFormat;\r\n [blotName.tableCell]: TableCellFormat;\r\n [blotName.tableCellInner]: TableCellInnerFormat;\r\n}\r\ntype ParentBlotReturn = {\r\n [key: string]: TypeParchment.Parent;\r\n} & ParentBlotReturnMap;\r\n\r\nexport function findParentBlot<T extends TypeParchment.Parent, U extends string = string>(\r\n blot: TypeParchment.Blot,\r\n targetBlotName: U,\r\n): U extends keyof ParentBlotReturn ? ParentBlotReturn[U] : T {\r\n let target = blot.parent;\r\n while (target && target.statics.blotName !== targetBlotName && target !== blot.scroll) {\r\n target = target.parent;\r\n }\r\n if (target === blot.scroll) {\r\n throw new Error(`${blot.statics.blotName} must be a child of ${targetBlotName}`);\r\n }\r\n return target as any;\r\n}\r\n\r\nexport function findParentBlots<T extends (keyof ParentBlotReturnMap | string)[]>(\r\n blot: TypeParchment.Blot,\r\n targetBlotNames: T,\r\n): { [K in keyof T]: ParentBlotReturn[T[K]] } {\r\n const resultBlots: TypeParchment.Parent[] = new Array(targetBlotNames.length);\r\n const blotNameIndexMaps = new Map<string, number>(targetBlotNames.map((name, i) => [name, i]));\r\n let target = blot.parent;\r\n while (target && target !== blot.scroll) {\r\n if (blotNameIndexMaps.size === 0) break;\r\n if (blotNameIndexMaps.has(target.statics.blotName)) {\r\n const index = blotNameIndexMaps.get(target.statics.blotName)!;\r\n resultBlots[index] = target;\r\n blotNameIndexMaps.delete(target.statics.blotName);\r\n }\r\n target = target.parent;\r\n }\r\n if (blotNameIndexMaps.size > 0) {\r\n throw new Error(`${blot.statics.blotName} must be a child of ${Array.from(blotNameIndexMaps.keys()).join(', ')}`);\r\n }\r\n return resultBlots as any;\r\n}\r\n\r\nexport function findAllParentBlot(Blot: TypeParchment.Blot) {\r\n const blots: Map<string, TypeParchment.Blot> = new Map();\r\n let target = Blot;\r\n while (target && target.statics.blotName !== 'scroll') {\r\n blots.set(target.statics.blotName, target);\r\n target = target.parent;\r\n }\r\n return blots;\r\n}\r\n\r\nexport function findChildBlot<T extends TypeParchment.BlotConstructor>(parent: TypeParchment.Parent, blot: T) {\r\n const descendants: InstanceType<T>[] = [];\r\n const next = parent.children.iterator();\r\n let cur: TypeParchment.Blot | null = null;\r\n while ((cur = next())) {\r\n if (cur instanceof blot) {\r\n descendants.push(cur as InstanceType<T>);\r\n }\r\n }\r\n return descendants;\r\n}\r\n\r\nfunction mixinProps<T = any, U = any>(target: T, source: U) {\r\n for (const prop of Object.getOwnPropertyNames(source)) {\r\n if (/^constructor$/.test(prop)) continue;\r\n Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop)!);\r\n }\r\n return target as typeof target & Omit<typeof source, 'constructor'>;\r\n}\r\nexport function mixinClass<\r\n T extends Constructor,\r\n U extends Constructor[],\r\n>(\r\n base: T,\r\n mixins: U,\r\n): T & Omit<U[number], 'constructor' | keyof InstanceType<T>> {\r\n const targetClass: any = class extends base {\r\n constructor(...props: any[]) {\r\n super(...props);\r\n }\r\n };\r\n for (const source of mixins) {\r\n mixinProps<typeof targetClass.prototype, typeof source.prototype>(targetClass.prototype, source.prototype);\r\n }\r\n\r\n return targetClass;\r\n}\r\n","export interface HSB {\r\n h: number;\r\n s: number;\r\n b: number;\r\n a: number;\r\n}\r\nexport interface RGB {\r\n r: number;\r\n g: number;\r\n b: number;\r\n a: number;\r\n}\r\nfunction normalizeValue(value: number | string, max: number | string) {\r\n value = Math.min(max as number, Math.max(0, Number.parseFloat(`${value}`)));\r\n\r\n // Handle floating point rounding errors\r\n if (Math.abs(value - (max as number)) < 0.000_001) {\r\n return 1;\r\n }\r\n\r\n // Convert into [0, 1] range if it isn't already\r\n return (value % (max as number)) / Number.parseFloat(max as string);\r\n}\r\nexport function validateHSB(hsb: HSB): HSB {\r\n return {\r\n h: Math.min(360, Math.max(0, hsb.h)),\r\n s: Math.min(100, Math.max(0, hsb.s)),\r\n b: Math.min(100, Math.max(0, hsb.b)),\r\n a: Math.min(1, Math.max(0, hsb.a)),\r\n };\r\n}\r\nexport function HEXtoRGB(hex: string): RGB {\r\n hex = hex.startsWith('#') ? hex.slice(1) : hex;\r\n const r = Number.parseInt(hex.slice(0, 2), 16);\r\n const g = Number.parseInt(hex.slice(2, 4), 16);\r\n const b = Number.parseInt(hex.slice(4, 6), 16);\r\n const a = Number((Number.parseInt(hex.slice(6, 8) || 'ff', 16) / 255).toFixed(2));\r\n return { r, g, b, a };\r\n}\r\nexport function RGBtoHSB(rgb: RGB): HSB {\r\n let { r, g, b, a } = rgb;\r\n r = normalizeValue(r, 255);\r\n g = normalizeValue(g, 255);\r\n b = normalizeValue(b, 255);\r\n\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n let h: number;\r\n const v = max;\r\n\r\n const d = max - min;\r\n const s = max === 0 ? 0 : d / max;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n }\r\n else {\r\n switch (max) {\r\n case r: {\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n }\r\n case g: {\r\n h = (b - r) / d + 2;\r\n break;\r\n }\r\n case b: {\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n }\r\n h! /= 6;\r\n }\r\n\r\n return { h: h! * 360, s: s * 100, b: v * 100, a };\r\n}\r\nexport function HSBtoRGB(hsb: HSB): RGB {\r\n let { h, s, b, a } = hsb;\r\n h = normalizeValue(h, 360) * 6;\r\n s = normalizeValue(s, 100);\r\n b = normalizeValue(b, 100);\r\n\r\n const i = Math.floor(h);\r\n const f = h - i;\r\n const p = b * (1 - s);\r\n const q = b * (1 - f * s);\r\n const t = b * (1 - (1 - f) * s);\r\n const mod = i % 6;\r\n const r = [b, q, p, p, t, b][mod];\r\n const g = [t, b, b, q, p, p][mod];\r\n const v = [p, p, t, b, b, q][mod];\r\n\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(v * 255),\r\n a,\r\n };\r\n}\r\nexport function RGBtoHEX(rgb: RGB): string {\r\n const hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16), Math.round(rgb.a * 255).toString(16)];\r\n for (const key in hex) {\r\n if (hex[key].length === 1) {\r\n hex[key] = `0${hex[key]}`;\r\n }\r\n }\r\n return hex.join('');\r\n}\r\nexport const HSBtoHEX = (hsb: HSB): string => RGBtoHEX(HSBtoRGB(hsb));\r\n","export const isFunction = (val: unknown): val is Function => typeof val === 'function';\r\nexport const isBoolean = (val: unknown): val is boolean => typeof val === 'boolean';\r\nexport const isArray = Array.isArray;\r\nexport const isString = (val: unknown): val is string => typeof val === 'string';\r\nexport const isNumber = (val: unknown): val is number => typeof val === 'number';\r\nexport const isObject = (val: unknown): val is Record<any, any> => val !== null && typeof val === 'object';\r\nexport const isValidCellspan = (val: unknown): boolean => !Number.isNaN(val) && Number(val) > 0;\r\n","import { createBEM } from '../bem';\r\nimport { isString } from '../is';\r\n\r\ninterface ButtonOptions {\r\n type: 'confirm' | 'default';\r\n content: HTMLElement | string;\r\n}\r\nexport function createButton(options?: Partial<ButtonOptions>) {\r\n const { type = 'default', content } = options || {};\r\n const bem = createBEM('button');\r\n const btn = document.createElement('button');\r\n btn.classList.add(bem.b(), type);\r\n if (content) {\r\n if (isString(content)) {\r\n btn.textContent = content;\r\n }\r\n else {\r\n btn.appendChild(content);\r\n }\r\n }\r\n return btn;\r\n}\r\n","import type { HSB } from '../color';\r\nimport { createBEM } from '../bem';\r\nimport { HEXtoRGB, HSBtoHEX, HSBtoRGB, RGBtoHEX, RGBtoHSB, validateHSB } from '../color';\r\n\r\ninterface ColorPickerOptions {\r\n color: string;\r\n onChange: (color: string) => void;\r\n}\r\nexport function createColorPicker(options: Partial<ColorPickerOptions> = {}) {\r\n const contentWidth = 230;\r\n const contentHeight = 150;\r\n const handleSizeSec = 10;\r\n\r\n let hsbValue: HSB = RGBtoHSB(HEXtoRGB(options.color || '#ff0000'));\r\n const bem = createBEM('color-picker');\r\n const root = document.createElement('div');\r\n root.classList.add(bem.b());\r\n\r\n const content = document.createElement('div');\r\n content.classList.add(bem.be('content'));\r\n\r\n const colorSelector = document.createElement('div');\r\n colorSelector.classList.add(bem.be('selector'));\r\n\r\n const colorBackground = document.createElement('div');\r\n colorBackground.classList.add(bem.be('background'));\r\n colorSelector.appendChild(colorBackground);\r\n\r\n const colorHandle = document.createElement('div');\r\n colorHandle.classList.add(bem.be('background-handle'));\r\n colorBackground.appendChild(colorHandle);\r\n\r\n const colorAlpha = document.createElement('div');\r\n colorAlpha.classList.add(bem.be('alpha'));\r\n\r\n const alphaBg = document.createElement('div');\r\n alphaBg.classList.add(bem.be('alpha-bg'));\r\n\r\n const alphaHandle = document.createElement('div');\r\n alphaHandle.classList.add(bem.be('alpha-handle'));\r\n\r\n colorAlpha.appendChild(alphaBg);\r\n colorAlpha.appendChild(alphaHandle);\r\n\r\n const colorHue = document.createElement('div');\r\n colorHue.classList.add(bem.be('hue'));\r\n\r\n const colorHueHandle = document.createElement('div');\r\n colorHueHandle.classList.add(bem.be('hue-handle'));\r\n colorHue.appendChild(colorHueHandle);\r\n\r\n const action = document.createElement('div');\r\n action.classList.add(bem.be('action'));\r\n\r\n const [colorRInput, colorGInput, colorBInput, colorAInput] = (['r', 'g', 'b', 'a'] as const).map((key) => {\r\n const item = document.createElement('div');\r\n item.classList.add(bem.be('action-item'), key);\r\n\r\n const label = document.createElement('label');\r\n label.textContent = key.toUpperCase();\r\n\r\n const colorInput = document.createElement('input');\r\n colorInput.classList.add(bem.be('input'));\r\n\r\n colorInput.addEventListener('input', () => {\r\n colorInput.value = colorInput.value.replaceAll(/[^0-9]/g, '');\r\n });\r\n colorInput.addEventListener('change', () => {\r\n let value = Math.round(Number(colorInput.value));\r\n if (key === 'a') {\r\n value = value / 100;\r\n }\r\n const result = validateHSB(RGBtoHSB(Object.assign({}, HSBtoRGB(hsbValue), { [key]: value })));\r\n updateValue(result);\r\n updateUI();\r\n });\r\n\r\n item.appendChild(label);\r\n item.appendChild(colorInput);\r\n action.appendChild(item);\r\n\r\n return colorInput;\r\n });\r\n\r\n content.appendChild(colorHue);\r\n content.appendChild(colorSelector);\r\n content.appendChild(colorAlpha);\r\n root.appendChild(content);\r\n root.appendChild(action);\r\n\r\n let colorDragging = false;\r\n let hueDragging = false;\r\n let alphaDragging = false;\r\n\r\n function updateInput() {\r\n const hex = HSBtoHEX(hsbValue);\r\n for (const [i, input] of [colorRInput, colorGInput, colorBInput].entries()) {\r\n input.value = String(Number.parseInt(hex[i * 2] + hex[i * 2 + 1], 16));\r\n }\r\n colorAInput.value = String((hsbValue.a * 100).toFixed(0));\r\n }\r\n function updateColorHandle() {\r\n Object.assign(colorHandle.style, {\r\n left: `${Math.floor((contentWidth * hsbValue.s) / 100)}px`,\r\n top: `${Math.floor((contentHeight * (100 - hsbValue.b)) / 100)}px`,\r\n });\r\n }\r\n function updateColorSelector() {\r\n colorSelector.style.backgroundColor = `#${RGBtoHEX(HSBtoRGB({\r\n h: hsbValue.h,\r\n s: 100,\r\n b: 100,\r\n a: 1,\r\n }))}`;\r\n }\r\n function updateHue() {\r\n colorHueHandle.style.top = `${Math.floor(contentHeight - (contentHeight * hsbValue.h) / 360)}px`;\r\n }\r\n function updateAlphaHandle() {\r\n alphaHandle.style.left = `${hsbValue.a * 100}%`;\r\n }\r\n function updateAlphaBg() {\r\n const { r, g, b } = HSBtoRGB(hsbValue);\r\n alphaBg.style.background = `linear-gradient(to right, rgba(${r}, ${g}, ${b}, 0) 0%, rgba(${r}, ${g}, ${b}, 1) 100%)`;\r\n }\r\n function updateUI() {\r\n updateColorHandle();\r\n updateColorSelector();\r\n updateHue();\r\n updateAlphaHandle();\r\n updateAlphaBg();\r\n updateInput();\r\n }\r\n function updateValue(value: Partial<HSB>) {\r\n hsbValue = validateHSB(Object.assign({}, hsbValue, value));\r\n\r\n updateInput();\r\n\r\n if (options.onChange) {\r\n options.onChange(`#${HSBtoHEX(hsbValue)}`);\r\n }\r\n }\r\n\r\n function pickColor(event: MouseEvent) {\r\n const rect = colorSelector.getBoundingClientRect();\r\n const top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\r\n const left = rect.left + document.body.scrollLeft;\r\n const saturation = Math.floor((100 * Math.max(0, Math.min(contentWidth, event.pageX - left))) / contentWidth);\r\n const brightness = Math.floor((100 * (contentHeight - Math.max(0, Math.min(contentHeight, event.pageY - top)))) / contentHeight);\r\n\r\n updateValue({\r\n s: saturation,\r\n b: brightness,\r\n });\r\n updateUI();\r\n }\r\n function pickHue(event: MouseEvent) {\r\n const top = colorHue.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\r\n\r\n updateValue({\r\n h: Math.floor((360 * (contentHeight - Math.max(0, Math.min(contentHeight, event.pageY - top)))) / contentHeight),\r\n });\r\n updateUI();\r\n }\r\n function pickAlpha(event: MouseEvent) {\r\n const { pageX } = event;\r\n const rect = colorAlpha.getBoundingClientRect();\r\n let left = pageX - rect.left;\r\n left = Math.max(handleSizeSec / 2, left);\r\n left = Math.min(left, rect.width - handleSizeSec / 2);\r\n\r\n updateValue({\r\n a: Math.round(((left - 10 / 2) / (rect.width - 10)) * 100) / 100,\r\n });\r\n updateUI();\r\n }\r\n\r\n function onDrag(event: MouseEvent) {\r\n if (colorDragging) {\r\n event.preventDefault();\r\n pickColor(event);\r\n }\r\n\r\n if (hueDragging) {\r\n event.preventDefault();\r\n pickHue(event);\r\n }\r\n\r\n if (alphaDragging) {\r\n event.preventDefault();\r\n pickAlpha(event);\r\n }\r\n }\r\n\r\n function onColorSelectorDragEnd() {\r\n document.removeEventListener('mousemove', onDrag);\r\n document.removeEventListener('mouseup', onColorSelectorDragEnd);\r\n colorDragging = false;\r\n }\r\n function onColorSelectorMousedown(e: MouseEvent) {\r\n document.addEventListener('mousemove', onDrag);\r\n document.addEventListener('mouseup', onColorSelectorDragEnd);\r\n colorDragging = true;\r\n pickColor(e);\r\n }\r\n colorSelector.addEventListener('mousedown', onColorSelectorMousedown);\r\n\r\n function onColorHueDragEnd() {\r\n document.removeEventListener('mousemove', onDrag);\r\n document.removeEventListener('mouseup', onColorHueDragEnd);\r\n hueDragging = false;\r\n }\r\n function onColorHueMousedown(event: MouseEvent) {\r\n document.addEventListener('mousemove', onDrag);\r\n document.addEventListener('mouseup', onColorHueDragEnd);\r\n hueDragging = true;\r\n pickHue(event);\r\n }\r\n colorHue.addEventListener('mousedown', onColorHueMousedown);\r\n\r\n function onColorAlphaDragEnd() {\r\n document.removeEventListener('mousemove', onDrag);\r\n document.removeEventListener('mouseup', onColorAlphaDragEnd);\r\n alphaDragging = false;\r\n }\r\n function onColorAlphaMousedown(event: MouseEvent) {\r\n document.addEventListener('mousemove', onDrag);\r\n document.addEventListener('mouseup', onColorAlphaDragEnd);\r\n alphaDragging = true;\r\n pickAlpha(event);\r\n }\r\n colorAlpha.addEventListener('mousedown', onColorAlphaMousedown);\r\n\r\n updateUI();\r\n return root;\r\n}\r\n","import { createBEM } from '../bem';\r\n\r\ninterface DialogOptions {\r\n child?: HTMLElement;\r\n target?: HTMLElement;\r\n beforeClose?: () => void;\r\n}\r\nlet zindex = 8000;\r\nexport function createDialog({ child, target = document.body, beforeClose = () => {} }: DialogOptions = {}) {\r\n const bem = createBEM('dialog');\r\n const appendTo = target;\r\n const dialog = document.createElement('div');\r\n dialog.classList.add(bem.b());\r\n dialog.style.zIndex = String(zindex);\r\n const overlay = document.createElement('div');\r\n overlay.classList.add(bem.be('overlay'));\r\n dialog.appendChild(overlay);\r\n if (child) {\r\n const content = document.createElement('div');\r\n content.classList.add(bem.be('content'));\r\n content.appendChild(child);\r\n overlay.appendChild(content);\r\n content.addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n const originOverflow = getComputedStyle(appendTo).overflow;\r\n appendTo.style.overflow = 'hidden';\r\n\r\n appendTo.appendChild(dialog);\r\n const close = () => {\r\n beforeClose();\r\n dialog.remove();\r\n appendTo.style.overflow = originOverflow;\r\n };\r\n dialog.addEventListener('click', close);\r\n zindex += 1;\r\n\r\n return { dialog, close };\r\n}\r\n","import { createBEM } from '../bem';\r\n\r\ninterface InputOptions {\r\n type?: string;\r\n value?: string;\r\n max?: number;\r\n min?: number;\r\n [key: string]: any;\r\n}\r\nexport function createInputItem(label: string, options: InputOptions) {\r\n const bem = createBEM('input');\r\n options.type || (options.type = 'text');\r\n options.value || (options.value = '');\r\n\r\n const inputItem = document.createElement('div');\r\n inputItem.classList.add(bem.be('item'));\r\n\r\n if (label) {\r\n const inputLabel = document.createElement('span');\r\n inputLabel.classList.add(bem.be('label'));\r\n inputLabel.textContent = label;\r\n inputItem.appendChild(inputLabel);\r\n }\r\n\r\n const inputInput = document.createElement('div');\r\n inputInput.classList.add(bem.be('input'));\r\n const input = document.createElement('input');\r\n for (const key in options) {\r\n input.setAttribute(key, options[key]);\r\n }\r\n if (options.max || options.min) {\r\n input.addEventListener('blur', () => {\r\n if (options.max && options.max <= Number(input.value)) {\r\n input.value = String(options.max);\r\n }\r\n if (options.min && options.min >= Number(input.value)) {\r\n input.value = String(options.min);\r\n }\r\n });\r\n }\r\n\r\n inputInput.appendChild(input);\r\n inputItem.appendChild(inputInput);\r\n\r\n input.addEventListener('focus', () => {\r\n inputInput.classList.add('focus');\r\n });\r\n input.addEventListener('blur', () => {\r\n inputInput.classList.remove('focus');\r\n });\r\n\r\n const errorTip = (msg: string) => {\r\n let errorTip: HTMLElement;\r\n if (inputInput.classList.contains('error')) {\r\n errorTip = inputInput.querySelector(`.${bem.be('error-tip')}`)!;\r\n }\r\n else {\r\n errorTip = document.createElement('span');\r\n errorTip.classList.add(bem.be('error-tip'));\r\n inputInput.appendChild(errorTip);\r\n }\r\n\r\n errorTip.textContent = msg;\r\n inputInput.classList.add('error');\r\n\r\n const removeError = () => {\r\n inputInput.classList.remove('error');\r\n errorTip.remove();\r\n };\r\n return { removeError };\r\n };\r\n\r\n return { item: inputItem, input, errorTip };\r\n}\r\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import type { TableCreatorTextOptions } from '../../types';\r\nimport { createBEM } from '../../bem';\r\nimport { createButton } from '../button';\r\nimport { createDialog } from '../dialog';\r\nimport { createInputItem } from '../input';\r\n\r\ninterface TableCreatorOptions extends Omit<TableCreatorTextOptions, 'customBtnText'> {\r\n row: number;\r\n col: number;\r\n}\r\nexport async function showTableCreator(options: Partial<TableCreatorOptions> = {}) {\r\n const bem = createBEM('creator');\r\n const box = document.createElement('div');\r\n box.classList.add(bem.b());\r\n const inputContent = document.createElement('div');\r\n inputContent.classList.add(bem.be('input'));\r\n\r\n const {\r\n item: rowItem,\r\n input: rowInput,\r\n errorTip: rowErrorTip,\r\n } = createInputItem(options.rowText || 'Row', { type: 'number', value: String(options.row || ''), max: 99 });\r\n const {\r\n item: colItem,\r\n input: colInput,\r\n errorTip: colErrorTip,\r\n } = createInputItem(options.colText || 'Column', { type: 'number', value: String(options.col || ''), max: 99 });\r\n\r\n inputContent.appendChild(rowItem);\r\n inputContent.appendChild(colItem);\r\n box.appendChild(inputContent);\r\n\r\n const control = document.createElement('div');\r\n control.classList.add(bem.be('control'));\r\n\r\n const confirmBtn = createButton({ type: 'confirm', content: options.confirmText || 'Confirm' });\r\n const cancelBtn = createButton({ type: 'default', content: options.cancelText || 'Cancel' });\r\n\r\n control.appendChild(confirmBtn);\r\n control.appendChild(cancelBtn);\r\n box.appendChild(control);\r\n\r\n const validateInput = (row: number = Number(rowInput.value), col: number = Number(colInput.value)) => {\r\n if (Number.isNaN(row) || row <= 0) {\r\n rowErrorTip(options.notPositiveNumberError || 'Please enter a positive integer');\r\n return;\r\n }\r\n if (Number.isNaN(col) || col <= 0) {\r\n colErrorTip(options.notPositiveNumberError || 'Please enter a positive integer');\r\n return;\r\n }\r\n return { row, col };\r\n };\r\n const keyboardClose = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n close();\r\n document.removeEventListener('keydown', keyboardClose);\r\n }\r\n };\r\n\r\n return new Promise<{ row: number; col: number }>((resolve, reject) => {\r\n const { close } = createDialog({ child: box, beforeClose: reject });\r\n rowInput.focus();\r\n\r\n for (const input of [rowInput, colInput]) {\r\n input.addEventListener('keydown', (e) => {\r\n if (e.key === 'Enter') {\r\n const result = validateInput();\r\n if (result) {\r\n resolve(result);\r\n close();\r\n }\r\n }\r\n });\r\n }\r\n confirmBtn.addEventListener('click', async () => {\r\n const result = validateInput();\r\n if (result) {\r\n resolve(result);\r\n close();\r\n }\r\n });\r\n document.addEventListener('keydown', keyboardClose);\r\n cancelBtn.addEventListener('click', close);\r\n });\r\n}\r\n","import type { TableCreatorTextOptions } from '../../types';\r\nimport { createBEM } from '../../bem';\r\nimport { showTableCreator } from './creator';\r\n\r\ninterface TableSelectOptions {\r\n row: number;\r\n col: number;\r\n onSelect: (row: number, col: number) => void;\r\n customBtn: boolean;\r\n texts: Partial<TableCreatorTextOptions>;\r\n}\r\nexport function createSelectBox(options: Partial<TableSelectOptions> = {}) {\r\n const bem = createBEM('select-box');\r\n const selectDom = document.createElement('div');\r\n selectDom.classList.add(bem.b());\r\n\r\n const selectBlock = document.createElement('div');\r\n selectBlock.classList.add(bem.be('block'));\r\n for (let r = 0; r < (options.row || 8); r++) {\r\n for (let c = 0; c < (options.col || 8); c++) {\r\n const selectItem = document.createElement('div');\r\n selectItem.classList.add(bem.be('item'));\r\n selectItem.dataset.row = String(r + 1);\r\n selectItem.dataset.col = String(c + 1);\r\n selectBlock.appendChild(selectItem);\r\n }\r\n }\r\n const updateSelectBlockItems = () => {\r\n const { row, col } = selectDom.dataset;\r\n for (const item of Array.from(selectBlock.querySelectorAll('.active'))) {\r\n item.classList.remove('active');\r\n }\r\n if (!row || !col) return;\r\n const childs = Array.from(selectBlock.children) as HTMLElement[];\r\n for (let i = 0; i < childs.length; i++) {\r\n const { row: childRow, col: childCol } = childs[i].dataset;\r\n if (childRow! > row && childCol! > col) {\r\n return;\r\n }\r\n if (childRow! <= row && childCol! <= col) {\r\n childs[i].classList.add('active');\r\n }\r\n else {\r\n childs[i].classList.remove('active');\r\n }\r\n }\r\n };\r\n selectBlock.addEventListener('mousemove', (e) => {\r\n if (!e.target) return;\r\n const { row, col } = (e.target as HTMLElement).dataset;\r\n if (!row || !col) return;\r\n selectDom.dataset.row = row;\r\n selectDom.dataset.col = col;\r\n updateSelectBlockItems();\r\n });\r\n selectBlock.addEventListener('mouseleave', () => {\r\n selectDom.removeAttribute('data-row');\r\n selectDom.removeAttribute('data-col');\r\n updateSelectBlockItems();\r\n });\r\n selectBlock.addEventListener('click', () => {\r\n const { row, col } = selectDom.dataset;\r\n if (!row || !col) return;\r\n options.onSelect && options.onSelect(Number(row), Number(col));\r\n });\r\n selectDom.appendChild(selectBlock);\r\n\r\n if (options.customBtn) {\r\n const texts = options.texts || {};\r\n const selectCustom = document.createElement('div');\r\n selectCustom.classList.add(bem.be('custom'));\r\n selectCustom.textContent = texts.customBtnText || 'Custom';\r\n selectCustom.addEventListener('click', async () => {\r\n const res = await showTableCreator(texts);\r\n if (res) {\r\n options.onSelect && options.onSelect(res.row, res.col);\r\n }\r\n });\r\n selectDom.appendChild(selectCustom);\r\n }\r\n\r\n return selectDom;\r\n}\r\n","function _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}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","export function handleIfTransitionend(domNode: HTMLElement, duration: number, handler: () => void, options?: boolean | AddEventListenerOptions, lastTimer?: ReturnType<typeof setTimeout>): ReturnType<typeof setTimeout> {\r\n if (lastTimer) clearTimeout(lastTimer);\r\n domNode.addEventListener('transitionend', handler, options);\r\n // handle remove when transition set none\r\n return setTimeout(() => {\r\n handler();\r\n }, duration);\r\n}\r\n","import {\r\n autoUpdate,\r\n computePosition,\r\n flip,\r\n limitShift,\r\n offset,\r\n shift,\r\n} from '@floating-ui/dom';\r\nimport { createBEM } from '../bem';\r\nimport { handleIfTransitionend } from '../transition-event-helper';\r\n\r\nexport interface ToolTipOptions {\r\n direction?:\r\n | 'top'\r\n | 'top-start'\r\n | 'top-end'\r\n | 'bottom'\r\n | 'bottom-start'\r\n | 'bottom-end'\r\n | 'right'\r\n | 'right-start'\r\n | 'right-end'\r\n | 'left'\r\n | 'left-start'\r\n | 'left-end';\r\n msg?: string;\r\n delay?: number;\r\n content?: HTMLElement;\r\n container?: HTMLElement;\r\n type?: 'hover' | 'click';\r\n onOpen?: (force?: boolean) => boolean;\r\n onClose?: (force?: boolean) => boolean;\r\n closed?: () => void;\r\n onDestroy?: () => void;\r\n}\r\nconst DISTANCE = 4;\r\nlet tooltipContainer: HTMLElement;\r\nexport interface TooltipInstance {\r\n destroy: () => void;\r\n show: (force?: boolean) => void;\r\n hide: (force?: boolean) => void;\r\n}\r\nexport function createTooltip(target: HTMLElement, options: ToolTipOptions = {}): TooltipInstance | null {\r\n const { msg = '', delay = 150, content, direction = 'bottom', type = 'hover', container, onOpen, onClose, closed, onDestroy } = options;\r\n const bem = createBEM('tooltip');\r\n if (msg || content) {\r\n if (!tooltipContainer) {\r\n tooltipContainer = document.createElement('div');\r\n document.body.appendChild(tooltipContainer);\r\n }\r\n const appendTo = container || tooltipContainer;\r\n const tooltip = document.createElement('div');\r\n tooltip.classList.add(bem.b(), 'hidden', 'transparent');\r\n if (content) {\r\n tooltip.appendChild(content);\r\n }\r\n else if (msg) {\r\n tooltip.textContent = msg;\r\n }\r\n let showTimer: ReturnType<typeof setTimeout> | undefined;\r\n let closeTimer: ReturnType<typeof setTimeout> | undefined;\r\n let cleanup: () => void;\r\n const update = () => {\r\n if (cleanup) cleanup();\r\n computePosition(target, tooltip, {\r\n placement: direction,\r\n middleware: [flip(), shift({ limiter: limitShift() }), offset(DISTANCE)],\r\n }).then(({ x, y }) => {\r\n Object.assign(tooltip.style, {\r\n left: `${x}px`,\r\n top: `${y}px`,\r\n });\r\n });\r\n };\r\n const transitionendHandler = () => {\r\n tooltip.classList.add('hidden');\r\n if (appendTo.contains(tooltip)) {\r\n appendTo.removeChild(tooltip);\r\n }\r\n if (cleanup) cleanup();\r\n if (closed) closed();\r\n };\r\n\r\n const openTooltip = (force: boolean = false) => {\r\n if (closeTimer) clearTimeout(closeTimer);\r\n\r\n showTimer = setTimeout(() => {\r\n if (onOpen) {\r\n const allow = onOpen(force);\r\n if (!force && allow) return;\r\n }\r\n appendTo.appendChild(tooltip);\r\n tooltip.removeEventListener('transitionend', transitionendHandler);\r\n tooltip.classList.remove('hidden');\r\n\r\n cleanup = autoUpdate(target, tooltip, update);\r\n\r\n tooltip.classList.remove('transparent');\r\n }, delay);\r\n };\r\n const closeTooltip = (force: boolean = false) => {\r\n if (showTimer) clearTimeout(showTimer);\r\n closeTimer = setTimeout(() => {\r\n if (onClose) {\r\n const allow = onClose(force);\r\n if (!force && allow) return;\r\n }\r\n handleIfTransitionend(tooltip, 150, transitionendHandler, { once: true });\r\n tooltip.classList.add('transparent');\r\n }, delay);\r\n };\r\n\r\n const hoverDisplay = () => {\r\n const eventListeners = [target, tooltip];\r\n const close = closeTooltip.bind(undefined, false);\r\n const open = openTooltip.bind(undefined, false);\r\n const prepare = () => {\r\n for (const listener of eventListeners) {\r\n listener.addEventListener('mouseenter', open);\r\n listener.addEventListener('mouseleave', close);\r\n }\r\n };\r\n return {\r\n prepare,\r\n show: openTooltip,\r\n hide: closeTooltip,\r\n destroy: () => {\r\n for (const listener of eventListeners) {\r\n listener.removeEventListener('mouseenter', open);\r\n listener.removeEventListener('mouseleave', close);\r\n }\r\n },\r\n };\r\n };\r\n const clickDisplay = () => {\r\n const close = (e: MouseEvent) => {\r\n e.stopPropagation();\r\n closeTooltip(false);\r\n };\r\n const show = (e: MouseEvent) => {\r\n e.stopPropagation();\r\n openTooltip();\r\n document.removeEventListener('click', close);\r\n document.addEventListener('click', close, { once: true });\r\n };\r\n return {\r\n prepare: () => {\r\n tooltip.addEventListener('click', (e: Event) => e.stopPropagation());\r\n target.addEventListener('click', show);\r\n },\r\n show: openTooltip,\r\n hide: (force: boolean = false) => {\r\n closeTooltip(force);\r\n document.removeEventListener('click', close);\r\n },\r\n destroy: () => {\r\n target.removeEventListener('click', show);\r\n document.removeEventListener('click', close);\r\n },\r\n };\r\n };\r\n const displayMethods = {\r\n hover: hoverDisplay,\r\n click: clickDisplay,\r\n };\r\n\r\n const { prepare, show, hide, destroy: destroyDisplay } = displayMethods[type]();\r\n prepare();\r\n\r\n const destroy = () => {\r\n hide(true);\r\n if (onDestroy) onDestroy();\r\n destroyDisplay();\r\n if (cleanup) cleanup();\r\n tooltip.remove();\r\n };\r\n return {\r\n show,\r\n hide,\r\n destroy,\r\n };\r\n }\r\n return null;\r\n}\r\n","import type { RelactiveRect } from './types';\r\n\r\nexport function isRectanglesIntersect<T extends Omit<RelactiveRect, 'width' | 'height'>>(a: T, b: T, tolerance = 0, edgeJudge: boolean = true) {\r\n const { x: minAx, y: minAy, x1: maxAx, y1: maxAy } = a;\r\n const { x: minBx, y: minBy, x1: maxBx, y1: maxBy } = b;\r\n\r\n let notOverlapX;\r\n let notOverlapY;\r\n if (edgeJudge) {\r\n notOverlapX = maxAx < minBx + tolerance || minAx - tolerance > maxBx;\r\n notOverlapY = maxAy < minBy + tolerance || minAy - tolerance > maxBy;\r\n }\r\n else {\r\n notOverlapX = maxAx <= minBx + tolerance || minAx - tolerance >= maxBx;\r\n notOverlapY = maxAy <= minBy + tolerance || minAy - tolerance >= maxBy;\r\n }\r\n return !(notOverlapX || notOverlapY);\r\n}\r\n\r\nexport function getRelativeRect(targetRect: Omit<RelactiveRect, 'x1' | 'y1'>, container: HTMLElement): RelactiveRect {\r\n const containerRect = container.getBoundingClientRect();\r\n return {\r\n x: targetRect.x - containerRect.x - container.scrollLeft,\r\n y: targetRect.y - containerRect.y - container.scrollTop,\r\n x1: targetRect.x - containerRect.x - container.scrollLeft + targetRect.width,\r\n y1: targetRect.y - containerRect.y - container.scrollTop + targetRect.height,\r\n width: targetRect.width,\r\n height: targetRect.height,\r\n };\r\n}\r\n\r\nconst viewportPadding = 8;\r\nexport function limitDomInViewPort(rect: { left: number; top: number; width: number; height: number }) {\r\n let { left, top, width, height } = rect;\r\n const { clientWidth, clientHeight } = document.documentElement;\r\n let leftLimited = false;\r\n let topLimited = false;\r\n if (left + width > clientWidth) {\r\n left = clientWidth - width - viewportPadding;\r\n leftLimited = true;\r\n }\r\n else if (left < 0) {\r\n left = viewportPadding;\r\n leftLimited = true;\r\n }\r\n if (top + height > clientHeight) {\r\n top = clientHeight - height - viewportPadding;\r\n topLimited = true;\r\n }\r\n else if (top < 0) {\r\n top = viewportPadding;\r\n topLimited = true;\r\n }\r\n return {\r\n left,\r\n top,\r\n leftLimited,\r\n topLimited,\r\n };\r\n}\r\n","export interface CreateResizeObserverOptions {\r\n ignoreFirstBind: boolean;\r\n}\r\nexport function createResizeObserver(callback: (entries: ResizeObserverEntry[]) => void, options: Partial<CreateResizeObserverOptions> = {}) {\r\n const ignoreFirstBindSymbol = Symbol('ignoreFirstBind');\r\n type ResizeObserveTarget = Element & { [ignoreFirstBindSymbol]?: boolean };\r\n const observeEls: Set<ResizeObserveTarget> = new Set();\r\n const observer = new ResizeObserver((entries) => {\r\n // prevent when element first bind\r\n if (\r\n options.ignoreFirstBind\r\n && entries.some((entry) => {\r\n const target = entry.target as ResizeObserveTarget;\r\n const originVal = target[ignoreFirstBindSymbol];\r\n target[ignoreFirstBindSymbol] = true;\r\n return !originVal;\r\n })\r\n ) {\r\n return;\r\n }\r\n callback(entries);\r\n });\r\n const originObserve = observer.observe;\r\n observer.observe = (target: ResizeObserveTarget, options?: ResizeObserverOptions) => {\r\n observeEls.add(target);\r\n originObserve.call(observer, target, options);\r\n };\r\n\r\n const originUnobserve = observer.unobserve;\r\n observer.unobserve = (target: ResizeObserveTarget) => {\r\n if (observeEls.has(target)) {\r\n observeEls.delete(target);\r\n target[ignoreFirstBindSymbol] = undefined;\r\n }\r\n originUnobserve.call(observer, target);\r\n };\r\n\r\n const originDisconnect = observer.disconnect;\r\n observer.disconnect = () => {\r\n for (const target of observeEls.values()) {\r\n target[ignoreFirstBindSymbol] = undefined;\r\n }\r\n originDisconnect.call(observer);\r\n };\r\n\r\n return observer;\r\n}\r\n","interface ScrollHandle {\r\n scrollHandler: [HTMLElement, (e: Event) => void][];\r\n}\r\nexport function addScrollEvent(this: ScrollHandle, dom: HTMLElement, handle: (e: Event) => void) {\r\n dom.addEventListener('scroll', handle);\r\n this.scrollHandler.push([dom, handle]);\r\n}\r\n\r\nexport function clearScrollEvent(this: ScrollHandle) {\r\n for (let i = 0; i < this.scrollHandler.length; i++) {\r\n const [dom, handle] = this.scrollHandler[i];\r\n dom.removeEventListener('scroll', handle);\r\n }\r\n this.scrollHandler = [];\r\n}\r\n","export function cssTextToObject(cssText: string): Record<string, string> {\r\n const styleObject: Record<string, string> = {};\r\n\r\n const styles = cssText.trim().split(';');\r\n\r\n for (let i = 0; i < styles.length; i++) {\r\n const style = styles[i].trim();\r\n if (!style) continue;\r\n\r\n const colonPosition = style.indexOf(':');\r\n if (colonPosition === -1) continue;\r\n\r\n const property = style.slice(0, Math.max(0, colonPosition)).trim();\r\n const value = style.slice(Math.max(0, colonPosition + 1)).trim();\r\n styleObject[toCamelCase(property)] = value;\r\n }\r\n\r\n return styleObject;\r\n}\r\nexport function objectToCssText(obj: Record<string, any>): string {\r\n return Object.entries(obj)\r\n .map(([key, value]) => `${toKebabCase(key)}: ${value};`)\r\n .join(' ');\r\n}\r\n\r\nexport function toKebabCase(key: string) {\r\n const result = key.replaceAll(/([A-Z])/g, ' $1').trim();\r\n return result.split(' ').join('-').toLowerCase();\r\n}\r\n\r\nexport function toCamelCase(key: string) {\r\n return key.replaceAll(/-(\\w)/g, (all, letter) => {\r\n return letter.toUpperCase();\r\n });\r\n}\r\n","export const randomId = () => Math.random().toString(36).slice(2);\r\nexport function debounce<T extends (...args: any[]) => any>(fn: T, delay: number) {\r\n let timestamp: ReturnType<typeof setTimeout>;\r\n return function (this: any, ...args: Parameters<T>) {\r\n if (timestamp) {\r\n clearTimeout(timestamp);\r\n }\r\n timestamp = setTimeout(() => {\r\n fn.apply(this, args);\r\n }, delay);\r\n };\r\n}\r\n","import type { Parchment as TypeParchment } from 'quill';\r\nimport Quill from 'quill';\r\nimport { blotName } from '../utils';\r\n\r\nconst Parchment = Quill.import('parchment');\r\nconst Container = Quill.import('blots/container') as typeof TypeParchment.ContainerBlot;\r\nconst Block = Quill.import('blots/block') as TypeParchment.BlotConstructor;\r\nconst BlockEmbed = Quill.import('blots/block/embed') as TypeParchment.BlotConstructor;\r\n\r\nexport class ContainerFormat extends Container {\r\n static tagName: string;\r\n static blotName: string = blotName.container;\r\n static scope = Parchment.Scope.BLOCK_BLOT;\r\n\r\n static allowedChildren?: TypeParchment.BlotConstructor[] = [Block, BlockEmbed, Container];\r\n static requiredContainer: TypeParchment.BlotConstructor;\r\n static defaultChild?: TypeParchment.BlotConstructor;\r\n\r\n static create(_value?: unknown) {\r\n const node = document.createElement(this.tagName);\r\n if (this.className) {\r\n node.classList.add(this.className);\r\n }\r\n return node;\r\n }\r\n\r\n public optimize(_context: Record<string, any>) {\r\n if (this.children.length === 0) {\r\n if (this.statics.defaultChild != null) {\r\n const child = this.scroll.create(this.statics.defaultChild.blotName);\r\n this.appendChild(child);\r\n }\r\n else {\r\n this.remove();\r\n }\r\n }\r\n\r\n if (this.children.length > 0 && this.next != null && this.checkMerge()) {\r\n this.next.moveChildren(this);\r\n this.next.remove();\r\n }\r\n }\r\n\r\n public enforceAllowedChildren(): void {\r\n // the origin `enforceAllowedChildren` only unwrap the first block\r\n // remove flag `done`. all block format in table container need be unwrap\r\n\r\n // eslint-disable-next-line unicorn/no-array-for-each\r\n this.children.forEach((child: TypeParchment.Blot) => {\r\n const allowed = this.statics.allowedChildren.some(\r\n (def: TypeParchment.BlotConstructor) => child instanceof def,\r\n );\r\n if (allowed) {\r\n return;\r\n }\r\n if (child.statics.scope === Parchment.Scope.BLOCK_BLOT) {\r\n // only child is in table format need keep split blot. else use the origin method\r\n if (child.parent instanceof ContainerFormat) {\r\n if (child.next != null) {\r\n child.parent.splitAfter(child);\r\n }\r\n if (child.prev != null) {\r\n child.parent.splitAfter(child.prev);\r\n }\r\n }\r\n else {\r\n if (child.next != null) {\r\n this.splitAfter(child);\r\n }\r\n if (child.prev != null) {\r\n this.splitAfter(child.prev);\r\n }\r\n }\r\n child.parent.unwrap();\r\n }\r\n else if (child instanceof Parchment.ParentBlot) {\r\n child.unwrap();\r\n }\r\n else {\r\n child.remove();\r\n }\r\n });\r\n }\r\n}\r\n","import { isValidCellspan } from '../utils';\r\n\r\nexport const getValidCellspan = (value: unknown) => isValidCellspan(value) ? value : 1;\r\n","import type { Parchment as TypeParchment } from 'quill';\nimport type TypeBlock from 'quill/blots/block';\nimport type TypeScroll from 'quill/blots/scroll';\nimport type { TableCellValue } from '../utils';\nimport type { TableCellFormat } from './table-cell-format';\nimport Quill from 'quill';\nimport { blotName, cssTextToObject, findParentBlot, findParentBlots } from '../utils';\nimport { ContainerFormat } from './container-format';\nimport { getValidCellspan } from './utils';\n\nconst Block = Quill.import('blots/block') as TypeParchment.BlotConstructor;\nconst BlockEmbed = Quill.import('blots/block/embed') as TypeParchment.BlotConstructor;\n\nexport class TableCellInnerFormat extends ContainerFormat {\n static blotName = blotName.tableCellInner;\n static tagName = 'div';\n static className = 'ql-table-cell-inner';\n static allowDataAttrs: Set<string> = new Set(['table-id', 'row-id', 'col-id', 'rowspan', 'colspan']);\n static defaultChild: TypeParchment.BlotConstructor = Block;\n declare parent: TableCellFormat;\n // keep `isAllowStyle` and `allowStyle` same with TableCellFormat\n static allowStyle = new Set(['background-color', 'border', 'height']);\n static isAllowStyle(str: string): boolean {\n for (const style of this.allowStyle) {\n if (str.startsWith(style)) {\n return true;\n }\n }\n return false;\n }\n\n static create(value: TableCellValue) {\n const {\n tableId,\n rowId,\n colId,\n rowspan,\n colspan,\n style,\n } = value;\n const node = super.create() as HTMLElement;\n node.dataset.tableId = tableId;\n node.dataset.rowId = rowId;\n node.dataset.colId = colId;\n node.dataset.rowspan = String(getValidCellspan(rowspan));\n node.dataset.colspan = String(getValidCellspan(colspan));\n style && (node.dataset.style = style);\n return node;\n }\n\n static formats(domNode: HTMLElement) {\n const { tableId, rowId, colId, rowspan, colspan, style } = domNode.dataset;\n const value: Record<string, any> = {\n tableId: String(tableId),\n rowId: String(rowId),\n colId: String(colId),\n rowspan: Number(getValidCellspan(rowspan)),\n colspan: Number(getValidCellspan(colspan)),\n };\n style && (value.style = style);\n return value;\n }\n\n constructor(scroll: TypeScroll, domNode: HTMLElement, _value: TableCellValue) {\n super(scroll, domNode);\n domNode.setAttribute('contenteditable', String(scroll.isEnabled()));\n }\n\n setFormatValue(name: string, value: any, isStyle: boolean = false) {\n if (isStyle) {\n if (!this.statics.isAllowStyle(name)) return;\n if (this.parent && this.parent.statics.blotName === blotName.tableCell) {\n this.parent.setFormatValue(name, value);\n }\n }\n else {\n if (!this.statics.allowDataAttrs.has(name)) return;\n const attrName = `data-${name}`;\n if (value) {\n this.domNode.setAttribute(attrName, value);\n }\n else {\n this.domNode.removeAttribute(attrName);\n }\n if (this.parent && this.parent.statics.blotName === blotName.tableCell) {\n this.parent.setFormatValue(name, value);\n }\n }\n\n const blocks = this.descendants(Block, 0);\n for (const child of blocks) {\n (child as TypeBlock).cache = {};\n }\n }\n\n get tableId() {\n return this.domNode.dataset.tableId!;\n }\n\n get rowId() {\n return this.domNode.dataset.rowId!;\n }\n\n set rowId(value) {\n this.setFormatValue('row-id', value);\n }\n\n get colId() {\n return this.domNode.dataset.colId!;\n }\n\n set colId(value) {\n this.setFormatValue('col-id', value);\n }\n\n get rowspan() {\n return Number(this.domNode.dataset.rowspan);\n }\n\n set rowspan(value: number) {\n this.setFormatValue('rowspan', value);\n }\n\n get colspan() {\n return Number(this.domNode.dataset.colspan);\n }\n\n set colspan(value: number) {\n this.setFormatValue('colspan', value);\n }\n\n getColumnIndex() {\n const table = findParentBlot(this, blotName.tableMain);\n return table.getColIds().indexOf(this.colId);\n }\n\n formatAt(index: number, length: number, name: string, value: any) {\n if (this.children.length === 0) {\n this.appendChild(this.scroll.create(this.statics.defaultChild.blotName));\n // block min length is 1\n length += 1;\n }\n super.formatAt(index, length, name, value);\n // set style for `td`\n if (value && value.style) {\n const style = cssTextToObject(value.style);\n for (const [name, value] of Object.entries(style)) {\n this.setFormatValue(name, value, true);\n }\n }\n }\n\n insertAt(index: number, value: string, def?: any): void {\n const [child] = this.children.find(index);\n // always keep TableCellInner not empty\n if (!child && this.statics.defaultChild) {\n const defaultChild = this.scroll.create(this.statics.defaultChild.blotName || 'block');\n this.appendChild(defaultChild);\n }\n super.insertAt(index, value, def);\n }\n\n formats(): Record<string, any> {\n const value = this.statics.formats(this.domNode);\n return {\n [this.statics.blotName]: value,\n };\n }\n\n checkMerge(): boolean {\n const { colId, rowId, colspan, rowspan } = this;\n const next = this.next as TableCellInnerFormat;\n return (\n next !== null\n && next.statics.blotName === this.statics.blotName\n && next.rowId === rowId\n && next.colId === colId\n && next.colspan === colspan\n && next.rowspan === rowspan\n );\n }\n\n optimize() {\n const parent = this.parent;\n const blotValue = this.statics.formats(this.domNode);\n // handle BlockEmbed to insert tableCellInner when setContents\n if (this.prev && this.prev instanceof BlockEmbed) {\n const afterBlock = this.scroll.create('block');\n this.appendChild(this.prev);\n this.appendChild(afterBlock);\n }\n if (parent !== null && parent.statics.blotName !== blotName.tableCell) {\n this.wrap(blotName.tableCell, blotValue);\n // when insert delta like: [ { attributes: { 'table-up-cell-inner': { ... } }, insert: '\\n' }, { attributes: { 'table-up-cell-inner': { ... } }, insert: '\\n' }, ...]\n // that delta will create dom like: <td><div></div></td>... . that means TableCellInner will be an empty cell without 'block'\n // in this case, a 'block' should to inserted to makesure that the cell will not be remove\n if (this.children.length === 0) {\n const child = this.scroll.create(this.statics.defaultChild.blotName);\n this.appendChild(child);\n }\n }\n\n if (this.children.length > 0 && this.next != null && this.checkMerge()) {\n this.next.moveChildren(this);\n this.next.remove();\n }\n // TODO: uiNode not test, maybe have bug\n if (this.uiNode != null && this.uiNode !== this.domNode.firstChild) {\n this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\n }\n // this is necessary when redo or undo. else will delete or insert wrong index\n if (this.children.length === 0) {\n // if cellInner doesn't have child then remove it. not insert a block\n this.remove();\n }\n }\n\n insertBefore(blot: TypeParchment.Blot, ref?: TypeParchment.Blot | null) {\n if (blot.statics.blotName === this.statics.blotName) {\n const cellInnerBlot = blot as TableCellInnerFormat;\n const cellInnerBlotValue = this.statics.formats(cellInnerBlot.domNode);\n const selfValue = this.statics.formats(this.domNode);\n const isSame = Object.entries(selfValue).every(([key, value]) => value === cellInnerBlotValue[key]);\n\n if (!isSame) {\n const [selfRow, selfCell] = findParentBlots(this, [blotName.tableRow, blotName.tableCell] as const);\n // split current cellInner\n if (ref) {\n const index = ref.offset();\n const length = this.length();\n if (index + 1 < length) {\n const newCellInner = this.scroll.create(blotName.tableCellInner, selfValue) as TypeParchment.Parent;\n this.children.forEachAt(index + 1, this.length(), (block) => {\n newCellInner.appendChild(block);\n });\n selfRow.insertBefore(newCellInner.wrap(blotName.tableCell, selfValue), selfCell.next);\n\n if (this.children.length === 0) {\n this.remove();\n if (this.parent.children.length === 0) {\n this.parent.remove();\n }\n }\n }\n }\n // different rowId. split current row. move lines which after ref to next row\n if (this.rowId !== cellInnerBlot.rowId) {\n if (ref) {\n const index = ref.offset(selfRow);\n selfRow.split(index);\n }\n else if (selfCell.next) {\n const index = selfCell.next.offset(selfRow);\n selfRow.split(index);\n }\n const row = this.scroll.create(blotName.tableRow, cellInnerBlotValue) as TypeParchment.Parent;\n const cell = this.scroll.create(blotName.tableCell, cellInnerBlotValue) as TypeParchment.Parent;\n cell.appendChild(cellInnerBlot);\n row.appendChild(cell);\n return selfRow.parent.insertBefore(row, selfRow.next);\n }\n return selfRow.insertBefore(\n cellInnerBlot.wrap(blotName.tableCell, cellInnerBlotValue),\n ref ? selfCell : selfCell.next,\n );\n }\n else {\n return this.parent.insertBefore(cellInnerBlot, this.next);\n }\n }\n else if (blot.statics.blotName === blotName.tableCol) {\n try {\n const bodyBlot = findParentBlot(this, blotName.tableBody);\n const index = this.offset(bodyBlot);\n const next = bodyBlot.split(index);\n bodyBlot.parent.insertBefore(blot, next);\n blot.optimize({});\n }\n catch {\n // here should not trigger\n console.warn('TableCellInner not in TableBody');\n }\n return;\n }\n super.insertBefore(blot, ref);\n }\n}\n","import type { Parchment as TypeParchment } from 'quill';\r\nimport type { TableCellValue, TableRowValue } from '../utils';\r\nimport type { TableCellFormat } from './table-cell-format';\r\nimport { blotName, findParentBlot } from '../utils';\r\nimport { ContainerFormat } from './container-format';\r\nimport { TableCellInnerFormat } from './table-cell-inner-format';\r\n\r\nexport type SkipRowCount = number[] & { skipRowNum?: number };\r\nexport class TableRowFormat extends ContainerFormat {\r\n static blotName = blotName.tableRow;\r\n static tagName = 'tr';\r\n static className = 'ql-table-row';\r\n\r\n static create(value: TableRowValue) {\r\n const node = super.create() as HTMLElement;\r\n node.dataset.tableId = value.tableId;\r\n node.dataset.rowId = value.rowId;\r\n return node;\r\n }\r\n\r\n declare children: TypeParchment.LinkedList<TableCellFormat>;\r\n\r\n get rowId() {\r\n return this.domNode.dataset.rowId!;\r\n }\r\n\r\n get tableId() {\r\n return this.domNode.dataset.tableId!;\r\n }\r\n\r\n setHeight(value: string) {\r\n this.foreachCellInner((cellInner) => {\r\n cellInner.setFormatValue('height', value, true);\r\n });\r\n }\r\n\r\n getCellByColId(colId: string, direction: 'next' | 'prev'): TableCellFormat | null {\r\n const tableMain = findParentBlot(this, blotName.tableMain);\r\n const colIds = tableMain.getColIds();\r\n const targetIndex = colIds.indexOf(colId);\r\n const next = this.children.iterator();\r\n let cur: null | TableCellFormat = null;\r\n while ((cur = next())) {\r\n if (cur.colId === colId) {\r\n return cur;\r\n }\r\n const curIndex = colIds.indexOf(cur.colId);\r\n if (curIndex < targetIndex && curIndex + cur.colspan > targetIndex) {\r\n return cur;\r\n }\r\n }\r\n // Not found in current row. Means cell is rowspan. Find in prev or next row.\r\n if (this[direction] && this[direction]!.statics.blotName === blotName.tableRow) {\r\n return (this[direction] as TableRowFormat).getCellByColId(colId, direction);\r\n }\r\n return null;\r\n }\r\n\r\n // insert cell at index\r\n // return the minus skip column number\r\n // [2, 3]. means next line should skip 2 columns. next next line skip 3 columns\r\n insertCell(targetIndex: number, value: TableCellValue) {\r\n const skip: SkipRowCount = [];\r\n const next = this.children.iterator();\r\n let index = 0;\r\n let cur;\r\n while ((cur = next())) {\r\n index += cur.colspan;\r\n if (index > targetIndex) break;\r\n if (cur.rowspan !== 1) {\r\n for (let i = 0; i < cur.rowspan - 1; i++) {\r\n skip[i] = (skip[i] || 0) + cur.colspan;\r\n }\r\n }\r\n }\r\n\r\n if (cur && index - cur.colspan < targetIndex) {\r\n const tableCell = cur.getCellInner();\r\n tableCell.colspan += 1;\r\n if (cur.rowspan !== 1) {\r\n skip.skipRowNum = cur.rowspan - 1;\r\n }\r\n }\r\n else {\r\n const tableCell = this.scroll.create(blotName.tableCell, value) as ContainerFormat;\r\n const tableCellInner = this.scroll.create(blotName.tableCellInner, value) as ContainerFormat;\r\n const block = this.scroll.create('block') as TypeParchment.BlockBlot;\r\n block.appendChild(this.scroll.create('break'));\r\n tableCellInner.appendChild(block);\r\n tableCell.appendChild(tableCellInner);\r\n this.insertBefore(tableCell, cur);\r\n }\r\n return skip;\r\n }\r\n\r\n getCellByColumIndex(stopIndex: number): [null | TableCellFormat, number, number[]] {\r\n const skip: number[] = [];\r\n let cur: null | TableCellFormat = null;\r\n let cellEndIndex = 0;\r\n if (stopIndex < 0) return [cur, cellEndIndex, skip];\r\n const next = this.children.iterator();\r\n while ((cur = next())) {\r\n cellEndIndex += cur.colspan;\r\n if (cur.rowspan !== 1) {\r\n for (let i = 0; i < cur.rowspan - 1; i++) {\r\n skip[i] = (skip[i] || 0) + cur.colspan;\r\n }\r\n }\r\n if (cellEndIndex > stopIndex) break;\r\n }\r\n return [cur, cellEndIndex, skip];\r\n }\r\n\r\n removeCell(targetIndex: number): SkipRowCount {\r\n if (targetIndex < 0) return [];\r\n const columnIndexData = this.getCellByColumIndex(targetIndex);\r\n const [cur, index] = columnIndexData;\r\n const skip: SkipRowCount = columnIndexData[2];\r\n if (!cur) return skip;\r\n if (index - cur.colspan < targetIndex || cur.colspan > 1) {\r\n const [tableCell] = cur.descendants(TableCellInnerFormat);\r\n\r\n if (cur.colspan !== 1 && targetIndex === index - cur.colspan) {\r\n // if delete index is cell start index. update cell colId to next colId\r\n const tableBlot = findParentBlot(this, blotName.tableMain);\r\n const colIds = tableBlot.getColIds();\r\n tableCell.colId = colIds[colIds.indexOf(tableCell.colId) + 1];\r\n }\r\n if (cur.rowspan !== 1) {\r\n skip.skipRowNum = cur.rowspan - 1;\r\n }\r\n\r\n tableCell.colspan -= 1;\r\n }\r\n else {\r\n cur.remove();\r\n }\r\n return skip;\r\n }\r\n\r\n foreachCellInner(func: (tableCell: TableCellInnerFormat, index: number) => boolean | void) {\r\n const next = this.children.iterator();\r\n let i = 0;\r\n let cur: TableCellFormat | null;\r\n while ((cur = next())) {\r\n const [tableCell] = cur.descendants(TableCellInnerFormat);\r\n if (func(tableCell, i++)) break;\r\n }\r\n }\r\n\r\n checkMerge(): boolean {\r\n const next = this.next as TableRowFormat;\r\n return (\r\n next !== null\r\n && next.statics.blotName === this.statics.blotName\r\n && next.rowId === this.rowId\r\n );\r\n }\r\n\r\n optimize(context: Record<string, any>) {\r\n const parent = this.parent;\r\n const { tableId } = this;\r\n if (parent !== null && parent.statics.blotName !== blotName.tableBody) {\r\n this.wrap(blotName.tableBody, tableId);\r\n }\r\n\r\n super.optimize(context);\r\n }\r\n}\r\n","import { blotName, findParentBlot, randomId } from '../utils';\r\nimport { ContainerFormat } from './container-format';\r\nimport { TableRowFormat } from './table-row-format';\r\n\r\nexport class TableBodyFormat extends ContainerFormat {\r\n static blotName = blotName.tableBody;\r\n static tagName = 'tbody';\r\n\r\n static create(value: string) {\r\n const node = super.create() as HTMLElement;\r\n node.dataset.tableId = value;\r\n return node;\r\n }\r\n\r\n get tableId() {\r\n return this.domNode.dataset.tableId!;\r\n }\r\n\r\n // insert row at index\r\n insertRow(targetIndex: number) {\r\n const tableBlot = findParentBlot(this, blotName.tableMain);\r\n if (!tableBlot) return;\r\n // get all column id. exclude the columns of the target index row with rowspan\r\n const colIds = tableBlot.getColIds();\r\n const rows = this.descendants(TableRowFormat);\r\n const insertColIds = new Set(colIds);\r\n let index = 0;\r\n for (const row of rows) {\r\n if (index === targetIndex) break;\r\n row.foreachCellInner((cell) => {\r\n if (index + cell.rowspan > targetIndex) {\r\n cell.rowspan += 1;\r\n insertColIds.delete(cell.colId);\r\n // colspan cell need remove all includes colId\r\n if (cell.colspan !== 1) {\r\n const colIndex = colIds.indexOf(cell.colId);\r\n for (let i = 0; i < cell.colspan - 1; i++) {\r\n insertColIds.delete(colIds[colIndex + i + 1]);\r\n }\r\n }\r\n }\r\n });\r\n index += 1;\r\n }\r\n // append new row\r\n const tableId = tableBlot.tableId;\r\n const rowId = randomId();\r\n const tableRow = this.scroll.create(blotName.tableRow, {\r\n tableId,\r\n rowId,\r\n }) as ContainerFormat;\r\n for (const colId of insertColIds) {\r\n const breakBlot = this.scroll.create('break');\r\n const block = breakBlot.wrap('block');\r\n const tableCellInner = block.wrap(blotName.tableCellInner, {\r\n tableId,\r\n rowId,\r\n colId,\r\n rowspan: 1,\r\n colspan: 1,\r\n });\r\n const tableCell = tableCellInner.wrap(blotName.tableCell, {\r\n tableId,\r\n rowId,\r\n colId,\r\n rowspan: 1,\r\n colspan: 1,\r\n });\r\n tableRow.appendChild(tableCell);\r\n }\r\n this.insertBefore(tableRow, rows[targetIndex] || null);\r\n }\r\n\r\n checkMerge(): boolean {\r\n const next = this.next as TableBodyFormat;\r\n return (\r\n next !== null\r\n && next.statics.blotName === this.statics.blotName\r\n && next.tableId === this.tableId\r\n );\r\n }\r\n\r\n optimize(context: Record<string, any>) {\r\n const parent = this.parent;\r\n if (parent !== null && parent.statics.blotName !== blotName.tableMain) {\r\n const { tableId } = this;\r\n this.wrap(blotName.tableMain, { tableId });\r\n }\r\n\r\n super.optimize(context);\r\n }\r\n}\r\n","import type { Parchment as TypeParchment } from 'quill';\r\nimport type TypeBlock from 'quill/blots/block';\r\nimport Quill from 'quill';\r\nimport { blotName, findParentBlot } from '../../utils';\r\n\r\nconst Parchment = Quill.import('parchment');\r\nconst Block = Quill.import('blots/block') as typeof TypeBlock;\r\n\r\nexport class BlockOverride extends Block {\r\n replaceWith(name: string | TypeParchment.Blot, value?: any): TypeParchment.Blot {\r\n const replacement = typeof name === 'string' ? this.scroll.create(name, value) : name;\r\n if (replacement instanceof Parchment.ParentBlot) {\r\n // replace block to TableCellInner length is 0 when setContents\r\n // that will set text direct in TableCellInner but not in block\r\n // so we need to set text in block and block in TableCellInner\r\n // wrap with TableCellInner.formatAt when length is 0 will create a new block\r\n // that can make sure TableCellInner struct correctly\r\n if (replacement.statics.blotName === blotName.tableCellInner) {\r\n const selfParent = this.parent;\r\n if (selfParent.statics.blotName === blotName.tableCellInner) {\r\n if (selfParent != null) {\r\n selfParent.insertBefore(replacement, this.prev ? null : this.next);\r\n }\r\n if (selfParent.statics.blotName === blotName.tableCellInner) {\r\n let block: TypeBlock | null = this;\r\n while (block) {\r\n const next = block.next as TypeBlock | null;\r\n replacement.appendChild(block);\r\n block = next;\r\n }\r\n }\r\n else {\r\n replacement.appendChild(this);\r\n }\r\n // remove empty cell. tableCellFormat.optimize need col to compute\r\n if (selfParent && selfParent.length() === 0) {\r\n selfParent.remove();\r\n if (selfParent.parent.statics.blotName === blotName.tableCell && selfParent.parent.length() === 0) {\r\n selfParent.parent.remove();\r\n }\r\n const selfRow = selfParent.parent.parent;\r\n if (selfRow.statics.blotName === blotName.tableRow && selfRow.children.length === 0) {\r\n selfRow.remove();\r\n }\r\n }\r\n }\r\n else {\r\n if (selfParent != null) {\r\n selfParent.insertBefore(replacement, this.next);\r\n }\r\n replacement.appendChild(this);\r\n }\r\n return replacement;\r\n }\r\n else {\r\n this.moveChildren(replacement);\r\n }\r\n }\r\n if (this.parent != null) {\r\n this.parent.insertBefore(replacement, this.next || undefined);\r\n this.remove();\r\n }\r\n this.attributes.copy(replacement as TypeParchment.BlockBlot);\r\n return replacement;\r\n }\r\n\r\n format(name: string, value: any): void {\r\n if (name === blotName.tableCellInner && this.parent.statics.blotName === name && !value) {\r\n try {\r\n const cellInner = findParentBlot(this, blotName.tableCellInner);\r\n cellInner.unwrap();\r\n }\r\n catch {\r\n console.error('unwrap TableCellInner error');\r\n }\r\n }\r\n else {\r\n super.format(name, value);\r\n }\r\n }\r\n}\r\n","import type { Parchment as TypeParchment } from 'quill';\r\nimport type { TableCaptionFormat } from '../table-caption-format';\r\nimport Quill from 'quill';\r\nimport { blotName } from '../../utils';\r\nimport { TableCellInnerFormat } from '../table-cell-inner-format';\r\n\r\nconst Parchment = Quill.import('parchment');\r\n// createBlock is private. can't use type `Scroll`\r\nconst ScrollBlot = Quill.import('blots/scroll') as any;\r\n\r\nexport class ScrollOverride extends ScrollBlot {\r\n declare domNode: HTMLElement;\r\n enable(enabled = true) {\r\n // `TableWrapper` is not editable. Beacuse we don't want the cursor to be at the end or beginning of the same line as the table\r\n // This hack is to make the table cell should not editable when quill is diabled\r\n const tableCellInnerFormat = Quill.import(`formats/${blotName.tableCellInner}`) as typeof TableCellInnerFormat;\r\n const inners = this.domNode.querySelectorAll(`.${tableCellInnerFormat.className}`);\r\n for (const inner of Array.from(inners)) {\r\n inner.setAttribute('contenteditable', String(!!enabled));\r\n }\r\n const tableCaptionFormat = Quill.import(`formats/${blotName.tableCaption}`) as typeof TableCaptionFormat;\r\n const tableCaption = this.domNode.querySelectorAll(`.${tableCaptionFormat.className}`);\r\n for (const caption of Array.from(tableCaption)) {\r\n caption.setAttribute('contenteditable', String(!!enabled));\r\n }\r\n super.enable(enabled);\r\n }\r\n\r\n createBlock(attributes: Record<string, any>, refBlot?: TypeParchment.Blot) {\r\n let createBlotName: string | undefined;\r\n let formats: Record<string, any> = {};\r\n if (attributes[blotName.tableCellInner]) {\r\n createBlotName = blotName.tableCellInner;\r\n }\r\n else {\r\n // if attributes have not only one block blot. will save last. that will conflict with list/header in tableCellInner\r\n for (const [key, value] of Object.entries(attributes)) {\r\n const isBlockBlot = this.query(key, Parchment.Scope.BLOCK & Parchment.Scope.BLOT) != null;\r\n if (isBlockBlot) {\r\n createBlotName = key;\r\n }\r\n else {\r\n formats[key] = value;\r\n }\r\n }\r\n }\r\n // only add this judgement to merge block blot at table cell\r\n if (createBlotName === blotName.tableCellInner) {\r\n formats = { ...attributes };\r\n delete formats[createBlotName];\r\n }\r\n\r\n const block = this.create(\r\n createBlotName || this.statics.defaultChild.blotName,\r\n createBlotName ? attributes[createBlotName] : undefined,\r\n ) as TypeParchment.ParentBlot;\r\n\r\n this.insertBefore(block, refBlot || undefined);\r\n\r\n let length = block.length();\r\n if (block instanceof TableCellInnerFormat && length === 0) {\r\n length += 1;\r\n }\r\n for (const [key, value] of Object.entries(formats)) {\r\n block.formatAt(0, length, key, value);\r\n }\r\n\r\n return block;\r\n }\r\n}\r\n","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\r\\n <!-- Icon from Tabler Icons by Paweł Kuna - https://github.com/tabler/tabler-icons/blob/master/LICENSE -->\\r\\n <path\\r\\n fill=\\\"none\\\"\\r\\n stroke=\\\"currentColor\\\"\\r\\n stroke-linecap=\\\"round\\\"\\r\\n stroke-linejoin=\\\"round\\\"\\r\\n stroke-width=\\\"2\\\"\\r\\n d=\\\"M7 3v18m3-15L7 3L4 6m16 12l-3 3l-3-3m3 3V3\\\"\\r\\n />\\r\\n</svg>\\r\\n\"","import type { Parchment as TypeParchment } from 'quill';\r\nimport type TypeInline from 'quill/blots/inline';\r\nimport type TypeScroll from 'quill/blots/scroll';\r\nimport type TypeText from 'quill/blots/text';\r\nimport type { TableCaptionValue } from '../utils';\r\nimport Quill from 'quill';\r\nimport ArrowUpDown from '../svg/arrow-up-down.svg';\r\nimport { blotName } from '../utils';\r\nimport { BlockOverride } from './overrides';\r\n\r\nconst Parchment = Quill.import('parchment');\r\nconst Inline = Quill.import('blots/inline') as typeof TypeInline;\r\nconst Text = Quill.import('blots/text') as typeof TypeText;\r\n\r\nexport class TableCaptionFormat extends BlockOverride {\r\n static blotName = blotName.tableCaption;\r\n static tagName = 'caption';\r\n static className = 'ql-table-caption';\r\n static allowedChildren = [Inline, Text];\r\n\r\n static create(value: TableCaptionValue) {\r\n const { tableId } = value;\r\n const node = super.create() as HTMLElement;\r\n node.dataset.tableId = tableId;\r\n if (value.side === 'bottom') {\r\n node.style.captionSide = 'bottom';\r\n }\r\n return node;\r\n }\r\n\r\n static formats(domNode: HTMLElement) {\r\n const { tableId } = domNode.dataset;\r\n const value: TableCaptionValue = {\r\n tableId: String(tableId),\r\n side: domNode.style.captionSide === 'bottom' ? 'bottom' : 'top',\r\n };\r\n return value;\r\n }\r\n\r\n declare scroll: TypeScroll;\r\n declare uiNode: HTMLElement;\r\n constructor(scroll: TypeScroll, domNode: HTMLElement, _value: TableCaptionValue) {\r\n super(scroll, domNode);\r\n domNode.setAttribute('contenteditable', String(scroll.isEnabled()));\r\n\r\n this.attachUI(this.createUI());\r\n this.domNode.addEventListener('mouseenter', () => {\r\n if (!this.scroll.isEnabled()) return;\r\n this.uiNode.style.display = 'flex';\r\n });\r\n this.domNode.addEventListener('mouseleave', () => {\r\n if (!this.scroll.isEnabled()) return;\r\n this.uiNode.style.display = 'none';\r\n });\r\n this.uiNode.style.display = 'none';\r\n }\r\n\r\n createUI(): HTMLElement {\r\n const node = document.createElement('i');\r\n node.classList.add('ql-table-caption--switch');\r\n node.innerHTML = ArrowUpDown;\r\n node.addEventListener('click', () => {\r\n if (!this.scroll.isEnabled()) return;\r\n this.side = this.side === 'top' ? 'bottom' : 'top';\r\n });\r\n return node;\r\n }\r\n\r\n get tableId() {\r\n return this.domNode.dataset.tableId!;\r\n }\r\n\r\n set side(value: TableCaptionValue['side']) {\r\n this.domNode.style.captionSide = value === 'bottom' ? 'bottom' : 'top';\r\n }\r\n\r\n get side() {\r\n return this.domNode.style.captionSide === 'bottom' ? 'bottom' : 'top';\r\n }\r\n\r\n format(name: string, value: any): void {\r\n const isBlock = this.scroll.query(name, Parchment.Scope.BLOCK_BLOT);\r\n if (!isBlock || name === this.statics.blotName) {\r\n super.format(name, value);\r\n }\r\n }\r\n\r\n checkMerge(): boolean {\r\n const next = this.next as TableCaptionFormat;\r\n\r\n return (\r\n next !== null\r\n && next.statics.blotName === this.statics.blotName\r\n && next.tableId === this.tableId\r\n );\r\n }\r\n\r\n optimize(context: Record<string, any>) {\r\n const parent = this.parent;\r\n if (parent !== null && parent.statics.blotName !== blotName.tableMain) {\r\n const { tableId } = this;\r\n this.wrap(blotName.tableMain, { tableId });\r\n }\r\n\r\n if (this.children.length === 0) {\r\n this.remove();\r\n }\r\n else {\r\n super.optimize(context);\r\n if (this.next != null && this.checkMerge()) {\r\n (this.next as TypeParchment.ParentBlot).moveChildren(this);\r\n this.next.remove();\r\n }\r\n }\r\n }\r\n}\r\n","import type { TableCellValue } from '../utils';\nimport { blotName, findParentBlot } from '../utils';\nimport { ContainerFormat } from './container-format';\nimport { TableCellInnerFormat } from './table-cell-inner-format';\nimport { TableRowFormat } from './table-row-format';\nimport { getValidCellspan } from './utils';\n\nexport class TableCellFormat extends ContainerFormat {\n static blotName = blotName.tableCell;\n static tagName = 'td';\n static className = 'ql-table-cell';\n static allowDataAttrs = new Set(['table-id', 'row-id', 'col-id']);\n static allowAttrs = new Set(['rowspan', 'colspan']);\n\n // keep `isAllowStyle` and `allowStyle` same with TableCellInnerFormat\n static allowStyle = new Set(['background-color', 'border', 'height']);\n static isAllowStyle(str: string): boolean {\n for (const style of this.allowStyle) {\n if (str.startsWith(style)) {\n return true;\n }\n }\n return false;\n }\n\n static create(value: TableCellValue) {\n const {\n tableId,\n rowId,\n colId,\n rowspan,\n colspan,\n style,\n } = value;\n const node = super.create() as HTMLElement;\n node.dataset.tableId = tableId;\n node.dataset.rowId = rowId;\n node.dataset.colId = colId;\n node.setAttribute('rowspan', String(getValidCellspan(rowspan)));\n node.setAttribute('colspan', String(getValidCellspan(colspan)));\n style && (node.style.cssText = style);\n return node;\n }\n\n static formats(domNode: HTMLElement) {\n const { tableId, rowId, colId } = domNode.dataset;\n const rowspan = Number(domNode.getAttribute('rowspan'));\n const colspan = Number(domNode.getAttribute('colspan'));\n const value: Record<string, any> = {\n tableId,\n rowId,\n colId,\n rowspan: getValidCellspan(rowspan),\n colspan: getValidCellspan(colspan),\n };\n\n const inlineStyles: Record<string, any> = {};\n for (let i = 0; i < domNode.style.length; i++) {\n const property = domNode.style[i];\n const value = domNode.style[property as keyof CSSStyleDeclaration] as string;\n if (this.isAllowStyle(String(property)) && !['initial', 'inherit'].includes(value)) {\n inlineStyles[property] = value;\n }\n }\n const entries = Object.entries(inlineStyles);\n if (entries.length > 0) {\n value.style = entries.map(([key, value]) => `${key}: ${value}`).join(';');\n }\n\n return value;\n }\n\n setFormatValue(name: string, value?: any) {\n if (this.statics.allowAttrs.has(name) || this.statics.allowDataAttrs.has(name)) {\n let attrName = name;\n if (this.statics.allowDataAttrs.has(name)) {\n attrName = `data-${name}`;\n }\n if (value) {\n this.domNode.setAttribute(attrName, value);\n }\n else {\n this.domNode.removeAttribute(attrName);\n }\n }\n else if (this.statics.isAllowStyle(name)) {\n Object.assign(this.domNode.style, {\n [name]: value,\n });\n if (name.startsWith('border')) {\n this.setStyleBoder(name, value);\n }\n }\n\n if (this.children.head && this.children.head.statics.blotName === blotName.tableCellInner && this.domNode.style.cssText) {\n (this.children.head.domNode as HTMLElement).dataset.style = this.domNode.style.cssText;\n }\n }\n\n setStyleBoder(name: string, value?: any) {\n // eslint-disable-next-line no-extra-boolean-cast\n const setValue = Boolean(value) ? value : null;\n const isMergeBorder = !['left', 'right', 'top', 'bottom'].some(direction => name.includes(direction)) && name.startsWith('border-');\n if (!isMergeBorder) return;\n\n const leftCellInners = this.getNearByCell('left').map(td => td.descendant(TableCellInnerFormat, 0)[0]).filter(Boolean) as TableCellInnerFormat[];\n for (const cell of leftCellInners) {\n cell.setFormatValue(name.replace('border-', 'border-right-'), setValue, true);\n }\n const topCellInners = this.getNearByCell('top').map(td => td.descendant(TableCellInnerFormat, 0)[0]).filter(Boolean) as TableCellInnerFormat[];\n for (const cell of topCellInners) {\n cell.setFormatValue(name.replace('border-', 'border-bottom-'), setValue, true);\n }\n }\n\n getNearByCell(direction: 'left' | 'top'): TableCellFormat[] {\n const colIds: string[] = [];\n try {\n const tableMain = findParentBlot(this, blotName.tableMain);\n colIds.push(...tableMain.getColIds());\n }\n catch (error) {\n console.error(`Cell is not in table! ${error}`);\n }\n if (colIds.length === 0) return [];\n\n if (direction === 'left') {\n const nearByCell = new Set<TableCellFormat>();\n let row = this.parent;\n for (let i = 0; i < this.rowspan; i++) {\n if (!(row instanceof TableRowFormat)) break;\n const next = row.children.iterator();\n let cur: null | TableCellFormat = null;\n while ((cur = next())) {\n const i = colIds.indexOf(cur.colId) + cur.colspan;\n if (this.colId === colIds[i]) {\n nearByCell.add(cur);\n }\n }\n row = row.next as TableRowFormat;\n }\n return Array.from(nearByCell);\n }\n else if (direction === 'top') {\n if (!(this.parent instanceof TableRowFormat) || !this.parent.prev) return [];\n const nearByCell = new Set<TableCellFormat>();\n\n const startColIndex = this.getColumnIndex();\n const endColIndex = startColIndex + this.colspan;\n const borderColIds = new Set(colIds.filter((_, i) => i >= startColIndex && i < endColIndex));\n\n let rowspan = 1;\n let row = this.parent.prev as TableRowFormat;\n while (row) {\n let trReachCurrent = false;\n const next = row.children.iterator();\n let cur: null | TableCellFormat = null;\n let colspan = 0;\n while ((cur = next())) {\n if (borderColIds.has(cur.colId) && cur.rowspan >= rowspan) {\n nearByCell.add(cur);\n borderColIds.delete(cur.colId);\n }\n colspan += cur.colspan;\n cur.rowspan >= rowspan && (trReachCurrent = true);\n }\n if (!trReachCurrent && colspan === colIds.length) break;\n row = row.prev as TableRowFormat;\n rowspan += 1;\n }\n return Array.from(nearByCell);\n }\n return [];\n }\n\n get tableId() {\n return this.domNode.dataset.tableId!;\n }\n\n get rowId() {\n return this.domNode.dataset.rowId!;\n }\n\n get colId() {\n return this.domNode.dataset.colId!;\n }\n\n get rowspan() {\n return Number(this.domNode.getAttribute('rowspan'));\n }\n\n get colspan() {\n return Number(this.domNode.getAttribute('colspan'));\n }\n\n getColumnIndex() {\n const table = findParentBlot(this, blotName.tableMain);\n return table.getColIds().indexOf(this.colId);\n }\n\n getCellInner() {\n return this.children.head as TableCellInnerFormat;\n }\n\n checkMerge(): boolean {\n const { colId, rowId, colspan, rowspan } = this;\n const next = this.next as TableCellFormat;\n return (\n next !== null\n && next.statics.blotName === this.statics.blotName\n && next.rowId === rowId\n && next.colId === colId\n && next.colspan === colspan\n && next.rowspan === rowspan\n );\n }\n\n optimize(context: Record<string, any>) {\n const parent = this.parent as TableRowFormat;\n const { tableId, rowId } = this;\n if (parent !== null && parent.statics.blotName !== blotName.tableRow) {\n this.wrap(blotName.tableRow, { tableId, rowId });\n }\n\n super.optimize(context);\n }\n}\n","import type { Parchment as TypeParchment } from 'quill';\nimport type { BlockEmbed as TypeBlockEmbed } from 'quill/blots/block';\nimport type { TableColValue } from '../utils';\nimport Quill from 'quill';\nimport { blotName, findParentBlot, tableUpSize } from '../utils';\nimport { TableCellInnerFormat } from './table-cell-inner-format';\n\nconst BlockEmbed = Quill.import('blots/block/embed') as typeof TypeBlockEmbed;\n\nexport class TableColFormat extends BlockEmbed {\n static blotName = blotName.tableCol;\n static tagName = 'col';\n\n static validWidth(width: string | number, full: boolean) {\n let widthNumber = Number.parseFloat(String(width));\n if (Number.isNaN(widthNumber)) {\n widthNumber = tableUpSize[full ? 'colMinWidthPre' : 'colMinWidthPx'];\n }\n return `${widthNumber}${full ? '%' : 'px'}`;\n }\n\n static create(value: TableColValue) {\n const { width, tableId, colId, full, align } = value;\n const node = super.create() as HTMLElement;\n node.setAttribute('width', this.validWidth(width, !!full));\n full && (node.dataset.full = String(full));\n if (align && align !== 'left') {\n node.dataset.align = align;\n }\n node.dataset.tableId = tableId;\n node.dataset.colId = colId;\n return node;\n }\n\n static value(domNode: HTMLElement) {\n const { tableId, colId } = domNode.dataset;\n const width = domNode.getAttribute('width') || String(tableUpSize.colDefaultWidth);\n const align = domNode.dataset.align;\n const full = Object.hasOwn(domNode.dataset, 'full');\n const value: Record<string, any> = {\n tableId: String(tableId),\n colId: String(colId),\n full,\n width: Number.parseFloat(width),\n };\n align && (value.align = align);\n return value;\n }\n\n get width(): number {\n let width: number | string | null = this.domNode.getAttribute('width');\n if (!width) {\n width = this.domNode.getBoundingClientRect().width;\n if (this.full) {\n const table = this.domNode.closest('table');\n if (!table) return tableUpSize[this.full ? 'colMinWidthPre' : 'colMinWidthPx'];\n return width / 100 * table.getBoundingClientRect().width;\n }\n return width;\n }\n return Number.parseFloat(String(width));\n }\n\n set width(value: string | number) {\n let width = Number.parseFloat(String(value));\n if (Number.isNaN(width)) {\n width = tableUpSize[this.full ? 'colMinWidthPre' : 'colMinWidthPx'];\n }\n this.domNode.setAttribute('width', this.statics.validWidth(width, !!this.full));\n }\n\n get tableId() {\n return this.domNode.dataset.tableId!;\n }\n\n get colId() {\n return this.domNode.dataset.colId!;\n }\n\n get full() {\n return Object.hasOwn(this.domNode.dataset, 'full');\n }\n\n set full(value: boolean) {\n if (value) {\n this.domNode.dataset.full = String(true);\n }\n else {\n this.domNode.removeAttribute('data-full');\n }\n }\n\n get align() {\n return this.domNode.dataset.align || '';\n }\n\n set align(value: string) {\n if (value === 'right' || value === 'center') {\n this.domNode.dataset.align = value;\n }\n else {\n this.domNode.removeAttribute('data-align');\n }\n }\n\n checkMerge(): boolean {\n const next = this.next as TableColFormat;\n const { tableId, colId } = this;\n return (\n next !== null\n && next.statics.blotName === this.statics.blotName\n && next.tableId === tableId\n && next.colId === colId\n );\n }\n\n optimize(context: Record<string, any>) {\n const parent = this.parent;\n if (parent != null && parent.statics.blotName !== blotName.tableColgroup) {\n const value = this.statics.value(this.domNode);\n this.wrap(blotName.tableColgroup, value);\n }\n\n const tableColgroup = findParentBlot(this, blotName.tableColgroup);\n tableColgroup.align = this.align;\n\n if (this.next != null && this.checkMerge()) {\n this.next.remove();\n }\n\n super.optimize(context);\n\n try {\n const tableColgroup = findParentBlot(this, blotName.tableColgroup);\n let isAllFull = true;\n // eslint-disable-next-line unicorn/no-array-for-each\n tableColgroup.children.forEach((col) => {\n isAllFull &&= col.full;\n });\n tableColgroup.full = isAllFull;\n }\n catch {}\n }\n\n insertAt(index: number, value: string, def?: any): void {\n if (def != null) {\n super.insertAt(index, value, def);\n return;\n }\n try {\n const lines = value.split('\\n');\n const text = lines.pop();\n const tableColgroupBlot = findParentBlot(this, blotName.tableColgroup);\n const tableBodyBlot = tableColgroupBlot.next;\n\n // create tbody\n let insertBlot: TypeParchment.Parent = this.scroll;\n // split colgroup\n const nextBlotRef: TypeParchment.Blot | null = tableColgroupBlot.split(this.offset(tableColgroupBlot));\n if (tableBodyBlot) {\n const cellInners = tableBodyBlot.descendants(TableCellInnerFormat);\n if (cellInners.length > 0) {\n const cellInnerBlot = cellInners[0];\n const value = TableCellInnerFormat.formats(cellInnerBlot.domNode);\n const newTableCellInner = this.scroll.create(blotName.tableCellInner, value) as TableCellInnerFormat;\n const newTableCell = newTableCellInner.wrap(blotName.tableCell, value);\n const newTableRow = newTableCell.wrap(blotName.tableRow, value);\n const newTableBody = newTableRow.wrap(blotName.tableBody, value.tableId);\n tableColgroupBlot.parent.insertBefore(newTableBody, nextBlotRef);\n\n insertBlot = newTableCellInner;\n }\n }\n\n for (const line of lines) {\n const block = this.scroll.create('block');\n block.insertAt(0, line);\n insertBlot.appendChild(block);\n }\n if (text) {\n const lineBlock = this.scroll.create('block') as TypeParchment.ParentBlot;\n lineBlock.appendChild(this.scroll.create('text', text));\n insertBlot.appendChild(lineBlock);\n }\n }\n catch {\n // here should not trigger\n console.warn('TableCol not in TableColgroup');\n }\n }\n}\n","import type TypeScroll from 'quill/blots/scroll';\nimport type { TableValue } from '../utils';\nimport { blotName, tableUpSize } from '../utils';\nimport { ContainerFormat } from './container-format';\nimport { TableColFormat } from './table-col-format';\nimport { TableRowFormat } from './table-row-format';\n\nexport class TableMainFormat extends ContainerFormat {\n static blotName = blotName.tableMain;\n static tagName = 'table';\n static className = 'ql-table';\n\n static create(value: TableValue) {\n const node = super.create() as HTMLElement;\n const { tableId, full, align } = value;\n node.dataset.tableId = tableId;\n if (align === 'right' || align === 'center') {\n node.dataset.align = align;\n }\n else {\n node.removeAttribute('date-align');\n }\n full && (node.dataset.full = String(full));\n node.setAttribute('cellpadding', '0');\n node.setAttribute('cellspacing', '0');\n return node;\n }\n\n constructor(public scroll: TypeScroll, domNode: HTMLElement, _value: unknown) {\n super(scroll, domNode);\n this.updateAlign();\n }\n\n colWidthFillTable() {\n if (this.full) {\n Object.assign(this.domNode.style, { width: null });\n return;\n }\n const cols = this.getCols();\n if (!cols) return;\n const colsWidth = cols.reduce((sum, col) => col.width + sum, 0);\n if (colsWidth === 0 || Number.isNaN(colsWidth)) return;\n this.domNode.style.width = `${colsWidth}px`;\n return colsWidth;\n }\n\n get tableId() {\n return this.domNode.dataset.tableId!;\n }\n\n get full() {\n return Object.hasOwn(this.domNode.dataset, 'full');\n }\n\n set full(value: boolean) {\n if (value) {\n this.domNode.dataset.full = String(true);\n }\n else {\n this.domNode.removeAttribute('data-full');\n }\n this.colWidthFillTable();\n }\n\n get align() {\n return this.domNode.dataset.align || '';\n }\n\n set align(value: string) {\n if (value === 'right' || value === 'center') {\n this.domNode.dataset.align = value;\n }\n else {\n this.domNode.removeAttribute('data-align');\n }\n this.updateAlign();\n }\n\n setFull() {\n if (this.full) return;\n const cols = this.getCols();\n if (cols.length === 0) return;\n const tableWidth = Math.floor(this.domNode.getBoundingClientRect().width);\n for (const col of cols) {\n const value = col.width / tableWidth * 100;\n col.full = true;\n col.width = value;\n }\n }\n\n cancelFull() {\n if (!this.full) return;\n const cols = this.getCols();\n if (cols.length === 0) return;\n const tableWidth = Math.floor(this.domNode.getBoundingClientRect().width);\n for (const col of cols) {\n col.full = false;\n col.width = Math.max(col.width / 100 * tableWidth, tableUpSize.colMinWidthPx);\n }\n }\n\n updateAlign() {\n const value = this.align;\n const style: Record<string, string | null> = {\n marginLeft: null,\n marginRight: null,\n };\n switch (value) {\n case 'center': {\n style.marginLeft = 'auto';\n style.marginRight = 'auto';\n break;\n }\n case '':\n case 'left': {\n style.marginRight = 'auto';\n break;\n }\n case 'right': {\n style.marginLeft = 'auto';\n break;\n }\n default: {\n break;\n }\n }\n Object.assign(this.domNode.style, style);\n }\n\n getRows() {\n return this.descendants(TableRowFormat);\n }\n\n getRowIds() {\n return this.getRows().map(d => d.rowId);\n }\n\n getCols() {\n return this.descendants(TableColFormat);\n }\n\n getColIds() {\n return this.getCols().map(d => d.colId);\n }\n\n checkMerge(): boolean {\n const next = this.next;\n return (\n next !== null\n && next.statics.blotName === this.statics.blotName\n && next.domNode.dataset.tableId === this.tableId\n );\n }\n\n optimize(context: Record<string, any>) {\n const parent = this.parent;\n if (parent !== null && parent.statics.blotName !== blotName.tableWrapper) {\n this.wrap(blotName.tableWrapper, this.tableId);\n }\n\n super.optimize(context);\n }\n\n sortMergeChildren() {\n // move same type children to the first child\n const childs: Record<string, ContainerFormat[]> = {\n [blotName.tableCaption]: [],\n [blotName.tableColgroup]: [],\n [blotName.tableBody]: [],\n };\n // eslint-disable-next-line unicorn/no-array-for-each\n this.children.forEach((child) => {\n if (childs[child.statics.blotName]) {\n childs[child.statics.blotName].push(child as ContainerFormat);\n }\n });\n for (const formats of Object.values(childs)) {\n for (let i = 1; i < formats.length; i++) {\n formats[i].moveChildren(formats[0]);\n }\n }\n\n // check sort child\n const tableCaption = childs[blotName.tableCaption][0];\n const tableColgroup = childs[blotName.tableColgroup][0];\n const tableBody = childs[blotName.tableBody][0];\n\n const isCaptionFirst = tableCaption && this.children.head !== tableCaption;\n const isColgroupSecond = tableColgroup && tableCaption && tableCaption.next !== tableColgroup;\n const isColgroupFirst = tableColgroup && !tableCaption && this.children.head !== tableColgroup;\n const isBodyLast = tableBody && this.children.tail !== tableBody;\n\n // sort child\n if (isCaptionFirst || isColgroupSecond || isColgroupFirst || isBodyLast) {\n const tableMain = this.clone() as TableMainFormat;\n tableCaption && tableMain.appendChild(tableCaption);\n tableColgroup && tableMain.appendChild(tableColgroup);\n tableBody && tableMain.appendChild(tableBody);\n\n // eslint-disable-next-line unicorn/no-array-for-each\n this.children.forEach(child => child.remove());\n tableMain.moveChildren(this);\n }\n }\n}\n","import type { Parchment as TypeParchment } from 'quill';\r\nimport type { TableColValue, TableValue } from '../utils';\r\nimport type { TableColFormat } from './table-col-format';\r\nimport { blotName, findParentBlot, tableUpSize } from '../utils';\r\nimport { ContainerFormat } from './container-format';\r\nimport { TableMainFormat } from './table-main-format';\r\n\r\nexport class TableColgroupFormat extends ContainerFormat {\r\n static blotName = blotName.tableColgroup;\r\n static tagName = 'colgroup';\r\n declare children: TypeParchment.LinkedList<TableColFormat>;\r\n\r\n static create(value: TableValue) {\r\n const node = super.create() as HTMLElement;\r\n node.dataset.tableId = value.tableId;\r\n value.full && (node.dataset.full = String(value.full));\r\n if (value.align && value.align !== 'left') {\r\n node.dataset.align = value.align;\r\n }\r\n node.setAttribute('contenteditable', 'false');\r\n return node;\r\n }\r\n\r\n get tableId() {\r\n return this.domNode.dataset.tableId!;\r\n }\r\n\r\n get full() {\r\n return Object.hasOwn(this.domNode.dataset, 'full');\r\n }\r\n\r\n set full(value: boolean) {\r\n if (value) {\r\n this.domNode.dataset.full = String(true);\r\n }\r\n else {\r\n this.domNode.removeAttribute('data-full');\r\n }\r\n if (this.parent && this.parent instanceof TableMainFormat) {\r\n this.parent.full = value;\r\n }\r\n }\r\n\r\n get align() {\r\n return this.domNode.dataset.align || '';\r\n }\r\n\r\n set align(value: string) {\r\n if (value === 'right' || value === 'center') {\r\n this.domNode.dataset.align = value;\r\n }\r\n else {\r\n this.domNode.removeAttribute('data-align');\r\n }\r\n }\r\n\r\n findCol(index: number) {\r\n const next = this.children.iterator();\r\n let i = 0;\r\n let cur: TableColFormat | null;\r\n while ((cur = next())) {\r\n if (i === index) {\r\n break;\r\n }\r\n i++;\r\n }\r\n return cur;\r\n }\r\n\r\n insertColByIndex(index: number, value: TableColValue) {\r\n const table = this.parent;\r\n if (!(table instanceof TableMainFormat)) {\r\n throw new TypeError('TableColgroupFormat should be child of TableFormat');\r\n }\r\n const col = this.findCol(index);\r\n const tableCellInner = this.scroll.create(blotName.tableCol, value) as TableColFormat;\r\n if (table.full) {\r\n // TODO: first minus column should be near by\r\n const next = this.children.iterator();\r\n let cur: TableColFormat | null;\r\n while ((cur = next())) {\r\n if (cur.width - tableCellInner.width >= tableUpSize.colMinWidthPre) {\r\n cur.width -= tableCellInner.width;\r\n break;\r\n }\r\n }\r\n }\r\n this.insertBefore(tableCellInner, col);\r\n }\r\n\r\n removeColByIndex(index: number) {\r\n const table = this.parent;\r\n if (!(table instanceof TableMainFormat)) {\r\n throw new TypeError('TableColgroupFormat should be child of TableMainFormat');\r\n }\r\n const col = this.findCol(index);\r\n if (col) {\r\n if (table.full) {\r\n if (col.next) {\r\n (col.next as TableColFormat).width += col.width;\r\n }\r\n else if (col.prev) {\r\n (col.prev as TableColFormat).width += col.width;\r\n }\r\n }\r\n col.remove();\r\n table.colWidthFillTable();\r\n }\r\n }\r\n\r\n checkMerge(): boolean {\r\n const next = this.next as TableColgroupFormat;\r\n const tableMain = this.parent;\r\n if ((tableMain instanceof TableMainFormat) && !tableMain.full) {\r\n tableMain.colWidthFillTable();\r\n }\r\n return (\r\n next !== null\r\n && next.statics.blotName === this.statics.blotName\r\n && next.tableId === this.tableId\r\n );\r\n }\r\n\r\n optimize(context: Record<string, any>) {\r\n const parent = this.parent;\r\n const { tableId, full, align } = this;\r\n if (parent != null && parent.statics.blotName !== blotName.tableMain) {\r\n this.wrap(blotName.tableMain, { tableId, full, align });\r\n }\r\n\r\n const tableMain = findParentBlot(this, blotName.tableMain);\r\n tableMain.align = align;\r\n\r\n super.optimize(context);\r\n }\r\n}\r\n","import type { Parchment as TypeParchment } from 'quill';\nimport Quill from 'quill';\nimport { blotName } from '../utils';\nimport { ContainerFormat } from './container-format';\nimport { TableBodyFormat } from './table-body-format';\nimport { TableColgroupFormat } from './table-colgroup-format';\n\nconst Parchment = Quill.import('parchment');\n\nexport class TableWrapperFormat extends ContainerFormat {\n static blotName = blotName.tableWrapper;\n static tagName = 'div';\n static className = 'ql-table-wrapper';\n\n static create(value: string) {\n const node = super.create() as HTMLElement;\n\n node.dataset.tableId = value;\n node.addEventListener(\n 'dragstart',\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n },\n true,\n );\n // not allow drop content into table\n node.addEventListener('drop', (e) => {\n e.preventDefault();\n });\n node.addEventListener('dragover', (e) => {\n e.preventDefault();\n e.dataTransfer!.dropEffect = 'none';\n });\n node.setAttribute('contenteditable', 'false');\n return node;\n }\n\n // quill scroll doesn't extends EventEmitter ts type. `on` and `off` will have dts error\n constructor(public scroll: any, node: Node, _value: string) {\n super(scroll, node);\n this.scroll.emitter.on(Quill.events.TEXT_CHANGE, this.insertLineAround);\n }\n\n get tableId() {\n return this.domNode.dataset.tableId!;\n }\n\n checkMerge(): boolean {\n const next = this.next as TableWrapperFormat;\n return (\n next !== null\n && next.statics.blotName === this.statics.blotName\n && next.tableId === this.tableId\n );\n }\n\n deleteAt(index: number, length: number) {\n super.deleteAt(index, length);\n const tableBodys = this.descendants(TableBodyFormat);\n const tableColgroups = this.descendants(TableColgroupFormat);\n if (tableBodys.length === 0 || tableColgroups.length === 0) {\n this.remove();\n }\n }\n\n remove() {\n super.remove();\n this.scroll.emitter.off(Quill.events.TEXT_CHANGE, this.insertLineAround);\n }\n\n isBlockLine(blot: TypeParchment.Blot) {\n return blot instanceof Parchment.BlockBlot || new Set(['list-container', 'code-block-container']).has(blot.statics.blotName);\n }\n\n insertLineAround = () => {\n if (!this.prev || !this.isBlockLine(this.prev)) {\n this.parent.insertBefore(this.scroll.create('block'), this);\n }\n if (!this.next || !this.isBlockLine(this.next)) {\n this.parent.insertBefore(this.scroll.create('block'), this.next);\n }\n };\n}\n","import type { TableMainFormat } from './table-main-format';\nimport { findChildBlot } from '../utils';\nimport { TableBodyFormat } from './table-body-format';\n\nexport * from './container-format';\nexport * from './overrides';\nexport * from './table-body-format';\nexport * from './table-caption-format';\nexport * from './table-cell-format';\nexport * from './table-cell-inner-format';\nexport * from './table-col-format';\nexport * from './table-colgroup-format';\nexport * from './table-main-format';\nexport * from './table-row-format';\nexport * from './table-wrapper-format';\n\nexport function getTableMainRect(tableMainBlot: TableMainFormat) {\n const [tableBodyBlot] = findChildBlot(tableMainBlot, TableBodyFormat);\n return {\n body: tableBodyBlot,\n rect: tableBodyBlot.domNode.getBoundingClientRect(),\n };\n}\n","import type { TableMainFormat, TableWrapperFormat } from '../formats';\r\nimport type { TableUp } from '../table-up';\r\nimport { autoUpdate, computePosition, flip, limitShift, offset, shift } from '@floating-ui/dom';\r\nimport Quill from 'quill';\r\nimport { createBEM, createResizeObserver } from '../utils';\r\n\r\nexport class TableAlign {\r\n tableBlot: TableMainFormat;\r\n tableWrapperBlot: TableWrapperFormat;\r\n alignBox?: HTMLElement;\r\n cleanup?: () => void;\r\n bem = createBEM('align');\r\n resizeObserver = createResizeObserver(() => this.update(), { ignoreFirstBind: true });\r\n\r\n constructor(public tableModule: TableUp, public table: HTMLElement, public quill: Quill) {\r\n this.tableBlot = Quill.find(table)! as TableMainFormat;\r\n this.tableWrapperBlot = this.tableBlot.parent as TableWrapperFormat;\r\n\r\n this.alignBox = this.buildTool();\r\n this.resizeObserver.observe(this.table);\r\n this.quill.on(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n\r\n this.show();\r\n }\r\n\r\n updateWhenTextChange = () => {\r\n this.update();\r\n };\r\n\r\n buildTool() {\r\n const alignBox = this.tableModule.addContainer(this.bem.b());\r\n const icons = Quill.import('ui/icons') as Record<string, any>;\r\n const alignIcons = {\r\n left: icons.align[''],\r\n center: icons.align.center,\r\n right: icons.align.right,\r\n };\r\n for (const [align, iconStr] of Object.entries(alignIcons)) {\r\n const item = document.createElement('span');\r\n item.dataset.align = align;\r\n item.classList.add(this.bem.be('item'));\r\n item.innerHTML = `<i class=\"icon\">${iconStr}</i>`;\r\n item.addEventListener('click', () => {\r\n const value = item.dataset.align;\r\n if (value) {\r\n this.setTableAlign(this.tableBlot, value);\r\n\r\n this.quill.once(Quill.events.SCROLL_OPTIMIZE, () => {\r\n if (this.tableModule.tableSelection) {\r\n this.tableModule.tableSelection.hide();\r\n }\r\n if (this.tableModule.tableResize) {\r\n this.tableModule.tableResize.update();\r\n }\r\n if (this.tableModule.tableResizeScale) {\r\n this.tableModule.tableResizeScale.update();\r\n }\r\n if (this.tableModule.tableScrollbar) {\r\n this.tableModule.tableScrollbar.update();\r\n }\r\n });\r\n }\r\n });\r\n alignBox.appendChild(item);\r\n }\r\n if (!this.cleanup) {\r\n this.cleanup = autoUpdate(\r\n this.tableWrapperBlot.domNode,\r\n alignBox,\r\n () => this.update(),\r\n );\r\n }\r\n return alignBox;\r\n }\r\n\r\n setTableAlign(tableBlot: TableMainFormat, align: string) {\r\n const cols = tableBlot.getCols();\r\n for (const col of cols) {\r\n col.align = align;\r\n }\r\n }\r\n\r\n show() {\r\n if (!this.alignBox) return;\r\n this.alignBox.classList.add(this.bem.bm('active'));\r\n this.update();\r\n }\r\n\r\n hide() {\r\n if (!this.alignBox) return;\r\n this.alignBox.classList.remove(this.bem.bm('active'));\r\n if (this.cleanup) {\r\n this.cleanup();\r\n this.cleanup = undefined;\r\n }\r\n }\r\n\r\n update() {\r\n if (!this.alignBox) return;\r\n if (this.tableBlot.full || this.tableBlot.domNode.offsetWidth >= this.quill.root.offsetWidth) {\r\n this.hide();\r\n return;\r\n }\r\n\r\n computePosition(this.tableWrapperBlot.domNode, this.alignBox, {\r\n placement: 'top',\r\n middleware: [flip(), shift({ limiter: limitShift() }), offset(16)],\r\n }).then(({ x, y }) => {\r\n Object.assign(this.alignBox!.style, {\r\n left: `${x}px`,\r\n top: `${y}px`,\r\n });\r\n });\r\n }\r\n\r\n destroy() {\r\n this.hide();\r\n this.resizeObserver.disconnect();\r\n this.quill.off(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n if (this.alignBox) {\r\n this.alignBox.remove();\r\n this.alignBox = undefined;\r\n }\r\n }\r\n}\r\n","import type { Parchment as TypeParchment } from 'quill';\r\nimport type { Delta as TypeDelta } from 'quill/core';\r\nimport type TypeClipboard from 'quill/modules/clipboard';\r\nimport type { TableCaptionValue, TableCellValue } from '../utils';\r\nimport Quill from 'quill';\r\nimport { TableCellFormat, TableColFormat } from '../formats';\r\nimport { blotName, cssTextToObject, isObject, isString, objectToCssText, randomId, tableUpSize } from '../utils';\r\n\r\nconst Delta = Quill.import('delta');\r\nconst Clipboard = Quill.import('modules/clipboard') as typeof TypeClipboard;\r\nexport type Selector = string | Node['TEXT_NODE'] | Node['ELEMENT_NODE'];\r\nexport type Matcher = (node: Node, delta: TypeDelta, scroll: TypeParchment.ScrollBlot) => TypeDelta;\r\nexport interface ClipboardOptions {\r\n matchers: [Selector, Matcher][];\r\n}\r\n\r\nfunction getCellWidth(cell: HTMLElement): number {\r\n let width = Number.parseFloat(cell.getAttribute('width') || String(tableUpSize.colDefaultWidth));\r\n if (Number.isNaN(width)) {\r\n const styleWidth = cell.style.width;\r\n width = styleWidth ? Number.parseFloat(styleWidth) : cell.offsetWidth;\r\n }\r\n return width;\r\n}\r\nfunction calculateCols(tableNode: HTMLElement, colNums: number): number[] {\r\n const colWidths = new Array(colNums).fill(tableUpSize.colDefaultWidth);\r\n // no need consider colspan\r\n // word table will have a row at last <!--[if !supportMisalignedColumns]-->\r\n // that tr doesn't have colspan and every td have width attribute. but set style \"border:none\"\r\n const rows = Array.from(tableNode.querySelectorAll('tr'));\r\n for (const row of rows) {\r\n const cells = Array.from(row.querySelectorAll('td'));\r\n for (const [index, cell] of cells.entries()) {\r\n if (index < colNums) {\r\n const cellWidth = getCellWidth(cell);\r\n colWidths[index] = cellWidth || colWidths[index];\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return colWidths;\r\n}\r\n\r\nexport class TableClipboard extends Clipboard {\r\n tableId = randomId();\r\n rowId = randomId();\r\n rowIds: string[] = [];\r\n colIds: string[] = [];\r\n emptyRowCount: number[] = [];\r\n rowspanCount: { rowspan: number; colspan: number }[] = [];\r\n cellCount = 0;\r\n colCount = 0;\r\n constructor(public quill: Quill, options: Partial<ClipboardOptions>) {\r\n super(quill, options);\r\n this.addMatcher('table', this.matchTable.bind(this));\r\n this.addMatcher('tbody', this.matchTbody.bind(this));\r\n this.addMatcher('colgroup', this.matchColgroup.bind(this));\r\n this.addMatcher('col', this.matchCol.bind(this));\r\n this.addMatcher('tr', this.matchTr.bind(this));\r\n this.addMatcher('td', this.matchTd.bind(this));\r\n this.addMatcher('th', this.matchTd.bind(this));\r\n this.addMatcher('caption', this.matchCaption.bind(this));\r\n\r\n this.addMatcher(Node.ELEMENT_NODE, this.matchTdAttributor.bind(this));\r\n }\r\n\r\n matchTable(node: Node, delta: TypeDelta) {\r\n if (delta.ops.length === 0) return delta;\r\n\r\n const preSumEmptyRowCount = this.emptyRowCount.reduce((acc, cur) => {\r\n acc.push((acc[acc.length - 1] ?? 0) + cur);\r\n return acc;\r\n }, [] as number[]);\r\n\r\n const ops: Record<string, any>[] = [];\r\n const cols: Record<string, any>[] = [];\r\n let bodyStartIndex = -1;\r\n for (let i = 0; i < delta.ops.length; i++) {\r\n const { attributes, insert } = delta.ops[i];\r\n // remove quill origin table format and tableCell format\r\n const { table, [blotName.tableCell]: tableCell, ...attrs } = attributes || {};\r\n const hasCol = isObject(insert) && insert[blotName.tableCol];\r\n if (hasCol) {\r\n cols.push({ insert });\r\n }\r\n else {\r\n if (attrs[blotName.tableCellInner]) {\r\n const tableCellInner = attrs[blotName.tableCellInner] as TableCellValue;\r\n const rowNum = this.rowIds.indexOf(tableCellInner.rowId);\r\n // reduce cell rowspan by counting empty rows\r\n if (rowNum !== -1) {\r\n const rowspan = tableCellInner.rowspan;\r\n tableCellInner.rowspan -= (preSumEmptyRowCount[rowNum + rowspan - 1] - preSumEmptyRowCount[rowNum]);\r\n }\r\n ops.push({ attributes: { ...attrs, [blotName.tableCellInner]: tableCellInner }, insert });\r\n }\r\n else {\r\n ops.push({ attributes: attrs, insert });\r\n }\r\n }\r\n // record col insert index\r\n if (\r\n !attrs?.[blotName.tableCellInner]\r\n && !attrs?.[blotName.tableCaption]\r\n && !hasCol\r\n && isString(insert)\r\n && insert.trim().length > 0\r\n ) {\r\n bodyStartIndex = i;\r\n }\r\n }\r\n\r\n const colWidths = calculateCols(node as HTMLElement, this.colIds.length);\r\n const newCols = colWidths.reduce((colOps, width, i) => {\r\n if (!cols[i]) {\r\n colOps.push({\r\n insert: {\r\n [blotName.tableCol]: {\r\n tableId: this.tableId,\r\n colId: this.colIds[i],\r\n width,\r\n full: false,\r\n },\r\n },\r\n });\r\n }\r\n else {\r\n colOps.push(cols[i]);\r\n }\r\n return colOps;\r\n }, [] as Record<string, any>[]);\r\n ops.splice(bodyStartIndex + 1, 0, ...newCols);\r\n\r\n // reset variable to avoid conflict with other table\r\n this.tableId = randomId();\r\n this.rowIds = [];\r\n this.colIds = [];\r\n this.emptyRowCount = [];\r\n this.rowspanCount = [];\r\n this.cellCount = 0;\r\n this.colCount = 0;\r\n return new Delta(ops);\r\n }\r\n\r\n matchTbody(node: Node, delta: TypeDelta) {\r\n const backgroundColor = (node as HTMLElement).style.backgroundColor;\r\n if (backgroundColor) {\r\n for (const op of delta.ops) {\r\n if (op.attributes?.[blotName.tableCellInner]) {\r\n const { style, ...value } = op.attributes[blotName.tableCellInner] as TableCellValue;\r\n const styleObj = cssTextToObject(style || '');\r\n if (!styleObj.backgroundColor) {\r\n styleObj.backgroundColor = backgroundColor;\r\n op.attributes[blotName.tableCellInner] = { ...value, style: objectToCssText(styleObj) };\r\n }\r\n }\r\n }\r\n }\r\n return delta;\r\n }\r\n\r\n matchColgroup(node: Node, delta: TypeDelta) {\r\n const ops: Record<string, any>[] = [];\r\n for (let i = 0; i < delta.ops.length; i++) {\r\n const op = delta.ops[i];\r\n if (op && isObject(op.insert) && op.insert[blotName.tableCol]) {\r\n ops.push(op);\r\n }\r\n }\r\n return new Delta(ops);\r\n }\r\n\r\n matchCol(node: Node, _delta: TypeDelta) {\r\n let span = Number((node as HTMLElement).getAttribute('span') || 1);\r\n if (Number.isNaN(span)) span = 1;\r\n\r\n const colDelta = new Delta();\r\n for (let i = 0; i < span; i++) {\r\n this.colIds[this.colCount] = randomId();\r\n colDelta.insert({\r\n [blotName.tableCol]: Object.assign(\r\n TableColFormat.value(node as HTMLElement),\r\n {\r\n tableId: this.tableId,\r\n colId: this.colIds[this.colCount],\r\n },\r\n ),\r\n });\r\n this.colCount += 1;\r\n }\r\n return colDelta;\r\n }\r\n\r\n matchTr(node: Node, delta: TypeDelta) {\r\n this.rowIds.push(this.rowId);\r\n this.rowId = randomId();\r\n this.cellCount = 0;\r\n // minus rowspan\r\n for (const [i, span] of this.rowspanCount.entries()) {\r\n if (span.rowspan > 0) {\r\n span.rowspan -= 1;\r\n }\r\n if (span.rowspan <= 0) {\r\n this.rowspanCount[i] = { rowspan: 0, colspan: 0 };\r\n }\r\n }\r\n let hasTd = true;\r\n for (const op of delta.ops) {\r\n if (op.attributes) {\r\n const { background, [blotName.tableCellInner]: tableCellInner } = op.attributes;\r\n if (!tableCellInner) hasTd = false;\r\n if (tableCellInner && background) {\r\n const { style = '' } = tableCellInner as TableCellValue;\r\n const styleObj = cssTextToObject(style);\r\n styleObj.backgroundColor = background as string;\r\n (op.attributes![blotName.tableCellInner] as TableCellValue).style = objectToCssText(styleObj);\r\n }\r\n }\r\n else {\r\n hasTd = false;\r\n }\r\n }\r\n // record if row doesn't have any cell. It's happen in excel. https://github.com/zzxming/quill-table-up/issues/165\r\n let rowspanCount = 0;\r\n if (!hasTd) {\r\n rowspanCount = 1;\r\n delta = new Delta();\r\n }\r\n this.emptyRowCount.push(rowspanCount);\r\n return delta;\r\n }\r\n\r\n matchTd(node: Node, delta: TypeDelta) {\r\n const cell = node as HTMLElement;\r\n const cellFormat = TableCellFormat.formats(cell);\r\n if (!this.colIds[this.cellCount] || !this.rowspanCount[this.cellCount]) {\r\n for (let i = this.cellCount; i >= 0; i--) {\r\n if (!this.colIds[i]) {\r\n this.colIds[i] = randomId();\r\n }\r\n if (!this.rowspanCount[i]) {\r\n this.rowspanCount[i] = { rowspan: 0, colspan: 0 };\r\n }\r\n }\r\n }\r\n // skip the colspan of the cell in the previous row\r\n for (let i = this.cellCount; i < this.rowspanCount.length; i++) {\r\n const { rowspan, colspan } = this.rowspanCount[i];\r\n if (rowspan === 0) break;\r\n this.cellCount += colspan;\r\n }\r\n // add current cell rowspan in `rowspanCount` to calculate next row cell\r\n if (cellFormat.rowspan > 1) {\r\n this.rowspanCount[this.cellCount] = { rowspan: cellFormat.rowspan, colspan: cellFormat.colspan };\r\n }\r\n const colId = this.colIds[this.cellCount];\r\n this.cellCount += cellFormat.colspan;\r\n\r\n // add each insert tableCellInner format\r\n const value = Object.assign(\r\n cellFormat,\r\n {\r\n tableId: this.tableId,\r\n rowId: this.rowId,\r\n colId,\r\n },\r\n );\r\n // make sure <!--[if !supportMisalignedColumns]--> display border\r\n if (cell.style.border === 'none') {\r\n value.style = value.style.replaceAll(/border-(top|right|bottom|left)-style:none;?/g, '');\r\n }\r\n const ops = [];\r\n for (const op of delta.ops) {\r\n const { attributes = {}, ...other } = op;\r\n const { [blotName.tableCell]: tableCell, ...attrs } = attributes;\r\n ops.push({ ...other, attributes: { ...attrs, [blotName.tableCellInner]: value } });\r\n }\r\n if (ops.length <= 0 || !isString(ops[ops.length - 1].insert) || !(ops[ops.length - 1].insert as string).endsWith('\\n')) {\r\n ops.push({ insert: '\\n', attributes: { [blotName.tableCellInner]: value } });\r\n }\r\n return new Delta(ops);\r\n }\r\n\r\n matchTdAttributor(node: Node, delta: TypeDelta) {\r\n const el = node as HTMLElement;\r\n if (el.tagName.toLocaleLowerCase() === 'td') {\r\n const ops = [];\r\n for (const op of delta.ops) {\r\n const { attributes, ...other } = op;\r\n const tableCellInner = attributes?.[blotName.tableCellInner] as TableCellValue;\r\n if (attributes && tableCellInner && tableCellInner.style) {\r\n const { background, ...attrs } = attributes;\r\n\r\n const bgTemp = document.createElement('div');\r\n bgTemp.style.background = background as string;\r\n const cellTemp = document.createElement('div');\r\n cellTemp.style.cssText = tableCellInner.style;\r\n if (bgTemp.style.background === cellTemp.style.backgroundColor) {\r\n ops.push({ ...other, attributes: { ...attrs } });\r\n continue;\r\n }\r\n }\r\n\r\n ops.push(op);\r\n }\r\n return new Delta(ops);\r\n }\r\n\r\n return delta;\r\n }\r\n\r\n convert(\r\n { html, text }: { html?: string; text?: string },\r\n formats: Record<string, unknown> = {},\r\n ): TypeDelta {\r\n const delta = super.convert({ html, text }, formats);\r\n if (formats[blotName.tableCellInner]) {\r\n for (const op of delta.ops) {\r\n if (isObject(op.insert) && op.insert[blotName.tableCol]) {\r\n op.insert = '';\r\n continue;\r\n }\r\n if (!op.attributes) op.attributes = {};\r\n op.attributes[blotName.tableCellInner] = formats[blotName.tableCellInner];\r\n }\r\n }\r\n return delta;\r\n }\r\n\r\n matchCaption(node: Node, delta: TypeDelta) {\r\n for (let i = 0; i < delta.ops.length; i++) {\r\n const op = delta.ops[i];\r\n const { attributes } = op;\r\n if (attributes && attributes[blotName.tableCaption]) {\r\n (attributes[blotName.tableCaption] as TableCaptionValue).tableId = this.tableId;\r\n op.attributes = attributes;\r\n }\r\n }\r\n\r\n return delta;\r\n }\r\n}\r\n","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <!-- Icon from Tabler Icons by Paweł Kuna - https://github.com/tabler/tabler-icons/blob/master/LICENSE -->\\n <path\\n fill=\\\"none\\\"\\n stroke=\\\"currentColor\\\"\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"2\\\"\\n d=\\\"M4 12V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v6m-10 6H3m18 0h-7m-8-3l-3 3l3 3m12-6l3 3l-3 3\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"none\\\"\\n stroke=\\\"currentColor\\\"\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"2\\\"\\n d=\\\"m4 8l4-4m6 0L4 14m0 6L20 4m0 6L10 20m10-4l-4 4\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"none\\\"\\n stroke=\\\"currentColor\\\"\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"1.5\\\"\\n d=\\\"m12.01 16l-.01.011M12.01 12l-.01.011M12.01 8l-.01.011M8.01 12l-.01.011M16.01 12l-.01.011M21 3.6v16.8a.6.6 0 0 1-.6.6H3.6a.6.6 0 0 1-.6-.6V3.6a.6.6 0 0 1 .6-.6h16.8a.6.6 0 0 1 .6.6\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 256 256\\\">\\n <g fill=\\\"currentColor\\\">\\n <path d=\\\"M216 40v128h-48V88H88V40Z\\\" opacity=\\\".2\\\" />\\n <path\\n d=\\\"M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z\\\"\\n />\\n </g>\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 32 32\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"m19.05 13.733l-1-1.733l-10.122 5.846l-.997-.576a3 3 0 0 0 .667-.769A3 3 0 1 0 3.5 17.599L5.928 19L3.5 20.402a3.034 3.034 0 1 0 3.44.323l.988-.57L14.59 24l1-1.73L9.928 19zM4.034 15.26a1 1 0 1 1 .466.607a1 1 0 0 1-.466-.607M5 22a1 1 0 1 1-.865 1.5A1 1 0 0 1 5 22m12 4h4v2h-4zm-7 0h4v2h-4z\\\"\\n />\\n <path fill=\\\"currentColor\\\" d=\\\"M28 28h-4v-2h4V4H7v4H5V4a2 2 0 0 1 2-2h21a2 2 0 0 1 2 2v22a2 2 0 0 1-2 2\\\" />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M4 3h14a2 2 0 0 1 2 2v7.08a6 6 0 0 0-4.32.92H12v4h1.08c-.11.68-.11 1.35 0 2H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2m0 4v4h6V7zm8 0v4h6V7zm-8 6v4h6v-4zm11.94 5.5h2v-4h2v4h2l-3 3z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M4 3h14a2 2 0 0 1 2 2v7.08a6 6 0 0 0-4.32.92H12v4h1.08c-.11.68-.11 1.35 0 2H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2m0 4v4h6V7zm8 0v4h6V7zm-8 6v4h6v-4zm14.44 2v2h4v2h-4v2l-3-3z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M4 3h14a2 2 0 0 1 2 2v7.08a6 6 0 0 0-4.32.92H12v4h1.08c-.11.68-.11 1.35 0 2H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2m0 4v4h6V7zm8 0v4h6V7zm-8 6v4h6v-4zm15.44 8v-2h-4v-2h4v-2l3 3z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M4 3h14a2 2 0 0 1 2 2v7.08a6 6 0 0 0-4.32.92H12v4h1.08c-.11.68-.11 1.35 0 2H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2m0 4v4h6V7zm8 0v4h6V7zm-8 6v4h6v-4zm17.94 4.5h-2v4h-2v-4h-2l3-3z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M5 10H3V4h8v2H5zm14 8h-6v2h8v-6h-2zM5 18v-4H3v6h8v-2zM21 4h-8v2h6v4h2zM8 13v2l3-3l-3-3v2H3v2zm8-2V9l-3 3l3 3v-2h5v-2z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M4 2h7a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2m0 8v4h7v-4zm0 6v4h7v-4zM4 4v4h7V4zm13.59 8L15 9.41L16.41 8L19 10.59L21.59 8L23 9.41L20.41 12L23 14.59L21.59 16L19 13.41L16.41 16L15 14.59z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M9.41 13L12 15.59L14.59 13L16 14.41L13.41 17L16 19.59L14.59 21L12 18.41L9.41 21L8 19.59L10.59 17L8 14.41zM22 9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2zM4 9h4V6H4zm6 0h4V6h-4zm6 0h4V6h-4z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"m15.46 15.88l1.42-1.42L19 16.59l2.12-2.13l1.42 1.42L20.41 18l2.13 2.12l-1.42 1.42L19 19.41l-2.12 2.13l-1.42-1.42L17.59 18zM4 3h14a2 2 0 0 1 2 2v7.08a6 6 0 0 0-4.32.92H12v4h1.08c-.11.68-.11 1.35 0 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2m0 4v4h6V7zm8 0v4h6V7zm-8 6v4h6v-4z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M19 14h2v6H3v-6h2v4h14zM3 4v6h2V6h14v4h2V4zm8 7v2H8v2l-3-3l3-3v2zm5 0V9l3 3l-3 3v-2h-3v-2z\\\"\\n />\\n</svg>\\n\"","\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1em\\\" height=\\\"1em\\\" viewBox=\\\"0 0 24 24\\\">\\n <!-- Icon from TDesign Icons by TDesign - https://github.com/Tencent/tdesign-icons/blob/main/LICENSE -->\\n <path fill=\\\"currentColor\\\" d=\\\"M21 10v12h-2V12H5v10H3V10zm0-8v6H3V2zm-2 2H5v2h14z\\\" />\\n</svg>\\n\"","import type { TableMainFormat } from '../../formats';\r\nimport type { Tool } from '../../utils';\r\nimport Quill from 'quill';\r\nimport AutoFull from '../../svg/auto-full.svg';\r\nimport Background from '../../svg/background.svg';\r\nimport Border from '../../svg/border.svg';\r\nimport Copy from '../../svg/copy.svg';\r\nimport Cut from '../../svg/cut.svg';\r\nimport InsertBottom from '../../svg/insert-bottom.svg';\r\nimport InsertLeft from '../../svg/insert-left.svg';\r\nimport InsertRight from '../../svg/insert-right.svg';\r\nimport InsertTop from '../../svg/insert-top.svg';\r\nimport MergeCell from '../../svg/merge-cell.svg';\r\nimport RemoveColumn from '../../svg/remove-column.svg';\r\nimport RemoveRow from '../../svg/remove-row.svg';\r\nimport RemoveTable from '../../svg/remove-table.svg';\r\nimport SplitCell from '../../svg/split-cell.svg';\r\nimport TableHead from '../../svg/table-head.svg';\r\nimport { blotName, createBEM } from '../../utils';\r\n\r\nexport const menuColorSelectClassName = 'color-selector';\r\nexport const tableMenuTools: Record<string, Tool> = {\r\n Break: {\r\n name: 'break',\r\n },\r\n CopyCell: {\r\n name: 'CopyCell',\r\n tip: 'Copy cell',\r\n icon: Copy,\r\n handle: (tableModule, selectedTds) => {\r\n const text = tableModule.getTextByCell(selectedTds);\r\n const html = tableModule.getHTMLByCell(selectedTds);\r\n\r\n const clipboardItem = new ClipboardItem({\r\n 'text/plain': new Blob([text], { type: 'text/plain' }),\r\n 'text/html': new Blob([html], { type: 'text/html' }),\r\n });\r\n navigator.clipboard.write([clipboardItem]);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n CutCell: {\r\n name: 'CutCell',\r\n tip: 'Cut cell',\r\n icon: Cut,\r\n handle: (tableModule, selectedTds) => {\r\n const text = tableModule.getTextByCell(selectedTds);\r\n const html = tableModule.getHTMLByCell(selectedTds, true);\r\n\r\n const clipboardItem = new ClipboardItem({\r\n 'text/plain': new Blob([text], { type: 'text/plain' }),\r\n 'text/html': new Blob([html], { type: 'text/html' }),\r\n });\r\n navigator.clipboard.write([clipboardItem]);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n InsertTop: {\r\n name: 'InsertTop',\r\n icon: InsertTop,\r\n tip: 'Insert row above',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.appendRow(selectedTds, false);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n InsertRight: {\r\n name: 'InsertRight',\r\n icon: InsertRight,\r\n tip: 'Insert column right',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.appendCol(selectedTds, true);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n InsertBottom: {\r\n name: 'InsertBottom',\r\n icon: InsertBottom,\r\n tip: 'Insert row below',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.appendRow(selectedTds, true);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n InsertLeft: {\r\n name: 'InsertLeft',\r\n icon: InsertLeft,\r\n tip: 'Insert column Left',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.appendCol(selectedTds, false);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n MergeCell: {\r\n name: 'MergeCell',\r\n icon: MergeCell,\r\n tip: 'Merge Cell',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.mergeCells(selectedTds);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n SplitCell: {\r\n name: 'SplitCell',\r\n icon: SplitCell,\r\n tip: 'Split Cell',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.splitCell(selectedTds);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n DeleteRow: {\r\n name: 'DeleteRow',\r\n icon: RemoveRow,\r\n tip: 'Delete Row',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.removeRow(selectedTds);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n DeleteColumn: {\r\n name: 'DeleteColumn',\r\n icon: RemoveColumn,\r\n tip: 'Delete Column',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.removeCol(selectedTds);\r\n tableModule.hideTableTools();\r\n },\r\n },\r\n DeleteTable: {\r\n name: 'DeleteTable',\r\n icon: RemoveTable,\r\n tip: 'Delete table',\r\n handle: (tableModule, selectedTds) => {\r\n tableModule.deleteTable(selectedTds);\r\n },\r\n },\r\n BackgroundColor: {\r\n name: 'BackgroundColor',\r\n icon: Background,\r\n isColorChoose: true,\r\n tip: 'Set background color',\r\n key: 'background-color',\r\n handle: (tableModule, selectedTds, color) => {\r\n tableModule.setCellAttrs(selectedTds, 'background-color', color, true);\r\n },\r\n },\r\n BorderColor: {\r\n name: 'BorderColor',\r\n icon: Border,\r\n isColorChoose: true,\r\n tip: 'Set border color',\r\n key: 'border-color',\r\n handle: (tableModule, selectedTds, color) => {\r\n tableModule.setCellAttrs(selectedTds, 'border-color', color, true);\r\n },\r\n },\r\n SwitchWidth: {\r\n name: 'SwitchWidth',\r\n icon: AutoFull,\r\n tip: 'Switch table width',\r\n handle: (tableModule) => {\r\n if (!tableModule.table) return;\r\n const tableMainBlot = Quill.find(tableModule.table) as TableMainFormat;\r\n if (!tableMainBlot) return;\r\n\r\n if (tableMainBlot.full) {\r\n tableMainBlot.cancelFull();\r\n }\r\n else {\r\n tableMainBlot.setFull();\r\n }\r\n },\r\n },\r\n InsertCaption: {\r\n name: 'InsertCaption',\r\n icon: TableHead,\r\n tip: 'Insert table caption',\r\n handle(tableModule) {\r\n if (!tableModule.table) return;\r\n const tableMainBlot = Quill.find(tableModule.table) as TableMainFormat;\r\n if (!tableMainBlot) return;\r\n\r\n const tableCaption = tableModule.quill.scroll.create('text', 'Table Caption').wrap(blotName.tableCaption, {\r\n tableId: tableMainBlot.tableId,\r\n });\r\n tableMainBlot.insertBefore(tableCaption, tableMainBlot.children.head);\r\n },\r\n },\r\n};\r\n\r\nexport const maxSaveColorCount = 10;\r\nconst bem = createBEM('color-map');\r\nexport const colorClassName = {\r\n selectWrapper: bem.b(),\r\n used: bem.bm('used'),\r\n item: bem.be('item'),\r\n btn: bem.be('btn'),\r\n map: bem.be('content'),\r\n mapRow: bem.be('content-row'),\r\n};\r\n","import type { TableUp } from '../../table-up';\r\nimport type { TableMenuOptions, ToolOption, TooltipInstance, ToolTipOptions } from '../../utils';\r\nimport Quill from 'quill';\r\nimport { createBEM, createColorPicker, createTooltip, debounce, defaultColorMap, isArray, isFunction, randomId } from '../../utils';\r\nimport { colorClassName, maxSaveColorCount, menuColorSelectClassName, tableMenuTools } from './constants';\r\n\r\nexport type TableMenuOptionsInput = Partial<Omit<TableMenuOptions, 'texts'>>;\r\nexport interface MenuTooltipInstance extends TooltipInstance {\r\n isColorPick?: boolean;\r\n}\r\nexport class TableMenuCommon {\r\n usedColors = new Set<string>();\r\n options: TableMenuOptions;\r\n menu: HTMLElement | null = null;\r\n isMenuDisplay: boolean = false;\r\n isColorPicking: boolean = false;\r\n updateUsedColor: (this: any, color?: string) => void;\r\n tooltipItem: MenuTooltipInstance[] = [];\r\n activeTooltip: MenuTooltipInstance | null = null;\r\n bem = createBEM('menu');\r\n colorItemClass = `color-${randomId()}`;\r\n colorChooseTooltipOption: ToolTipOptions = {\r\n direction: 'top',\r\n };\r\n\r\n constructor(public tableModule: TableUp, public quill: Quill, options: TableMenuOptionsInput) {\r\n this.options = this.resolveOptions(options);\r\n\r\n try {\r\n const storageValue = localStorage.getItem(this.options.localstorageKey) || '[]';\r\n let colorValue = JSON.parse(storageValue);\r\n if (!isArray(colorValue)) {\r\n colorValue = [];\r\n }\r\n colorValue.slice(-1 * maxSaveColorCount).map((c: string) => this.usedColors.add(c));\r\n }\r\n catch {}\r\n\r\n this.updateUsedColor = debounce((color?: string) => {\r\n if (!color) return;\r\n this.usedColors.add(color);\r\n if (this.usedColors.size > maxSaveColorCount) {\r\n const saveColors = Array.from(this.usedColors).slice(-1 * maxSaveColorCount);\r\n this.usedColors.clear();\r\n saveColors.map(v => this.usedColors.add(v));\r\n }\r\n\r\n localStorage.setItem(this.options.localstorageKey, JSON.stringify(Array.from(this.usedColors)));\r\n const usedColorWrappers = Array.from(document.querySelectorAll(`.${this.colorItemClass}.${colorClassName.used}`));\r\n for (const usedColorWrapper of usedColorWrappers) {\r\n const newColorItem = document.createElement('div');\r\n newColorItem.classList.add(colorClassName.item);\r\n newColorItem.style.backgroundColor = String(color);\r\n // if already have same color item. doesn't need insert\r\n const sameColorItem = Array.from(usedColorWrapper.querySelectorAll(`.${colorClassName.item}[style*=\"background-color: ${newColorItem.style.backgroundColor}\"]`));\r\n if (sameColorItem.length <= 0) {\r\n usedColorWrapper.appendChild(newColorItem);\r\n }\r\n\r\n const colorItem = Array.from(usedColorWrapper.querySelectorAll(`.${colorClassName.item}`)).slice(0, -1 * maxSaveColorCount);\r\n for (const item of colorItem) {\r\n item.remove();\r\n }\r\n }\r\n }, 1000);\r\n this.quill.on(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n }\r\n\r\n updateWhenTextChange = () => {\r\n if (this.isMenuDisplay) {\r\n this.update();\r\n }\r\n };\r\n\r\n resolveOptions(options: TableMenuOptionsInput) {\r\n const value = Object.assign({\r\n tipText: true,\r\n tools: [\r\n tableMenuTools.InsertTop,\r\n tableMenuTools.InsertRight,\r\n tableMenuTools.InsertBottom,\r\n tableMenuTools.InsertLeft,\r\n tableMenuTools.Break,\r\n tableMenuTools.MergeCell,\r\n tableMenuTools.SplitCell,\r\n tableMenuTools.Break,\r\n tableMenuTools.DeleteRow,\r\n tableMenuTools.DeleteColumn,\r\n tableMenuTools.DeleteTable,\r\n tableMenuTools.Break,\r\n tableMenuTools.BackgroundColor,\r\n tableMenuTools.BorderColor,\r\n ],\r\n localstorageKey: '__table-bg-used-color',\r\n defaultColorMap,\r\n }, options);\r\n return value as TableMenuOptions;\r\n }\r\n\r\n buildTools(): HTMLElement {\r\n const toolBox = document.createElement('div');\r\n toolBox.classList.add(this.bem.b());\r\n Object.assign(toolBox.style, { display: 'flex' });\r\n for (const tool of this.options.tools) {\r\n const { name, icon, handle, isColorChoose, key: attrKey, tip = '' } = tool as ToolOption;\r\n const item = document.createElement('span');\r\n item.classList.add(this.bem.be('item'));\r\n if (name === 'break') {\r\n item.classList.add(this.bem.is('break'));\r\n }\r\n else {\r\n // add icon\r\n const iconDom = document.createElement('i');\r\n iconDom.classList.add('icon');\r\n if (isFunction(icon)) {\r\n iconDom.appendChild(icon(this.tableModule));\r\n }\r\n else {\r\n iconDom.innerHTML = icon;\r\n }\r\n item.appendChild(iconDom);\r\n\r\n if (isColorChoose && attrKey) {\r\n const tooltipItem = this.createColorChoose(item, { name, icon, handle, isColorChoose, key: attrKey, tip });\r\n this.tooltipItem.push(tooltipItem);\r\n item.classList.add(menuColorSelectClassName);\r\n }\r\n else {\r\n isFunction(handle) && item.addEventListener('click', (e) => {\r\n this.quill.focus();\r\n handle(this.tableModule, this.getSelectedTds(), e);\r\n }, false);\r\n }\r\n\r\n // add text\r\n const tipText = this.tableModule.options.texts[name] || tip;\r\n if (this.options.tipText && tipText && tip) {\r\n this.createTipText(item, tipText);\r\n }\r\n }\r\n toolBox.appendChild(item);\r\n }\r\n return toolBox;\r\n }\r\n\r\n createColorChoose(item: HTMLElement, { handle, key }: ToolOption) {\r\n const colorSelectWrapper = document.createElement('div');\r\n colorSelectWrapper.classList.add(colorClassName.selectWrapper);\r\n\r\n if (this.options.defaultColorMap.length > 0) {\r\n const colorMap = document.createElement('div');\r\n colorMap.classList.add(colorClassName.map);\r\n for (const colors of this.options.defaultColorMap) {\r\n const colorMapRow = document.createElement('div');\r\n colorMapRow.classList.add(colorClassName.mapRow);\r\n for (const color of colors) {\r\n const colorItem = document.createElement('div');\r\n colorItem.classList.add(colorClassName.item);\r\n colorItem.style.backgroundColor = color;\r\n colorMapRow.appendChild(colorItem);\r\n }\r\n colorMap.appendChild(colorMapRow);\r\n }\r\n colorSelectWrapper.appendChild(colorMap);\r\n }\r\n\r\n const colorMapRow = document.createElement('div');\r\n colorMapRow.classList.add(colorClassName.mapRow);\r\n Object.assign(colorMapRow.style, {\r\n marginTop: '4px',\r\n });\r\n const transparentColor = document.createElement('div');\r\n transparentColor.classList.add(colorClassName.btn, 'transparent');\r\n transparentColor.textContent = this.tableModule.options.texts.transparent;\r\n transparentColor.addEventListener('click', () => {\r\n handle(this.tableModule, this.getSelectedTds(), 'transparent');\r\n });\r\n const clearColor = document.createElement('div');\r\n clearColor.classList.add(colorClassName.btn, 'clear');\r\n clearColor.textContent = this.tableModule.options.texts.clear;\r\n clearColor.addEventListener('click', () => {\r\n handle(this.tableModule, this.getSelectedTds(), null);\r\n });\r\n const customColor = document.createElement('div');\r\n customColor.classList.add(colorClassName.btn, 'custom');\r\n customColor.textContent = this.tableModule.options.texts.custom;\r\n const colorPicker = createColorPicker({\r\n onChange: (color) => {\r\n handle(this.tableModule, this.getSelectedTds(), color);\r\n this.updateUsedColor(color);\r\n },\r\n });\r\n const { hide: hideColorPicker, destroy: destroyColorPicker } = createTooltip(customColor, {\r\n direction: 'right',\r\n type: 'click',\r\n content: colorPicker,\r\n container: customColor,\r\n })!;\r\n\r\n colorMapRow.appendChild(transparentColor);\r\n colorMapRow.appendChild(clearColor);\r\n colorMapRow.appendChild(customColor);\r\n colorSelectWrapper.appendChild(colorMapRow);\r\n\r\n const usedColorWrap = document.createElement('div');\r\n usedColorWrap.classList.add(colorClassName.used, this.colorItemClass);\r\n for (const recordColor of this.usedColors) {\r\n const colorItem = document.createElement('div');\r\n colorItem.classList.add(colorClassName.item);\r\n colorItem.style.backgroundColor = recordColor;\r\n usedColorWrap.appendChild(colorItem);\r\n }\r\n colorSelectWrapper.appendChild(usedColorWrap);\r\n\r\n colorSelectWrapper.addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n hideColorPicker();\r\n const item = e.target as HTMLElement;\r\n const color = item.style.backgroundColor;\r\n const selectedTds = this.getSelectedTds();\r\n if (item && color && selectedTds.length > 0) {\r\n this.tableModule.setCellAttrs(selectedTds, key!, color, true);\r\n if (!item.closest(`.${colorClassName.item}`)) return;\r\n this.updateUsedColor(color);\r\n }\r\n });\r\n\r\n // get tooltip instance. makesure color picker only display one at time\r\n const tooltip: MenuTooltipInstance = createTooltip(item, {\r\n type: 'click',\r\n content: colorSelectWrapper,\r\n onOpen: () => {\r\n if (this.isMenuDisplay && this.tableModule.tableSelection) {\r\n this.tableModule.tableSelection.hideDisplay();\r\n }\r\n this.setActiveTooltip(tooltip);\r\n return false;\r\n },\r\n onClose: () => {\r\n if (this.isMenuDisplay && this.tableModule.tableSelection) {\r\n this.tableModule.tableSelection.updateWithSelectedTds();\r\n this.tableModule.tableSelection.showDisplay();\r\n }\r\n const isChild = colorSelectWrapper.contains(colorPicker);\r\n if (isChild) {\r\n hideColorPicker();\r\n }\r\n if (this.activeTooltip === tooltip) {\r\n this.activeTooltip = null;\r\n }\r\n return false;\r\n },\r\n onDestroy: () => {\r\n destroyColorPicker();\r\n if (this.activeTooltip === tooltip) {\r\n this.activeTooltip = null;\r\n }\r\n },\r\n ...this.colorChooseTooltipOption,\r\n })!;\r\n tooltip.isColorPick = true;\r\n return tooltip;\r\n }\r\n\r\n setActiveTooltip(tooltip: MenuTooltipInstance | null) {\r\n if (this.activeTooltip && this.activeTooltip !== tooltip) {\r\n this.activeTooltip.hide(true);\r\n }\r\n this.activeTooltip = tooltip;\r\n }\r\n\r\n getSelectedTds() {\r\n return this.tableModule.tableSelection?.selectedTds || [];\r\n }\r\n\r\n createTipText(item: HTMLElement, text: string) {\r\n const tipTextDom = createTooltip(item, { msg: text });\r\n tipTextDom && this.tooltipItem.push(tipTextDom);\r\n }\r\n\r\n show() {\r\n if (!this.menu || !this.tableModule.tableSelection || !this.tableModule.tableSelection.boundary) return;\r\n Object.assign(this.menu.style, { display: 'flex' });\r\n this.isMenuDisplay = true;\r\n this.update();\r\n }\r\n\r\n update() {\r\n }\r\n\r\n hide() {\r\n this.menu && Object.assign(this.menu.style, { display: 'none' });\r\n for (const tooltip of this.tooltipItem) {\r\n tooltip.hide(true);\r\n }\r\n this.isMenuDisplay = false;\r\n }\r\n\r\n destroy() {\r\n this.quill.off(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n this.activeTooltip = null;\r\n for (const tooltip of this.tooltipItem) tooltip.destroy();\r\n if (!this.menu) return;\r\n this.hide();\r\n this.menu.remove();\r\n this.menu = null;\r\n }\r\n}\r\n","import type Quill from 'quill';\r\nimport type { TableUp } from '../../table-up';\r\nimport type { TableMenuOptions, ToolTipOptions } from '../../utils';\r\nimport { limitDomInViewPort } from '../../utils';\r\nimport { menuColorSelectClassName } from './constants';\r\nimport { TableMenuCommon } from './table-menu-common';\r\n\r\ntype TableMenuOptionsInput = Partial<Omit<TableMenuOptions, 'texts'>>;\r\nexport class TableMenuContextmenu extends TableMenuCommon {\r\n colorChooseTooltipOption: ToolTipOptions = {\r\n direction: 'right',\r\n };\r\n\r\n constructor(public tableModule: TableUp, public quill: Quill, options: TableMenuOptionsInput) {\r\n super(tableModule, quill, options);\r\n\r\n this.quill.root.addEventListener('contextmenu', this.listenContextmenu);\r\n }\r\n\r\n listenContextmenu = (e: MouseEvent) => {\r\n e.preventDefault();\r\n\r\n const path = e.composedPath() as HTMLElement[];\r\n if (!path || path.length <= 0) return;\r\n\r\n const tableNode = path.find(node => node.tagName && node.tagName.toUpperCase() === 'TABLE' && node.classList.contains('ql-table'));\r\n\r\n if (tableNode && this.tableModule.tableSelection?.selectedTds?.length) {\r\n if (!this.menu) {\r\n this.menu = this.buildTools();\r\n }\r\n // manual call menu show\r\n Object.assign(this.menu.style, { display: 'flex' });\r\n this.isMenuDisplay = true;\r\n\r\n this.update({ x: e.clientX, y: e.clientY });\r\n document.addEventListener('click', () => {\r\n this.hide();\r\n }, { once: true });\r\n }\r\n else {\r\n this.hide();\r\n }\r\n };\r\n\r\n buildTools(): HTMLElement {\r\n const menu = super.buildTools();\r\n menu.classList.add(this.bem.is('contextmenu'));\r\n const items = menu.getElementsByClassName(menuColorSelectClassName);\r\n for (const item of Array.from(items)) {\r\n item.addEventListener('click', e => e.stopPropagation());\r\n }\r\n document.body.appendChild(menu);\r\n return menu;\r\n }\r\n\r\n createTipText(item: HTMLElement, text: string): void {\r\n const tipTextDom = document.createElement('span');\r\n tipTextDom.textContent = text;\r\n item.appendChild(tipTextDom);\r\n }\r\n\r\n // override show. because TableSelection will call tableMenu.show() after select td\r\n show() {}\r\n\r\n update(position?: { x: number; y: number }) {\r\n if (!this.isMenuDisplay || !this.menu || !this.tableModule.tableSelection || !this.tableModule.tableSelection.isDisplaySelection) return;\r\n if (!position) {\r\n return;\r\n }\r\n\r\n super.update();\r\n const style: Record<string, any> = {\r\n display: 'flex',\r\n left: 0,\r\n top: 0,\r\n };\r\n\r\n const { x, y } = position;\r\n style.left = x;\r\n style.top = y;\r\n\r\n Object.assign(this.menu.style, {\r\n ...style,\r\n left: `${style.left + window.scrollX}px`,\r\n top: `${style.top + window.scrollY}px`,\r\n });\r\n\r\n // limit menu in viewport\r\n const menuRect = this.menu.getBoundingClientRect();\r\n const { left: limitLeft, top: limitTop } = limitDomInViewPort(menuRect);\r\n Object.assign(this.menu.style, {\r\n left: `${limitLeft + window.scrollX}px`,\r\n top: `${limitTop + window.scrollY}px`,\r\n });\r\n }\r\n\r\n destroy() {\r\n this.quill.root.removeEventListener('contextmenu', this.listenContextmenu);\r\n super.destroy();\r\n }\r\n}\r\n","import type Quill from 'quill';\r\nimport type { TableUp } from '../../table-up';\r\nimport type { TableMenuOptionsInput } from './table-menu-common';\r\nimport { computePosition, flip, limitShift, offset, shift } from '@floating-ui/dom';\r\nimport { TableMenuCommon } from './table-menu-common';\r\n\r\nexport class TableMenuSelect extends TableMenuCommon {\r\n constructor(public tableModule: TableUp, public quill: Quill, options: TableMenuOptionsInput) {\r\n super(tableModule, quill, options);\r\n\r\n this.menu = this.buildTools();\r\n this.tableModule.addContainer(this.menu);\r\n this.show();\r\n this.update();\r\n }\r\n\r\n update() {\r\n if (!this.isMenuDisplay || !this.menu || !this.tableModule.tableSelection || !this.tableModule.tableSelection.isDisplaySelection) return;\r\n super.update();\r\n\r\n computePosition(this.tableModule.tableSelection.cellSelect, this.menu, {\r\n placement: 'bottom',\r\n middleware: [flip(), shift({ limiter: limitShift() }), offset(20)],\r\n }).then(({ x, y }) => {\r\n Object.assign(this.menu!.style, {\r\n left: `${x}px`,\r\n top: `${y}px`,\r\n });\r\n });\r\n }\r\n}\r\n","import type { TableMainFormat } from '../../formats';\r\n\r\nexport const isTableAlignRight = (tableMainBlot: TableMainFormat) => !tableMainBlot.full && tableMainBlot.align === 'right';\r\n","import type Quill from 'quill';\r\nimport type { TableMainFormat } from '../../formats';\r\nimport type { TableUp } from '../../table-up';\r\nimport { getTableMainRect } from '../../formats';\r\nimport { createBEM, createButton, createDialog, tableUpEvent, tableUpSize } from '../../utils';\r\nimport { isTableAlignRight } from './utils';\r\n\r\nexport interface sizeChangeValue {\r\n px: number;\r\n pre: number;\r\n}\r\nexport class TableResizeCommon {\r\n colIndex: number = -1;\r\n tableMain?: TableMainFormat;\r\n dragging = false;\r\n dragColBreak: HTMLElement | null = null;\r\n handleColMouseUpFunc = this.handleColMouseUp.bind(this);\r\n handleColMouseMoveFunc = this.handleColMouseMove.bind(this);\r\n handleColMouseDownFunc = this.handleColMouseDown.bind(this);\r\n\r\n rowIndex: number = -1;\r\n dragRowBreak: HTMLElement | null = null;\r\n handleRowMouseUpFunc = this.handleRowMouseUp.bind(this);\r\n handleRowMouseMoveFunc = this.handleRowMouseMove.bind(this);\r\n handleRowMouseDownFunc = this.handleRowMouseDown.bind(this);\r\n\r\n dragBEM = createBEM('drag-line');\r\n\r\n constructor(public tableModule: TableUp, public quill: Quill) {}\r\n\r\n findCurrentColIndex(_e: MouseEvent) {\r\n return -1;\r\n }\r\n\r\n colWidthChange(_i: number, _w: sizeChangeValue, _isFull: boolean) {}\r\n\r\n async createConfirmDialog({ message, confirm, cancel }: {\r\n message: string;\r\n confirm: string;\r\n cancel: string;\r\n }) {\r\n return new Promise<boolean>((resolve) => {\r\n const content = document.createElement('div');\r\n Object.assign(content.style, {\r\n padding: '8px 12px',\r\n fontSize: '14px',\r\n lineHeight: '1.5',\r\n });\r\n const tip = document.createElement('p');\r\n tip.textContent = message;\r\n const btnWrapper = document.createElement('div');\r\n Object.assign(btnWrapper.style, {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n gap: `6px`,\r\n });\r\n const cancelBtn = createButton({ content: cancel });\r\n const confirmBtn = createButton({ type: 'confirm', content: confirm });\r\n\r\n btnWrapper.appendChild(cancelBtn);\r\n btnWrapper.appendChild(confirmBtn);\r\n content.appendChild(tip);\r\n content.appendChild(btnWrapper);\r\n\r\n const { close } = createDialog({ child: content });\r\n\r\n cancelBtn.addEventListener('click', () => {\r\n resolve(false);\r\n close();\r\n });\r\n confirmBtn.addEventListener('click', () => {\r\n resolve(true);\r\n close();\r\n });\r\n });\r\n }\r\n\r\n async handleColMouseUp() {\r\n if (!this.dragColBreak || !this.tableMain || this.colIndex === -1) return;\r\n const cols = this.tableMain.getCols();\r\n const w = Number.parseInt(this.dragColBreak.dataset.w || '0');\r\n let isFull = this.tableMain.full;\r\n let needUpdate = false;\r\n const updateInfo: { index: number; width: number }[] = [];\r\n if (isFull) {\r\n const tableMainWidth = this.tableMain.domNode.getBoundingClientRect().width;\r\n let pre = (w / tableMainWidth) * 100;\r\n const oldWidthPre = cols[this.colIndex].width;\r\n if (pre < oldWidthPre) {\r\n // minus\r\n // if not the last col. add the reduced amount to the next col\r\n // if is the last col. add the reduced amount to the pre col\r\n pre = Math.max(tableUpSize.colMinWidthPre, pre);\r\n if (cols[this.colIndex + 1] || cols[this.colIndex - 1]) {\r\n const i = cols[this.colIndex + 1] ? this.colIndex + 1 : this.colIndex - 1;\r\n updateInfo.push({ index: i, width: cols[i].width + oldWidthPre - pre });\r\n }\r\n else {\r\n pre = 100;\r\n }\r\n needUpdate = true;\r\n updateInfo.push({ index: this.colIndex, width: pre });\r\n }\r\n else {\r\n // magnify col\r\n // the last col can't magnify. control last but one minus to magnify last col\r\n if (cols[this.colIndex + 1]) {\r\n const totalWidthNextPre = oldWidthPre + cols[this.colIndex + 1].width;\r\n pre = Math.min(totalWidthNextPre - tableUpSize.colMinWidthPre, pre);\r\n needUpdate = true;\r\n updateInfo.push(\r\n { index: this.colIndex, width: pre },\r\n { index: this.colIndex + 1, width: totalWidthNextPre - pre },\r\n );\r\n }\r\n }\r\n }\r\n else {\r\n this.tableMain.domNode.style.width = `${\r\n Number.parseFloat(this.tableMain.domNode.style.width)\r\n - cols[this.colIndex].domNode.getBoundingClientRect().width\r\n + w\r\n }px`;\r\n needUpdate = true;\r\n updateInfo.push({ index: this.colIndex, width: w });\r\n }\r\n\r\n document.body.removeChild(this.dragColBreak);\r\n this.dragColBreak = null;\r\n document.removeEventListener('mouseup', this.handleColMouseUpFunc);\r\n document.removeEventListener('mousemove', this.handleColMouseMoveFunc);\r\n this.dragging = false;\r\n\r\n if (needUpdate) {\r\n const tableWidth = this.tableMain.domNode.getBoundingClientRect().width;\r\n if (isFull) {\r\n // if full table and percentage width is larger than 100%. check if convert to fixed px\r\n let resultWidth = 0;\r\n const skipColIndex = new Set(updateInfo.map(({ index, width }) => {\r\n resultWidth += width;\r\n return index;\r\n }));\r\n for (const [index, col] of cols.entries()) {\r\n if (skipColIndex.has(index)) continue;\r\n resultWidth += col.width;\r\n }\r\n\r\n if (resultWidth > 100) {\r\n if (!await this.createConfirmDialog({\r\n message: this.tableModule.options.texts.perWidthInsufficient,\r\n confirm: this.tableModule.options.texts.confirmText,\r\n cancel: this.tableModule.options.texts.cancelText,\r\n })) {\r\n return;\r\n }\r\n this.tableMain.cancelFull();\r\n isFull = false;\r\n for (const [i, info] of updateInfo.entries()) {\r\n const { width, index } = info;\r\n updateInfo[i] = {\r\n index,\r\n width: width / 100 * tableWidth,\r\n };\r\n }\r\n }\r\n }\r\n\r\n for (const { index, width } of updateInfo) {\r\n cols[index].width = `${Math.round(width)}${isFull ? '%' : 'px'}`;\r\n this.colWidthChange(\r\n index,\r\n {\r\n px: Math.round(width / 100 * tableWidth),\r\n pre: Math.round(width),\r\n },\r\n isFull,\r\n );\r\n }\r\n }\r\n\r\n this.quill.emitter.emit(tableUpEvent.AFTER_TABLE_RESIZE);\r\n }\r\n\r\n // fix browser compatibility, get column rect left/x inaccurate\r\n getColumnRect(columnIndex: number) {\r\n if (!this.tableMain) return null;\r\n const cols = this.tableMain.getCols();\r\n if (columnIndex >= cols.length) return null;\r\n\r\n // calculate column position\r\n let left = cols[0].domNode.getBoundingClientRect().left;\r\n for (let i = 0; i < columnIndex; i++) {\r\n const colRect = cols[i].domNode.getBoundingClientRect();\r\n left += colRect.width;\r\n }\r\n\r\n const currentCol = cols[columnIndex];\r\n const colWidth = currentCol.domNode.getBoundingClientRect().width;\r\n\r\n return {\r\n left,\r\n right: left + colWidth,\r\n width: colWidth,\r\n };\r\n }\r\n\r\n handleColMouseMove(e: MouseEvent): { left: number; width: number } | undefined {\r\n e.preventDefault();\r\n if (!this.dragColBreak || !this.tableMain || this.colIndex === -1) return;\r\n const cols = this.tableMain.getCols();\r\n const changeColRect = this.getColumnRect(this.colIndex)!;\r\n const tableRect = this.tableMain.domNode.getBoundingClientRect();\r\n let resX = e.clientX;\r\n\r\n // table full not handle align right\r\n if (this.tableMain.full) {\r\n // max width = current col.width + next col.width\r\n // if current col is last. max width = current col.width\r\n const minWidth = (tableUpSize.colMinWidthPre / 100) * tableRect.width;\r\n let maxRange = tableRect.right;\r\n if (resX > changeColRect.right && cols[this.colIndex + 1]) {\r\n maxRange = Math.max(this.getColumnRect(this.colIndex + 1)!.right - minWidth, changeColRect.left + minWidth);\r\n }\r\n const minRange = changeColRect.left + minWidth;\r\n resX = Math.min(Math.max(resX, minRange), maxRange);\r\n }\r\n else {\r\n // when table align right, mousemove to the left, the col width will be increase\r\n if (isTableAlignRight(this.tableMain)) {\r\n if (changeColRect.right - resX < tableUpSize.colMinWidthPx) {\r\n resX = changeColRect.right - tableUpSize.colMinWidthPx;\r\n }\r\n }\r\n else {\r\n if (resX - changeColRect.left < tableUpSize.colMinWidthPx) {\r\n resX = changeColRect.left + tableUpSize.colMinWidthPx;\r\n }\r\n }\r\n }\r\n\r\n let width = resX - changeColRect.left;\r\n if (isTableAlignRight(this.tableMain)) {\r\n width = changeColRect.right - resX;\r\n }\r\n this.dragColBreak.style.left = `${resX}px`;\r\n this.dragColBreak.dataset.w = String(width);\r\n return {\r\n left: resX,\r\n width,\r\n };\r\n }\r\n\r\n handleColMouseDown(e: MouseEvent): { top: number; left: number; height: number } | undefined {\r\n if (e.button !== 0) return;\r\n e.preventDefault();\r\n if (!this.tableMain) return;\r\n const { rect: tableRect, body: tableBodyBlot } = getTableMainRect(this.tableMain);\r\n if (!tableBodyBlot) return;\r\n // set drag init width\r\n const cols = this.tableMain.getCols();\r\n this.colIndex = this.findCurrentColIndex(e);\r\n if (this.colIndex === -1) return;\r\n const colWidthAttr = cols[this.colIndex].width;\r\n const width = this.tableMain.full ? colWidthAttr / 100 * tableRect.width : colWidthAttr;\r\n\r\n document.addEventListener('mouseup', this.handleColMouseUpFunc);\r\n document.addEventListener('mousemove', this.handleColMouseMoveFunc);\r\n\r\n this.dragging = true;\r\n\r\n const divDom = document.createElement('div');\r\n divDom.classList.add(this.dragBEM.b());\r\n divDom.classList.add(this.dragBEM.is('col'));\r\n divDom.dataset.w = String(width);\r\n\r\n const styleValue = {\r\n top: tableRect.y,\r\n left: e.clientX,\r\n height: tableRect.height,\r\n };\r\n Object.assign(divDom.style, {\r\n top: `${styleValue.top}px`,\r\n left: `${styleValue.left}px`,\r\n height: `${styleValue.height}px`,\r\n });\r\n const appendTo = document.body;\r\n appendTo.appendChild(divDom);\r\n\r\n if (this.dragColBreak) appendTo.removeChild(this.dragColBreak);\r\n this.dragColBreak = divDom;\r\n\r\n return styleValue;\r\n }\r\n\r\n findCurrentRowIndex(_e: MouseEvent) {\r\n return -1;\r\n }\r\n\r\n rowHeightChange(_i: number, _h: number) {}\r\n\r\n handleRowMouseUp() {\r\n if (!this.tableMain || !this.dragRowBreak || this.rowIndex === -1) return;\r\n const h = Number.parseInt(this.dragRowBreak.dataset.h || '0');\r\n\r\n const rows = this.tableMain.getRows();\r\n rows[this.rowIndex].setHeight(`${h}px`);\r\n this.rowHeightChange(this.rowIndex, h);\r\n\r\n document.body.removeChild(this.dragRowBreak);\r\n this.dragRowBreak = null;\r\n document.removeEventListener('mouseup', this.handleRowMouseUpFunc);\r\n document.removeEventListener('mousemove', this.handleRowMouseMoveFunc);\r\n this.dragging = false;\r\n this.quill.emitter.emit(tableUpEvent.AFTER_TABLE_RESIZE);\r\n }\r\n\r\n handleRowMouseMove(e: MouseEvent): { top: number; height: number } | undefined {\r\n if (!this.tableMain || !this.dragRowBreak || this.rowIndex === -1) return;\r\n e.preventDefault();\r\n const rows = this.tableMain.getRows();\r\n const rect = rows[this.rowIndex].domNode.getBoundingClientRect();\r\n let resY = e.clientY;\r\n if (resY - rect.y < tableUpSize.rowMinHeightPx) {\r\n resY = rect.y + tableUpSize.rowMinHeightPx;\r\n }\r\n this.dragRowBreak.style.top = `${resY}px`;\r\n this.dragRowBreak.dataset.h = String(resY - rect.y);\r\n return {\r\n top: resY,\r\n height: resY - rect.y,\r\n };\r\n }\r\n\r\n handleRowMouseDown(e: MouseEvent): { top: number; left: number; width: number } | undefined {\r\n if (e.button !== 0) return;\r\n e.preventDefault();\r\n if (!this.tableMain) return;\r\n\r\n this.rowIndex = this.findCurrentRowIndex(e);\r\n if (this.rowIndex === -1) return;\r\n\r\n this.dragging = true;\r\n document.addEventListener('mouseup', this.handleRowMouseUpFunc);\r\n document.addEventListener('mousemove', this.handleRowMouseMoveFunc);\r\n\r\n const rows = this.tableMain.getRows();\r\n\r\n // set drag init width\r\n const height = rows[this.rowIndex].domNode.getBoundingClientRect().height;\r\n const tableMainRect = this.tableMain.domNode.getBoundingClientRect();\r\n\r\n const divDom = document.createElement('div');\r\n divDom.classList.add(this.dragBEM.b());\r\n divDom.classList.add(this.dragBEM.is('row'));\r\n divDom.dataset.h = String(height);\r\n\r\n const styleValue = {\r\n top: e.clientY,\r\n left: tableMainRect.x,\r\n width: tableMainRect.width,\r\n };\r\n Object.assign(divDom.style, {\r\n top: `${styleValue.top}px`,\r\n left: `${styleValue.left}px`,\r\n width: `${styleValue.width}px`,\r\n });\r\n const appendTo = document.body;\r\n appendTo.appendChild(divDom);\r\n\r\n if (this.dragRowBreak) appendTo.removeChild(this.dragRowBreak);\r\n this.dragRowBreak = divDom;\r\n\r\n return styleValue;\r\n }\r\n\r\n update() {}\r\n destroy() {}\r\n}\r\n","import type { Parchment as TypeParchment } from 'quill';\r\nimport type { TableColFormat, TableMainFormat, TableRowFormat } from '../../formats';\r\nimport type { TableUp } from '../../table-up';\r\nimport type { sizeChangeValue } from './table-resize-common';\r\nimport Quill from 'quill';\r\nimport { getTableMainRect, TableCaptionFormat, TableCellInnerFormat } from '../../formats';\r\nimport { addScrollEvent, clearScrollEvent, createBEM, findChildBlot } from '../../utils';\r\nimport { TableResizeCommon } from './table-resize-common';\r\nimport { isTableAlignRight } from './utils';\r\n\r\ninterface Point {\r\n x: number;\r\n y: number;\r\n}\r\nexport class TableResizeBox extends TableResizeCommon {\r\n root!: HTMLElement;\r\n tableMain: TableMainFormat;\r\n tableWrapper!: TypeParchment.Parent;\r\n resizeObserver!: ResizeObserver;\r\n tableCols: TableColFormat[] = [];\r\n tableRows: TableRowFormat[] = [];\r\n rowHeadWrapper: HTMLElement | null = null;\r\n colHeadWrapper: HTMLElement | null = null;\r\n corner: HTMLElement | null = null;\r\n scrollHandler: [HTMLElement, (e: Event) => void][] = [];\r\n lastHeaderSelect: { isX: boolean; index: number } | null = null;\r\n size: number = 12;\r\n bem = createBEM('resize-box');\r\n\r\n constructor(public tableModule: TableUp, public table: HTMLElement, quill: Quill) {\r\n super(tableModule, quill);\r\n this.tableMain = Quill.find(this.table) as TableMainFormat;\r\n\r\n if (!this.tableMain) return;\r\n this.tableWrapper = this.tableMain.parent;\r\n if (!this.tableWrapper) return;\r\n\r\n this.root = this.tableModule.addContainer(this.bem.b());\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.show();\r\n });\r\n this.resizeObserver.observe(this.table);\r\n this.quill.on(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n }\r\n\r\n updateWhenTextChange = () => {\r\n this.update();\r\n };\r\n\r\n handleResizerHeader(isX: boolean, index: number, e: MouseEvent) {\r\n const { clientX, clientY } = e;\r\n const tableRect = this.table.getBoundingClientRect();\r\n if (this.tableModule.tableSelection) {\r\n const tableSelection = this.tableModule.tableSelection;\r\n if (!e.shiftKey) {\r\n this.lastHeaderSelect = null;\r\n }\r\n const currentBoundary: [Point, Point] = [\r\n { x: isX ? tableRect.left : clientX, y: isX ? clientY : tableRect.top },\r\n { x: isX ? tableRect.right : clientX, y: isX ? clientY : tableRect.bottom },\r\n ];\r\n if (this.lastHeaderSelect) {\r\n // find last click head\r\n let lastX: number;\r\n let lastY: number;\r\n if (this.lastHeaderSelect.isX) {\r\n const tableRowHeads = Array.from(this.root.getElementsByClassName(this.bem.be('row-header'))) as HTMLElement[];\r\n const rect = tableRowHeads[this.lastHeaderSelect.index].getBoundingClientRect();\r\n lastX = Math.min(rect.left, tableRect.left);\r\n lastY = rect.top + rect.height / 2;\r\n }\r\n else {\r\n const tableColHeads = Array.from(this.root.getElementsByClassName(this.bem.be('col-header'))) as HTMLElement[];\r\n const rect = tableColHeads[this.lastHeaderSelect.index].getBoundingClientRect();\r\n lastX = rect.left + rect.width / 2;\r\n lastY = Math.min(rect.top, tableRect.top);\r\n }\r\n\r\n if (this.lastHeaderSelect.isX !== isX) {\r\n currentBoundary[1] = {\r\n x: Math.max(currentBoundary[0].x, lastX),\r\n y: Math.max(currentBoundary[0].y, lastY),\r\n };\r\n currentBoundary[0] = {\r\n x: Math.min(currentBoundary[0].x, lastX),\r\n y: Math.min(currentBoundary[0].y, lastY),\r\n };\r\n }\r\n else if (isX) {\r\n currentBoundary[0].y = Math.min(currentBoundary[0].y, lastY);\r\n currentBoundary[1].y = Math.max(currentBoundary[1].y, lastY);\r\n }\r\n else {\r\n currentBoundary[0].x = Math.min(currentBoundary[0].x, lastX);\r\n currentBoundary[1].x = Math.max(currentBoundary[1].x, lastX);\r\n }\r\n }\r\n else {\r\n this.lastHeaderSelect = { isX, index };\r\n }\r\n\r\n tableSelection.table = this.table;\r\n tableSelection.selectedTds = tableSelection.computeSelectedTds(...currentBoundary);\r\n tableSelection.show();\r\n }\r\n }\r\n\r\n findCurrentColIndex(e: MouseEvent): number {\r\n return Array.from(this.root.getElementsByClassName(this.bem.be('col-separator'))).indexOf(e.target as HTMLElement);\r\n }\r\n\r\n colWidthChange(i: number, w: sizeChangeValue, isFull: boolean) {\r\n const tableColHeads = Array.from(this.root.getElementsByClassName(this.bem.be('col-header'))) as HTMLElement[];\r\n tableColHeads[i].style.width = isFull ? `${w.pre}%` : `${w.px}px`;\r\n }\r\n\r\n handleColMouseDownFunc = function (this: TableResizeBox, e: MouseEvent) {\r\n const value = this.handleColMouseDown(e);\r\n if (value && this.dragColBreak) {\r\n const [tableCaptionBlot] = findChildBlot(this.tableMain, TableCaptionFormat);\r\n const offset = tableCaptionBlot && tableCaptionBlot.side === 'top' ? 0 : this.size;\r\n Object.assign(this.dragColBreak.style, {\r\n top: `${value.top - offset}px`,\r\n left: `${value.left}px`,\r\n height: `${value.height + this.size}px`,\r\n });\r\n }\r\n return value;\r\n }.bind(this);\r\n\r\n bindColEvents() {\r\n const tableColHeads = Array.from(this.root.getElementsByClassName(this.bem.be('col-header'))) as HTMLElement[];\r\n const tableColHeadSeparators = Array.from(this.root.getElementsByClassName(this.bem.be('col-separator'))) as HTMLElement[];\r\n\r\n addScrollEvent.call(this, this.tableWrapper.domNode, () => {\r\n this.colHeadWrapper!.scrollLeft = this.tableWrapper.domNode.scrollLeft;\r\n });\r\n\r\n for (const [i, el] of tableColHeads.entries()) {\r\n el.addEventListener('click', this.handleResizerHeader.bind(this, false, i));\r\n }\r\n for (const el of tableColHeadSeparators) {\r\n el.addEventListener('mousedown', this.handleColMouseDownFunc);\r\n // prevent drag\r\n el.addEventListener('dragstart', e => e.preventDefault());\r\n }\r\n }\r\n\r\n findCurrentRowIndex(e: MouseEvent): number {\r\n return Array.from(this.root.getElementsByClassName(this.bem.be('row-separator'))).indexOf(e.target as HTMLElement);\r\n }\r\n\r\n rowHeightChange(i: number, h: number) {\r\n const tableRowHeads = Array.from(this.root.getElementsByClassName(this.bem.be('row-header'))) as HTMLElement[];\r\n tableRowHeads[i].style.height = `${h}px`;\r\n }\r\n\r\n handleRowMouseDownFunc = function (this: TableResizeBox, e: MouseEvent) {\r\n const value = this.handleRowMouseDown(e);\r\n if (value && this.dragRowBreak) {\r\n Object.assign(this.dragRowBreak.style, {\r\n top: `${value.top}px`,\r\n left: `${value.left - this.size}px`,\r\n width: `${value.width + this.size}px`,\r\n });\r\n }\r\n return value;\r\n }.bind(this);\r\n\r\n bindRowEvents() {\r\n const tableRowHeads = Array.from(this.root.getElementsByClassName(this.bem.be('row-header'))) as HTMLElement[];\r\n const tableRowHeadSeparators = Array.from(this.root.getElementsByClassName(this.bem.be('row-separator'))) as HTMLElement[];\r\n\r\n addScrollEvent.call(this, this.tableWrapper.domNode, () => {\r\n this.rowHeadWrapper!.scrollTop = this.tableWrapper.domNode.scrollTop;\r\n });\r\n\r\n for (const [i, el] of tableRowHeads.entries()) {\r\n el.addEventListener('click', this.handleResizerHeader.bind(this, true, i));\r\n }\r\n for (const el of tableRowHeadSeparators) {\r\n el.addEventListener('mousedown', this.handleRowMouseDownFunc);\r\n // prevent drag\r\n el.addEventListener('dragstart', e => e.preventDefault());\r\n }\r\n }\r\n\r\n update() {\r\n const { rect: tableRect, body: tableBodyBlot } = getTableMainRect(this.tableMain);\r\n if (!tableBodyBlot) return;\r\n const tableWrapperRect = this.tableWrapper.domNode.getBoundingClientRect();\r\n const rootRect = this.quill.root.getBoundingClientRect();\r\n Object.assign(this.root.style, {\r\n top: `${Math.max(tableRect.y, tableWrapperRect.y) - rootRect.y}px`,\r\n left: `${Math.max(tableRect.x, tableWrapperRect.x) - rootRect.x}px`,\r\n });\r\n\r\n let cornerTranslateX = -1 * this.size;\r\n let rowHeadWrapperTranslateX = -1 * this.size;\r\n if (isTableAlignRight(this.tableMain)) {\r\n this.root.classList.add(this.bem.is('align-right'));\r\n cornerTranslateX = Math.min(tableWrapperRect.width, tableRect.width);\r\n rowHeadWrapperTranslateX = Math.min(tableWrapperRect.width, tableRect.width);\r\n }\r\n else {\r\n this.root.classList.remove(this.bem.is('align-right'));\r\n }\r\n\r\n const [tableCaptionBlot] = findChildBlot(this.tableMain, TableCaptionFormat);\r\n const tableCaptionIsTop = !tableCaptionBlot || !(tableCaptionBlot && tableCaptionBlot.side === 'top');\r\n if (tableCaptionIsTop) {\r\n this.root.classList.remove(this.bem.is('caption-bottom'));\r\n }\r\n else {\r\n this.root.classList.add(this.bem.is('caption-bottom'));\r\n }\r\n\r\n if (this.corner) {\r\n Object.assign(this.corner.style, {\r\n transform: `translateY(${-1 * this.size}px) translateX(${cornerTranslateX}px)`,\r\n top: `${tableCaptionIsTop ? 0 : tableRect.height + this.size}px`,\r\n });\r\n }\r\n if (this.rowHeadWrapper) {\r\n Object.assign(this.rowHeadWrapper.style, {\r\n transform: `translateX(${rowHeadWrapperTranslateX}px)`,\r\n });\r\n }\r\n if (this.colHeadWrapper) {\r\n Object.assign(this.colHeadWrapper.style, {\r\n top: `${tableCaptionIsTop ? 0 : tableRect.height + this.size}px`,\r\n });\r\n }\r\n }\r\n\r\n show() {\r\n this.tableCols = this.tableMain.getCols();\r\n this.tableRows = this.tableMain.getRows();\r\n this.root.innerHTML = '';\r\n const { rect: tableRect, body: tableBodyBlot } = getTableMainRect(this.tableMain);\r\n if (!tableBodyBlot) return;\r\n const tableWrapperRect = this.tableWrapper.domNode.getBoundingClientRect();\r\n\r\n if (this.tableCols.length > 0 && this.tableRows.length > 0) {\r\n this.corner = document.createElement('div');\r\n this.corner.classList.add(this.bem.be('corner'));\r\n Object.assign(this.corner.style, {\r\n width: `${this.size}px`,\r\n height: `${this.size}px`,\r\n });\r\n this.corner.addEventListener('click', () => {\r\n if (this.tableModule.tableSelection) {\r\n const cellInners = this.tableMain.descendants(TableCellInnerFormat);\r\n const tableSelection = this.tableModule.tableSelection;\r\n tableSelection.selectedTds = cellInners;\r\n tableSelection.show();\r\n tableSelection.updateWithSelectedTds();\r\n }\r\n });\r\n this.root.appendChild(this.corner);\r\n }\r\n\r\n if (this.tableCols.length > 0) {\r\n let colHeadStr = '';\r\n for (const [, col] of this.tableCols.entries()) {\r\n const width = col.domNode.getBoundingClientRect().width;\r\n colHeadStr += `<div class=\"${this.bem.be('col-header')}\" style=\"width: ${width}px\">\r\n <div class=\"${this.bem.be('col-separator')}\" style=\"height: ${tableRect.height + this.size - 3}px\"></div>\r\n </div>`;\r\n }\r\n const colHeadWrapper = document.createElement('div');\r\n colHeadWrapper.classList.add(this.bem.be('col'));\r\n const colHead = document.createElement('div');\r\n colHead.classList.add(this.bem.be('col-wrapper'));\r\n Object.assign(colHeadWrapper.style, {\r\n transform: `translateY(-${this.size}px)`,\r\n maxWidth: `${tableWrapperRect.width}px`,\r\n height: `${this.size}px`,\r\n });\r\n Object.assign(colHead.style, {\r\n width: `${tableRect.width}px`,\r\n });\r\n colHead.innerHTML = colHeadStr;\r\n colHeadWrapper.appendChild(colHead);\r\n this.root.appendChild(colHeadWrapper);\r\n colHeadWrapper.scrollLeft = this.tableWrapper.domNode.scrollLeft;\r\n this.colHeadWrapper = colHeadWrapper;\r\n this.bindColEvents();\r\n }\r\n\r\n if (this.tableRows.length > 0) {\r\n let rowHeadStr = '';\r\n for (const [, row] of this.tableRows.entries()) {\r\n const height = `${row.domNode.getBoundingClientRect().height}px`;\r\n rowHeadStr += `<div class=\"${this.bem.be('row-header')}\" style=\"height: ${Number.parseFloat(height)}px\">\r\n <div class=\"${this.bem.be('row-separator')}\" style=\"width: ${tableRect.width + this.size - 3}px\"></div>\r\n </div>`;\r\n }\r\n const rowHeadWrapper = document.createElement('div');\r\n rowHeadWrapper.classList.add(this.bem.be('row'));\r\n const rowHead = document.createElement('div');\r\n rowHead.classList.add(this.bem.be('row-wrapper'));\r\n\r\n Object.assign(rowHeadWrapper.style, {\r\n transform: `translateX(-${this.size}px)`,\r\n width: `${this.size}px`,\r\n maxHeight: `${tableWrapperRect.height}px`,\r\n });\r\n Object.assign(rowHead.style, {\r\n height: `${tableRect.height}px`,\r\n });\r\n rowHead.innerHTML = rowHeadStr;\r\n rowHeadWrapper.appendChild(rowHead);\r\n this.root.appendChild(rowHeadWrapper);\r\n rowHeadWrapper.scrollTop = this.tableWrapper.domNode.scrollTop;\r\n this.rowHeadWrapper = rowHeadWrapper;\r\n this.bindRowEvents();\r\n }\r\n\r\n this.update();\r\n addScrollEvent.call(this, this.quill.root, () => {\r\n this.update();\r\n });\r\n }\r\n\r\n hide() {\r\n this.root.classList.add(this.bem.is('hidden'));\r\n }\r\n\r\n destroy() {\r\n this.hide();\r\n clearScrollEvent.call(this);\r\n this.resizeObserver.disconnect();\r\n this.quill.off(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n for (const [dom, handle] of this.scrollHandler) {\r\n dom.removeEventListener('scroll', handle);\r\n }\r\n this.root.remove();\r\n }\r\n}\r\n","import type { TableUp } from '../../table-up';\r\nimport Quill from 'quill';\r\nimport { type TableCellFormat, TableRowFormat } from '../../formats';\r\nimport { blotName, createBEM, findParentBlot, findParentBlots } from '../../utils';\r\nimport { TableResizeCommon } from './table-resize-common';\r\nimport { isTableAlignRight } from './utils';\r\n\r\nexport class TableResizeLine extends TableResizeCommon {\r\n colResizer: HTMLElement;\r\n rowResizer: HTMLElement;\r\n currentTableCell?: HTMLElement;\r\n dragging = false;\r\n\r\n curColIndex: number = -1;\r\n curRowIndex: number = -1;\r\n tableCellBlot?: TableCellFormat;\r\n\r\n bem = createBEM('resize-line');\r\n constructor(public tableModule: TableUp, public table: HTMLElement, quill: Quill) {\r\n super(tableModule, quill);\r\n this.colResizer = this.tableModule.addContainer(this.bem.be('col'));\r\n this.rowResizer = this.tableModule.addContainer(this.bem.be('row'));\r\n\r\n this.table.addEventListener('mousemove', this.mousemoveHandler);\r\n this.quill.on(Quill.events.TEXT_CHANGE, this.hideWhenTextChange);\r\n }\r\n\r\n mousemoveHandler = (e: MouseEvent) => {\r\n if (this.dragging) return;\r\n // when mousedown to select mutiple line. if move on resizer will get wrong selection\r\n if (this.tableModule.tableSelection && this.tableModule.tableSelection.dragging) return;\r\n const tableCell = this.findTableCell(e);\r\n if (!tableCell) {\r\n return this.hide();\r\n }\r\n const tableCellBlot = Quill.find(tableCell) as TableCellFormat;\r\n if (!tableCellBlot) return;\r\n if (this.currentTableCell !== tableCell) {\r\n this.show();\r\n this.currentTableCell = tableCell;\r\n this.tableCellBlot = tableCellBlot;\r\n this.tableMain = findParentBlot(tableCellBlot, blotName.tableMain);\r\n if (this.tableMain.getCols().length > 0) {\r\n this.updateColResizer();\r\n }\r\n this.updateRowResizer();\r\n }\r\n };\r\n\r\n hideWhenTextChange = () => {\r\n this.hide();\r\n };\r\n\r\n findTableCell(e: MouseEvent) {\r\n for (const el of e.composedPath()) {\r\n if (el instanceof HTMLElement && el.tagName === 'TD') {\r\n return el;\r\n }\r\n if (el === document.body) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n findCurrentColIndex() {\r\n return this.curColIndex;\r\n }\r\n\r\n handleColMouseUpFunc = async function (this: TableResizeLine) {\r\n await this.handleColMouseUp();\r\n this.updateColResizer();\r\n }.bind(this);\r\n\r\n updateColResizer() {\r\n if (!this.tableMain || !this.tableCellBlot) return;\r\n const tableCellBlot = this.tableCellBlot;\r\n this.tableModule.toolBox.removeChild(this.colResizer);\r\n this.colResizer = this.tableModule.addContainer(this.bem.be('col'));\r\n\r\n const [tableBodyBlot] = findParentBlots(tableCellBlot, [blotName.tableBody] as const);\r\n const tableBodyect = tableBodyBlot.domNode.getBoundingClientRect();\r\n const tableCellRect = tableCellBlot.domNode.getBoundingClientRect();\r\n const rootRect = this.quill.root.getBoundingClientRect();\r\n let left = tableCellRect.right - rootRect.x;\r\n if (isTableAlignRight(this.tableMain)) {\r\n left = tableCellRect.left - rootRect.x;\r\n }\r\n Object.assign(this.colResizer.style, {\r\n top: `${tableBodyect.y - rootRect.y}px`,\r\n left: `${left}px`,\r\n height: `${tableBodyect.height}px`,\r\n });\r\n\r\n const cols = this.tableMain.getCols();\r\n this.curColIndex = cols.findIndex(col => col.colId === tableCellBlot.colId);\r\n\r\n this.colResizer.addEventListener('mousedown', this.handleColMouseDownFunc);\r\n this.colResizer.addEventListener('dragstart', (e) => {\r\n e.preventDefault();\r\n });\r\n }\r\n\r\n findCurrentRowIndex() {\r\n return this.curRowIndex;\r\n }\r\n\r\n handleRowMouseUpFunc = function (this: TableResizeLine) {\r\n this.handleRowMouseUp();\r\n this.updateRowResizer();\r\n }.bind(this);\r\n\r\n updateRowResizer() {\r\n if (!this.tableMain || !this.tableCellBlot) return;\r\n const tableCellBlot = this.tableCellBlot;\r\n this.tableModule.toolBox.removeChild(this.rowResizer);\r\n this.rowResizer = this.tableModule.addContainer(this.bem.be('row'));\r\n const currentRow = tableCellBlot.parent;\r\n if (!(currentRow instanceof TableRowFormat)) {\r\n return;\r\n }\r\n\r\n const [tableBodyBlot] = findParentBlots(tableCellBlot, [blotName.tableBody] as const);\r\n const tableBodynRect = tableBodyBlot.domNode.getBoundingClientRect();\r\n const tableCellRect = tableCellBlot.domNode.getBoundingClientRect();\r\n const rootRect = this.quill.root.getBoundingClientRect();\r\n Object.assign(this.rowResizer.style, {\r\n top: `${tableCellRect.bottom - rootRect.y}px`,\r\n left: `${tableBodynRect.x - rootRect.x}px`,\r\n width: `${tableBodynRect.width}px`,\r\n });\r\n\r\n const rows = this.tableMain.getRows();\r\n this.curRowIndex = rows.indexOf(currentRow);\r\n\r\n this.rowResizer.addEventListener('mousedown', this.handleRowMouseDownFunc);\r\n this.rowResizer.addEventListener('dragstart', (e) => {\r\n e.preventDefault();\r\n });\r\n }\r\n\r\n show() {\r\n this.rowResizer.classList.remove(this.bem.is('hidden'));\r\n this.colResizer.classList.remove(this.bem.is('hidden'));\r\n }\r\n\r\n hide() {\r\n this.currentTableCell = undefined;\r\n this.rowResizer.classList.add(this.bem.is('hidden'));\r\n this.colResizer.classList.add(this.bem.is('hidden'));\r\n }\r\n\r\n update() {\r\n this.updateColResizer();\r\n this.updateRowResizer();\r\n }\r\n\r\n destroy(): void {\r\n this.colResizer.remove();\r\n this.rowResizer.remove();\r\n\r\n this.table.removeEventListener('mousemove', this.mousemoveHandler);\r\n this.quill.off(Quill.events.TEXT_CHANGE, this.hideWhenTextChange);\r\n }\r\n}\r\n","import type { TableColFormat, TableMainFormat, TableRowFormat, TableWrapperFormat } from '../../formats';\r\nimport type { TableUp } from '../../table-up';\r\nimport type { TableResizeScaleOptions } from '../../utils';\r\nimport Quill from 'quill';\r\nimport { getTableMainRect } from '../../formats';\r\nimport { addScrollEvent, clearScrollEvent, createBEM, tableUpSize } from '../../utils';\r\nimport { isTableAlignRight } from './utils';\r\n\r\nexport class TableResizeScale {\r\n scrollHandler: [HTMLElement, (e: Event) => void][] = [];\r\n tableMainBlot: TableMainFormat | null = null;\r\n tableWrapperBlot: TableWrapperFormat | null = null;\r\n bem = createBEM('scale');\r\n startX: number = 0;\r\n startY: number = 0;\r\n offset: number = 6;\r\n options: TableResizeScaleOptions;\r\n root?: HTMLElement;\r\n block?: HTMLElement;\r\n resizeobserver: ResizeObserver = new ResizeObserver(() => this.update());\r\n constructor(public tableModule: TableUp, public table: HTMLElement, public quill: Quill, options: Partial<TableResizeScaleOptions>) {\r\n this.options = this.resolveOptions(options);\r\n this.tableMainBlot = Quill.find(table) as TableMainFormat;\r\n\r\n if (this.tableMainBlot && !this.tableMainBlot.full) {\r\n this.tableWrapperBlot = this.tableMainBlot.parent as TableWrapperFormat;\r\n this.buildResizer();\r\n this.show();\r\n }\r\n this.quill.on(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n }\r\n\r\n updateWhenTextChange = () => {\r\n this.update();\r\n };\r\n\r\n resolveOptions(options: Partial<TableResizeScaleOptions>) {\r\n return Object.assign({\r\n blockSize: 12,\r\n }, options);\r\n }\r\n\r\n buildResizer() {\r\n if (!this.tableMainBlot || !this.tableWrapperBlot) return;\r\n this.root = this.tableModule.addContainer(this.bem.b());\r\n this.root.classList.add(this.bem.is('hidden'));\r\n this.block = document.createElement('div');\r\n this.block.classList.add(this.bem.be('block'));\r\n Object.assign(this.block.style, {\r\n width: `${this.options.blockSize}px`,\r\n height: `${this.options.blockSize}px`,\r\n });\r\n this.root.appendChild(this.block);\r\n\r\n let originColWidth: { blot: TableColFormat; width: number }[] = [];\r\n let originRowHeight: { blot: TableRowFormat; height: number }[] = [];\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!this.tableMainBlot) return;\r\n // divide equally by col count/row count\r\n const isRight = isTableAlignRight(this.tableMainBlot) ? -1 : 1;\r\n const diffX = (e.clientX - this.startX) * isRight;\r\n const diffY = e.clientY - this.startY;\r\n const itemWidth = Math.floor(diffX / originColWidth.length);\r\n const itemHeight = Math.floor(diffY / originRowHeight.length);\r\n\r\n for (const { blot, width } of originColWidth) {\r\n blot.width = Math.max(width + itemWidth, tableUpSize.colMinWidthPx);\r\n }\r\n for (const { blot, height } of originRowHeight) {\r\n blot.setHeight(`${Math.max(height + itemHeight, tableUpSize.rowMinHeightPx)}px`);\r\n }\r\n };\r\n const handleMouseUp = () => {\r\n originColWidth = [];\r\n originRowHeight = [];\r\n document.removeEventListener('mousemove', handleMouseMove);\r\n document.removeEventListener('mouseup', handleMouseUp);\r\n };\r\n this.block.addEventListener('mousedown', (e) => {\r\n if (!this.tableMainBlot || this.isTableOutofEditor()) return;\r\n this.startX = e.clientX;\r\n this.startY = e.clientY;\r\n // save the origin width and height to calculate result width and height\r\n originColWidth = this.tableMainBlot.getCols().map(col => ({ blot: col, width: Math.floor(col.width) }));\r\n originRowHeight = this.tableMainBlot.getRows().map(row => ({ blot: row, height: Math.floor(row.domNode.getBoundingClientRect().height) }));\r\n document.addEventListener('mousemove', handleMouseMove);\r\n document.addEventListener('mouseup', handleMouseUp);\r\n });\r\n this.block.addEventListener('dragstart', e => e.preventDefault());\r\n\r\n this.resizeobserver.observe(this.tableMainBlot.domNode);\r\n addScrollEvent.call(this, this.quill.root, () => this.update());\r\n addScrollEvent.call(this, this.tableWrapperBlot.domNode, () => this.update());\r\n }\r\n\r\n isTableOutofEditor(): boolean {\r\n if (!this.tableMainBlot || !this.tableWrapperBlot || this.tableMainBlot.full) return false;\r\n // if tableMain width larger than tableWrapper. reset tableMain width equal editor width\r\n const tableRect = this.tableMainBlot.domNode.getBoundingClientRect();\r\n const tableWrapperRect = this.tableWrapperBlot.domNode.getBoundingClientRect();\r\n // equal scale\r\n if (tableRect.width > tableWrapperRect.width) {\r\n for (const col of this.tableMainBlot.getCols()) {\r\n col.width = Math.floor((col.width / tableRect.width) * tableWrapperRect.width);\r\n }\r\n this.tableMainBlot.colWidthFillTable();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n update() {\r\n if (!this.block || !this.root || !this.tableMainBlot || !this.tableWrapperBlot) return;\r\n if (this.tableMainBlot.full) {\r\n this.hide();\r\n return;\r\n }\r\n const { rect: tableRect, body: tableBodyBlot } = getTableMainRect(this.tableMainBlot);\r\n if (!tableBodyBlot) return;\r\n const tableWrapperRect = this.tableWrapperBlot.domNode.getBoundingClientRect();\r\n const editorRect = this.quill.root.getBoundingClientRect();\r\n const { scrollTop, scrollLeft } = this.tableWrapperBlot.domNode;\r\n const blockSize = this.options.blockSize * 2 + this.offset;\r\n const rootWidth = Math.min(tableRect.width, tableWrapperRect.width) + blockSize;\r\n const rootHeight = Math.min(tableRect.height, tableWrapperRect.height) + blockSize;\r\n Object.assign(this.root.style, {\r\n width: `${rootWidth}px`,\r\n height: `${rootHeight}px`,\r\n left: `${Math.max(tableRect.x, tableWrapperRect.x) - editorRect.x - this.options.blockSize}px`,\r\n top: `${Math.max(tableRect.y, tableWrapperRect.y) - editorRect.y - this.options.blockSize}px`,\r\n });\r\n const blockStyle = {\r\n left: `${tableRect.width + blockSize - scrollLeft}px`,\r\n top: `${rootHeight - scrollTop}px`,\r\n };\r\n if (isTableAlignRight(this.tableMainBlot)) {\r\n this.root.classList.add(this.bem.is('align-right'));\r\n blockStyle.left = `${this.options.blockSize + -1 * scrollLeft}px`;\r\n }\r\n else {\r\n this.root.classList.remove(this.bem.is('align-right'));\r\n }\r\n Object.assign(this.block.style, blockStyle);\r\n }\r\n\r\n show() {\r\n if (this.root) {\r\n this.root.classList.remove(this.bem.is('hidden'));\r\n this.update();\r\n }\r\n }\r\n\r\n hide() {\r\n if (this.root) {\r\n this.root.classList.add(this.bem.is('hidden'));\r\n }\r\n }\r\n\r\n destroy() {\r\n this.hide();\r\n this.quill.off(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n this.resizeobserver.disconnect();\r\n if (this.root) {\r\n this.root.remove();\r\n }\r\n clearScrollEvent.call(this);\r\n }\r\n}\r\n","import type { TableMainFormat } from '../formats';\r\nimport type { TableUp } from '../table-up';\r\nimport Quill from 'quill';\r\nimport { getTableMainRect } from '../formats';\r\nimport { addScrollEvent, clearScrollEvent, createBEM, debounce } from '../utils';\r\n\r\nexport class Scrollbar {\r\n minSize: number = 20;\r\n gap: number = 4;\r\n move: number = 0;\r\n cursorDown: boolean = false;\r\n cursorLeave: boolean = false;\r\n ratioY: number = 1;\r\n ratioX: number = 1;\r\n sizeWidth: string = '';\r\n sizeHeight: string = '';\r\n size: string = '';\r\n thumbState: {\r\n X: number;\r\n Y: number;\r\n } = {\r\n X: 0,\r\n Y: 0,\r\n };\r\n\r\n ob: ResizeObserver;\r\n container: HTMLElement;\r\n scrollbar: HTMLElement;\r\n thumb: HTMLElement = document.createElement('div');\r\n scrollHandler: [HTMLElement, (e: Event) => void][] = [];\r\n propertyMap: { readonly size: 'height'; readonly offset: 'offsetHeight'; readonly scrollDirection: 'scrollTop'; readonly scrollSize: 'scrollHeight'; readonly axis: 'Y'; readonly direction: 'top'; readonly client: 'clientY' } | { readonly size: 'width'; readonly offset: 'offsetWidth'; readonly scrollDirection: 'scrollLeft'; readonly scrollSize: 'scrollWidth'; readonly axis: 'X'; readonly direction: 'left'; readonly client: 'clientX' };\r\n bem = createBEM('scrollbar');\r\n tableMainBlot: TableMainFormat;\r\n constructor(public quill: Quill, public isVertical: boolean, public table: HTMLElement, public scrollbarContainer: HTMLElement) {\r\n this.tableMainBlot = Quill.find(this.table) as TableMainFormat;\r\n this.container = table.parentElement!;\r\n this.propertyMap = this.isVertical\r\n ? {\r\n size: 'height',\r\n offset: 'offsetHeight',\r\n scrollDirection: 'scrollTop',\r\n scrollSize: 'scrollHeight',\r\n axis: 'Y',\r\n direction: 'top',\r\n client: 'clientY',\r\n } as const\r\n : {\r\n size: 'width',\r\n offset: 'offsetWidth',\r\n scrollDirection: 'scrollLeft',\r\n scrollSize: 'scrollWidth',\r\n axis: 'X',\r\n direction: 'left',\r\n client: 'clientX',\r\n } as const;\r\n this.calculateSize();\r\n this.ob = new ResizeObserver(() => {\r\n this.update();\r\n });\r\n this.ob.observe(table);\r\n this.scrollbar = this.createScrollbar();\r\n this.setScrollbarPosition();\r\n addScrollEvent.call(this, this.quill.root, () => this.setScrollbarPosition());\r\n this.showScrollbar();\r\n }\r\n\r\n update() {\r\n this.calculateSize();\r\n this.setScrollbarPosition();\r\n }\r\n\r\n setScrollbarPosition() {\r\n const { rect: { width: tableWidth, height: tableHeight }, body: tableBodyBlot } = getTableMainRect(this.tableMainBlot);\r\n if (!tableBodyBlot) return;\r\n const { scrollLeft: editorScrollX, scrollTop: editorScrollY, offsetLeft: rootOffsetLeft, offsetTop: rootOffsetTop } = this.quill.root;\r\n const { offsetLeft: containerOffsetLeft, offsetTop: containerOffsetTop } = this.container;\r\n const { offsetLeft: bodyOffsetLeft, offsetTop: bodyOffsetTop } = tableBodyBlot.domNode;\r\n const { width: containerWidth, height: containerHeight } = this.container.getBoundingClientRect();\r\n\r\n let x = containerOffsetLeft + bodyOffsetLeft - rootOffsetLeft;\r\n let y = containerOffsetTop + bodyOffsetTop - rootOffsetTop;\r\n if (this.isVertical) {\r\n x += Math.min(containerWidth, tableWidth);\r\n }\r\n else {\r\n y += Math.min(containerHeight, tableHeight);\r\n }\r\n\r\n // table align right effect\r\n if (this.tableMainBlot && this.tableMainBlot.align !== 'left') {\r\n x += this.table.offsetLeft - containerOffsetLeft;\r\n }\r\n\r\n Object.assign(this.scrollbar.style, {\r\n [this.propertyMap.size]: `${this.isVertical ? Math.min(containerHeight, tableHeight) : containerWidth}px`,\r\n transform: `translate(${x - editorScrollX}px, ${y - editorScrollY}px)`,\r\n });\r\n this.containerScrollHandler(this.container);\r\n }\r\n\r\n calculateSize() {\r\n const offsetHeight = this.container.offsetHeight - this.gap;\r\n const offsetWidth = this.container.offsetWidth - this.gap;\r\n const originalHeight = offsetHeight ** 2 / this.container.scrollHeight;\r\n const originalWidth = offsetWidth ** 2 / this.container.scrollWidth;\r\n const height = Math.max(originalHeight, this.minSize);\r\n const width = Math.max(originalWidth, this.minSize);\r\n this.ratioY = originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height));\r\n this.ratioX = originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width));\r\n\r\n this.sizeWidth = width + this.gap < offsetWidth ? `${width}px` : '';\r\n this.sizeHeight = height + this.gap < offsetHeight ? `${height}px` : '';\r\n this.size = this.isVertical ? this.sizeHeight : this.sizeWidth;\r\n }\r\n\r\n createScrollbar() {\r\n const scrollbar = document.createElement('div');\r\n scrollbar.classList.add(this.bem.b());\r\n scrollbar.classList.add(this.isVertical ? this.bem.is('vertical') : this.bem.is('horizontal'), this.bem.is('transparent'));\r\n Object.assign(scrollbar.style, {\r\n display: 'none',\r\n });\r\n this.thumb.classList.add(this.bem.be('thumb'));\r\n let originDocSelect: typeof document.onselectstart = null;\r\n const mouseMoveDocumentHandler = (e: MouseEvent) => {\r\n if (this.cursorDown === false) return;\r\n const prevPage = this.thumbState[this.propertyMap.axis];\r\n if (!prevPage) return;\r\n\r\n const offsetRatio = this.scrollbar[this.propertyMap.offset] ** 2\r\n / this.container[this.propertyMap.scrollSize] / (this.isVertical ? this.ratioY : this.ratioX)\r\n / this.thumb[this.propertyMap.offset];\r\n const offset = (this.scrollbar.getBoundingClientRect()[this.propertyMap.direction] - e[this.propertyMap.client]) * -1;\r\n const thumbClickPosition = this.thumb[this.propertyMap.offset] - prevPage;\r\n const thumbPositionPercentage = ((offset - thumbClickPosition) * 100 * offsetRatio) / this.scrollbar[this.propertyMap.offset];\r\n this.container[this.propertyMap.scrollDirection] = (thumbPositionPercentage * this.container[this.propertyMap.scrollSize]) / 100;\r\n };\r\n const mouseUpDocumentHandler = () => {\r\n this.thumbState[this.propertyMap.axis] = 0;\r\n this.cursorDown = false;\r\n document.removeEventListener('mousemove', mouseMoveDocumentHandler);\r\n document.removeEventListener('mouseup', mouseUpDocumentHandler);\r\n if (this.cursorLeave) {\r\n this.hideScrollbar();\r\n }\r\n // eslint-disable-next-line unicorn/prefer-add-event-listener\r\n document.onselectstart = originDocSelect;\r\n };\r\n const startDrag = (e: MouseEvent) => {\r\n e.stopImmediatePropagation();\r\n this.cursorDown = true;\r\n document.addEventListener('mousemove', mouseMoveDocumentHandler);\r\n document.addEventListener('mouseup', mouseUpDocumentHandler);\r\n originDocSelect = document.onselectstart;\r\n // eslint-disable-next-line unicorn/prefer-add-event-listener\r\n document.onselectstart = () => false;\r\n };\r\n this.thumb.addEventListener('mousedown', (e: MouseEvent) => {\r\n e.stopPropagation();\r\n if (e.ctrlKey || [1, 2].includes(e.button)) return;\r\n\r\n window.getSelection()?.removeAllRanges();\r\n startDrag(e);\r\n\r\n const el = e.currentTarget as HTMLElement;\r\n if (!el) return;\r\n this.thumbState[this.propertyMap.axis] = el[this.propertyMap.offset] - (e[this.propertyMap.client] - el.getBoundingClientRect()[this.propertyMap.direction]);\r\n });\r\n const displayListener = [this.table, scrollbar];\r\n for (const el of displayListener) {\r\n el.addEventListener('mouseenter', this.showScrollbar);\r\n el.addEventListener('mouseleave', this.hideScrollbar);\r\n }\r\n\r\n addScrollEvent.call(this, this.container, () => {\r\n this.containerScrollHandler(this.container);\r\n });\r\n\r\n scrollbar.appendChild(this.thumb);\r\n return scrollbar;\r\n }\r\n\r\n containerScrollHandler(wrap: HTMLElement) {\r\n const offset = wrap[this.propertyMap.offset] - this.gap;\r\n this.move = wrap[this.propertyMap.scrollDirection] * 100 / offset * (this.isVertical ? this.ratioY : this.ratioX);\r\n Object.assign(this.thumb.style, {\r\n [this.propertyMap.size]: this.size,\r\n transform: `translate${this.propertyMap.axis}(${this.move}%)`,\r\n });\r\n }\r\n\r\n showScrollbar = debounce(() => {\r\n this.cursorLeave = false;\r\n this.scrollbar.removeEventListener('transitionend', this.hideScrollbarTransitionend);\r\n this.scrollbar.style.display = this.size ? 'block' : 'none';\r\n requestAnimationFrame(() => {\r\n this.scrollbar.classList.remove(this.bem.is('transparent'));\r\n });\r\n }, 200);\r\n\r\n hideScrollbar = debounce(() => {\r\n this.cursorLeave = true;\r\n if (this.cursorDown) return;\r\n this.scrollbar.removeEventListener('transitionend', this.hideScrollbarTransitionend);\r\n this.scrollbar.addEventListener('transitionend', this.hideScrollbarTransitionend, { once: true });\r\n this.scrollbar.classList.add(this.bem.is('transparent'));\r\n }, 200);\r\n\r\n hideScrollbarTransitionend = () => {\r\n this.scrollbar.style.display = (this.cursorDown && this.size) ? 'block' : 'none';\r\n };\r\n\r\n destroy() {\r\n this.ob.disconnect();\r\n clearScrollEvent.call(this);\r\n this.table.removeEventListener('mouseenter', this.showScrollbar);\r\n this.table.removeEventListener('mouseleave', this.hideScrollbar);\r\n }\r\n}\r\nexport class TableVirtualScrollbar {\r\n scrollbarContainer: HTMLElement;\r\n scrollbar: Scrollbar[];\r\n bem = createBEM('scrollbar');\r\n constructor(public tableModule: TableUp, public table: HTMLElement, public quill: Quill) {\r\n this.scrollbarContainer = this.tableModule.addContainer(this.bem.be('container'));\r\n\r\n this.scrollbar = [\r\n new Scrollbar(quill, true, table, this.scrollbarContainer),\r\n new Scrollbar(quill, false, table, this.scrollbarContainer),\r\n ];\r\n for (const item of this.scrollbar) {\r\n this.scrollbarContainer.appendChild(item.scrollbar);\r\n }\r\n this.quill.on(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n }\r\n\r\n updateWhenTextChange = () => {\r\n this.update();\r\n };\r\n\r\n hide() {\r\n for (const scrollbar of this.scrollbar) {\r\n scrollbar.hideScrollbar();\r\n }\r\n }\r\n\r\n show() {\r\n for (const scrollbar of this.scrollbar) {\r\n scrollbar.showScrollbar();\r\n }\r\n }\r\n\r\n update() {\r\n for (const scrollbar of this.scrollbar) {\r\n scrollbar.calculateSize();\r\n scrollbar.setScrollbarPosition();\r\n }\r\n }\r\n\r\n destroy() {\r\n this.scrollbarContainer.remove();\r\n this.quill.off(Quill.events.TEXT_CHANGE, this.updateWhenTextChange);\r\n for (const scrollbar of this.scrollbar) {\r\n scrollbar.destroy();\r\n }\r\n }\r\n}\r\n","import type { EmitterSource, Parchment as TypeParchment, Range as TypeRange } from 'quill';\r\nimport type { TableMainFormat, TableWrapperFormat } from '../formats';\r\nimport type { TableUp } from '../table-up';\r\nimport type { InternalTableMenuModule, RelactiveRect, TableSelectionOptions } from '../utils';\r\nimport Quill from 'quill';\r\nimport { getTableMainRect, TableBodyFormat, TableCellFormat, TableCellInnerFormat } from '../formats';\r\nimport { addScrollEvent, blotName, clearScrollEvent, createBEM, createResizeObserver, findAllParentBlot, findParentBlot, getRelativeRect, isRectanglesIntersect, tableUpEvent } from '../utils';\r\n\r\nconst ERROR_LIMIT = 0;\r\n\r\nexport interface SelectionData {\r\n anchorNode: Node | null;\r\n anchorOffset: number;\r\n focusNode: Node | null;\r\n focusOffset: number;\r\n}\r\n\r\nexport class TableSelection {\r\n options: TableSelectionOptions;\r\n boundary: RelactiveRect | null = null;\r\n startScrollX: number = 0;\r\n startScrollY: number = 0;\r\n selectedTableScrollX: number = 0;\r\n selectedTableScrollY: number = 0;\r\n selectedEditorScrollX: number = 0;\r\n selectedEditorScrollY: number = 0;\r\n selectedTds: TableCellInnerFormat[] = [];\r\n cellSelectWrap: HTMLElement;\r\n cellSelect: HTMLElement;\r\n dragging: boolean = false;\r\n scrollHandler: [HTMLElement, (...args: any[]) => void][] = [];\r\n tableMenu?: InternalTableMenuModule;\r\n resizeObserver: ResizeObserver;\r\n table?: HTMLTableElement;\r\n isDisplaySelection = false;\r\n bem = createBEM('selection');\r\n lastSelection: SelectionData = {\r\n anchorNode: null,\r\n anchorOffset: 0,\r\n focusNode: null,\r\n focusOffset: 0,\r\n };\r\n\r\n constructor(public tableModule: TableUp, public quill: Quill, options: Partial<TableSelectionOptions> = {}) {\r\n this.options = this.resolveOptions(options);\r\n\r\n this.cellSelectWrap = tableModule.addContainer(this.bem.b());\r\n this.cellSelect = this.helpLinesInitial();\r\n\r\n this.resizeObserver = createResizeObserver(() => this.updateAfterEvent(), { ignoreFirstBind: true });\r\n this.resizeObserver.observe(this.quill.root);\r\n\r\n this.quill.root.addEventListener('mousedown', this.mouseDownHandler, { passive: false });\r\n document.addEventListener('selectionchange', this.selectionChangeHandler, { passive: false });\r\n this.quill.on(tableUpEvent.AFTER_TABLE_RESIZE, this.updateAfterEvent);\r\n this.quill.on(Quill.events.SELECTION_CHANGE, this.quillSelectionChangeHandler);\r\n this.quill.on(Quill.events.TEXT_CHANGE, this.updateAfterEvent);\r\n if (this.options.tableMenu) {\r\n this.tableMenu = new this.options.tableMenu(tableModule, quill, this.options.tableMenuOptions);\r\n }\r\n this.hide();\r\n }\r\n\r\n updateAfterEvent = () => {\r\n this.updateWithSelectedTds();\r\n };\r\n\r\n getFirstTextNode(dom: HTMLElement | Node): Node {\r\n for (const node of Array.from(dom.childNodes)) {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n return node;\r\n }\r\n }\r\n return dom;\r\n }\r\n\r\n getLastTextNode(dom: HTMLElement | Node): Node {\r\n for (let i = dom.childNodes.length - 1; i >= 0; i--) {\r\n const node = dom.childNodes[i];\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n return node;\r\n }\r\n }\r\n return dom;\r\n }\r\n\r\n getNodeTailOffset(node: Node) {\r\n const tempRange = document.createRange();\r\n tempRange.selectNodeContents(node);\r\n tempRange.collapse(false);\r\n return tempRange.startOffset;\r\n }\r\n\r\n quillSelectionChangeHandler = (range: TypeRange | null, _oldRange: TypeRange | null, source: EmitterSource) => {\r\n if (source === Quill.sources.API) return;\r\n if (range && !this.quill.composition.isComposing && this.selectedTds.length > 0) {\r\n const formats = this.quill.getFormat(range);\r\n const [line] = this.quill.getLine(range.index);\r\n const isInCell = !!formats[blotName.tableCellInner] && !!line;\r\n const containsLine = this.selectedTds.some(td => td.children.contains(line!));\r\n\r\n if (isInCell && !containsLine) {\r\n try {\r\n const cellInner = findParentBlot(line!, blotName.tableCellInner) as TableCellInnerFormat;\r\n this.selectedTds = [cellInner];\r\n this.updateWithSelectedTds();\r\n }\r\n catch {\r\n // do nothing. should not into here\r\n }\r\n }\r\n else if (!(isInCell && containsLine)) {\r\n this.hide();\r\n }\r\n }\r\n };\r\n\r\n setSelectionData(selection: Selection, selectionData: SelectionData) {\r\n const { anchorNode, anchorOffset, focusNode, focusOffset } = selectionData;\r\n if (!anchorNode || !focusNode) return;\r\n const range = document.createRange();\r\n const isUpFromDown = this.selectionDirectionUp(selectionData);\r\n if (isUpFromDown) {\r\n range.setStart(anchorNode, anchorOffset);\r\n range.setEnd(anchorNode, anchorOffset);\r\n }\r\n else {\r\n range.setStart(anchorNode, anchorOffset);\r\n range.setEnd(focusNode, focusOffset);\r\n }\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n if (isUpFromDown) {\r\n selection.extend(focusNode, focusOffset);\r\n }\r\n }\r\n\r\n selectionDirectionUp(selection: SelectionData) {\r\n const { anchorNode, anchorOffset, focusNode, focusOffset } = selection;\r\n if (!anchorNode || !focusNode) return false;\r\n\r\n if (anchorNode === focusNode) {\r\n return anchorOffset > focusOffset;\r\n }\r\n\r\n const nodePosition = anchorNode.compareDocumentPosition(focusNode);\r\n // focus contains anchor\r\n if (nodePosition & Node.DOCUMENT_POSITION_CONTAINS) {\r\n // is anchor before focus\r\n return (nodePosition & Node.DOCUMENT_POSITION_FOLLOWING) !== 0;\r\n }\r\n\r\n // anchor contains focus\r\n if (nodePosition & Node.DOCUMENT_POSITION_CONTAINED_BY) {\r\n // is focus before anchor\r\n return (nodePosition & Node.DOCUMENT_POSITION_FOLLOWING) !== 0;\r\n }\r\n\r\n // compare position\r\n return (nodePosition & Node.DOCUMENT_POSITION_PRECEDING) !== 0;\r\n }\r\n\r\n findWrapSelection(points: { node: Node | null; offset: number }[]) {\r\n let startNode: Node | null = null;\r\n let startOffset = 0;\r\n let endNode: Node | null = null;\r\n let endOffset = 0;\r\n\r\n for (const { node, offset } of points) {\r\n if (node) {\r\n if (\r\n !startNode\r\n || this.selectionDirectionUp({\r\n anchorNode: startNode,\r\n anchorOffset: startOffset,\r\n focusNode: node,\r\n focusOffset: offset,\r\n })\r\n ) {\r\n startNode = node;\r\n startOffset = offset;\r\n }\r\n\r\n if (\r\n !endNode\r\n || this.selectionDirectionUp({\r\n anchorNode: node,\r\n anchorOffset: offset,\r\n focusNode: endNode,\r\n focusOffset: endOffset,\r\n })\r\n ) {\r\n endNode = node;\r\n endOffset = offset;\r\n }\r\n }\r\n }\r\n\r\n return { startNode, startOffset, endNode, endOffset };\r\n }\r\n\r\n resolveOptions(options: Partial<TableSelectionOptions>): TableSelectionOptions {\r\n return Object.assign({\r\n selectColor: '#0589f340',\r\n tableMenuOptions: {},\r\n } as TableSelectionOptions, options);\r\n }\r\n\r\n selectionChangeHandler = () => {\r\n const selection = window.getSelection();\r\n if (!selection) return;\r\n const { anchorNode, focusNode, anchorOffset, focusOffset } = selection;\r\n if (!anchorNode || !focusNode) return;\r\n\r\n const anchorBlot = Quill.find(anchorNode) as TypeParchment.Blot;\r\n const focusBlot = Quill.find(focusNode) as TypeParchment.Blot;\r\n if (!anchorBlot || !focusBlot || anchorBlot.scroll !== this.quill.scroll || focusBlot.scroll !== this.quill.scroll) return;\r\n\r\n const anchorNames = findAllParentBlot(anchorBlot);\r\n const focusNames = findAllParentBlot(focusBlot);\r\n\r\n // if cursor into colgourp should into table or out table by lastSelection\r\n const isAnchorInColgroup = anchorNames.has(blotName.tableColgroup);\r\n const isFocusInColgroup = focusNames.has(blotName.tableColgroup);\r\n if (isAnchorInColgroup || isFocusInColgroup) {\r\n let newAnchorNode = anchorNode;\r\n let newAnchorOffset = anchorOffset;\r\n let newFocusNode = focusNode;\r\n let newFocusOffset = focusOffset;\r\n // default move cursor to first cell\r\n if (isAnchorInColgroup) {\r\n const tableWrapperBlot = anchorNames.get(blotName.tableWrapper) as TableWrapperFormat;\r\n const cellInner = tableWrapperBlot.descendants(TableCellInnerFormat);\r\n if (cellInner.length > 0) {\r\n newAnchorNode = cellInner[0].domNode;\r\n newAnchorOffset = 0;\r\n }\r\n }\r\n if (isFocusInColgroup) {\r\n const tableWrapperBlot = focusNames.get(blotName.tableWrapper) as TableWrapperFormat;\r\n const cellInner = tableWrapperBlot.descendants(TableCellInnerFormat);\r\n if (cellInner.length > 0) {\r\n newFocusNode = cellInner[0].domNode;\r\n newFocusOffset = 0;\r\n }\r\n }\r\n this.setSelectionData(selection, {\r\n anchorNode: newAnchorNode,\r\n anchorOffset: newAnchorOffset,\r\n focusNode: newFocusNode,\r\n focusOffset: newFocusOffset,\r\n });\r\n return;\r\n }\r\n\r\n // if the selection in the table partial\r\n const isAnchorInCellInner = anchorNames.has(blotName.tableCellInner);\r\n const isFocusInCellInner = focusNames.has(blotName.tableCellInner);\r\n let isNotSameCellInner = isAnchorInCellInner && isFocusInCellInner;\r\n if (isNotSameCellInner) {\r\n const anchorCellBlot = anchorNames.get(blotName.tableCellInner) as TableCellInnerFormat;\r\n const focusCellBlot = focusNames.get(blotName.tableCellInner) as TableCellInnerFormat;\r\n isNotSameCellInner &&= (anchorCellBlot !== focusCellBlot);\r\n }\r\n if (\r\n (isAnchorInCellInner && isFocusInCellInner && isNotSameCellInner)\r\n || (!isAnchorInCellInner && isFocusInCellInner)\r\n || (!isFocusInCellInner && isAnchorInCellInner)\r\n ) {\r\n this.setSelectionData(selection, this.lastSelection);\r\n if (this.selectedTds.length > 0) {\r\n this.hide();\r\n }\r\n return;\r\n }\r\n\r\n this.lastSelection = {\r\n anchorNode,\r\n anchorOffset,\r\n focusNode,\r\n focusOffset,\r\n };\r\n };\r\n\r\n helpLinesInitial() {\r\n this.cellSelectWrap.style.setProperty('--select-color', this.options.selectColor);\r\n const cellSelect = document.createElement('div');\r\n cellSelect.classList.add(this.bem.be('line'));\r\n this.cellSelectWrap.appendChild(cellSelect);\r\n return cellSelect;\r\n }\r\n\r\n computeSelectedTds(startPoint: { x: number; y: number }, endPoint: { x: number; y: number }) {\r\n if (!this.table) return [];\r\n type TempSortedTableCellFormat = TableCellFormat & { index?: number; __rect?: DOMRect };\r\n\r\n const tableMainBlot = Quill.find(this.table) as TableMainFormat;\r\n if (!tableMainBlot) return [];\r\n const tableBodyBlot = tableMainBlot.descendants(TableBodyFormat)[0];\r\n if (!tableBodyBlot) return [];\r\n // Use TableCell to calculation selected range, because TableCellInner is scrollable, the width will effect calculate\r\n const tableCells = new Set(\r\n // reverse cell. search from bottom.\r\n // when mouse click on the cell border. the selection will be in the lower cell.\r\n // but `isRectanglesIntersect` judge intersect include border. the upper cell bottom border will intersect with boundary\r\n // so need to search the cell from bottom\r\n (tableBodyBlot.descendants(TableCellFormat) as TempSortedTableCellFormat[]).map((cell, i) => {\r\n cell.index = i;\r\n return cell;\r\n }),\r\n );\r\n\r\n const { x: tableScrollX, y: tableScrollY } = this.getTableViewScroll();\r\n const { x: editorScrollX, y: editorScrollY } = this.getQuillViewScroll();\r\n this.selectedTableScrollX = tableScrollX;\r\n this.selectedTableScrollY = tableScrollY;\r\n this.selectedEditorScrollX = editorScrollX;\r\n this.selectedEditorScrollY = editorScrollY;\r\n\r\n // set boundary to initially mouse move rectangle\r\n const { rect: tableRect } = getTableMainRect(tableMainBlot);\r\n const startPointX = startPoint.x - tableScrollX + this.startScrollX;\r\n const startPointY = startPoint.y - tableScrollY + this.startScrollY;\r\n let boundary = {\r\n x: Math.max(tableRect.left, Math.min(endPoint.x, startPointX)),\r\n y: Math.max(tableRect.top, Math.min(endPoint.y, startPointY)),\r\n x1: Math.min(tableRect.right, Math.max(endPoint.x, startPointX)),\r\n y1: Math.min(tableRect.bottom, Math.max(endPoint.y, startPointY)),\r\n };\r\n\r\n const selectedCells = new Set<TempSortedTableCellFormat>();\r\n let findEnd = true;\r\n // loop all cells to find correct boundary\r\n while (findEnd) {\r\n findEnd = false;\r\n for (const cell of tableCells) {\r\n if (!cell.__rect) {\r\n cell.__rect = cell.domNode.getBoundingClientRect();\r\n }\r\n // Determine whether the cell intersects with the current boundary\r\n const { x, y, right, bottom } = cell.__rect;\r\n // bowser MouseEvent clientY\\clientX is floored. judge data need floored too\r\n if (\r\n isRectanglesIntersect(\r\n { x: Math.floor(boundary.x), y: Math.floor(boundary.y), x1: Math.floor(boundary.x1), y1: Math.floor(boundary.y1) },\r\n { x: Math.floor(x), y: Math.floor(y), x1: Math.floor(right), y1: Math.floor(bottom) },\r\n ERROR_LIMIT,\r\n selectedCells.size === 0,\r\n )\r\n ) {\r\n // add cell to selected\r\n selectedCells.add(cell);\r\n tableCells.delete(cell);\r\n // update boundary\r\n boundary = {\r\n x: Math.min(boundary.x, x),\r\n y: Math.min(boundary.y, y),\r\n x1: Math.max(boundary.x1, right),\r\n y1: Math.max(boundary.y1, bottom),\r\n };\r\n // recalculate boundary last cells\r\n findEnd = true;\r\n break;\r\n }\r\n }\r\n }\r\n for (const cell of [...selectedCells, ...tableCells]) {\r\n delete cell.__rect;\r\n }\r\n // save result boundary relative to the editor\r\n this.boundary = getRelativeRect({\r\n ...boundary,\r\n width: boundary.x1 - boundary.x,\r\n height: boundary.y1 - boundary.y,\r\n }, this.quill.root);\r\n return Array.from(selectedCells).sort((a, b) => a.index! - b.index!).map((cell) => {\r\n delete cell.index;\r\n return cell.getCellInner();\r\n });\r\n }\r\n\r\n mouseDownHandler = (mousedownEvent: MouseEvent) => {\r\n const { button, target, clientX, clientY } = mousedownEvent;\r\n const closestTable = (target as HTMLElement).closest<HTMLTableElement>('.ql-table');\r\n const closestTableBody = (target as HTMLElement).closest<HTMLTableSectionElement>('tbody');\r\n if (button !== 0 || !closestTable || !closestTableBody) return;\r\n\r\n this.setSelectionTable(closestTable);\r\n const startTableId = closestTable.dataset.tableId;\r\n const startPoint = { x: clientX, y: clientY };\r\n this.selectedTds = this.computeSelectedTds(startPoint, startPoint);\r\n this.dragging = true;\r\n this.show();\r\n\r\n const mouseMoveHandler = (mousemoveEvent: MouseEvent) => {\r\n if (this.tableMenu) {\r\n this.tableMenu.hide();\r\n }\r\n if (this.tableModule.tableResize) {\r\n this.tableModule.tableResize.hide();\r\n }\r\n const { button, target, clientX, clientY } = mousemoveEvent;\r\n const closestTableBody = (target as HTMLElement).closest<HTMLTableSectionElement>('tbody');\r\n if (\r\n button !== 0\r\n || !closestTableBody\r\n || closestTableBody.dataset.tableId !== startTableId\r\n ) {\r\n return;\r\n }\r\n\r\n const movePoint = { x: clientX, y: clientY };\r\n this.selectedTds = this.computeSelectedTds(startPoint, movePoint);\r\n if (this.selectedTds.length > 1) {\r\n this.quill.blur();\r\n }\r\n this.update();\r\n };\r\n const mouseUpHandler = () => {\r\n document.body.removeEventListener('mousemove', mouseMoveHandler, false);\r\n document.body.removeEventListener('mouseup', mouseUpHandler, false);\r\n this.dragging = false;\r\n if (this.tableMenu && this.selectedTds.length > 0) {\r\n this.tableMenu.show();\r\n }\r\n };\r\n\r\n document.body.addEventListener('mousemove', mouseMoveHandler, false);\r\n document.body.addEventListener('mouseup', mouseUpHandler, false);\r\n };\r\n\r\n updateWithSelectedTds() {\r\n if (this.selectedTds.length <= 0) return;\r\n const startPoint = { x: Infinity, y: Infinity };\r\n const endPoint = { x: -Infinity, y: -Infinity };\r\n for (const td of this.selectedTds) {\r\n const rect = td.domNode.getBoundingClientRect();\r\n startPoint.x = Math.min(startPoint.x, rect.left);\r\n startPoint.y = Math.min(startPoint.y, rect.top);\r\n endPoint.x = Math.max(endPoint.x, rect.right);\r\n endPoint.y = Math.max(endPoint.y, rect.bottom);\r\n }\r\n this.selectedTds = this.computeSelectedTds(startPoint, endPoint);\r\n if (this.selectedTds.length > 0) {\r\n this.update();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n }\r\n\r\n update() {\r\n if (this.selectedTds.length === 0 || !this.boundary || !this.table) return;\r\n const { x: editorScrollX, y: editorScrollY } = this.getQuillViewScroll();\r\n const { x: tableScrollX, y: tableScrollY } = this.getTableViewScroll();\r\n const tableWrapperRect = this.table.parentElement!.getBoundingClientRect();\r\n const rootRect = this.quill.root.getBoundingClientRect();\r\n const wrapLeft = tableWrapperRect.x - rootRect.x;\r\n const wrapTop = tableWrapperRect.y - rootRect.y;\r\n this.startScrollX = tableScrollX;\r\n this.startScrollY = tableScrollY;\r\n\r\n Object.assign(this.cellSelect.style, {\r\n left: `${this.selectedEditorScrollX * 2 - editorScrollX + this.boundary.x + this.selectedTableScrollX - tableScrollX - wrapLeft}px`,\r\n top: `${this.selectedEditorScrollY * 2 - editorScrollY + this.boundary.y + this.selectedTableScrollY - tableScrollY - wrapTop}px`,\r\n width: `${this.boundary.width}px`,\r\n height: `${this.boundary.height}px`,\r\n });\r\n Object.assign(this.cellSelectWrap.style, {\r\n left: `${wrapLeft}px`,\r\n top: `${wrapTop}px`,\r\n width: `${tableWrapperRect.width}px`,\r\n height: `${tableWrapperRect.height}px`,\r\n });\r\n if (!this.dragging && this.tableMenu) {\r\n this.tableMenu.update();\r\n }\r\n }\r\n\r\n getQuillViewScroll() {\r\n return {\r\n x: this.quill.root.scrollLeft,\r\n y: this.quill.root.scrollTop,\r\n };\r\n }\r\n\r\n getTableViewScroll() {\r\n if (!this.table) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n };\r\n }\r\n return {\r\n x: this.table.parentElement!.scrollLeft,\r\n y: this.table.parentElement!.scrollTop,\r\n };\r\n }\r\n\r\n setSelectionTable(table: HTMLTableElement | undefined) {\r\n if (this.table === table) return;\r\n this.table = table;\r\n }\r\n\r\n removeCell = (e: KeyboardEvent) => {\r\n const range = this.quill.getSelection();\r\n if (range || (e.key !== 'Backspace' && e.key !== 'Delete')) return;\r\n\r\n for (const td of this.selectedTds) {\r\n td.deleteAt(0, td.length() - 1);\r\n }\r\n if (this.table) {\r\n const tableMain = Quill.find(this.table) as TableMainFormat;\r\n const cells = tableMain.descendants(TableCellInnerFormat);\r\n if (this.selectedTds.length === cells.length) {\r\n tableMain.remove();\r\n }\r\n }\r\n };\r\n\r\n showDisplay() {\r\n Object.assign(this.cellSelectWrap.style, { display: 'block' });\r\n this.isDisplaySelection = true;\r\n if (!this.table) return;\r\n this.resizeObserver.observe(this.table);\r\n }\r\n\r\n show() {\r\n if (!this.table) return;\r\n clearScrollEvent.call(this);\r\n\r\n this.update();\r\n this.showDisplay();\r\n document.addEventListener('keydown', this.removeCell);\r\n addScrollEvent.call(this, this.quill.root, () => {\r\n this.update();\r\n });\r\n addScrollEvent.call(this, this.table.parentElement!, () => {\r\n this.update();\r\n });\r\n }\r\n\r\n hideDisplay() {\r\n Object.assign(this.cellSelectWrap.style, { display: 'none' });\r\n this.isDisplaySelection = false;\r\n if (!this.table) return;\r\n this.resizeObserver.unobserve(this.table);\r\n }\r\n\r\n hide() {\r\n clearScrollEvent.call(this);\r\n document.removeEventListener('keydown', this.removeCell);\r\n this.hideDisplay();\r\n this.boundary = null;\r\n this.selectedTds = [];\r\n this.setSelectionTable(undefined);\r\n if (this.tableMenu) {\r\n this.tableMenu.hide();\r\n }\r\n }\r\n\r\n destroy() {\r\n this.resizeObserver.disconnect();\r\n\r\n this.hide();\r\n this.cellSelectWrap.remove();\r\n if (this.tableMenu) {\r\n this.tableMenu.destroy();\r\n }\r\n clearScrollEvent.call(this);\r\n\r\n this.quill.root.removeEventListener('mousedown', this.mouseDownHandler);\r\n document.removeEventListener('selectionchange', this.selectionChangeHandler);\r\n this.quill.off(Quill.events.SELECTION_CHANGE, this.quillSelectionChangeHandler);\r\n this.quill.off(Quill.events.TEXT_CHANGE, this.updateAfterEvent);\r\n this.quill.on(tableUpEvent.AFTER_TABLE_RESIZE, this.updateAfterEvent);\r\n }\r\n}\r\n","import type { EmitterSource, Op, Parchment as TypeParchment, Range as TypeRange } from 'quill';\r\nimport type { Context } from 'quill/modules/keyboard';\r\nimport type TypeKeyboard from 'quill/modules/keyboard';\r\nimport type TypeToolbar from 'quill/modules/toolbar';\r\nimport type { InternalModule, InternalTableSelectionModule, QuillTheme, QuillThemePicker, TableCellValue, TableConstantsData, TableTextOptions, TableUpOptions } from './utils';\r\nimport Quill from 'quill';\r\nimport { BlockOverride, ContainerFormat, ScrollOverride, TableBodyFormat, TableCaptionFormat, TableCellFormat, TableCellInnerFormat, TableColFormat, TableColgroupFormat, TableMainFormat, TableRowFormat, TableWrapperFormat } from './formats';\r\nimport { TableClipboard } from './modules';\r\nimport { blotName, createBEM, createSelectBox, cssTextToObject, debounce, findParentBlot, findParentBlots, isForbidInTable, isFunction, isNumber, isString, limitDomInViewPort, mixinClass, objectToCssText, randomId, tableCantInsert, tableUpEvent, tableUpInternal, tableUpSize, toCamelCase } from './utils';\r\n\r\nconst Parchment = Quill.import('parchment');\r\nconst Delta = Quill.import('delta');\r\nconst Break = Quill.import('blots/break') as TypeParchment.BlotConstructor;\r\nconst icons = Quill.import('ui/icons') as Record<string, any>;\r\n\r\nfunction createCell(scroll: TypeParchment.ScrollBlot, { tableId, rowId, colId }: { tableId: string; rowId: string; colId: string }) {\r\n const value = {\r\n tableId,\r\n rowId,\r\n colId,\r\n colspan: 1,\r\n rowspan: 1,\r\n };\r\n const tableCell = scroll.create(blotName.tableCell, value) as TypeParchment.ParentBlot;\r\n const tableCellInner = scroll.create(blotName.tableCellInner, value) as TypeParchment.ParentBlot;\r\n const block = scroll.create('block') as TypeParchment.ParentBlot;\r\n block.appendChild(scroll.create('break'));\r\n tableCellInner.appendChild(block);\r\n tableCell.appendChild(tableCellInner);\r\n return tableCell;\r\n}\r\nexport function updateTableConstants(data: Partial<TableConstantsData>) {\r\n tableCantInsert.delete(blotName.tableCellInner);\r\n\r\n Object.assign(blotName, data.blotName || {});\r\n Object.assign(tableUpSize, data.tableUpSize || {});\r\n Object.assign(tableUpEvent, data.tableUpEvent || {});\r\n Object.assign(tableUpInternal, data.tableUpInternal || {});\r\n\r\n TableUp.moduleName = tableUpInternal.moduleName;\r\n\r\n TableUp.toolName = blotName.tableWrapper;\r\n ContainerFormat.blotName = blotName.container;\r\n TableWrapperFormat.blotName = blotName.tableWrapper;\r\n TableMainFormat.blotName = blotName.tableMain;\r\n TableColgroupFormat.blotName = blotName.tableColgroup;\r\n TableColFormat.blotName = blotName.tableCol;\r\n TableBodyFormat.blotName = blotName.tableBody;\r\n TableRowFormat.blotName = blotName.tableRow;\r\n TableCellFormat.blotName = blotName.tableCell;\r\n TableCellInnerFormat.blotName = blotName.tableCellInner;\r\n\r\n tableCantInsert.add(blotName.tableCellInner);\r\n}\r\nexport function defaultCustomSelect(tableModule: TableUp, picker: QuillThemePicker) {\r\n return createSelectBox({\r\n onSelect: (row: number, col: number) => {\r\n tableModule.insertTable(row, col);\r\n if (picker) {\r\n picker.close();\r\n }\r\n },\r\n customBtn: tableModule.options.customBtn,\r\n texts: tableModule.options.texts,\r\n });\r\n}\r\n\r\nfunction generateTableArrowHandler(up: boolean) {\r\n return {\r\n bindInHead: false,\r\n key: up ? 'ArrowUp' : 'ArrowDown',\r\n collapsed: true,\r\n format: [blotName.tableCellInner],\r\n handler(this: { quill: Quill }, range: TypeRange, context: Context) {\r\n let tableBlot: TableWrapperFormat;\r\n let tableMain: TableMainFormat;\r\n let tableRow: TableRowFormat;\r\n let tableCell: TableCellFormat;\r\n try {\r\n [tableBlot, tableMain, tableRow, tableCell] = findParentBlots(context.line, [blotName.tableWrapper, blotName.tableMain, blotName.tableRow, blotName.tableCell] as const);\r\n }\r\n catch {\r\n return true;\r\n }\r\n\r\n const colIds = tableMain.getColIds();\r\n const direction = up ? 'prev' : 'next';\r\n const childDirection = up ? 'tail' : 'head';\r\n const tableCaption = tableBlot.descendants(TableCaptionFormat, 0)[0];\r\n\r\n let aroundLine;\r\n if (tableCaption) {\r\n const captionSide = window.getComputedStyle(tableCaption.domNode);\r\n if (direction === 'next' && captionSide.captionSide === 'bottom') {\r\n aroundLine = tableCaption;\r\n }\r\n else if (direction === 'next') {\r\n aroundLine = tableBlot.next;\r\n }\r\n else {\r\n aroundLine = tableCaption;\r\n }\r\n }\r\n else {\r\n aroundLine = tableBlot[direction];\r\n }\r\n\r\n if (context.line[direction] || !aroundLine) {\r\n return true;\r\n }\r\n const targetRow = tableRow[direction] as TableRowFormat;\r\n if (targetRow) {\r\n const cellIndex = colIds.indexOf(tableCell.colId);\r\n const targetCell = targetRow.getCellByColId(colIds[cellIndex], direction);\r\n if (!targetCell) return true;\r\n let targetChild = targetCell.children[childDirection] as TypeParchment.ParentBlot;\r\n if (targetChild.children) {\r\n targetChild = targetChild.children[childDirection] as TypeParchment.ParentBlot;\r\n }\r\n const index = targetChild.offset(this.quill.scroll) + Math.min(context.offset, targetChild.length() - 1);\r\n this.quill.setSelection(index, 0, Quill.sources.USER);\r\n }\r\n else {\r\n const index = aroundLine.offset(this.quill.scroll) + (up ? aroundLine.length() - 1 : 0);\r\n this.quill.setSelection(index, 0, Quill.sources.USER);\r\n }\r\n return false;\r\n },\r\n };\r\n}\r\n\r\nexport class TableUp {\r\n static moduleName: string = tableUpInternal.moduleName;\r\n static toolName: string = blotName.tableWrapper;\r\n // TODO: add custom property `bindInHead`, but Quill doesn't export `BindingObject`\r\n static keyboradHandler = {\r\n 'forbid remove table by backspace': {\r\n bindInHead: true,\r\n key: 'Backspace',\r\n collapsed: true,\r\n offset: 0,\r\n handler(this: { quill: Quill }, range: TypeRange, context: Context) {\r\n const line = this.quill.getLine(range.index);\r\n const blot = line[0] as TypeParchment.BlockBlot;\r\n if (blot.prev instanceof TableWrapperFormat) {\r\n blot.prev.remove();\r\n return false;\r\n }\r\n\r\n if (context.format[blotName.tableCellInner]) {\r\n const offset = blot.offset(findParentBlot(blot, blotName.tableCellInner));\r\n if (offset === 0) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n },\r\n 'forbid remove table by delete': {\r\n bindInHead: true,\r\n key: 'Delete',\r\n collapsed: true,\r\n handler(this: { quill: Quill }, range: TypeRange, context: Context) {\r\n const line = this.quill.getLine(range.index);\r\n const blot = line[0] as TypeParchment.BlockBlot;\r\n const offsetInline = line[1];\r\n if ((blot.next instanceof TableWrapperFormat || blot.next instanceof TableColFormat) && offsetInline === blot.length() - 1) return false;\r\n\r\n if (context.format[blotName.tableCellInner]) {\r\n const tableInnerBlot = findParentBlot(blot, blotName.tableCellInner);\r\n if (blot === tableInnerBlot.children.tail && offsetInline === blot.length() - 1) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n },\r\n 'table up': generateTableArrowHandler(true),\r\n 'table down': generateTableArrowHandler(false),\r\n 'table caption break': {\r\n bindInHead: true,\r\n key: 'Enter',\r\n shiftKey: null,\r\n format: [blotName.tableCaption],\r\n handler(this: { quill: Quill }, _range: TypeRange, _context: Context) {\r\n return false;\r\n },\r\n },\r\n };\r\n\r\n static register() {\r\n TableWrapperFormat.allowedChildren = [TableMainFormat];\r\n\r\n TableMainFormat.allowedChildren = [TableBodyFormat, TableColgroupFormat, TableCaptionFormat];\r\n TableMainFormat.requiredContainer = TableWrapperFormat;\r\n\r\n TableCaptionFormat.requiredContainer = TableMainFormat;\r\n\r\n TableColgroupFormat.allowedChildren = [TableColFormat];\r\n TableColgroupFormat.requiredContainer = TableMainFormat;\r\n\r\n TableBodyFormat.allowedChildren = [TableRowFormat];\r\n TableBodyFormat.requiredContainer = TableMainFormat;\r\n\r\n TableRowFormat.allowedChildren = [TableCellFormat];\r\n TableCellFormat.requiredContainer = TableBodyFormat;\r\n\r\n TableCellFormat.allowedChildren = [TableCellInnerFormat, Break];\r\n TableCellFormat.requiredContainer = TableRowFormat;\r\n\r\n TableCellInnerFormat.requiredContainer = TableCellFormat;\r\n\r\n const overrides = ['header', 'list', 'blockquote', 'code-block'].reduce((formatMap, format) => {\r\n const key = `formats/${format}`;\r\n const blot = Quill.import(key) as any;\r\n formatMap[key] = class extends mixinClass(blot, [BlockOverride]) {\r\n static register(): void {}\r\n };\r\n return formatMap;\r\n }, {} as Record<string, Function>);\r\n\r\n Quill.register({\r\n 'blots/scroll': ScrollOverride,\r\n 'blots/block': BlockOverride,\r\n ...overrides,\r\n [`blots/${blotName.container}`]: ContainerFormat,\r\n [`formats/${blotName.tableCell}`]: TableCellFormat,\r\n [`formats/${blotName.tableCellInner}`]: TableCellInnerFormat,\r\n [`formats/${blotName.tableRow}`]: TableRowFormat,\r\n [`formats/${blotName.tableBody}`]: TableBodyFormat,\r\n [`formats/${blotName.tableCol}`]: TableColFormat,\r\n [`formats/${blotName.tableColgroup}`]: TableColgroupFormat,\r\n [`formats/${blotName.tableCaption}`]: TableCaptionFormat,\r\n [`formats/${blotName.tableMain}`]: TableMainFormat,\r\n [`formats/${blotName.tableWrapper}`]: TableWrapperFormat,\r\n 'modules/clipboard': TableClipboard,\r\n }, true);\r\n }\r\n\r\n quill: Quill;\r\n options: TableUpOptions;\r\n toolBox: HTMLDivElement;\r\n fixTableByLisenter = debounce(this.balanceTables, 100);\r\n selector?: HTMLElement;\r\n table?: HTMLElement;\r\n tableSelection?: InternalTableSelectionModule;\r\n tableResize?: InternalModule;\r\n tableScrollbar?: InternalModule;\r\n tableAlign?: InternalModule;\r\n tableResizeScale?: InternalModule;\r\n resizeOb!: ResizeObserver;\r\n\r\n get statics(): any {\r\n return this.constructor;\r\n }\r\n\r\n constructor(quill: Quill, options: Partial<TableUpOptions>) {\r\n this.quill = quill;\r\n this.options = this.resolveOptions(options || {});\r\n this.toolBox = this.initialContainer();\r\n\r\n if (!this.options.scrollbar) {\r\n const scrollbarBEM = createBEM('scrollbar');\r\n this.quill.container.classList.add(scrollbarBEM.bm('origin'));\r\n }\r\n\r\n if (this.options.selection) {\r\n this.tableSelection = new this.options.selection(this, this.quill, this.options.selectionOptions);\r\n }\r\n\r\n const toolbar = this.quill.getModule('toolbar') as TypeToolbar;\r\n if (toolbar && (this.quill.theme as QuillTheme).pickers) {\r\n const [, select] = (toolbar.controls as [string, HTMLElement][] || []).find(([name]) => name === this.statics.toolName) || [];\r\n if (select && select.tagName.toLocaleLowerCase() === 'select') {\r\n const picker = (this.quill.theme as QuillTheme).pickers.find(picker => picker.select === select);\r\n if (picker) {\r\n picker.label.innerHTML = this.options.icon;\r\n this.buildCustomSelect(this.options.customSelect, picker);\r\n picker.label.addEventListener('mousedown', () => {\r\n if (!this.selector || !picker) return;\r\n const selectRect = this.selector.getBoundingClientRect();\r\n const { leftLimited } = limitDomInViewPort(selectRect);\r\n if (leftLimited) {\r\n const labelRect = picker.label.getBoundingClientRect();\r\n Object.assign(picker.options.style, { transform: `translateX(calc(-100% + ${labelRect.width}px))` });\r\n }\r\n else {\r\n Object.assign(picker.options.style, { transform: undefined });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n const keyboard = this.quill.getModule('keyboard') as TypeKeyboard;\r\n for (const handle of Object.values(TableUp.keyboradHandler)) {\r\n // insert before default key handler\r\n if (handle.bindInHead) {\r\n keyboard.bindings[handle.key].unshift(handle);\r\n }\r\n else {\r\n keyboard.addBinding(handle.key, handle);\r\n }\r\n }\r\n\r\n this.quill.root.addEventListener(\r\n 'click',\r\n (evt: MouseEvent) => {\r\n const path = evt.composedPath() as HTMLElement[];\r\n if (!path || path.length <= 0) return;\r\n\r\n const tableNode = path.find(node => node.tagName && node.tagName.toUpperCase() === 'TABLE' && node.classList.contains('ql-table'));\r\n if (tableNode) {\r\n if (this.table === tableNode) {\r\n this.tableSelection && this.tableSelection.show();\r\n this.tableAlign && this.tableAlign.update();\r\n this.tableResize && this.tableResize.update();\r\n this.tableScrollbar && this.tableScrollbar.update();\r\n return;\r\n }\r\n if (this.table) this.hideTableTools();\r\n this.showTableTools(tableNode);\r\n }\r\n else if (this.table) {\r\n this.hideTableTools();\r\n }\r\n },\r\n false,\r\n );\r\n this.quill.on(Quill.events.EDITOR_CHANGE, (type: typeof Quill.events.TEXT_CHANGE | typeof Quill.events.SELECTION_CHANGE) => {\r\n if (type === Quill.events.TEXT_CHANGE && (!this.table || !this.quill.root.contains(this.table))) {\r\n this.hideTableTools();\r\n }\r\n });\r\n\r\n this.quillHack();\r\n this.listenBalanceCells();\r\n }\r\n\r\n initialContainer() {\r\n const toolboxBEM = createBEM('toolbox');\r\n const container = this.quill.addContainer(toolboxBEM.b());\r\n const updateContainerStyle = () => {\r\n const quillRootRect = this.quill.root.getBoundingClientRect();\r\n const { offsetLeft, offsetTop } = this.quill.root;\r\n Object.assign(container.style, {\r\n top: `${offsetTop}px`,\r\n left: `${offsetLeft}px`,\r\n width: `${quillRootRect.width}px`,\r\n height: `${quillRootRect.height}px`,\r\n });\r\n };\r\n this.resizeOb = new ResizeObserver(updateContainerStyle);\r\n this.resizeOb.observe(this.quill.root);\r\n return container;\r\n }\r\n\r\n addContainer(classes: string | HTMLElement) {\r\n if (isString(classes)) {\r\n const el = document.createElement('div');\r\n for (const classname of classes.split(' ')) {\r\n el.classList.add(classname);\r\n }\r\n this.toolBox.appendChild(el);\r\n return el;\r\n }\r\n else {\r\n this.toolBox.appendChild(classes);\r\n return classes;\r\n }\r\n }\r\n\r\n resolveOptions(options: Partial<TableUpOptions>): TableUpOptions {\r\n return Object.assign({\r\n customBtn: false,\r\n texts: this.resolveTexts(options.texts || {}),\r\n full: false,\r\n fullSwitch: true,\r\n icon: icons.table,\r\n selectionOptions: {},\r\n alignOptions: {},\r\n scrollbarOptions: {},\r\n resizeOptions: {},\r\n resizeScaleOptions: {},\r\n } as TableUpOptions, options);\r\n }\r\n\r\n resolveTexts(options: Partial<TableTextOptions>) {\r\n return Object.assign({\r\n fullCheckboxText: 'Insert full width table',\r\n customBtnText: 'Custom',\r\n confirmText: 'Confirm',\r\n cancelText: 'Cancel',\r\n rowText: 'Row',\r\n colText: 'Column',\r\n notPositiveNumberError: 'Please enter a positive integer',\r\n custom: 'Custom',\r\n clear: 'Clear',\r\n transparent: 'Transparent',\r\n perWidthInsufficient: 'The percentage width is insufficient. To complete the operation, the table needs to be converted to a fixed width. Do you want to continue?',\r\n CopyCell: 'Copy cell',\r\n CutCell: 'Cut cell',\r\n InsertTop: 'Insert row above',\r\n InsertRight: 'Insert column right',\r\n InsertBottom: 'Insert row below',\r\n InsertLeft: 'Insert column Left',\r\n MergeCell: 'Merge Cell',\r\n SplitCell: 'Split Cell',\r\n DeleteRow: 'Delete Row',\r\n DeleteColumn: 'Delete Column',\r\n DeleteTable: 'Delete table',\r\n BackgroundColor: 'Set background color',\r\n BorderColor: 'Set border color',\r\n }, options);\r\n }\r\n\r\n quillHack() {\r\n const originGetSemanticHTML = this.quill.getSemanticHTML;\r\n this.quill.getSemanticHTML = ((index: number = 0, length?: number) => {\r\n const html = originGetSemanticHTML.call(this.quill, index, length);\r\n\r\n const tableWrapperFormat = Quill.import(`formats/${blotName.tableWrapper}`) as typeof TableWrapperFormat;\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(html, 'text/html');\r\n for (const node of Array.from(doc.querySelectorAll(`.${tableWrapperFormat.className} caption[contenteditable], .${tableWrapperFormat.className} td > [contenteditable]`))) {\r\n node.removeAttribute('contenteditable');\r\n }\r\n\r\n return doc.body.innerHTML;\r\n }) as typeof originGetSemanticHTML;\r\n\r\n // make sure toolbar item can format selected cells\r\n const originFormat = this.quill.format;\r\n this.quill.format = function (name: string, value: unknown, source: EmitterSource = Quill.sources.API) {\r\n const blot = this.scroll.query(name);\r\n // filter embed blot\r\n if (!((blot as TypeParchment.BlotConstructor).prototype instanceof Parchment.EmbedBlot)) {\r\n const tableUpModule = this.getModule(tableUpInternal.moduleName) as TableUp;\r\n const range = this.getSelection(true);\r\n const formats = this.getFormat(range);\r\n // only when selection in cell and selectedTds > 1 can format all cells\r\n if (!formats[blotName.tableCellInner] || range.length > 0 || (tableUpModule && tableUpModule.tableSelection && tableUpModule.tableSelection.selectedTds.length <= 1)) {\r\n return originFormat.call(this, name, value, source);\r\n }\r\n // format in selected cells\r\n if (tableUpModule && tableUpModule.tableSelection && tableUpModule.tableSelection.selectedTds.length > 0) {\r\n const selectedTds = tableUpModule.tableSelection.selectedTds;\r\n // calculate the format value. the format should be canceled when this value exists in all selected cells\r\n let setOrigin = false;\r\n const tdRanges = [];\r\n for (const innerTd of selectedTds) {\r\n const index = innerTd.offset(this.scroll);\r\n const length = innerTd.length();\r\n tdRanges.push({ index, length });\r\n const format = this.getFormat(index, length);\r\n if (format[name] !== value) {\r\n setOrigin = true;\r\n }\r\n }\r\n const resultValue = setOrigin ? value : false;\r\n\r\n const delta = new Delta();\r\n for (const [i, { index, length }] of tdRanges.entries()) {\r\n const lastIndex = i === 0 ? 0 : tdRanges[i - 1].index + tdRanges[i - 1].length;\r\n delta.retain(index - lastIndex).retain(length, { [name]: resultValue });\r\n }\r\n\r\n const updateDelta = this.updateContents(delta, source);\r\n this.blur();\r\n return updateDelta;\r\n }\r\n }\r\n\r\n return originFormat.call(this, name, value, source);\r\n };\r\n\r\n // handle clean\r\n const toolbar = this.quill.theme.modules.toolbar;\r\n if (toolbar) {\r\n const cleanHandler = toolbar.handlers?.clean;\r\n if (cleanHandler) {\r\n const cleanFormatExcludeTable = (index: number, length: number, changeCellStyle: false | ((styleStr: string | undefined) => string) = () => '') => {\r\n // base on `removeFormat`. but not remove tableCellInner\r\n const text = this.quill.getText(index, length);\r\n const [line, offset] = this.quill.getLine(index + length);\r\n let suffixLength = 0;\r\n let suffix = new Delta();\r\n if (line != null) {\r\n suffixLength = line.length() - offset;\r\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\r\n }\r\n const contents = this.quill.getContents(index, length + suffixLength);\r\n const diff = contents.diff(new Delta().insert(text).concat(suffix));\r\n\r\n let deltaIndex = 0;\r\n const ops = diff.ops.map((op: Op) => {\r\n const { attributes, ...other } = op;\r\n if (op.insert) {\r\n deltaIndex -= isString(op.insert) ? op.insert.length : 1;\r\n }\r\n else if (op.retain) {\r\n deltaIndex += isNumber(op.retain) ? op.retain : 1;\r\n }\r\n else if (op.delete) {\r\n deltaIndex += op.delete;\r\n }\r\n\r\n if (attributes) {\r\n const { [blotName.tableCellInner]: nullValue, ...attrs } = attributes;\r\n if (changeCellStyle) {\r\n const tableCellInner = contents.slice(deltaIndex - 1, deltaIndex).ops[0];\r\n if (tableCellInner && tableCellInner.attributes && tableCellInner.attributes[blotName.tableCellInner]) {\r\n const tableCellInnerValue = tableCellInner.attributes[blotName.tableCellInner] as TableCellValue;\r\n const { style, ...value } = tableCellInnerValue;\r\n const newStyle = changeCellStyle(style);\r\n if (newStyle) {\r\n return { ...other, attributes: { ...attrs, [blotName.tableCellInner]: { style: newStyle, ...value } } };\r\n }\r\n return { ...other, attributes: { ...attrs, [blotName.tableCellInner]: value } };\r\n }\r\n }\r\n return { ...other, attributes: { ...attrs } };\r\n }\r\n return op;\r\n });\r\n return new Delta(ops);\r\n };\r\n toolbar.handlers!.clean = function (this: TypeToolbar, value: unknown): void {\r\n const tableUpModule = this.quill.getModule(tableUpInternal.moduleName) as TableUp;\r\n const range = this.quill.getSelection();\r\n if (range && range.length > 0) {\r\n const formats = this.quill.getFormat(range);\r\n if (formats[blotName.tableCellInner]) {\r\n const diff = cleanFormatExcludeTable(range.index, range.length, false);\r\n const delta = new Delta().retain(range.index).concat(diff);\r\n this.quill.updateContents(delta, Quill.sources.USER);\r\n return;\r\n }\r\n }\r\n // if selection range is not in table, but use the TableSelection selected cells\r\n // clean all other formats in cell\r\n if (tableUpModule && tableUpModule.tableSelection && tableUpModule.tableSelection.selectedTds.length > 0 && tableUpModule.tableSelection.table) {\r\n const tableMain = Quill.find(tableUpModule.tableSelection.table) as TableMainFormat;\r\n if (!tableMain) {\r\n console.warn('TableMainFormat not found');\r\n return;\r\n }\r\n const selectedTds = tableUpModule.tableSelection.selectedTds;\r\n\r\n // get all need clean style cells. include border-right/border-bottom effect cells\r\n const editTds = new Set<TableCellFormat>();\r\n const tds: { td: TableCellFormat; cleanBorder: 'bottom' | 'right' | true }[] = [];\r\n for (const innerTd of selectedTds) {\r\n if (innerTd.parent instanceof TableCellFormat) {\r\n for (const td of innerTd.parent.getNearByCell('top')) {\r\n if (editTds.has(td)) continue;\r\n editTds.add(td);\r\n tds.push({ td, cleanBorder: 'bottom' });\r\n }\r\n for (const td of innerTd.parent.getNearByCell('left')) {\r\n if (editTds.has(td)) continue;\r\n editTds.add(td);\r\n tds.push({ td, cleanBorder: 'right' });\r\n }\r\n\r\n editTds.add(innerTd.parent);\r\n tds.push({ td: innerTd.parent, cleanBorder: true });\r\n }\r\n }\r\n // sort cells makesure index correct\r\n const allCells = tableMain.descendants(TableCellFormat);\r\n const cellIndexMap = new Map(allCells.map((cell, index) => [cell, index]));\r\n tds.sort((a, b) => cellIndexMap.get(a.td)! - cellIndexMap.get(b.td)!);\r\n\r\n // compute delta\r\n let delta = new Delta();\r\n let lastIndex = 0;\r\n for (const { td, cleanBorder } of tds) {\r\n const index = td.getCellInner().offset(this.quill.scroll);\r\n const length = td.getCellInner().length();\r\n // `line` length will include a break(\\n) at the end. minus 1 to remove break\r\n const diff = cleanFormatExcludeTable(\r\n index,\r\n length - 1,\r\n (styleStr: string | undefined) => {\r\n if (!styleStr || cleanBorder === true) return '';\r\n // only clean border-right/border-bottom style\r\n const css = cssTextToObject(styleStr);\r\n const filterStyle = Object.keys(css).filter(key => !key.startsWith(toCamelCase(`border-${cleanBorder}`))).reduce((acc: Record<string, string>, key: string) => {\r\n acc[key] = css[key];\r\n return acc;\r\n }, {});\r\n return objectToCssText(filterStyle);\r\n },\r\n );\r\n const cellDiff = new Delta().retain(index - lastIndex).concat(diff);\r\n delta = delta.concat(cellDiff);\r\n lastIndex = index + length;\r\n }\r\n this.quill.updateContents(delta, Quill.sources.USER);\r\n if (selectedTds.length > 1) this.quill.blur();\r\n return;\r\n }\r\n return cleanHandler.call(this, value);\r\n };\r\n }\r\n }\r\n }\r\n\r\n showTableTools(table: HTMLElement) {\r\n if (table) {\r\n this.table = table;\r\n this.tableSelection?.show();\r\n if (this.options.align) {\r\n this.tableAlign = new this.options.align(this, table, this.quill, this.options.alignOptions);\r\n }\r\n if (this.options.scrollbar) {\r\n this.tableScrollbar = new this.options.scrollbar(this, table, this.quill, this.options.scrollbarOptions);\r\n }\r\n if (this.options.resize) {\r\n this.tableResize = new this.options.resize(this, table, this.quill, this.options.resizeOptions);\r\n }\r\n if (this.options.resizeScale) {\r\n this.tableResizeScale = new this.options.resizeScale(this, table, this.quill, this.options.resizeScaleOptions);\r\n }\r\n }\r\n }\r\n\r\n hideTableTools() {\r\n this.tableSelection?.hide();\r\n if (this.tableScrollbar) {\r\n this.tableScrollbar.destroy();\r\n this.tableScrollbar = undefined;\r\n }\r\n if (this.tableAlign) {\r\n this.tableAlign.destroy();\r\n this.tableAlign = undefined;\r\n }\r\n if (this.tableResize) {\r\n this.tableResize.destroy();\r\n this.tableResize = undefined;\r\n }\r\n if (this.tableResizeScale) {\r\n this.tableResizeScale.destroy();\r\n }\r\n this.table = undefined;\r\n }\r\n\r\n async buildCustomSelect(customSelect: ((module: TableUp, picker: QuillThemePicker) => HTMLElement | Promise<HTMLElement>) | undefined, picker: QuillThemePicker) {\r\n if (!customSelect || !isFunction(customSelect)) return;\r\n const dom = document.createElement('div');\r\n dom.classList.add('ql-custom-select');\r\n this.selector = await customSelect(this, picker);\r\n dom.appendChild(this.selector);\r\n if (this.options.fullSwitch) {\r\n const bem = createBEM('creator');\r\n const isFulllLabel = document.createElement('label');\r\n isFulllLabel.classList.add(bem.be('checkbox'));\r\n const isFullCheckbox = document.createElement('input');\r\n isFullCheckbox.type = 'checkbox';\r\n isFullCheckbox.checked = this.options.full;\r\n isFullCheckbox.addEventListener('change', () => {\r\n this.options.full = isFullCheckbox.checked;\r\n });\r\n const isFullCheckboxText = document.createElement('span');\r\n isFullCheckboxText.textContent = this.options.texts.fullCheckboxText;\r\n isFulllLabel.appendChild(isFullCheckbox);\r\n isFulllLabel.appendChild(isFullCheckboxText);\r\n dom.appendChild(isFulllLabel);\r\n }\r\n picker.options.innerHTML = '';\r\n picker.options.appendChild(dom);\r\n }\r\n\r\n setCellAttrs(selectedTds: TableCellInnerFormat[], attr: string, value?: any, isStyle: boolean = false) {\r\n if (selectedTds.length === 0) return;\r\n for (const td of selectedTds) {\r\n td.setFormatValue(attr, value, isStyle);\r\n }\r\n }\r\n\r\n getTextByCell(tds: TableCellInnerFormat[]) {\r\n let text = '';\r\n for (const td of tds) {\r\n const index = td.offset(this.quill.scroll);\r\n const length = td.length();\r\n for (const op of this.quill.getContents(index, length).ops) {\r\n if (isString(op.insert)) {\r\n text += op.insert;\r\n }\r\n }\r\n }\r\n return text;\r\n }\r\n\r\n getHTMLByCell(tds: TableCellInnerFormat[], isCut = false) {\r\n if (tds.length === 0) return '';\r\n let tableMain: TableMainFormat | null = null;\r\n try {\r\n for (const td of tds) {\r\n const tdParentMain = findParentBlot(td, blotName.tableMain);\r\n if (!tableMain) {\r\n tableMain = tdParentMain;\r\n }\r\n if (tdParentMain !== tableMain) {\r\n console.error('tableMain is not same');\r\n return '';\r\n }\r\n }\r\n }\r\n catch {\r\n console.error('tds must be in same tableMain');\r\n return '';\r\n }\r\n\r\n if (!tableMain) return '';\r\n const tableIndex = this.quill.getIndex(tableMain);\r\n const tableLength = tableMain.length();\r\n const tableHTML = this.quill.getSemanticHTML(tableIndex, tableLength);\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(tableHTML, 'text/html');\r\n\r\n const cellColWidth: string[] = [];\r\n const cellColIds = new Set<string>();\r\n const cellIds = new Set<string>();\r\n for (const td of tds) {\r\n cellColIds.add(td.colId);\r\n cellIds.add(`${td.rowId}-${td.colId}`);\r\n }\r\n // filter col\r\n for (const col of Array.from(doc.querySelectorAll('col'))) {\r\n if (!cellColIds.has(col.dataset.colId!)) {\r\n col.remove();\r\n }\r\n else {\r\n cellColWidth.push(col.getAttribute('width')!);\r\n }\r\n }\r\n // filter td\r\n let rowCount = 0;\r\n let lastRowId: string | null = null;\r\n for (const td of Array.from(doc.querySelectorAll('td'))) {\r\n if (!cellIds.has(`${td.dataset.rowId}-${td.dataset.colId}`)) {\r\n const parent = td.parentElement;\r\n td.remove();\r\n if (parent && parent.children.length <= 0) {\r\n parent.remove();\r\n }\r\n }\r\n else {\r\n if (lastRowId !== td.dataset.rowId) {\r\n rowCount += 1;\r\n lastRowId = td.dataset.rowId!;\r\n }\r\n }\r\n }\r\n // calculate width\r\n const cols = Array.from(doc.querySelectorAll('col'));\r\n const colsValue = cols.map(col => TableColFormat.value(col));\r\n if (tableMain.full) {\r\n const totalWidth = colsValue.reduce((total, col) => col.width + total, 0);\r\n\r\n for (const [i, col] of colsValue.entries()) {\r\n col.width = Math.round((col.width / totalWidth) * 100);\r\n cols[i].setAttribute('width', `${col.width}%`);\r\n }\r\n }\r\n else {\r\n let width = 0;\r\n for (const col of colsValue) {\r\n width += col.width;\r\n }\r\n const tableMainDom = doc.querySelector('table')!;\r\n tableMainDom.style.width = `${width}px`;\r\n }\r\n\r\n if (isCut) {\r\n const trs = tableMain.getRows();\r\n if (rowCount === trs.length) {\r\n this.removeCol(tds);\r\n }\r\n else {\r\n for (const td of tds) {\r\n td.domNode.innerHTML = '<p><br></p>';\r\n }\r\n }\r\n }\r\n return doc.body.innerHTML;\r\n }\r\n\r\n insertTable(rows: number, columns: number) {\r\n if (rows >= 30 || columns >= 30) {\r\n throw new Error('Both rows and columns must be less than 30.');\r\n }\r\n\r\n this.quill.focus();\r\n const range = this.quill.getSelection();\r\n if (range == null) return;\r\n const [currentBlot] = this.quill.getLeaf(range.index);\r\n if (!currentBlot) return;\r\n if (isForbidInTable(currentBlot)) {\r\n throw new Error(`Not supported ${currentBlot.statics.blotName} insert into table.`);\r\n }\r\n\r\n const borderWidth = this.calculateTableCellBorderWidth();\r\n const rootStyle = getComputedStyle(this.quill.root);\r\n const paddingLeft = Number.parseInt(rootStyle.paddingLeft);\r\n const paddingRight = Number.parseInt(rootStyle.paddingRight);\r\n const width = Number.parseInt(rootStyle.width) - paddingLeft - paddingRight - borderWidth;\r\n\r\n const tableId = randomId();\r\n const colIds = new Array(columns).fill(0).map(() => randomId());\r\n\r\n // insert delta data to create table\r\n const colWidth = !this.options.full ? `${Math.max(Math.floor(width / columns), tableUpSize.colMinWidthPx)}px` : `${Math.max((1 / columns) * 100, tableUpSize.colMinWidthPre)}%`;\r\n const delta: Record<string, any>[] = [{ retain: range.index }];\r\n const aroundContent = this.quill.getContents(range.index, 1);\r\n const [, offset] = this.quill.getLine(range.index);\r\n if (aroundContent.ops[0].insert !== '\\n' && offset !== 0) delta.push({ insert: '\\n' });\r\n\r\n for (let i = 0; i < columns; i++) {\r\n delta.push({\r\n insert: {\r\n [blotName.tableCol]: {\r\n width: colWidth,\r\n tableId,\r\n colId: colIds[i],\r\n full: this.options.full,\r\n },\r\n },\r\n });\r\n }\r\n for (let j = 0; j < rows; j++) {\r\n const rowId = randomId();\r\n for (let i = 0; i < columns; i++) {\r\n delta.push({\r\n insert: '\\n',\r\n attributes: {\r\n [blotName.tableCellInner]: {\r\n tableId,\r\n rowId,\r\n colId: colIds[i],\r\n rowspan: 1,\r\n colspan: 1,\r\n },\r\n },\r\n });\r\n }\r\n }\r\n\r\n this.quill.updateContents(new Delta(delta), Quill.sources.USER);\r\n this.quill.setSelection(range.index + columns, Quill.sources.SILENT);\r\n this.quill.focus();\r\n }\r\n\r\n calculateTableCellBorderWidth() {\r\n const tableStr = `\r\n <table class=\"${TableMainFormat.className}\">\r\n <tbody>\r\n <tr>\r\n <td class=\"${TableCellFormat.className}\"></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n `;\r\n const div = document.createElement('div');\r\n div.className = TableWrapperFormat.className;\r\n div.innerHTML = tableStr;\r\n div.style.position = 'absolute';\r\n div.style.left = '-9999px';\r\n div.style.top = '-9999px';\r\n div.style.visibility = 'hidden';\r\n this.quill.root.appendChild(div);\r\n const tempTableStyle = window.getComputedStyle(div.querySelector('td')!);\r\n const borderWidth = Number.parseFloat(tempTableStyle.borderWidth) || 0;\r\n this.quill.root.removeChild(div);\r\n return borderWidth;\r\n }\r\n\r\n // handle unusual delete cell\r\n fixUnusuaDeletelTable(tableBlot: TableMainFormat) {\r\n // calculate all cells\r\n const trBlots = tableBlot.getRows();\r\n const tableColIds = tableBlot.getColIds();\r\n if (trBlots.length === 0) {\r\n return tableBlot.remove();\r\n }\r\n if (tableColIds.length === 0) return;\r\n // append by col\r\n const cellSpanMap = new Array(trBlots.length).fill(0).map(() => new Array(tableColIds.length).fill(false));\r\n const tableId = tableBlot.tableId;\r\n for (const [indexTr, tr] of trBlots.entries()) {\r\n let indexTd = 0;\r\n let indexCol = 0;\r\n const curCellSpan = cellSpanMap[indexTr];\r\n const tds = tr.descendants(TableCellFormat);\r\n // loop every row and column\r\n while (indexCol < tableColIds.length) {\r\n // skip when rowspan or colspan\r\n if (curCellSpan[indexCol]) {\r\n indexCol += 1;\r\n continue;\r\n }\r\n const curTd = tds[indexTd];\r\n // if colId does not match. insert a new one\r\n if (!curTd || curTd.colId !== tableColIds[indexCol]) {\r\n tr.insertBefore(\r\n createCell(\r\n this.quill.scroll,\r\n {\r\n tableId,\r\n colId: tableColIds[indexCol],\r\n rowId: tr.rowId,\r\n },\r\n ),\r\n curTd,\r\n );\r\n }\r\n else {\r\n if (indexTr + curTd.rowspan - 1 >= trBlots.length) {\r\n curTd.getCellInner().rowspan = trBlots.length - indexTr;\r\n }\r\n\r\n const { colspan, rowspan } = curTd;\r\n // skip next column cell\r\n if (colspan > 1) {\r\n for (let c = 1; c < colspan; c++) {\r\n curCellSpan[indexCol + c] = true;\r\n }\r\n }\r\n // skip next rowspan cell\r\n if (rowspan > 1) {\r\n for (let r = indexTr + 1; r < indexTr + rowspan; r++) {\r\n for (let c = 0; c < colspan; c++) {\r\n cellSpanMap[r][indexCol + c] = true;\r\n }\r\n }\r\n }\r\n indexTd += 1;\r\n }\r\n indexCol += 1;\r\n }\r\n\r\n // if td not match all exist td. Indicates that a cell has been inserted\r\n if (indexTd < tds.length) {\r\n for (let i = indexTd; i < tds.length; i++) {\r\n tds[i].remove();\r\n }\r\n }\r\n }\r\n }\r\n\r\n balanceTables() {\r\n for (const tableBlot of this.quill.scroll.descendants(TableMainFormat)) {\r\n this.fixUnusuaDeletelTable(tableBlot);\r\n }\r\n }\r\n\r\n listenBalanceCells() {\r\n this.quill.on(\r\n Quill.events.SCROLL_OPTIMIZE,\r\n (mutations: MutationRecord[]) => {\r\n mutations.some((mutation) => {\r\n // TODO: if need add ['COL', 'COLGROUP']\r\n if (['TD', 'TR', 'TBODY', 'TABLE'].includes((mutation.target as HTMLElement).tagName)) {\r\n this.fixTableByLisenter();\r\n return true;\r\n }\r\n return false;\r\n });\r\n for (const mutation of mutations) {\r\n const mutationTarget = mutation.target as HTMLElement;\r\n if (mutationTarget.tagName === 'TABLE') {\r\n const tableMain = Quill.find(mutationTarget) as TableMainFormat;\r\n if (tableMain) {\r\n tableMain.sortMergeChildren();\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n );\r\n }\r\n\r\n deleteTable(selectedTds: TableCellInnerFormat[]) {\r\n if (selectedTds.length === 0) return;\r\n const tableBlot = findParentBlot(selectedTds[0], blotName.tableMain);\r\n tableBlot && tableBlot.remove();\r\n this.hideTableTools();\r\n }\r\n\r\n appendRow(selectedTds: TableCellInnerFormat[], isDown: boolean) {\r\n if (selectedTds.length <= 0) return;\r\n // find baseTd and baseTr\r\n const baseTd = selectedTds[isDown ? selectedTds.length - 1 : 0];\r\n const [tableBlot, tableBodyBlot, baseTdParentTr] = findParentBlots(baseTd, [blotName.tableMain, blotName.tableBody, blotName.tableRow] as const);\r\n const tableTrs = tableBlot.getRows();\r\n const i = tableTrs.indexOf(baseTdParentTr);\r\n const insertRowIndex = i + (isDown ? baseTd.rowspan : 0);\r\n\r\n tableBodyBlot.insertRow(insertRowIndex);\r\n }\r\n\r\n appendCol(selectedTds: TableCellInnerFormat[], isRight: boolean) {\r\n if (selectedTds.length <= 0) return;\r\n\r\n // find insert column index in row\r\n const [baseTd] = selectedTds.reduce((pre, cur) => {\r\n const columnIndex = cur.getColumnIndex();\r\n if (!isRight && columnIndex <= pre[1]) {\r\n pre = [cur, columnIndex];\r\n }\r\n else if (isRight && columnIndex >= pre[1]) {\r\n pre = [cur, columnIndex];\r\n }\r\n return pre;\r\n }, [selectedTds[0], selectedTds[0].getColumnIndex()]);\r\n const columnIndex = baseTd.getColumnIndex() + (isRight ? baseTd.colspan : 0);\r\n\r\n const tableBlot = findParentBlot(baseTd, blotName.tableMain);\r\n const tableId = tableBlot.tableId;\r\n const newColId = randomId();\r\n\r\n const [colgroup] = tableBlot.descendants(TableColgroupFormat);\r\n if (colgroup) {\r\n colgroup.insertColByIndex(columnIndex, {\r\n tableId,\r\n colId: newColId,\r\n width: tableBlot.full ? 6 : 160,\r\n full: tableBlot.full,\r\n });\r\n }\r\n\r\n // loop tr and insert cell at index\r\n // if index is inner cell, skip next `rowspan` line\r\n // if there are cells both have column span and row span before index cell, minus `colspan` cell for next line\r\n const trs = tableBlot.getRows();\r\n const spanCols: number[] = [];\r\n let skipRowNum = 0;\r\n for (const tr of Object.values(trs)) {\r\n const spanCol = spanCols.shift() || 0;\r\n if (skipRowNum > 0) {\r\n skipRowNum -= 1;\r\n continue;\r\n }\r\n const nextSpanCols = tr.insertCell(columnIndex - spanCol, {\r\n tableId,\r\n rowId: tr.rowId,\r\n colId: newColId,\r\n rowspan: 1,\r\n colspan: 1,\r\n });\r\n if (nextSpanCols.skipRowNum) {\r\n skipRowNum += nextSpanCols.skipRowNum;\r\n }\r\n for (const [i, n] of nextSpanCols.entries()) {\r\n spanCols[i] = (spanCols[i] || 0) + n;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * after insert or remove cell. handle cell colspan and rowspan merge\r\n */\r\n fixTableByRemove(tableBlot: TableMainFormat) {\r\n // calculate all cells\r\n // maybe will get empty tr\r\n const trBlots = tableBlot.getRows();\r\n const tableCols = tableBlot.getCols();\r\n const colIdMap = tableCols.reduce((idMap, col) => {\r\n idMap[col.colId] = 0;\r\n return idMap;\r\n }, {} as Record<string, number>);\r\n // merge rowspan\r\n const reverseTrBlots = [...trBlots].reverse();\r\n const removeTr: number[] = [];\r\n for (const [index, tr] of reverseTrBlots.entries()) {\r\n const i = trBlots.length - index - 1;\r\n if (tr.children.length <= 0) {\r\n removeTr.push(i);\r\n }\r\n else {\r\n // if have td rowspan across empty tr. minus rowspan\r\n tr.foreachCellInner((td) => {\r\n const sum = removeTr.reduce((sum, val) => td.rowspan + i > val ? sum + 1 : sum, 0);\r\n td.rowspan -= sum;\r\n // count exist col\r\n colIdMap[td.colId] += 1;\r\n });\r\n }\r\n }\r\n // merge colspan\r\n let index = 0;\r\n for (const count of Object.values(colIdMap)) {\r\n if (count === 0) {\r\n const spanCols: number[] = [];\r\n let skipRowNum = 0;\r\n for (const tr of Object.values(trBlots)) {\r\n const spanCol = spanCols.shift() || 0;\r\n let nextSpanCols = [];\r\n if (skipRowNum > 0) {\r\n nextSpanCols = tr.getCellByColumIndex(index - spanCol)[2];\r\n skipRowNum -= 1;\r\n }\r\n else {\r\n nextSpanCols = tr.removeCell(index - spanCol);\r\n if (nextSpanCols.skipRowNum) {\r\n skipRowNum += nextSpanCols.skipRowNum;\r\n }\r\n }\r\n for (const [i, n] of nextSpanCols.entries()) {\r\n spanCols[i] = (spanCols[i] || 0) + n;\r\n }\r\n }\r\n }\r\n else {\r\n index += 1;\r\n }\r\n }\r\n // remove col\r\n for (const col of tableCols) {\r\n if (colIdMap[col.colId] === 0) {\r\n if (col.prev) {\r\n (col.prev as TableColFormat).width += col.width;\r\n }\r\n else if (col.next) {\r\n (col.next as TableColFormat).width += col.width;\r\n }\r\n col.remove();\r\n }\r\n }\r\n }\r\n\r\n removeRow(selectedTds: TableCellInnerFormat[]) {\r\n if (selectedTds.length <= 0) return;\r\n const baseTd = selectedTds[0];\r\n const tableBlot = findParentBlot(baseTd, blotName.tableMain);\r\n const trs = tableBlot.getRows();\r\n let endTrIndex = trs.length;\r\n let nextTrIndex = -1;\r\n for (const td of selectedTds) {\r\n const tr = findParentBlot(td, blotName.tableRow);\r\n const index = trs.indexOf(tr);\r\n if (index < endTrIndex) {\r\n endTrIndex = index;\r\n }\r\n if (index + td.rowspan > nextTrIndex) {\r\n nextTrIndex = index + td.rowspan;\r\n }\r\n }\r\n\r\n const patchTds: {\r\n [key: string]: {\r\n rowspan: number;\r\n colspan: number;\r\n colIndex: number;\r\n };\r\n } = {};\r\n for (let i = endTrIndex; i < Math.min(trs.length, nextTrIndex); i++) {\r\n const tr = trs[i];\r\n tr.foreachCellInner((td) => {\r\n // find cells in rowspan that exceed the deletion range\r\n if (td.rowspan + i > nextTrIndex) {\r\n patchTds[td.colId] = {\r\n rowspan: td.rowspan + i - nextTrIndex,\r\n colspan: td.colspan,\r\n colIndex: td.getColumnIndex(),\r\n };\r\n }\r\n // only remove td. empty tr to calculate colspan and rowspan\r\n td.parent.remove();\r\n });\r\n }\r\n\r\n if (trs[nextTrIndex]) {\r\n const nextTr = trs[nextTrIndex];\r\n const tableId = tableBlot.tableId;\r\n // insert cell in nextTr to patch exceed cell\r\n for (const [colId, { colIndex, colspan, rowspan }] of Object.entries(patchTds)) {\r\n nextTr.insertCell(colIndex, {\r\n tableId,\r\n rowId: nextTr.rowId,\r\n colId,\r\n colspan,\r\n rowspan,\r\n });\r\n }\r\n }\r\n\r\n this.fixTableByRemove(tableBlot);\r\n }\r\n\r\n removeCol(selectedTds: TableCellInnerFormat[]) {\r\n if (selectedTds.length <= 0) return;\r\n const baseTd = selectedTds[0];\r\n const tableBlot = findParentBlot(baseTd, blotName.tableMain);\r\n const colspanMap: Record<string, number> = {};\r\n for (const td of selectedTds) {\r\n if (!colspanMap[td.rowId]) colspanMap[td.rowId] = 0;\r\n colspanMap[td.rowId] += td.colspan;\r\n }\r\n const colspanCount = Math.max(...Object.values(colspanMap));\r\n const columnIndex = baseTd.getColumnIndex();\r\n\r\n const trs = tableBlot.descendants(TableRowFormat);\r\n for (let i = 0; i < colspanCount; i++) {\r\n const spanCols: number[] = [];\r\n let skipRowNum = 0;\r\n for (const tr of Object.values(trs)) {\r\n const spanCol = spanCols.shift() || 0;\r\n if (skipRowNum > 0) {\r\n skipRowNum -= 1;\r\n continue;\r\n }\r\n const nextSpanCols = tr.removeCell(columnIndex - spanCol);\r\n if (nextSpanCols.skipRowNum) {\r\n skipRowNum += nextSpanCols.skipRowNum;\r\n }\r\n for (const [i, n] of nextSpanCols.entries()) {\r\n spanCols[i] = (spanCols[i] || 0) + n;\r\n }\r\n }\r\n }\r\n // delete col need after remove cell. remove cell need all column id\r\n // manual delete col. use fixTableByRemove to delete col will delete extra cells\r\n const [colgroup] = tableBlot.descendants(TableColgroupFormat);\r\n if (colgroup) {\r\n for (let i = 0; i < colspanCount; i++) {\r\n colgroup.removeColByIndex(columnIndex);\r\n }\r\n }\r\n\r\n this.fixTableByRemove(tableBlot);\r\n }\r\n\r\n mergeCells(selectedTds: TableCellInnerFormat[]) {\r\n if (selectedTds.length <= 1) return;\r\n const counts = selectedTds.reduce(\r\n (pre, selectTd, index) => {\r\n // count column span\r\n const colId = selectTd.colId;\r\n if (!pre[0][colId]) pre[0][colId] = 0;\r\n pre[0][colId] += selectTd.rowspan;\r\n // count row span\r\n const rowId = selectTd.rowId;\r\n if (!pre[1][rowId]) pre[1][rowId] = 0;\r\n pre[1][rowId] += selectTd.colspan;\r\n // merge select cell\r\n if (index !== 0) {\r\n selectTd.moveChildren(pre[2]);\r\n selectTd.parent.remove();\r\n }\r\n return pre;\r\n },\r\n [{} as Record<string, number>, {} as Record<string, number>, selectedTds[0]] as const,\r\n );\r\n\r\n const rowCount = Math.max(...Object.values(counts[0]));\r\n const colCount = Math.max(...Object.values(counts[1]));\r\n const baseTd = counts[2];\r\n baseTd.colspan = colCount;\r\n baseTd.rowspan = rowCount;\r\n\r\n const tableBlot = findParentBlot(baseTd, blotName.tableMain);\r\n this.fixTableByRemove(tableBlot);\r\n }\r\n\r\n splitCell(selectedTds: TableCellInnerFormat[]) {\r\n if (selectedTds.length !== 1) return;\r\n const baseTd = selectedTds[0];\r\n if (baseTd.colspan === 1 && baseTd.rowspan === 1) return;\r\n const [tableBlot, baseTr] = findParentBlots(baseTd, [blotName.tableMain, blotName.tableRow] as const);\r\n const tableId = tableBlot.tableId;\r\n const colIndex = baseTd.getColumnIndex();\r\n const colIds = tableBlot.getColIds().slice(colIndex, colIndex + baseTd.colspan).reverse();\r\n const baseTdStyle = (baseTd.formats()[blotName.tableCellInner] as TableCellValue).style;\r\n\r\n let curTr = baseTr;\r\n let rowspan = baseTd.rowspan;\r\n // reset span first. insertCell need colspan to judge insert position\r\n baseTd.colspan = 1;\r\n baseTd.rowspan = 1;\r\n while (curTr && rowspan > 0) {\r\n for (const id of colIds) {\r\n // keep baseTd. baseTr should insert at baseTd's column index + 1\r\n if (curTr === baseTr && id === baseTd.colId) continue;\r\n const value: TableCellValue = {\r\n tableId,\r\n rowId: curTr.rowId,\r\n colId: id,\r\n rowspan: 1,\r\n colspan: 1,\r\n };\r\n if (baseTdStyle) {\r\n value.style = baseTdStyle;\r\n }\r\n curTr.insertCell(colIndex + (curTr === baseTr ? 1 : 0), value);\r\n }\r\n\r\n rowspan -= 1;\r\n curTr = curTr.next as TableRowFormat;\r\n }\r\n }\r\n}\r\n","import { TableUp } from './table-up';\r\n\r\nexport default TableUp;\r\nexport * from './formats';\r\nexport * from './modules';\r\nexport * from './table-up';\r\nexport {\r\n blotName,\r\n createColorPicker,\r\n createSelectBox,\r\n createTooltip,\r\n findParentBlot,\r\n findParentBlots,\r\n randomId,\r\n tableUpEvent,\r\n tableUpInternal,\r\n tableUpSize,\r\n} from './utils';\r\nexport * from './utils/types';\r\n"],"x_google_ignoreList":[9,12,13,14,15,16,17,18,19,20,21,22],"mappings":"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"}
|