legalesign-document-viewer 1.0.2 → 1.0.4
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/cjs/loader.cjs.js +1 -1
- package/dist/cjs/ls-add-new-button_20.cjs.entry.js +1 -7
- package/dist/cjs/ls-assignee-select_21.cjs.entry.js +17 -13
- package/dist/cjs/ls-compose-loader_7.cjs.entry.js +2 -2
- package/dist/cjs/ls-document-viewer.cjs.entry.js +6 -2
- package/dist/cjs/ls-document-viewer.cjs.js +1 -1
- package/dist/collection/components/ls-document-options/ls-document-options.js +1 -10
- package/dist/collection/components/ls-document-options/ls-document-options.js.map +1 -1
- package/dist/collection/components/ls-document-viewer/ls-document-viewer.js +6 -2
- package/dist/collection/components/ls-document-viewer/ls-document-viewer.js.map +1 -1
- package/dist/collection/components/ls-editor-field/ls-editor-field.js +9 -10
- package/dist/collection/components/ls-editor-field/ls-editor-field.js.map +1 -1
- package/dist/collection/components/ls-field-content/ls-field-content.js +8 -3
- package/dist/collection/components/ls-field-content/ls-field-content.js.map +1 -1
- package/dist/collection/components/ls-statusbar/ls-statusbar.css +2 -3
- package/dist/components/ls-document-options.js +1 -1
- package/dist/components/ls-document-viewer.js +22 -18
- package/dist/components/ls-document-viewer.js.map +1 -1
- package/dist/components/ls-editor-field.js +1 -1
- package/dist/components/ls-field-content.js +1 -1
- package/dist/components/ls-field-distribute.js +1 -1
- package/dist/components/ls-field-properties-checkbox.js +1 -1
- package/dist/components/ls-field-properties-date.js +1 -1
- package/dist/components/ls-field-properties-dropdown.js +2 -2
- package/dist/components/ls-field-properties-email.js +1 -1
- package/dist/components/ls-field-properties-file.js +1 -1
- package/dist/components/ls-field-properties-general.js +1 -1
- package/dist/components/ls-field-properties-multiple.js +1 -1
- package/dist/components/ls-field-properties-number.js +1 -1
- package/dist/components/ls-field-properties-signature.js +1 -1
- package/dist/components/ls-field-properties-text.js +1 -1
- package/dist/components/ls-field-properties.js +1 -1
- package/dist/components/ls-left-bar.js +1 -1
- package/dist/components/ls-statusbar.js +1 -1
- package/dist/components/{p-1ayYzye1.js → p-BN_BZ9eU.js} +4 -4
- package/dist/components/{p-1ayYzye1.js.map → p-BN_BZ9eU.js.map} +1 -1
- package/dist/components/{p-fd9JyL4S.js → p-BvZKfSxt.js} +4 -4
- package/dist/components/{p-fd9JyL4S.js.map → p-BvZKfSxt.js.map} +1 -1
- package/dist/components/{p-Dy-dPxzq.js → p-BzEVOvpL.js} +4 -4
- package/dist/components/{p-Dy-dPxzq.js.map → p-BzEVOvpL.js.map} +1 -1
- package/dist/components/{p-CxWGojFs.js → p-CLklwQ7z.js} +3 -11
- package/dist/components/p-CLklwQ7z.js.map +1 -0
- package/dist/components/{p-CvMzUIlC.js → p-CU_v-klT.js} +11 -12
- package/dist/components/{p-CvMzUIlC.js.map → p-CU_v-klT.js.map} +1 -1
- package/dist/components/{p-CbORhuHl.js → p-Ce1yNs3F.js} +14 -14
- package/dist/components/{p-CbORhuHl.js.map → p-Ce1yNs3F.js.map} +1 -1
- package/dist/components/{p-BEhTmCBW.js → p-Cue0UgwB.js} +4 -4
- package/dist/components/{p-BEhTmCBW.js.map → p-Cue0UgwB.js.map} +1 -1
- package/dist/components/{p-C3xBvNXU.js → p-Cwf28UAj.js} +16 -16
- package/dist/components/{p-C3xBvNXU.js.map → p-Cwf28UAj.js.map} +1 -1
- package/dist/components/{p-CmsA9-sZ.js → p-D7o_Ls97.js} +4 -4
- package/dist/components/{p-CmsA9-sZ.js.map → p-D7o_Ls97.js.map} +1 -1
- package/dist/components/{p-D1yC5psL.js → p-DP3FTRHD.js} +4 -4
- package/dist/components/{p-D1yC5psL.js.map → p-DP3FTRHD.js.map} +1 -1
- package/dist/components/{p-CeO915wm.js → p-DVfpfKI7.js} +4 -4
- package/dist/components/{p-CeO915wm.js.map → p-DVfpfKI7.js.map} +1 -1
- package/dist/components/{p-BJ7fvXXf.js → p-Dw0UiotU.js} +4 -4
- package/dist/components/{p-BJ7fvXXf.js.map → p-Dw0UiotU.js.map} +1 -1
- package/dist/components/{p-DNx0Ngpa.js → p-VFHHgnl2.js} +11 -6
- package/dist/components/p-VFHHgnl2.js.map +1 -0
- package/dist/components/{p-8hWonZD4.js → p-dLpaJicA.js} +4 -4
- package/dist/components/{p-8hWonZD4.js.map → p-dLpaJicA.js.map} +1 -1
- package/dist/components/{p-BbLFuN1Q.js → p-thlkOeP_.js} +3 -3
- package/dist/components/{p-BbLFuN1Q.js.map → p-thlkOeP_.js.map} +1 -1
- package/dist/components/{p-CgqKV0xf.js → p-xSOFT8uc.js} +4 -4
- package/dist/components/{p-CgqKV0xf.js.map → p-xSOFT8uc.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/ls-add-new-button_20.entry.js +1 -7
- package/dist/esm/ls-assignee-select_21.entry.js +17 -13
- package/dist/esm/ls-compose-loader_7.entry.js +2 -2
- package/dist/esm/ls-document-viewer.entry.js +6 -2
- package/dist/esm/ls-document-viewer.entry.js.map +1 -1
- package/dist/esm/ls-document-viewer.js +1 -1
- package/dist/ls-document-viewer/ls-document-viewer.esm.js +1 -1
- package/dist/ls-document-viewer/{p-762b88d0.entry.js → p-0340d8ac.entry.js} +2 -2
- package/dist/ls-document-viewer/{p-762b88d0.entry.js.map → p-0340d8ac.entry.js.map} +1 -1
- package/dist/ls-document-viewer/{p-a27532c9.entry.js → p-3ba7f381.entry.js} +2 -2
- package/dist/ls-document-viewer/{p-a27532c9.entry.js.map → p-3ba7f381.entry.js.map} +1 -1
- package/dist/ls-document-viewer/p-ba48b708.entry.js +2 -0
- package/dist/ls-document-viewer/p-ba48b708.entry.js.map +1 -0
- package/dist/ls-document-viewer/p-d5c42d5f.entry.js +2 -0
- package/dist/ls-document-viewer/p-d5c42d5f.entry.js.map +1 -0
- package/dist/types/components/ls-document-options/ls-document-options.d.ts +0 -1
- package/package.json +1 -1
- package/dist/components/p-CxWGojFs.js.map +0 -1
- package/dist/components/p-DNx0Ngpa.js.map +0 -1
- package/dist/ls-document-viewer/p-3918ae76.entry.js +0 -2
- package/dist/ls-document-viewer/p-3918ae76.entry.js.map +0 -1
- package/dist/ls-document-viewer/p-c56fd5ed.entry.js +0 -2
- package/dist/ls-document-viewer/p-c56fd5ed.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-BbLFuN1Q.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/ls-document-viewer/clipboard.ts","src/components/ls-document-viewer/snapHelper.ts","src/components/ls-document-viewer/mouseHandlers.ts","src/components/ls-field-distribute/ls-field-distribute.scss?tag=ls-field-distribute&encapsulation=shadow","src/components/ls-field-distribute/ls-field-distribute.tsx"],"sourcesContent":["import { LSApiElement } from '../../types/LSApiElement';\n\nconst PASTE_OFFSET = 10; // px offset when pasting without a click target\n\nlet clipboard: LSApiElement[] = [];\nlet lastClickPosition: { x: number; y: number } | null = null;\n\nexport function getClipboard(): LSApiElement[] {\n return clipboard;\n}\n\nexport function setLastClickPosition(x: number, y: number) {\n lastClickPosition = { x, y };\n}\n\nexport function clearLastClickPosition() {\n lastClickPosition = null;\n}\n\nexport function copySelected() {\n if (!this.selected || this.selected.length === 0) return;\n clipboard = this.selected.map(field => ({ ...field.dataItem }));\n lastClickPosition = null;\n}\n\nexport function cutSelected() {\n if (!this.selected || this.selected.length === 0) return;\n copySelected.bind(this)();\n\n const arr = Array.from(this.selected) as HTMLLsEditorFieldElement[];\n this.mutate.emit(\n arr.map(s => ({ action: 'delete', data: s.dataItem })),\n );\n}\n\nexport function pasteClipboard() {\n if (clipboard.length === 0) return;\n\n // Calculate bounding box of clipboard items to use as offset anchor\n const minTop = Math.min(...clipboard.map(item => item.top));\n const minLeft = Math.min(...clipboard.map(item => item.left));\n\n const createdItems = clipboard.map(item => {\n const newItem = { ...item, id: btoa('ele' + crypto.randomUUID()) };\n\n if (lastClickPosition) {\n // Paste relative to click position, maintaining relative layout of multiple fields\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n const rect = frame.getBoundingClientRect();\n const clickX = Math.round((lastClickPosition.x - rect.left) / this.zoom);\n const clickY = Math.round((lastClickPosition.y - rect.top) / this.zoom);\n\n newItem.top = clickY + (item.top - minTop);\n newItem.left = clickX + (item.left - minLeft);\n } else {\n // No click target — offset from original position\n newItem.top = item.top + PASTE_OFFSET;\n newItem.left = item.left + PASTE_OFFSET;\n }\n\n // Clamp to page bounds\n const pageDims = this.pageDimensions[this.pageNum - 1];\n if (newItem.top + item.height > pageDims.height) {\n newItem.top = pageDims.height - item.height;\n }\n if (newItem.left + item.width > pageDims.width) {\n newItem.left = pageDims.width - item.width;\n }\n if (newItem.top < 0) newItem.top = 0;\n if (newItem.left < 0) newItem.left = 0;\n\n newItem.page = this.pageNum;\n newItem.pageDimensions = pageDims;\n\n return newItem;\n });\n\n const pasteCount = createdItems.length;\n this.mutate.emit(createdItems.map(data => ({ action: 'create', data })));\n\n // Select pasted fields after mutations complete\n // Fields get new IDs from the API, so we select the last N fields added\n const waitForPaste = () => {\n const fields = Array.from(\n this.component.shadowRoot.querySelectorAll('ls-editor-field'),\n ) as HTMLLsEditorFieldElement[];\n\n const currentPage = fields.filter(f => f.dataItem?.page === this.pageNum);\n // Get the most recently added fields (they're appended to the DOM)\n const pastedFields = currentPage.slice(-pasteCount);\n\n if (pastedFields.length === pasteCount) {\n fields.forEach(f => { f.selected = false; f.multiSelected = false; });\n pastedFields.forEach(f => {\n f.selected = true;\n f.multiSelected = pastedFields.length > 1;\n });\n this.selected = pastedFields;\n this.selectFields.emit(pastedFields.map(f => f.dataItem));\n }\n };\n\n // Wait for isMutating to flip back to false\n const poll = () => {\n if (!this.isMutating) {\n requestAnimationFrame(waitForPaste);\n } else {\n requestAnimationFrame(poll);\n }\n };\n requestAnimationFrame(poll);\n\n // Update clipboard to new items so subsequent pastes keep offsetting\n clipboard = createdItems;\n lastClickPosition = null;\n}\n","export const SNAP_THRESHOLD = 8; // pixels proximity to trigger snap\n\nexport interface SnapResult {\n x: number | null; // snapped left position (null = no snap on x)\n y: number | null; // snapped top position (null = no snap on y)\n guides: { orientation: 'h' | 'v'; position: number }[];\n}\n\n/**\n * Calculate snap positions for a dragging field against existing fields.\n * Snaps edges and centers. Shows guides for ALL aligned edges at the snapped position.\n * All values are in zoomed pixel coordinates relative to the document frame.\n */\nexport interface ResizeSnapResult {\n edges: { n?: number; s?: number; e?: number; w?: number };\n guides: { orientation: 'h' | 'v'; position: number }[];\n}\n\n/**\n * Calculate snap positions for a resizing field edge against existing fields.\n * Only snaps the edges being dragged (determined by edgeSide).\n */\nexport function calculateResizeSnap(\n fieldLeft: number,\n fieldTop: number,\n fieldWidth: number,\n fieldHeight: number,\n edgeSide: string,\n fields: { offsetLeft: number; offsetTop: number; offsetWidth: number; offsetHeight: number; dataItem?: any }[],\n currentPage: number,\n excludeIds?: string[],\n): ResizeSnapResult {\n const result: ResizeSnapResult = { edges: {}, guides: [] };\n\n const fieldRight = fieldLeft + fieldWidth;\n const fieldBottom = fieldTop + fieldHeight;\n\n // Determine which edges are active based on edgeSide\n const activeH: ('n' | 's')[] = [];\n const activeV: ('e' | 'w')[] = [];\n if (edgeSide.includes('n')) activeH.push('n');\n if (edgeSide.includes('s')) activeH.push('s');\n if (edgeSide.includes('e')) activeV.push('e');\n if (edgeSide.includes('w')) activeV.push('w');\n\n // For each active edge, find closest snap target\n const edgePositions = { n: fieldTop, s: fieldBottom, e: fieldRight, w: fieldLeft };\n\n for (const edge of [...activeV, ...activeH] as ('n' | 's' | 'e' | 'w')[]) {\n const isVerticalEdge = edge === 'e' || edge === 'w';\n const pos = edgePositions[edge];\n let closest = SNAP_THRESHOLD + 1;\n let snapped: number | null = null;\n\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fLeft = field.offsetLeft;\n const fTop = field.offsetTop;\n const fRight = fLeft + field.offsetWidth;\n const fBottom = fTop + field.offsetHeight;\n const fCenterX = fLeft + field.offsetWidth / 2;\n const fCenterY = fTop + field.offsetHeight / 2;\n\n const targets = isVerticalEdge ? [fLeft, fRight, fCenterX] : [fTop, fBottom, fCenterY];\n for (const t of targets) {\n const dist = Math.abs(pos - t);\n if (dist < closest) {\n closest = dist;\n snapped = t;\n }\n }\n }\n\n if (snapped !== null && closest <= SNAP_THRESHOLD) {\n result.edges[edge] = snapped;\n result.guides.push({ orientation: isVerticalEdge ? 'v' : 'h', position: snapped });\n }\n }\n\n return result;\n}\n\nexport function calculateSnap(\n dragLeft: number,\n dragTop: number,\n dragWidth: number,\n dragHeight: number,\n fields: { offsetLeft: number; offsetTop: number; offsetWidth: number; offsetHeight: number; dataItem?: any }[],\n currentPage: number,\n excludeIds?: string[],\n): SnapResult {\n const result: SnapResult = { x: null, y: null, guides: [] };\n\n const dragRight = dragLeft + dragWidth;\n const dragBottom = dragTop + dragHeight;\n const dragCenterX = dragLeft + dragWidth / 2;\n const dragCenterY = dragTop + dragHeight / 2;\n\n let closestDx = SNAP_THRESHOLD + 1;\n let closestDy = SNAP_THRESHOLD + 1;\n let snappedX = dragLeft;\n let snappedY = dragTop;\n\n // First pass: find the closest snap distance per axis\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fLeft = field.offsetLeft;\n const fTop = field.offsetTop;\n const fRight = fLeft + field.offsetWidth;\n const fBottom = fTop + field.offsetHeight;\n const fCenterX = fLeft + field.offsetWidth / 2;\n const fCenterY = fTop + field.offsetHeight / 2;\n\n const xPairs = [\n { dragEdge: dragLeft, targetEdge: fLeft },\n { dragEdge: dragLeft, targetEdge: fRight },\n { dragEdge: dragRight, targetEdge: fLeft },\n { dragEdge: dragRight, targetEdge: fRight },\n { dragEdge: dragCenterX, targetEdge: fCenterX },\n ];\n\n for (const { dragEdge, targetEdge } of xPairs) {\n const dist = Math.abs(dragEdge - targetEdge);\n if (dist < closestDx) {\n closestDx = dist;\n snappedX = dragLeft + (targetEdge - dragEdge);\n }\n }\n\n const yPairs = [\n { dragEdge: dragTop, targetEdge: fTop },\n { dragEdge: dragTop, targetEdge: fBottom },\n { dragEdge: dragBottom, targetEdge: fTop },\n { dragEdge: dragBottom, targetEdge: fBottom },\n { dragEdge: dragCenterY, targetEdge: fCenterY },\n ];\n\n for (const { dragEdge, targetEdge } of yPairs) {\n const dist = Math.abs(dragEdge - targetEdge);\n if (dist < closestDy) {\n closestDy = dist;\n snappedY = dragTop + (targetEdge - dragEdge);\n }\n }\n }\n\n if (closestDx > SNAP_THRESHOLD) snappedX = dragLeft;\n if (closestDy > SNAP_THRESHOLD) snappedY = dragTop;\n\n // Second pass: collect ALL guides that align at the snapped position\n if (closestDx <= SNAP_THRESHOLD) {\n result.x = snappedX;\n const snappedRight = snappedX + dragWidth;\n const snappedCenterX = snappedX + dragWidth / 2;\n\n const guideSet = new Set<number>();\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fLeft = field.offsetLeft;\n const fRight = fLeft + field.offsetWidth;\n const fCenterX = fLeft + field.offsetWidth / 2;\n\n for (const target of [fLeft, fRight, fCenterX]) {\n if (Math.abs(snappedX - target) < 1 || Math.abs(snappedRight - target) < 1 || Math.abs(snappedCenterX - target) < 1) {\n guideSet.add(target);\n }\n }\n }\n guideSet.forEach(pos => result.guides.push({ orientation: 'v', position: pos }));\n }\n\n if (closestDy <= SNAP_THRESHOLD) {\n result.y = snappedY;\n const snappedBottom = snappedY + dragHeight;\n const snappedCenterY = snappedY + dragHeight / 2;\n\n const guideSet = new Set<number>();\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fTop = field.offsetTop;\n const fBottom = fTop + field.offsetHeight;\n const fCenterY = fTop + field.offsetHeight / 2;\n\n for (const target of [fTop, fBottom, fCenterY]) {\n if (Math.abs(snappedY - target) < 1 || Math.abs(snappedBottom - target) < 1 || Math.abs(snappedCenterY - target) < 1) {\n guideSet.add(target);\n }\n }\n }\n guideSet.forEach(pos => result.guides.push({ orientation: 'h', position: pos }));\n }\n\n return result;\n}\n","import { LSApiElement } from '../../types/LSApiElement';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { findDimensions, findIn, recalculateCoordinates } from './editorCalculator';\nimport { IToolboxField } from '../interfaces/IToolboxField';\nimport { FIELD_DEFAULTS, DEFAULT_FONT_SIZE, DEFAULT_FONT_NAME } from '../../constants/fieldDefaults';\nimport { setLastClickPosition, clearLastClickPosition } from './clipboard';\nimport { snapshotField } from './history';\nimport { calculateSnap, calculateResizeSnap } from './snapHelper';\nimport { defaultRolePalette } from './defaultPalette';\nimport { dvI18n } from '../../i18n/i18n';\n\nconst preventSelect = (e: Event) => e.preventDefault();\n\nfunction showMoveBlockedTooltip(event: MouseEvent) {\n let tooltip = this.component.shadowRoot.getElementById('ls-move-blocked-tooltip');\n if (!tooltip) {\n tooltip = document.createElement('div');\n tooltip.id = 'ls-move-blocked-tooltip';\n tooltip.style.position = 'fixed';\n tooltip.style.padding = '0.375rem 0.75rem';\n tooltip.style.borderRadius = '0.5rem';\n tooltip.style.background = 'var(--gray-100, #45484d)';\n tooltip.style.color = 'white';\n tooltip.style.fontSize = '0.75rem';\n tooltip.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';\n tooltip.style.pointerEvents = 'none';\n tooltip.style.zIndex = '10000';\n tooltip.style.whiteSpace = 'nowrap';\n tooltip.textContent = dvI18n.t('fieldproperties.cannotmovemultipage');\n this.component.shadowRoot.appendChild(tooltip);\n }\n tooltip.style.left = (event.clientX + 12) + 'px';\n tooltip.style.top = (event.clientY + 12) + 'px';\n}\n\nfunction hideMoveBlockedTooltip() {\n const tooltip = this.component.shadowRoot?.getElementById('ls-move-blocked-tooltip');\n if (tooltip) tooltip.remove();\n}\n\nfunction disableSelection() {\n document.body.style.userSelect = 'none';\n document.body.style.webkitUserSelect = 'none';\n document.addEventListener('selectstart', preventSelect);\n}\n\nfunction enableSelection() {\n document.body.style.userSelect = '';\n document.body.style.webkitUserSelect = '';\n document.removeEventListener('selectstart', preventSelect);\n}\n\nexport function updateSelectionBox() {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n const pageSelected = this.selected?.filter(f => f.dataItem?.page === this.pageNum);\n if (!pageSelected || pageSelected.length < 2) {\n box.style.visibility = 'hidden';\n return;\n }\n\n let minLeft = Infinity, minTop = Infinity, maxRight = -Infinity, maxBottom = -Infinity;\n\n pageSelected.forEach(f => {\n const left = f.offsetLeft;\n const top = f.offsetTop;\n const right = left + f.offsetWidth;\n const bottom = top + f.offsetHeight;\n if (left < minLeft) minLeft = left;\n if (top < minTop) minTop = top;\n if (right > maxRight) maxRight = right;\n if (bottom > maxBottom) maxBottom = bottom;\n });\n\n box.style.left = minLeft + 'px';\n box.style.top = minTop + 'px';\n box.style.width = (maxRight - minLeft) + 'px';\n box.style.height = (maxBottom - minTop) + 'px';\n box.style.visibility = 'visible';\n}\n\nlet mousetimer = null;\n\nexport function debounce(data, delay) {\n if (mousetimer) clearTimeout(mousetimer);\n\n mousetimer = setTimeout(() => {\n this.mutate.emit([data]);\n }, delay);\n}\n\nconst MIN_DRAG_DISTANCE = 5;\n\nexport function mouseDown(e) {\n if (this._isToolboxDragging) return;\n // Disable mouse interactions in preview mode or when template is locked\n if (this.mode === 'preview' || this._template?.locked) {\n return;\n }\n // Only process if mousedown target is the frame, canvas, wrapper itself, or an editor field.\n // This prevents floating UI children (select-menu) from triggering drags.\n const frame = this.component.shadowRoot.getElementById('ls-document-frame');\n const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper');\n if (!frame) return;\n const target = e.target as HTMLElement;\n const isValidTarget = target === frame || target === wrapper || target?.id === 'pdf-canvas' || target?.tagName?.toLowerCase() === 'canvas';\n const isFieldTarget = target?.tagName?.toLowerCase() === 'ls-editor-field';\n if (!isValidTarget && !isFieldTarget) return;\n\n // Find if this was\n // - a hit on a field edge RESIZE\n // - a hit on the middle of a field MOVE\n // - a hit on the background document SELECTMULTIPLE with a box\n this.hitField = null;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n\n fields.forEach(f => {\n const { left, top, height, width, bottom, right } = f.getBoundingClientRect();\n const fdims = { left: f.offsetLeft, top: f.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n // Scale edge threshold for small fields\n const edgeX = Math.min(8, width * 0.25);\n const edgeY = Math.min(8, height * 0.25);\n const cornerX = Math.min(16, width * 0.35);\n const cornerY = Math.min(16, height * 0.35);\n // corners (check before edges)\n if (Math.abs(e.clientX - right) < cornerX && Math.abs(e.clientY - bottom) < cornerY) {\n this.edgeSide = 'se';\n this.hitField = f;\n } else if (Math.abs(e.clientX - left) < cornerX && Math.abs(e.clientY - top) < cornerY) {\n this.edgeSide = 'nw';\n this.hitField = f;\n } else if (Math.abs(e.clientX - right) < cornerX && Math.abs(e.clientY - top) < cornerY) {\n this.edgeSide = 'ne';\n this.hitField = f;\n } else if (Math.abs(e.clientX - left) < cornerX && Math.abs(e.clientY - bottom) < cornerY) {\n this.edgeSide = 'sw';\n this.hitField = f;\n // west edge\n } else if (Math.abs(e.clientX - left) < edgeX && e.clientY >= top && e.clientY <= bottom) {\n this.edgeSide = 'w';\n this.hitField = f;\n // right / east edge\n } else if (Math.abs(e.clientX - right) < edgeX && e.clientY >= top && e.clientY <= bottom) {\n this.edgeSide = 'e';\n this.hitField = f;\n // north edge\n } else if (Math.abs(e.clientY - top) < edgeY && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = 'n';\n this.hitField = f;\n // south edge\n } else if (Math.abs(e.clientY - bottom) < edgeY && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = 's';\n this.hitField = f;\n } else if (e.clientY <= bottom && e.clientY >= top && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = null;\n this.hitField = f;\n }\n });\n\n if (this.hitField && e.shiftKey === false && e.altKey === false) {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // Snapshot field state before any resize/move begins\n snapshotField(this.hitField.dataItem);\n // Snapshot all currently selected fields (for multi-field move undo)\n this.selected.forEach(f => snapshotField(f.dataItem));\n\n // mouse down on a field, select it and note the start location\n if (this.hitField.selected === false) {\n // unselect all other fields\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [this.hitField];\n this.selectFields.emit([this.hitField.dataItem]);\n }\n\n const { height, width } = this.hitField.getBoundingClientRect();\n const fdims = { left: this.hitField.offsetLeft, top: this.hitField.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n\n this.startLocations = this.selected.map(f => {\n const { height, width } = f.getBoundingClientRect();\n const beHtml = f as HTMLElement;\n return { top: beHtml.offsetTop, left: beHtml.offsetLeft, height, width };\n });\n this.selectionBox = null;\n } else if (this.hitField && e.altKey === true) {\n // Alt+click: remove field from selection\n if (this.hitField.selected === true) {\n this.hitField.selected = false;\n this.selected = this.selected.filter(f => f !== this.hitField);\n this.selectFields.emit(this.selected.map(si => si.dataItem));\n }\n this.hitField = null;\n this.startMouse = null;\n this.startLocations = null;\n this.selectionBox = null;\n updateSelectionBox.bind(this)();\n } else if (this.hitField && e.shiftKey === true) {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n if (this.hitField.selected === true) {\n // Toggle off: remove from selection\n this.hitField.selected = false;\n this.selected = this.selected.filter(f => f !== this.hitField);\n this.selectFields.emit(this.selected.map(si => si.dataItem));\n this.hitField = null;\n this.startMouse = null;\n this.startLocations = null;\n this.selectionBox = null;\n updateSelectionBox.bind(this)();\n } else {\n // Add to selection\n this.hitField.selected = true;\n this.selected = [...this.selected, this.hitField];\n this.selectFields.emit(this.selected.map(si => si.dataItem));\n\n const { height, width } = this.hitField.getBoundingClientRect();\n const fdims = { left: this.hitField.offsetLeft, top: this.hitField.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n\n this.startLocations = this.selected.map(f => {\n const { height, width } = f.getBoundingClientRect();\n const beHtml = f as HTMLElement;\n return { top: beHtml.offsetTop, left: beHtml.offsetLeft, height, width };\n });\n this.selectionBox = null;\n }\n } else {\n // move down on empty space, store pending start for selection box\n this.startLocations = null;\n this.startMouse = null;\n this.selectionBox = null;\n this._pendingSelectionBox = { x: e.clientX, y: e.clientY };\n disableSelection();\n\n if (!e.shiftKey && !e.altKey) {\n this.unselect();\n this.selectFields.emit([]);\n this.selected = [];\n updateSelectionBox.bind(this)();\n }\n }\n}\n\nexport function outOfBounds(futureField) {\n return (\n futureField.height <= 5 ||\n futureField.left < 0 ||\n futureField.top < 0 ||\n futureField.left + futureField.width >= futureField.pageDimensions.width ||\n futureField.top + futureField.height >= futureField.pageDimensions.height\n );\n}\nexport function mouseMove(event) {\n event.preventDefault();\n if (this._isToolboxDragging) return;\n // Disable mouse move interactions in preview mode or when template is locked\n if (this.mode === 'preview' || this._template?.locked) {\n return;\n }\n\n // We have the mouse held down on a field edge to resize it.\n if (this.hitField && this.edgeSide && this.startMouse && event.buttons === 1) {\n disableSelection();\n const movedX = event.screenX - this.startMouse.x;\n const movedY = event.screenY - this.startMouse.y;\n var scale = this.hitField.dataItem.formElementType === 'signature' && this._template.fixSignatureScale;\n\n // Calculate candidate dimensions before snapping\n let candidateLeft = this.startMouse.left;\n let candidateTop = this.startMouse.top;\n let candidateWidth = this.startMouse.width;\n let candidateHeight = this.startMouse.height;\n\n switch (this.edgeSide) {\n case 'n':\n if (scale) {\n candidateHeight = this.startMouse.height - movedY;\n candidateWidth = candidateHeight * (this.startMouse.width / this.startMouse.height);\n } else {\n candidateTop = this.startMouse.top + movedY;\n candidateHeight = this.startMouse.height - movedY;\n }\n break;\n case 's':\n if (scale) {\n candidateHeight = this.startMouse.height + movedY;\n candidateWidth = candidateHeight * (this.startMouse.width / this.startMouse.height);\n } else {\n candidateHeight = this.startMouse.height + movedY;\n }\n break;\n case 'e':\n if (scale) {\n candidateWidth = this.startMouse.width + movedX;\n candidateHeight = candidateWidth * (this.startMouse.height / this.startMouse.width);\n } else {\n candidateWidth = this.startMouse.width + movedX;\n }\n break;\n case 'w':\n if (scale) {\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = candidateWidth * (this.startMouse.height / this.startMouse.width);\n candidateLeft = this.startMouse.left + movedX;\n } else {\n candidateLeft = this.startMouse.left + movedX;\n candidateWidth = this.startMouse.width - movedX;\n }\n break;\n case 'se':\n if (scale) {\n candidateWidth = this.startMouse.width + movedX;\n candidateHeight = candidateWidth / (this.startMouse.width / this.startMouse.height);\n } else {\n candidateWidth = this.startMouse.width + movedX;\n candidateHeight = this.startMouse.height + movedY;\n }\n break;\n case 'nw':\n if (scale) {\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = candidateWidth / (this.startMouse.width / this.startMouse.height);\n candidateLeft = this.startMouse.left + movedX;\n candidateTop = this.startMouse.top + (this.startMouse.height - candidateHeight);\n } else {\n candidateLeft = this.startMouse.left + movedX;\n candidateTop = this.startMouse.top + movedY;\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = this.startMouse.height - movedY;\n }\n break;\n case 'ne':\n if (scale) {\n candidateWidth = this.startMouse.width + movedX;\n candidateHeight = candidateWidth / (this.startMouse.width / this.startMouse.height);\n candidateTop = this.startMouse.top + (this.startMouse.height - candidateHeight);\n } else {\n candidateWidth = this.startMouse.width + movedX;\n candidateTop = this.startMouse.top + movedY;\n candidateHeight = this.startMouse.height - movedY;\n }\n break;\n case 'sw':\n if (scale) {\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = candidateWidth / (this.startMouse.width / this.startMouse.height);\n candidateLeft = this.startMouse.left + movedX;\n } else {\n candidateLeft = this.startMouse.left + movedX;\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = this.startMouse.height + movedY;\n }\n break;\n }\n\n // Snap active resize edges\n const allFields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const resizeSnap = calculateResizeSnap(\n candidateLeft, candidateTop, candidateWidth, candidateHeight,\n this.edgeSide, allFields, this.pageNum, [this.hitField.dataItem.id]\n );\n\n if (scale) {\n const aspect = this.startMouse.width / this.startMouse.height;\n const hasH = resizeSnap.edges.e !== undefined || resizeSnap.edges.w !== undefined;\n const hasV = resizeSnap.edges.n !== undefined || resizeSnap.edges.s !== undefined;\n\n // When both axes snap on a corner, pick the closer one\n let useH = hasH;\n let useV = hasV;\n if (hasH && hasV && this.edgeSide.length === 2) {\n const hDist = resizeSnap.edges.e !== undefined\n ? Math.abs((candidateLeft + candidateWidth) - resizeSnap.edges.e)\n : Math.abs(candidateLeft - resizeSnap.edges.w);\n const vDist = resizeSnap.edges.s !== undefined\n ? Math.abs((candidateTop + candidateHeight) - resizeSnap.edges.s)\n : Math.abs(candidateTop - resizeSnap.edges.n);\n if (hDist <= vDist) { useV = false; } else { useH = false; }\n }\n\n if (useV && !useH) {\n if (resizeSnap.edges.n !== undefined) {\n candidateHeight = (candidateTop + candidateHeight) - resizeSnap.edges.n;\n candidateTop = resizeSnap.edges.n;\n }\n if (resizeSnap.edges.s !== undefined) {\n candidateHeight = resizeSnap.edges.s - candidateTop;\n }\n candidateWidth = candidateHeight * aspect;\n } else if (useH) {\n if (resizeSnap.edges.w !== undefined) {\n candidateWidth = (candidateLeft + candidateWidth) - resizeSnap.edges.w;\n candidateLeft = resizeSnap.edges.w;\n }\n if (resizeSnap.edges.e !== undefined) {\n candidateWidth = resizeSnap.edges.e - candidateLeft;\n }\n candidateHeight = candidateWidth / aspect;\n }\n\n if (this.edgeSide.includes('n')) candidateTop = (this.startMouse.top + this.startMouse.height) - candidateHeight;\n if (this.edgeSide.includes('w')) candidateLeft = (this.startMouse.left + this.startMouse.width) - candidateWidth;\n\n // Only show guides for the axis we used\n const guides = resizeSnap.guides.filter(g =>\n (useH && g.orientation === 'v') || (useV && g.orientation === 'h')\n );\n showSnapGuides.bind(this)(guides);\n } else {\n if (resizeSnap.edges.n !== undefined) {\n candidateHeight = (candidateTop + candidateHeight) - resizeSnap.edges.n;\n candidateTop = resizeSnap.edges.n;\n }\n if (resizeSnap.edges.s !== undefined) {\n candidateHeight = resizeSnap.edges.s - candidateTop;\n }\n if (resizeSnap.edges.w !== undefined) {\n candidateWidth = (candidateLeft + candidateWidth) - resizeSnap.edges.w;\n candidateLeft = resizeSnap.edges.w;\n }\n if (resizeSnap.edges.e !== undefined) {\n candidateWidth = resizeSnap.edges.e - candidateLeft;\n }\n showSnapGuides.bind(this)(resizeSnap.guides);\n }\n\n if (!outOfBounds({ ...this.hitField.dataItem, left: candidateLeft / this.zoom, top: candidateTop / this.zoom, width: candidateWidth / this.zoom, height: candidateHeight / this.zoom })) {\n this.hitField.style.left = candidateLeft + 'px';\n this.hitField.style.top = candidateTop + 'px';\n this.hitField.style.width = candidateWidth + 'px';\n this.hitField.style.height = candidateHeight + 'px';\n this.hitField.dataItem = {\n ...this.hitField.dataItem,\n left: candidateLeft / this.zoom,\n top: candidateTop / this.zoom,\n width: candidateWidth / this.zoom,\n height: candidateHeight / this.zoom,\n };\n }\n\n debounce.bind(this)({ action: 'update', data: recalculateCoordinates(this.hitField.dataItem) }, 700);\n } else if ((this.selectionBox || this._pendingSelectionBox) && event.buttons === 1) {\n // Check minimum drag distance before activating selection box\n if (!this.selectionBox && this._pendingSelectionBox) {\n const dx = event.clientX - this._pendingSelectionBox.x;\n const dy = event.clientY - this._pendingSelectionBox.y;\n if (Math.abs(dx) < MIN_DRAG_DISTANCE && Math.abs(dy) < MIN_DRAG_DISTANCE) return;\n this.selectionBox = this._pendingSelectionBox;\n this._pendingSelectionBox = null;\n this.component.style.cursor = 'crosshair';\n }\n\n this.isBoxing = true;\n // draw the multiple selection box\n var dragBox = this.component.shadowRoot.getElementById('ls-drag-selector') as HTMLElement;\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n var leftOffset = frame.getBoundingClientRect().left;\n var topOffset = frame.getBoundingClientRect().top;\n\n const movedX = event.clientX - this.selectionBox.x;\n const movedY = event.clientY - this.selectionBox.y;\n\n // allow for the frame to be scrolled\n dragBox.style.visibility = 'visible';\n dragBox.style.left = (this.selectionBox.x > event.clientX ? event.clientX : this.selectionBox.x) - leftOffset + frame.scrollLeft + 'px';\n dragBox.style.top = (this.selectionBox.y > event.clientY ? event.clientY : this.selectionBox.y) - topOffset + frame.scrollTop + 'px';\n dragBox.style.width = Math.abs(movedX) + 'px';\n dragBox.style.height = Math.abs(movedY) + 'px';\n\n // Move one or more selected items\n } else if (this.startLocations && !this.edgeSide && this.startMouse && event.buttons === 1) {\n // Block move if selection spans multiple pages\n const pages = new Set(this.selected?.map(f => f.dataItem?.page));\n if (pages.size > 1) {\n showMoveBlockedTooltip.bind(this)(event);\n return;\n }\n\n this.isMoving = true;\n disableSelection();\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // Dismiss any open date picker when moving fields\n if (this.selected?.length) {\n this.selected.forEach(f => {\n const input = f.shadowRoot?.getElementById('editing-input') as HTMLInputElement;\n if (input) input.blur();\n });\n }\n\n // Move one or more selected items\n const movedX = event.screenX - this.startMouse.x;\n const movedY = event.screenY - this.startMouse.y;\n if (this.selected?.length) {\n // Calculate snap based on the primary (first) selected field\n const primaryLeft = this.startLocations[0].left + movedX;\n const primaryTop = this.startLocations[0].top + movedY;\n const primaryWidth = this.startLocations[0].width;\n const primaryHeight = this.startLocations[0].height;\n\n const allFields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const excludeIds = this.selected.map(s => s.dataItem.id);\n const snap = calculateSnap(primaryLeft, primaryTop, primaryWidth, primaryHeight, allFields, this.pageNum, excludeIds);\n\n // Apply snap offset to all selected fields\n const snapOffsetX = snap.x !== null ? snap.x - primaryLeft : 0;\n const snapOffsetY = snap.y !== null ? snap.y - primaryTop : 0;\n\n for (let i = 0; i < this.selected.length; i++) {\n const newLeft = this.startLocations[i].left + movedX + snapOffsetX;\n const newTop = this.startLocations[i].top + movedY + snapOffsetY;\n if (\n newLeft >= 0 &&\n newTop >= 0 &&\n newLeft <= (this.pageDimensions[this.pageNum - 1].width - this.selected[i].dataItem.width) * this.zoom &&\n newTop <= (this.pageDimensions[this.pageNum - 1].height - this.selected[i].dataItem.height) * this.zoom\n ) {\n this.selected[i].style.left = Math.round(newLeft) + 'px';\n this.selected[i].style.top = Math.round(newTop) + 'px';\n }\n }\n\n showSnapGuides.bind(this)(snap.guides);\n updateSelectionBox.bind(this)();\n }\n }\n}\n\nexport function mouseUp(event) {\n this.edgeSide = null;\n this.startMouse = null;\n this._pendingSelectionBox = null;\n this.component.style.cursor = 'auto';\n enableSelection();\n clearSnapGuides.bind(this)();\n hideMoveBlockedTooltip.bind(this)();\n\n // find what was inside the selection box emit the select event and change their style\n if (this.selectionBox && this.isBoxing) {\n this.isBoxing = false;\n var dragBox = this.component.shadowRoot.getElementById('ls-drag-selector') as HTMLElement;\n var fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n const isShift = event.shiftKey;\n const isAlt = event.altKey;\n this.selectionBox = null;\n const found = findIn(fields, dragBox, !isAlt, isShift || isAlt);\n dragBox.style.visibility = 'hidden';\n\n if (isAlt) {\n const removeIds = new Set(found.map(f => f.dataItem?.id));\n found.forEach(f => { f.selected = false; });\n this.selected = this.selected.filter(f => !removeIds.has(f.dataItem?.id));\n } else if (isShift) {\n const existingIds = new Set(this.selected.map(f => f.dataItem?.id));\n const newFields = found.filter(f => !existingIds.has(f.dataItem?.id));\n this.selected = [...this.selected, ...newFields];\n } else {\n this.selected = Array.from(found);\n }\n\n this.selectFields.emit(this.selected.map(fx => fx.dataItem));\n updateSelectionBox.bind(this)();\n }\n}\n\nexport function mouseClick(e) {\n // Disable click interactions in preview mode or when template is locked\n if (this.mode === 'preview' || this._template?.locked) {\n return;\n }\n \n // check we're not moving fields\n if (this.isMoving) {\n // End dragging fields\n this.isMoving = false;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field') as HTMLLsEditorFieldElement[];\n const divFrame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLDivElement;\n const selected = Array.from(fields).filter(fx => fx.selected);\n\n this.mutate.emit(\n Array.from(fields)\n .filter(fx => fx.selected)\n .map(fx => {\n // Calculate new positions and update the dataItem on the control\n const delta = {\n ...fx.dataItem,\n ...findDimensions(divFrame, fx, fx.dataItem.pageDimensions.height, fx.dataItem.pageDimensions.width, this.zoom),\n };\n // update the data in the html element\n fx.dataItem = delta;\n // send an update event to be processed\n return { action: 'update', data: delta };\n }),\n );\n this.selectFields.emit(selected.map(fx => fx.dataItem));\n updateSelectionBox.bind(this)();\n } else {\n // reset the selection box location\n this.selectionBox = null;\n\n let hitAny = false;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field') as HTMLLsEditorFieldElement[];\n fields.forEach(f => {\n const { left, top, bottom, right } = f.getBoundingClientRect();\n if (e.clientY <= bottom && e.clientY >= top && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = null;\n this.hitField = f;\n if (!e.shiftKey && !e.altKey) {\n fields.forEach(ft => (ft.selected = false));\n f.selected = true;\n }\n // shift/alt+click: mouseDown already toggled selected state, preserve it\n hitAny = true;\n }\n });\n\n // Track click position for paste targeting\n if (hitAny) {\n clearLastClickPosition();\n } else {\n setLastClickPosition(e.clientX, e.clientY);\n }\n\n this.selected = Array.from(fields).filter(fx => fx.selected);\n this.selectFields.emit(this.selected.map(fx => fx.dataItem));\n updateSelectionBox.bind(this)();\n }\n}\n\nexport function showSnapGuides(guides: { orientation: 'h' | 'v'; position: number }[]) {\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n let container = this.component.shadowRoot.getElementById('ls-snap-guides');\n if (!container) {\n container = document.createElement('div');\n container.id = 'ls-snap-guides';\n container.style.position = 'absolute';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.pointerEvents = 'none';\n container.style.zIndex = '9999';\n frame.appendChild(container);\n }\n\n container.innerHTML = '';\n for (const guide of guides) {\n const line = document.createElement('div');\n line.style.position = 'absolute';\n line.style.backgroundColor = 'transparent';\n if (guide.orientation === 'v') {\n line.style.left = guide.position + 'px';\n line.style.top = '0';\n line.style.width = '0';\n line.style.height = '100%';\n line.style.borderLeft = '1px dashed var(--gray-50, #c8c9cc)';\n } else {\n line.style.top = guide.position + 'px';\n line.style.left = '0';\n line.style.width = '100%';\n line.style.height = '0';\n line.style.borderTop = '1px dashed var(--gray-50, #c8c9cc)';\n }\n container.appendChild(line);\n }\n}\n\nexport function clearSnapGuides() {\n const container = this.component.shadowRoot.getElementById('ls-snap-guides');\n if (container) container.innerHTML = '';\n}\n\nexport function toolboxDragStart(fieldData: IToolboxField) {\n // Disable toolbox dragging when template is locked\n if (this._template?.locked) {\n return;\n }\n // Cancel any existing toolbox drag\n if (this._cancelToolboxDrag) {\n this._cancelToolboxDrag();\n }\n\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n const zoom = this.zoom;\n this._isToolboxDragging = true;\n let hasMoved = false;\n\n // Prevent text selection during drag\n disableSelection();\n\n // Add dragging class to toolbox fields (shadow DOM cursor override)\n this.component.shadowRoot.querySelectorAll('ls-left-bar, ls-compose-loader').forEach(bar => {\n bar.shadowRoot?.querySelectorAll('ls-toolbox-field').forEach(el => el.classList.add('ls-dv-dragging'));\n });\n\n // Create ghost preview element matching the original drag image style\n const ghost = document.createElement('div');\n ghost.id = 'ls-toolbox-ghost';\n ghost.style.position = 'fixed';\n ghost.style.width = fieldData.defaultWidth * zoom + 'px';\n ghost.style.height = fieldData.defaultHeight * zoom + 'px';\n ghost.style.border = `1px dashed ${defaultRolePalette[this.signer % 100].s60}`;\n const s20 = defaultRolePalette[this.signer % 100].s20.replace('#', '');\n const r = parseInt(s20.substring(0, 2), 16);\n const g = parseInt(s20.substring(2, 4), 16);\n const b = parseInt(s20.substring(4, 6), 16);\n ghost.style.background = `rgba(${r},${g},${b},0.5)`;\n ghost.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.10), 0 2px 4px -1px rgba(0, 0, 0, 0.06)';\n ghost.style.pointerEvents = 'none';\n ghost.style.zIndex = '10000';\n ghost.style.visibility = 'hidden';\n ghost.style.boxSizing = 'content-box';\n ghost.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';\n ghost.style.fontSize = Math.round(DEFAULT_FONT_SIZE * zoom) + 'px';\n ghost.style.color = defaultRolePalette[this.signer % 100].s100;\n ghost.style.overflow = 'visible';\n ghost.style.whiteSpace = 'nowrap';\n ghost.style.display = 'flex';\n ghost.style.alignItems = 'center';\n ghost.style.textTransform = 'capitalize';\n ghost.innerHTML = fieldData.formElementType;\n\n // Assignee label below ghost\n const assignee = this.mode === 'compose'\n ? this._recipients?.find(r => r.signerIndex === this.signer)\n : this._template.roles.find(r => r.signerIndex === this.signer);\n const assigneeName = this.mode === 'compose' && assignee?.previousRecipientDecides\n ? 'To Be Decided'\n : this.mode === 'compose'\n ? `${assignee?.firstName} ${assignee?.lastName}`\n : assignee?.name || (this.signer === 0 ? 'Sender' : `Participant ${this.signer}`);\n const assigneeLabel = document.createElement('p');\n assigneeLabel.style.position = 'absolute';\n assigneeLabel.style.color = 'var(--gray-80, #3a3a3a)';\n assigneeLabel.style.bottom = `-${1 * zoom}rem`;\n assigneeLabel.style.left = '0';\n assigneeLabel.style.margin = '0';\n assigneeLabel.style.padding = '0';\n assigneeLabel.style.lineHeight = '1';\n assigneeLabel.style.fontSize = `${0.625 * zoom}rem`;\n assigneeLabel.style.whiteSpace = 'nowrap';\n assigneeLabel.style.fontFamily = 'sans-serif';\n assigneeLabel.style.textTransform = 'none';\n assigneeLabel.style.pointerEvents = 'none';\n assigneeLabel.textContent = `${dvI18n.t('fieldproperties.assignedto')} ${assigneeName}`;\n ghost.appendChild(assigneeLabel);\n\n this.component.shadowRoot.appendChild(ghost);\n\n // Info chip at bottom of screen\n const chip = document.createElement('div');\n chip.id = 'ls-esc-chip';\n chip.style.position = 'fixed';\n chip.style.bottom = '1.5rem';\n chip.style.left = '50%';\n chip.style.transform = 'translateX(-50%)';\n chip.style.padding = '0.375rem 0.75rem';\n chip.style.borderRadius = '0.625rem';\n chip.style.background = 'var(--gray-100, #1f2937)';\n chip.style.color = 'white';\n chip.style.fontSize = '0.75rem';\n chip.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';\n chip.style.pointerEvents = 'none';\n chip.style.zIndex = '10000';\n chip.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1)';\n chip.textContent = 'Press Esc to cancel field placement';\n this.component.shadowRoot.appendChild(chip);\n\n const onMouseMove = (e: MouseEvent) => {\n e.preventDefault();\n hasMoved = true;\n const dragWidth = fieldData.defaultWidth * zoom;\n const dragHeight = fieldData.defaultHeight * zoom;\n\n const frameRect = frame.getBoundingClientRect();\n const isOverFrame = e.clientX >= frameRect.left && e.clientX <= frameRect.right &&\n e.clientY >= frameRect.top && e.clientY <= frameRect.bottom;\n const isDragging = e.buttons === 1;\n\n // Only show grabbing cursor when ghost is visible\n let cursorStyle = document.getElementById('ls-drag-cursor') as HTMLStyleElement;\n if ((isOverFrame || isDragging) && !cursorStyle) {\n cursorStyle = document.createElement('style');\n cursorStyle.id = 'ls-drag-cursor';\n cursorStyle.textContent = '* { cursor: grabbing !important; }';\n document.head.appendChild(cursorStyle);\n } else if (!isOverFrame && !isDragging && cursorStyle) {\n cursorStyle.remove();\n }\n\n // When dragging (mouse held): show ghost over wrapper area\n // When click-to-place (mouse not held): only show over document frame\n if (isOverFrame) {\n ghost.style.visibility = 'visible';\n ghost.style.opacity = '1';\n const x = e.clientX - frameRect.left + frame.scrollLeft;\n const y = e.clientY - frameRect.top + frame.scrollTop;\n let left = x - dragWidth / 2;\n let top = y - dragHeight / 2;\n\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const snap = calculateSnap(left, top, dragWidth, dragHeight, fields, this.pageNum);\n ghost.style.left = (snap.x !== null ? snap.x + frameRect.left - frame.scrollLeft : e.clientX - dragWidth / 2) + 'px';\n ghost.style.top = (snap.y !== null ? snap.y + frameRect.top - frame.scrollTop : e.clientY - dragHeight / 2) + 'px';\n\n showSnapGuides.bind(this)(snap.guides);\n } else if (isDragging) {\n ghost.style.visibility = 'visible';\n ghost.style.opacity = '0.5';\n ghost.style.left = (e.clientX - dragWidth / 2) + 'px';\n ghost.style.top = (e.clientY - dragHeight / 2) + 'px';\n clearSnapGuides.bind(this)();\n } else {\n ghost.style.visibility = 'hidden';\n clearSnapGuides.bind(this)();\n }\n };\n\n const cleanup = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('keydown', onKeyDown);\n ghost.remove();\n chip.remove();\n clearSnapGuides.bind(this)();\n enableSelection();\n const cursorStyle = document.getElementById('ls-drag-cursor');\n if (cursorStyle) cursorStyle.remove();\n this.component.shadowRoot.querySelectorAll('ls-left-bar, ls-compose-loader').forEach(bar => {\n bar.shadowRoot?.querySelectorAll('ls-toolbox-field').forEach(el => el.classList.remove('ls-dv-dragging'));\n });\n this._isToolboxDragging = false;\n this._cancelToolboxDrag = null;\n };\n\n const onMouseUp = (e: MouseEvent) => {\n // Ignore mouseup if it's from the same click that started the drag (no movement yet)\n if (!hasMoved) return;\n\n const frameRect = frame.getBoundingClientRect();\n const shouldPlace = e.clientX >= frameRect.left && e.clientX <= frameRect.right &&\n e.clientY >= frameRect.top && e.clientY <= frameRect.bottom;\n\n cleanup();\n\n if (shouldPlace) {\n\n const dragWidth = fieldData.defaultWidth * zoom;\n const dragHeight = fieldData.defaultHeight * zoom;\n const x = e.clientX - frameRect.left + frame.scrollLeft;\n const y = e.clientY - frameRect.top + frame.scrollTop;\n let left = x - dragWidth / 2;\n let top = y - dragHeight / 2;\n\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const snap = calculateSnap(left, top, dragWidth, dragHeight, fields, this.pageNum);\n if (snap.x !== null) left = snap.x;\n if (snap.y !== null) top = snap.y;\n\n const finalTop = top / zoom;\n const finalLeft = left / zoom;\n\n // Check if field fits on page - constrain to page boundaries\n const pageWidth = this.pageDimensions[this.pageNum - 1].width;\n const pageHeight = this.pageDimensions[this.pageNum - 1].height;\n const constrainedLeft = Math.max(0, Math.min(finalLeft, pageWidth - fieldData.defaultWidth));\n const constrainedTop = Math.max(0, Math.min(finalTop, pageHeight - fieldData.defaultHeight));\n\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));\n\n const id = btoa('ele' + crypto.randomUUID());\n const newData: LSMutateEvent = {\n action: 'create',\n data: {\n id,\n value: fieldData.formElementType === 'checkbox' ? 'false' : '',\n formElementType: fieldData.formElementType,\n elementType: fieldData.elementType,\n validation: fieldData.validation,\n substantive: false,\n top: constrainedTop,\n left: constrainedLeft,\n hideBorder: false,\n height: fieldData.defaultHeight,\n width: fieldData.defaultWidth,\n pageDimensions: this.pageDimensions[this.pageNum - 1],\n fontName: this.fontFamily,\n fontSize: this.fontSize,\n align: 'left',\n signer: this.signer,\n page: this.pageNum,\n mapTo: null,\n label: '',\n helpText: null,\n logicGroup: null,\n optional: fieldData.formElementType === 'checkbox',\n options: null,\n logicAction: null,\n labelExtra: null,\n fieldOrder: null,\n ax: constrainedLeft > 0 ? constrainedLeft / this.pageDimensions[this.pageNum - 1].width : 0,\n ay: constrainedTop > 0 ? constrainedTop / this.pageDimensions[this.pageNum - 1].height : 0,\n bx: (constrainedLeft + fieldData.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,\n by: (constrainedTop + fieldData.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,\n templateId: this._template.id,\n } as LSApiElement,\n };\n\n this.mutate.emit([newData]);\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n cleanup();\n }\n };\n\n this._cancelToolboxDrag = cleanup;\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('keydown', onKeyDown);\n}\n\nexport function mouseDoubleClick(event) {\n // Disable double-click field creation in preview mode or when template is locked\n if (this.mode === 'preview' || this._template?.locked) {\n return;\n }\n \n console.log('double click', this.fieldTypeSelected, this.signer);\n try {\n let data: IToolboxField = this.fieldTypeSelected as IToolboxField;\n\n if (this.checkType('APPROVER') && data.elementType === 'signature') {\n data = {\n label: 'Text',\n formElementType: 'text',\n elementType: 'text',\n validation: 0,\n defaultHeight: FIELD_DEFAULTS['text'].defaultHeight,\n defaultWidth: FIELD_DEFAULTS['text'].defaultWidth,\n };\n }\n\n if (this.signer === 0 && data.elementType === 'signature') {\n data = {\n label: 'Auto Sign',\n formElementType: 'auto sign',\n elementType: 'admin',\n validation: 3000,\n defaultHeight: FIELD_DEFAULTS['auto sign'].defaultHeight,\n defaultWidth: FIELD_DEFAULTS['auto sign'].defaultWidth,\n };\n }\n // Unselect all current selected items\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n // Make a new API compatible id for a template element (prefix 'ele')\n const id = btoa('ele' + crypto.randomUUID());\n const pageWidth = this.pageDimensions[this.pageNum - 1].width;\n const pageHeight = this.pageDimensions[this.pageNum - 1].height;\n const rawTop = event.offsetY / this.zoom + frame.scrollTop;\n const rawLeft = event.offsetX / this.zoom + frame.scrollLeft;\n const top = Math.max(0, Math.min(rawTop, pageHeight - data.defaultHeight));\n const left = Math.max(0, Math.min(rawLeft, pageWidth - data.defaultWidth));\n\n // TODO: Put these defaults somewhere sensible\n const newData: LSMutateEvent = {\n action: 'create',\n data: {\n id,\n value: data.formElementType === 'checkbox' ? 'false' : '',\n formElementType: data.formElementType,\n elementType: data.elementType,\n validation: data.validation,\n substantive: false,\n top,\n left,\n hideBorder: false,\n height: data.defaultHeight,\n width: data.defaultWidth,\n pageDimensions: this.pageDimensions[this.pageNum - 1],\n fontName: DEFAULT_FONT_NAME,\n fontSize: DEFAULT_FONT_SIZE,\n align: 'left',\n signer: this.signer,\n page: this.pageNum,\n mapTo: null,\n label: '',\n helpText: null,\n logicGroup: null,\n optional: data.formElementType === 'checkbox',\n options: null,\n logicAction: null,\n labelExtra: null,\n fieldOrder: null,\n ax: left > 0 ? left / this.pageDimensions[this.pageNum - 1].width : 0,\n ay: top > 0 ? top / this.pageDimensions[this.pageNum - 1].height : 0,\n bx: (left + data.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,\n by: (top + data.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,\n templateId: this._template.id,\n } as LSApiElement,\n };\n this.mutate.emit([newData]);\n } catch (e) {\n console.error(e);\n }\n}\n",":host {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n width: 100%;\n position: relative;\n}\n\n.ls-dv-toolbar-numeric {\n width: 2.813rem;\n max-height: 1.125rem;\n margin: 0px;\n padding: 0px;\n}\n\n* {\n margin: 0;\n box-sizing: border-box;\n}\n\n.ls-dv-field-set {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n width: 100%;\n}\n\n.ls-dv-field-properties-section {\n display: flex;\n position: relative;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.ls-dv-row {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n\n.ls-dv-multi-button-group-row {\n display: flex;\n gap: 0.5rem;\n}\n\n.ls-dv-field-properties-section-text {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n padding: 0.25rem;\n}\n\n.ls-dv-field-properties-section-title {\n color: $gray-90;\n font-size: 1rem;\n font-style: normal;\n font-weight: 500;\n line-height: 1.25rem; /* 142.857% */\n}\n\n.ls-dv-field-properties-section-description {\n overflow: hidden;\n color: $gray-80;\n text-overflow: ellipsis;\n font-size: 0.75rem;\n font-style: normal;\n font-weight: 400;\n line-height: 0.75rem; /* 120% */\n}\n\n.ls-dv-input-row {\n display: flex;\n gap: 0.5rem;\n}\n\n.ls-dv-input-row .ls-dv-input-wrapper input {\n width: 9.313rem;\n max-width: 9.313rem;\n}\n\n/* Global Styles */\n\np {\n color: $gray-80;\n font-family: var(--font-family);\n font-size: var(--text-sm);\n font-style: normal;\n font-weight: 400;\n line-height: var(--text-sm-line-height);\n}\n\na {\n color: $primary-60;\n font-size: var(--text-sm);\n font-style: normal;\n font-weight: 400;\n line-height: var(--text-sm-line-height);\n cursor: pointer;\n}\n\na:hover {\n text-decoration: underline;\n color: $primary-70;\n}\n\n.ls-dv-button-link,\n.ls-dv-button-link:hover {\n all: unset;\n}\n\nselect {\n appearance: none;\n height: 36px;\n}\n\n.ls-dv-input-wrapper {\n position: relative;\n width: 100%;\n}\n\n#selectorIcon {\n position: absolute;\n top: 50%;\n right: 0.675rem;\n transform: translateY(-50%);\n pointer-events: none;\n color: $gray-80;\n}\n\n#selectLeadingIcon {\n position: absolute;\n top: 50%;\n left: 0.675rem;\n transform: translateY(-50%);\n pointer-events: none;\n color: $gray-80;\n}\n\n#selectLeadingIconDisabled {\n position: absolute;\n top: 50%;\n left: 0.675rem;\n transform: translateY(-50%);\n pointer-events: none;\n color: $gray-50;\n}\n\n.ls-dv-has-leading-icon {\n padding-left: 2.5rem;\n}\n\ninput,\nselect,\ntextarea {\n border: 1px solid $gray-40;\n box-shadow: 0 1px 0.125rem rgba(0, 0, 0, 0.05);\n padding: 0.5rem 0.75rem;\n font-family: var(--font-family);\n font-size: var(--text-sm);\n border-radius: 0.625rem;\n color: $gray-100;\n font-weight: 400;\n}\n\ninput::placeholder,\nselect::placeholder,\ntextarea::placeholder {\n color: $gray-60;\n}\n\ninput:hover:not(:disabled),\nselect:hover:not(:disabled),\ntextarea:hover:not(:disabled) {\n border-color: $gray-50;\n background-color: $white;\n}\n\ninput:focus:not(:disabled),\nselect:focus:not(:disabled),\ntextarea:focus:not(:disabled) {\n outline: none;\n box-shadow: 0 0 0 0.25rem $primary-40;\n border-color: $primary-60;\n background-color: $white;\n}\n\ninput:active:not(:disabled),\nselect:active:not(:disabled),\ntextarea:active:not(:disabled) {\n border-color: $primary-50;\n}\n\ninput:disabled,\nselect:disabled,\ntextarea:disabled {\n cursor: not-allowed;\n background-color: $gray-10;\n color: $gray-50;\n box-shadow: none;\n}\n\ninput[type='checkbox'] {\n appearance: none;\n position: relative;\n height: 1rem;\n width: 1rem;\n padding: 0.25rem;\n border-radius: var(--radius-sm);\n border: 1px solid #d1d5db;\n background-color: #ffffff;\n cursor: pointer;\n}\n\ninput[type='checkbox']:checked,\ninput[type='checkbox'].ls-dv-indeterminate {\n background-color: $primary-60;\n border: none;\n}\n\ninput[type='checkbox']:checked::after {\n content: '';\n position: absolute;\n top: 45%;\n left: 50%;\n transform: translate(-50%, -50%) rotate(-45deg) scale(-1, 1);\n width: 0.5rem;\n height: 0.25rem;\n border-bottom: 0.125rem solid white;\n border-right: 0.125rem solid white;\n}\n\ninput[type='checkbox'].ls-dv-indeterminate::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 0.5rem;\n height: 0.125rem;\n background-color: white;\n}\n\ninput[type='checkbox']:checked:hover,\ninput[type='checkbox'].ls-dv-indeterminate:hover {\n background-color: $primary-70;\n border: none;\n}\n\ninput[type='checkbox']:hover {\n border: 1px solid #9ca3af;\n}\n\ninput[type='checkbox']:focus,\ninput[type='checkbox']:active {\n outline: none;\n box-shadow: 0 0 0 0.25rem $primary-20;\n background-color: #f0f4f8;\n}\n\ninput[type='checkbox']:disabled {\n background-color: #f3f4f6;\n outline: none;\n cursor: not-allowed;\n}\n\ninput[type='checkbox']:disabled:checked {\n background-color: #e5e7eb;\n border: none;\n outline: none;\n cursor: not-allowed;\n}\n\n.ls-dv-checkbox-container {\n display: flex;\n gap: 0.5rem;\n width: 100%;\n}\n\n.ls-dv-checkbox-label {\n color: $gray-100;\n font-size: 1rem;\n font-style: normal;\n font-weight: 400;\n line-height: 1rem;\n}\n\n.ls-dv-form-label {\n color: $gray-100;\n font-size: 1rem;\n font-style: normal;\n font-weight: 500;\n line-height: 1.5rem;\n}\n\n.ls-dv-form-field {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n width: 100%;\n}\n\n.ls-dv-loading-box {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100vh;\n color: $primary-60;\n}\n\nbutton {\n border: 0;\n appearance: button;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-lg);\n background-color: $primary-60;\n color: white;\n text-transform: capitalize;\n min-height: 2.25rem;\n min-width: 2.25rem;\n}\n\nbutton.ls-dv-tertiary-grey {\n border: 1px solid $gray-40;\n background-color: white;\n color: $gray-80;\n}\n\nbutton.ls-dv-tertiary-grey:hover {\n border: 1px solid $gray-50;\n background: $gray-10;\n}\n\n.ls-dv-button-group {\n display: flex;\n border-radius: 0.625rem;\n border: 1px solid $gray-30;\n background: $white;\n overflow: clip;\n width: 100%;\n}\n\n.ls-dv-button-group button {\n display: flex;\n width: 100%;\n background: transparent;\n border-radius: unset;\n padding: 0.25rem 0.75rem;\n min-width: 2.156rem;\n color: $gray-80;\n}\n\n.ls-dv-button-group button:disabled {\n background: $gray-10;\n cursor: not-allowed;\n color: $gray-50;\n}\n\n.ls-dv-button-group button:hover {\n background: $gray-10;\n}\n\n.ls-dv-button-group > :first-child {\n border-radius: 0.625rem 0 0 0.625rem;\n}\n\n.ls-dv-button-group > :last-child {\n border-radius: 0 0.5rem 0.5rem 0;\n}\n\n.ls-dv-button-group > :not(:first-child) {\n border-left: 1px solid $gray-30;\n}\n","import { Component, Host, Prop, h, Event, EventEmitter, Element } from '@stencil/core';\nimport { dvI18n } from '../../i18n/i18n';\nimport { LSApiElement, LSMutateEvent } from '../../components';\nimport { oob } from '../ls-document-viewer/editorUtils';\nimport { outOfBounds } from '../ls-document-viewer/mouseHandlers';\n\n@Component({\n tag: 'ls-field-distribute',\n styleUrl: 'ls-field-distribute.scss',\n shadow: true,\n})\nexport class LsFieldDistribute {\n @Prop({\n mutable: true,\n })\n dataItem: LSApiElement[];\n @Prop() readonly: boolean = false;\n\n @Event({\n bubbles: true,\n cancelable: true,\n composed: true,\n })\n mutate: EventEmitter<LSMutateEvent[]>;\n\n @Element() component: HTMLElement;\n\n getVerticalGap(): number | undefined {\n if (!this.dataItem || this.dataItem.length < 2) return undefined;\n const sorted = [...this.dataItem].sort((a, b) => a.top - b.top);\n const gaps = sorted.slice(1).map((item, i) => item.top - (sorted[i].top + sorted[i].height));\n const first = Math.round(gaps[0]);\n return gaps.every(g => Math.round(g) === first) ? first : undefined;\n }\n\n getHorizontalGap(): number | undefined {\n if (!this.dataItem || this.dataItem.length < 2) return undefined;\n const sorted = [...this.dataItem].sort((a, b) => a.left - b.left);\n const gaps = sorted.slice(1).map((item, i) => item.left - (sorted[i].left + sorted[i].width));\n const first = Math.round(gaps[0]);\n return gaps.every(g => Math.round(g) === first) ? first : undefined;\n }\n\n // Send one or more mutations up the chain\n // The source of the chain fires the mutation\n alter(diff: object) {\n console.log(diff);\n\n const diffs: LSMutateEvent[] = this.dataItem.map(c => {\n return { action: 'update', data: { ...c, ...diff } as LSApiElement };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n distributeHorizontal() {\n if (!this.dataItem || this.dataItem.length < 3) return;\n \n var spacing = this.component.shadowRoot.getElementById('ls-fix-horizontal-space') as HTMLInputElement;\n const sorted = this.dataItem.sort((a, b) => a.left - b.left);\n\n\n var avgspace = 0;\n const leftmost = sorted[0].left + sorted[0].width / 2;\n const rightmost = sorted.reduce((acc, cur) => {\n return cur.left + (cur.width / 2) > acc ? cur.left + (cur.width / 2) : acc;\n }, leftmost);\n // find total width between centre first and centre last\n const totalWidth: number = rightmost - leftmost;\n\n if (spacing.value !== '') {\n avgspace = parseInt(spacing.value);\n } else {\n avgspace = Math.floor(totalWidth / (sorted.length - 1));\n }\n\n const filtered = sorted.filter((c, index) => {\n return outOfBounds({ ...c, left: (Math.floor(leftmost - (c.width / 2) + avgspace * index)) }) === false\n && index !== 0\n && index !== sorted.length - 1\n });\n\n const diffs: LSMutateEvent[] = filtered.map((c, index) => {\n\n return {\n action: 'update',\n data: {\n ...c,\n left: Math.floor(leftmost - (c.width / 2) + (avgspace * (index + 1))),\n } as LSApiElement,\n };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n gapVertical(spacing: number) {\n if (!this.dataItem || this.dataItem.length === 0) return;\n \n const sorted = this.dataItem.sort((a, b) => a.top - b.top);\n\n var buffer = sorted[0].top;\n\n const diffs: LSMutateEvent[] = sorted.map(c => {\n const newTop = buffer;\n buffer = buffer + c.height + spacing;\n const target = {\n ...c,\n top: newTop,\n } as LSApiElement;\n\n return {\n action: 'update',\n data: oob(target)\n ? ({\n ...c,\n left: c.pageDimensions.height - c.height - 1,\n } as LSApiElement)\n : target,\n };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n gapHorizontal(spacing: number) {\n if (!this.dataItem || this.dataItem.length === 0) return;\n \n const sorted = this.dataItem.sort((a, b) => a.top - b.top);\n\n var buffer = sorted[0].left;\n\n const diffs: LSMutateEvent[] = sorted.map(c => {\n const newLeft = buffer;\n buffer = buffer + c.width + spacing;\n const target = {\n ...c,\n left: newLeft,\n } as LSApiElement;\n\n console.log(target, oob(target));\n\n return {\n action: 'update',\n data: oob(target)\n ? ({\n ...c,\n left: c.pageDimensions.width - c.width - 1,\n } as LSApiElement)\n : target,\n };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n distributeVertical() {\n if (!this.dataItem || this.dataItem.length < 3) return;\n \n const sorted = this.dataItem.sort((a, b) => a.top - b.top);\n \n const firstBottom = sorted[0].top + sorted[0].height;\n const lastTop = sorted[sorted.length - 1].top;\n const availableSpace = lastTop - firstBottom;\n \n const middleFieldsHeight = sorted.slice(1, -1).reduce((sum, field) => sum + field.height, 0);\n \n const numGaps = sorted.length - 1;\n const gap = Math.max(0, (availableSpace - middleFieldsHeight) / numGaps);\n \n let currentTop = sorted[0].top + sorted[0].height + gap;\n \n const diffs: LSMutateEvent[] = sorted.slice(1, -1).map((c) => {\n const newTop = Math.floor(currentTop);\n currentTop += c.height + gap;\n \n return {\n action: 'update',\n data: {\n ...c,\n top: newTop,\n } as LSApiElement,\n };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n componentDidLoad() {\n }\n\n render() {\n return (\n <Host>\n <div class={'ls-dv-field-properties-section'}>\n <div class={'ls-dv-field-properties-section-text'}>\n <p class={'ls-dv-field-properties-section-title'}>{dvI18n.t('placement.distribution')}</p>\n <p class={'ls-dv-field-properties-section-description'}>{dvI18n.t('placement.distributiondescription')}</p>\n </div>\n <div class={'ls-dv-button-group'}>\n <button\n onClick={() => {\n this.distributeVertical();\n }}\n aria-label={dvI18n.t('alignment.distributevertically')}\n data-tooltip-id=\"ls-dv-tooltip\" data-tooltip-content={dvI18n.t('alignment.distributevertically')}\n disabled={this.readonly}\n >\n <ls-icon name=\"field-distribute-vertically-icon\"></ls-icon>\n </button>\n <button\n onClick={() => {\n this.distributeHorizontal();\n }}\n aria-label={dvI18n.t('alignment.distributehorizontally')}\n data-tooltip-id=\"ls-dv-tooltip\" data-tooltip-content={dvI18n.t('alignment.distributehorizontally')}\n disabled={this.readonly}\n >\n <ls-icon name=\"field-distribute-horizontally-icon\"></ls-icon>\n </button>\n </div>\n </div>\n <div class={'ls-dv-field-properties-section'}>\n <div class={'ls-dv-field-properties-section-text'}>\n <p class={'ls-dv-field-properties-section-title'}>{dvI18n.t('placement.gap')}</p>\n <p class={'ls-dv-field-properties-section-description'}>{dvI18n.t('placement.gapdescription')}</p>\n </div>\n <div class={'ls-dv-input-row'}>\n <div class={'ls-dv-input-wrapper'} data-tooltip-id=\"ls-dv-tooltip\" data-tooltip-content={dvI18n.t('placement.setverticalgap')}>\n <ls-icon id=\"selectLeadingIcon\" name=\"field-distribute-vertically-icon\"></ls-icon>\n <input\n type=\"number\"\n class={'ls-dv-has-leading-icon'}\n id=\"ls-fix-vertical-space\"\n onChange={e => {\n this.gapVertical(parseInt((e.target as HTMLInputElement).value));\n }}\n max={9999}\n value={this.getVerticalGap()}\n placeholder={this.getVerticalGap() === undefined ? dvI18n.t('fieldproperties.mixed') : undefined}\n size={4}\n disabled={this.readonly}\n />\n </div>\n <div class={'ls-dv-input-wrapper'} data-tooltip-id=\"ls-dv-tooltip\" data-tooltip-content={dvI18n.t('placement.sethorizontalgap')}>\n <ls-icon id=\"selectLeadingIcon\" name=\"field-distribute-horizontally-icon\"></ls-icon>\n <input\n type=\"number\"\n class={'ls-dv-has-leading-icon'}\n id=\"ls-fix-horizontal-space\"\n onChange={e => {\n this.gapHorizontal(parseInt((e.target as HTMLInputElement).value));\n }}\n max={9999}\n value={this.getHorizontalGap()}\n placeholder={this.getHorizontalGap() === undefined ? dvI18n.t('fieldproperties.mixed') : undefined}\n size={4}\n disabled={this.readonly}\n />\n </div>\n </div>\n </div>\n <ls-tooltip tooltipId=\"ls-dv-tooltip\" />\n <slot></slot>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-thlkOeP_.js","mappings":";;;;;;;;;AAEA,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,IAAI,SAAS,GAAmB,EAAE;AAClC,IAAI,iBAAiB,GAAoC,IAAI;AAM7C,SAAA,oBAAoB,CAAC,CAAS,EAAE,CAAS,EAAA;AACvD,IAAA,iBAAiB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B;SAEgB,sBAAsB,GAAA;IACpC,iBAAiB,GAAG,IAAI;AAC1B;SAEgB,YAAY,GAAA;IAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE;IAClD,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,iBAAiB,GAAG,IAAI;AAC1B;SAEgB,WAAW,GAAA;IACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE;AAClD,IAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAEzB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAA+B;AACnE,IAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CACvD;AACH;SAEgB,cAAc,GAAA;AAC5B,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE;;IAG5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,IAAG;AACxC,QAAA,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE;QAElE,IAAI,iBAAiB,EAAE;;AAErB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB;AAC1F,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;YACxE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AAEvE,YAAA,OAAO,CAAC,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AAC1C,YAAA,OAAO,CAAC,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;;aACxC;;YAEL,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,YAAY;YACrC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY;;;AAIzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACtD,QAAA,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;YAC/C,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;;AAE7C,QAAA,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE;YAC9C,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;;AAE5C,QAAA,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC;AAAE,YAAA,OAAO,CAAC,GAAG,GAAG,CAAC;AACpC,QAAA,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC;AAAE,YAAA,OAAO,CAAC,IAAI,GAAG,CAAC;AAEtC,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;AAC3B,QAAA,OAAO,CAAC,cAAc,GAAG,QAAQ;AAEjC,QAAA,OAAO,OAAO;AAChB,KAAC,CAAC;AAEF,IAAA,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM;IACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;;;IAIxE,MAAM,YAAY,GAAG,MAAK;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CACvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAChC;QAE/B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;;QAEzE,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;AAEnD,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,UAAU,EAAE;YACtC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG,EAAG,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC;AACrE,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,gBAAA,CAAC,CAAC,QAAQ,GAAG,IAAI;gBACjB,CAAC,CAAC,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;AAC3C,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,GAAG,YAAY;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;;AAE7D,KAAC;;IAGD,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,qBAAqB,CAAC,YAAY,CAAC;;aAC9B;YACL,qBAAqB,CAAC,IAAI,CAAC;;AAE/B,KAAC;IACD,qBAAqB,CAAC,IAAI,CAAC;;IAG3B,SAAS,GAAG,YAAY;IACxB,iBAAiB,GAAG,IAAI;AAC1B;;ACnHO,MAAM,cAAc,GAAG,CAAC,CAAC;AAkBhC;;;AAGG;SACa,mBAAmB,CACjC,SAAiB,EACjB,QAAgB,EAChB,UAAkB,EAClB,WAAmB,EACnB,QAAgB,EAChB,MAA8G,EAC9G,WAAmB,EACnB,UAAqB,EAAA;IAErB,MAAM,MAAM,GAAqB,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAE1D,IAAA,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU;AACzC,IAAA,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW;;IAG1C,MAAM,OAAO,GAAkB,EAAE;IACjC,MAAM,OAAO,GAAkB,EAAE;AACjC,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7C,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7C,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7C,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG7C,IAAA,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IAElF,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAA8B,EAAE;QACxE,MAAM,cAAc,GAAG,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;AACnD,QAAA,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,OAAO,GAAG,cAAc,GAAG,CAAC;QAChC,IAAI,OAAO,GAAkB,IAAI;AAEjC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,WAAW;gBAAE;YAC1C,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAAE;AAE3D,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU;AAC9B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS;AAC5B,YAAA,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,YAAY;YACzC,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC;YAE9C,MAAM,OAAO,GAAG,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;AACtF,YAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9B,gBAAA,IAAI,IAAI,GAAG,OAAO,EAAE;oBAClB,OAAO,GAAG,IAAI;oBACd,OAAO,GAAG,CAAC;;;;QAKjB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,IAAI,cAAc,EAAE;AACjD,YAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO;YAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,GAAG,GAAG,GAAG,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;;;AAItF,IAAA,OAAO,MAAM;AACf;AAEgB,SAAA,aAAa,CAC3B,QAAgB,EAChB,OAAe,EACf,SAAiB,EACjB,UAAkB,EAClB,MAA8G,EAC9G,WAAmB,EACnB,UAAqB,EAAA;AAErB,IAAA,MAAM,MAAM,GAAe,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;AAE3D,IAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS;AACtC,IAAA,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU;AACvC,IAAA,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC;AAC5C,IAAA,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,CAAC;AAE5C,IAAA,IAAI,SAAS,GAAG,cAAc,GAAG,CAAC;AAClC,IAAA,IAAI,SAAS,GAAG,cAAc,GAAG,CAAC;IAClC,IAAI,QAAQ,GAAG,QAAQ;IACvB,IAAI,QAAQ,GAAG,OAAO;;AAGtB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,WAAW;YAAE;QAC1C,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAAE;AAE3D,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU;AAC9B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS;AAC5B,QAAA,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,YAAY;QACzC,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC;AAE9C,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;AACzC,YAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE;AAC1C,YAAA,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;AAC1C,YAAA,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE;AAC3C,YAAA,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE;SAChD;QAED,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,MAAM,EAAE;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC5C,YAAA,IAAI,IAAI,GAAG,SAAS,EAAE;gBACpB,SAAS,GAAG,IAAI;gBAChB,QAAQ,GAAG,QAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC;;;AAIjD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;AACvC,YAAA,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;AAC1C,YAAA,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;AAC1C,YAAA,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE;AAC7C,YAAA,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE;SAChD;QAED,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,MAAM,EAAE;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC5C,YAAA,IAAI,IAAI,GAAG,SAAS,EAAE;gBACpB,SAAS,GAAG,IAAI;gBAChB,QAAQ,GAAG,OAAO,IAAI,UAAU,GAAG,QAAQ,CAAC;;;;IAKlD,IAAI,SAAS,GAAG,cAAc;QAAE,QAAQ,GAAG,QAAQ;IACnD,IAAI,SAAS,GAAG,cAAc;QAAE,QAAQ,GAAG,OAAO;;AAGlD,IAAA,IAAI,SAAS,IAAI,cAAc,EAAE;AAC/B,QAAA,MAAM,CAAC,CAAC,GAAG,QAAQ;AACnB,QAAA,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS;AACzC,QAAA,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC;AAE/C,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU;AAClC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,WAAW;gBAAE;YAC1C,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAAE;AAE3D,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU;AAC9B,YAAA,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW;YACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC;YAE9C,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;AAC9C,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE;AACnH,oBAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;;;;QAI1B,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;;AAGlF,IAAA,IAAI,SAAS,IAAI,cAAc,EAAE;AAC/B,QAAA,MAAM,CAAC,CAAC,GAAG,QAAQ;AACnB,QAAA,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU;AAC3C,QAAA,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,CAAC;AAEhD,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU;AAClC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,WAAW;gBAAE;YAC1C,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAAE;AAE3D,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS;AAC5B,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,YAAY;YACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC;YAE9C,KAAK,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;AAC9C,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE;AACpH,oBAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;;;;QAI1B,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;;AAGlF,IAAA,OAAO,MAAM;AACf;;AC9LA,MAAM,aAAa,GAAG,CAAC,CAAQ,KAAK,CAAC,CAAC,cAAc,EAAE;AAEtD,SAAS,sBAAsB,CAAC,KAAiB,EAAA;AAC/C,IAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,yBAAyB,CAAC;IACjF,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACvC,QAAA,OAAO,CAAC,EAAE,GAAG,yBAAyB;AACtC,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AAChC,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB;AAC1C,QAAA,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ;AACrC,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B;AACrD,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AAC7B,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS;AAClC,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,+CAA+C;AAC1E,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACpC,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO;AAC9B,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;QACnC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,qCAAqC,CAAC;QACrE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC;;AAEhD,IAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,IAAI;AAChD,IAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,IAAI;AACjD;AAEA,SAAS,sBAAsB,GAAA;AAC7B,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,yBAAyB,CAAC;AACpF,IAAA,IAAI,OAAO;QAAE,OAAO,CAAC,MAAM,EAAE;AAC/B;AAEA,SAAS,gBAAgB,GAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;IACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM;AAC7C,IAAA,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC;AACzD;AAEA,SAAS,eAAe,GAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;IACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE;AACzC,IAAA,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC;AAC5D;SAEgB,kBAAkB,GAAA;AAChC,IAAA,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB;IACpF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;IAClF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,QAAA,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;QAC/B;;AAGF,IAAA,IAAI,OAAO,GAAG,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,QAAQ,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,QAAQ;AAEtF,IAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU;AACzB,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW;AAClC,QAAA,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,YAAY;QACnC,IAAI,IAAI,GAAG,OAAO;YAAE,OAAO,GAAG,IAAI;QAClC,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG;QAC9B,IAAI,KAAK,GAAG,QAAQ;YAAE,QAAQ,GAAG,KAAK;QACtC,IAAI,MAAM,GAAG,SAAS;YAAE,SAAS,GAAG,MAAM;AAC5C,KAAC,CAAC;IAEF,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI;IAC/B,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI;AAC7B,IAAA,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,OAAO,IAAI,IAAI;AAC7C,IAAA,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,SAAS,GAAG,MAAM,IAAI,IAAI;AAC9C,IAAA,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AAClC;AAEA,IAAI,UAAU,GAAG,IAAI;AAEL,SAAA,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAA;AAClC,IAAA,IAAI,UAAU;QAAE,YAAY,CAAC,UAAU,CAAC;AAExC,IAAA,UAAU,GAAG,UAAU,CAAC,MAAK;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;KACzB,EAAE,KAAK,CAAC;AACX;AAEA,MAAM,iBAAiB,GAAG,CAAC;AAErB,SAAU,SAAS,CAAC,CAAC,EAAA;IACzB,IAAI,IAAI,CAAC,kBAAkB;QAAE;;AAE7B,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;QACrD;;;;AAIF,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAC;AAC3E,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,wBAAwB,CAAC;AAClF,IAAA,IAAI,CAAC,KAAK;QAAE;AACZ,IAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB;IACtC,MAAM,aAAa,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,EAAE,EAAE,KAAK,YAAY,IAAI,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ;IAC1I,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB;AAC1E,IAAA,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa;QAAE;;;;;AAMtC,IAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;AAE5E,IAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;AACjB,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE;AAC7E,QAAA,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AACjG,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAEvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;;QAE3C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,OAAO,EAAE;AACnF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;aACZ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,OAAO,EAAE;AACtF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;aACZ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,OAAO,EAAE;AACvF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;aACZ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,OAAO,EAAE;AACzF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;;aAEZ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,EAAE;AACxF,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;;aAEZ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,EAAE;AACzF,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;;aAEZ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE;AACvF,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;;aAEZ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE;AAC1F,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;aACZ,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE;AAC7F,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;AAErB,KAAC,CAAC;AAEF,IAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,EAAE;AAC/D,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB;AACpF,QAAA,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;;AAG/B,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAErC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;QAGrD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE;;AAEpC,YAAA,MAAM,CAAC,OAAO,CAAC,EAAE,IAAG;AAClB,gBAAA,EAAE,CAAC,QAAQ,GAAG,KAAK;AACrB,aAAC,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;;AAGlD,QAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAC/D,QAAA,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AACzH,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QAEvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAG;YAC1C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE;YACnD,MAAM,MAAM,GAAG,CAAgB;AAC/B,YAAA,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;AAC1E,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;SACnB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE;;QAE7C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK;AAC9B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;;AAE9D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;SAC1B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC/C,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB;AACpF,QAAA,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;QAE/B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE;;AAEnC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK;AAC9B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;aAC1B;;AAEL,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI;AAC7B,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;YACjD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;AAE5D,YAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAC/D,YAAA,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AACzH,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YAEvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAG;gBAC1C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE;gBACnD,MAAM,MAAM,GAAG,CAAgB;AAC/B,gBAAA,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;AAC1E,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;SAErB;;AAEL,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AAC1D,QAAA,gBAAgB,EAAE;QAElB,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;YAC5B,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,YAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;;AAGrC;AAEM,SAAU,WAAW,CAAC,WAAW,EAAA;AACrC,IAAA,QACE,WAAW,CAAC,MAAM,IAAI,CAAC;QACvB,WAAW,CAAC,IAAI,GAAG,CAAC;QACpB,WAAW,CAAC,GAAG,GAAG,CAAC;QACnB,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,cAAc,CAAC,KAAK;AACxE,QAAA,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,cAAc,CAAC,MAAM;AAE7E;AACM,SAAU,SAAS,CAAC,KAAK,EAAA;IAC7B,KAAK,CAAC,cAAc,EAAE;IACtB,IAAI,IAAI,CAAC,kBAAkB;QAAE;;AAE7B,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;QACrD;;;AAIF,IAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;AAC5E,QAAA,gBAAgB,EAAE;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB;;AAGtG,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;AACxC,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG;AACtC,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;AAC1C,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;AAE5C,QAAA,QAAQ,IAAI,CAAC,QAAQ;AACnB,YAAA,KAAK,GAAG;gBACN,IAAI,KAAK,EAAE;oBACT,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;AACjD,oBAAA,cAAc,GAAG,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;qBAC9E;oBACL,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM;oBAC3C,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;;gBAEnD;AACF,YAAA,KAAK,GAAG;gBACN,IAAI,KAAK,EAAE;oBACT,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;AACjD,oBAAA,cAAc,GAAG,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;qBAC9E;oBACL,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;;gBAEnD;AACF,YAAA,KAAK,GAAG;gBACN,IAAI,KAAK,EAAE;oBACT,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;AAC/C,oBAAA,eAAe,GAAG,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;qBAC9E;oBACL,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;;gBAEjD;AACF,YAAA,KAAK,GAAG;gBACN,IAAI,KAAK,EAAE;oBACT,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;AAC/C,oBAAA,eAAe,GAAG,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;oBACnF,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM;;qBACxC;oBACL,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM;oBAC7C,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;;gBAEjD;AACF,YAAA,KAAK,IAAI;gBACP,IAAI,KAAK,EAAE;oBACT,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;AAC/C,oBAAA,eAAe,GAAG,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;qBAC9E;oBACL,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;oBAC/C,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;;gBAEnD;AACF,YAAA,KAAK,IAAI;gBACP,IAAI,KAAK,EAAE;oBACT,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;AAC/C,oBAAA,eAAe,GAAG,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBACnF,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM;AAC7C,oBAAA,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,eAAe,CAAC;;qBAC1E;oBACL,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM;oBAC7C,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM;oBAC3C,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;oBAC/C,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;;gBAEnD;AACF,YAAA,KAAK,IAAI;gBACP,IAAI,KAAK,EAAE;oBACT,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;AAC/C,oBAAA,eAAe,GAAG,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACnF,oBAAA,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,eAAe,CAAC;;qBAC1E;oBACL,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;oBAC/C,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM;oBAC3C,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;;gBAEnD;AACF,YAAA,KAAK,IAAI;gBACP,IAAI,KAAK,EAAE;oBACT,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;AAC/C,oBAAA,eAAe,GAAG,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBACnF,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM;;qBACxC;oBACL,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM;oBAC7C,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM;oBAC/C,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM;;gBAEnD;;;AAIJ,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAA+B;AACzH,QAAA,MAAM,UAAU,GAAG,mBAAmB,CACpC,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAC5D,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CACpE;QAED,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;AAC7D,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS;AACjF,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS;;YAGjF,IAAI,IAAI,GAAG,IAAI;YACf,IAAI,IAAI,GAAG,IAAI;AACf,YAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK;AACnC,sBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAChE,sBAAE,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK;AACnC,sBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,eAAe,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAChE,sBAAE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,gBAAA,IAAI,KAAK,IAAI,KAAK,EAAE;oBAAE,IAAI,GAAG,KAAK;;qBAAS;oBAAE,IAAI,GAAG,KAAK;;;AAG3D,YAAA,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;gBACjB,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;AACpC,oBAAA,eAAe,GAAG,CAAC,YAAY,GAAG,eAAe,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACvE,oBAAA,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;gBAEnC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;oBACpC,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY;;AAErD,gBAAA,cAAc,GAAG,eAAe,GAAG,MAAM;;iBACpC,IAAI,IAAI,EAAE;gBACf,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;AACpC,oBAAA,cAAc,GAAG,CAAC,aAAa,GAAG,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACtE,oBAAA,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;gBAEpC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;oBACpC,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa;;AAErD,gBAAA,eAAe,GAAG,cAAc,GAAG,MAAM;;AAG3C,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,eAAe;AAChH,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,aAAa,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,cAAc;;AAGhH,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IACvC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,CACnE;YACD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;;aAC5B;YACL,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;AACpC,gBAAA,eAAe,GAAG,CAAC,YAAY,GAAG,eAAe,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACvE,gBAAA,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;YAEnC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;gBACpC,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY;;YAErD,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;AACpC,gBAAA,cAAc,GAAG,CAAC,aAAa,GAAG,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACtE,gBAAA,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;YAEpC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;gBACpC,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa;;YAErD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;;QAG9C,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;YACvL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,aAAa,GAAG,IAAI;YAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,GAAG,IAAI;YAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;YACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,GAAG,IAAI;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;AACvB,gBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;AACzB,gBAAA,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC,IAAI;AAC/B,gBAAA,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,IAAI;AAC7B,gBAAA,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC,IAAI;AACjC,gBAAA,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC,IAAI;aACpC;;QAGH,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;;AAC/F,SAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;;QAElF,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE;YACnD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACtD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACtD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB;gBAAE;AAC1E,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB;AAC7C,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;YAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW;;AAG3C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAEpB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAgB;AACzF,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB;QACxF,IAAI,UAAU,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI;QACnD,IAAI,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,GAAG;QAEjD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;;AAGlD,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AACpC,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI;AACvI,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI;AACpI,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;AAC7C,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;;;AAGzC,SAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;;QAE1F,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAChE,QAAA,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;YAClB,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACxC;;AAGF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,gBAAgB,EAAE;AAClB,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB;AACpF,QAAA,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;;AAG/B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;gBACxB,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,eAAe,CAAqB;AAC/E,gBAAA,IAAI,KAAK;oBAAE,KAAK,CAAC,IAAI,EAAE;AACzB,aAAC,CAAC;;;QAIJ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;;AAEzB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM;AACxD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;YACjD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM;AAEnD,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAA+B;AACzH,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;;AAGrH,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC;AAC9D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAE7D,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,WAAW;AAClE,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG,WAAW;gBAChE,IACE,OAAO,IAAI,CAAC;AACZ,oBAAA,MAAM,IAAI,CAAC;AACX,oBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI;AACtG,oBAAA,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EACvG;AACA,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AACxD,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;;;YAI1D,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,YAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;;AAGrC;AAEM,SAAU,OAAO,CAAC,KAAK,EAAA;AAC3B,IAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,IAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,IAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;IAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AACpC,IAAA,eAAe,EAAE;AACjB,IAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,IAAA,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;IAGnC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAgB;AACzF,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;AAC1E,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ;AAC9B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC;AAC/D,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;QAEnC,IAAI,KAAK,EAAE;YACT,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACzD,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAM,EAAA,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;aACpE,IAAI,OAAO,EAAE;YAClB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC;;aAC3C;YACL,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;QAGnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC5D,QAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;AAEnC;AAEM,SAAU,UAAU,CAAC,CAAC,EAAA;;AAE1B,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;QACrD;;;AAIF,IAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAEjB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAA+B;AAC1G,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAmB;AAChG,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,KAAK,CAAC,IAAI,CAAC,MAAM;aACd,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ;aACxB,GAAG,CAAC,EAAE,IAAG;;AAER,YAAA,MAAM,KAAK,GAAG;gBACZ,GAAG,EAAE,CAAC,QAAQ;gBACd,GAAG,cAAc,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;aAChH;;AAED,YAAA,EAAE,CAAC,QAAQ,GAAG,KAAK;;YAEnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;SACzC,CAAC,CACL;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;AACvD,QAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;SAC1B;;AAEL,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAExB,IAAI,MAAM,GAAG,KAAK;AAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAA+B;AAC1G,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;AACjB,YAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE;YAC9D,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE;AACtF,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;gBACjB,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AAC5B,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AAC3C,oBAAA,CAAC,CAAC,QAAQ,GAAG,IAAI;;;gBAGnB,MAAM,GAAG,IAAI;;AAEjB,SAAC,CAAC;;QAGF,IAAI,MAAM,EAAE;AACV,YAAA,sBAAsB,EAAE;;aACnB;YACL,oBAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC;;QAG5C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC5D,QAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;AAEnC;AAEM,SAAU,cAAc,CAAC,MAAsD,EAAA;AACnF,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB;AAC1F,IAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAC1E,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,QAAA,SAAS,CAAC,EAAE,GAAG,gBAAgB;AAC/B,QAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACrC,QAAA,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;AACzB,QAAA,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;AAC1B,QAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AAC9B,QAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC/B,QAAA,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACtC,QAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC/B,QAAA,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;;AAG9B,IAAA,SAAS,CAAC,SAAS,GAAG,EAAE;AACxB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;AAC1C,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,oCAAoC;;aACvD;YACL,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI;AACtC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,oCAAoC;;AAE7D,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;;AAE/B;SAEgB,eAAe,GAAA;AAC7B,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC;AAC5E,IAAA,IAAI,SAAS;AAAE,QAAA,SAAS,CAAC,SAAS,GAAG,EAAE;AACzC;AAEM,SAAU,gBAAgB,CAAC,SAAwB,EAAA;;AAEvD,IAAA,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;QAC1B;;;AAGF,IAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;QAC3B,IAAI,CAAC,kBAAkB,EAAE;;AAG3B,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB;AAC1F,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,IAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;IAC9B,IAAI,QAAQ,GAAG,KAAK;;AAGpB,IAAA,gBAAgB,EAAE;;AAGlB,IAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;QACzF,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACxG,KAAC,CAAC;;IAGF,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC3C,IAAA,KAAK,CAAC,EAAE,GAAG,kBAAkB;AAC7B,IAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AAC9B,IAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI;AACxD,IAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI;AAC1D,IAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;AAC9E,IAAA,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACtE,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,IAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,KAAA,CAAO;AACnD,IAAA,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,wEAAwE;AAChG,IAAA,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AAClC,IAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO;AAC5B,IAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACjC,IAAA,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa;AACrC,IAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,+CAA+C;AACxE,IAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,IAAI;AAClE,IAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI;AAC9D,IAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS;AAChC,IAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACjC,IAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAC5B,IAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACjC,IAAA,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,YAAY;AACxC,IAAA,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,eAAe;;AAG3C,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK;AAC7B,UAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM;UACzD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,EAAE;AACxD,UAAE;AACF,UAAE,IAAI,CAAC,IAAI,KAAK;cACZ,GAAG,QAAQ,EAAE,SAAS,CAAI,CAAA,EAAA,QAAQ,EAAE,QAAQ,CAAE;cAC9C,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAE,CAAA,CAAC;IACrF,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACjD,IAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACzC,IAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,yBAAyB;IACrD,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA,GAAA,CAAK;AAC9C,IAAA,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;AAC9B,IAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;AAChC,IAAA,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AACjC,IAAA,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG;IACpC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,KAAK,GAAG,IAAI,CAAA,GAAA,CAAK;AACnD,IAAA,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACzC,IAAA,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY;AAC7C,IAAA,aAAa,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AAC1C,IAAA,aAAa,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AAC1C,IAAA,aAAa,CAAC,WAAW,GAAG,CAAA,EAAG,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAI,CAAA,EAAA,YAAY,EAAE;AACvF,IAAA,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC;IAEhC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;;IAG5C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,IAAA,IAAI,CAAC,EAAE,GAAG,aAAa;AACvB,IAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AAC7B,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ;AAC5B,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK;AACvB,IAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB;AACzC,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB;AACvC,IAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU;AACpC,IAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B;AAClD,IAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AAC1B,IAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS;AAC/B,IAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,+CAA+C;AACvE,IAAA,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACjC,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO;AAC3B,IAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,mCAAmC;AAC1D,IAAA,IAAI,CAAC,WAAW,GAAG,qCAAqC;IACxD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;AAE3C,IAAA,MAAM,WAAW,GAAG,CAAC,CAAa,KAAI;QACpC,CAAC,CAAC,cAAc,EAAE;QAClB,QAAQ,GAAG,IAAI;AACf,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,GAAG,IAAI;AAC/C,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,GAAG,IAAI;AAEjD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE;AAC/C,QAAA,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK;AAC3E,YAAA,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM;AAC/D,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC;;QAGlC,IAAI,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAqB;QAC/E,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,CAAC,WAAW,EAAE;AAC/C,YAAA,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,YAAA,WAAW,CAAC,EAAE,GAAG,gBAAgB;AACjC,YAAA,WAAW,CAAC,WAAW,GAAG,oCAAoC;AAC9D,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;;aACjC,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;YACrD,WAAW,CAAC,MAAM,EAAE;;;;QAKtB,IAAI,WAAW,EAAE;AACf,YAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AAClC,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AACzB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU;AACvD,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS;AACrD,YAAA,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC;AAC5B,YAAA,IAAI,GAAG,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC;AAE5B,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAA+B;AACtH,YAAA,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;AAClF,YAAA,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC,IAAI,IAAI;AACpH,YAAA,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,GAAG,UAAU,GAAG,CAAC,IAAI,IAAI;YAElH,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;aACjC,IAAI,UAAU,EAAE;AACrB,YAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AAClC,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;AAC3B,YAAA,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC,IAAI,IAAI;AACrD,YAAA,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,GAAG,CAAC,IAAI,IAAI;AACrD,YAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;aACvB;AACL,YAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACjC,YAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;AAEhC,KAAC;IAED,MAAM,OAAO,GAAG,MAAK;AACnB,QAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC;AACtD,QAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AAClD,QAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;QAClD,KAAK,CAAC,MAAM,EAAE;QACd,IAAI,CAAC,MAAM,EAAE;AACb,QAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,QAAA,eAAe,EAAE;QACjB,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;AAC7D,QAAA,IAAI,WAAW;YAAE,WAAW,CAAC,MAAM,EAAE;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YACzF,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC3G,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAChC,KAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,CAAa,KAAI;;AAElC,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE;AAC/C,QAAA,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK;AAC3E,YAAA,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM;AAE/D,QAAA,OAAO,EAAE;QAET,IAAI,WAAW,EAAE;AAEf,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,GAAG,IAAI;AAC/C,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,GAAG,IAAI;AACjD,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU;AACvD,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS;AACrD,YAAA,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC;AAC5B,YAAA,IAAI,GAAG,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC;AAE5B,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAA+B;AACtH,YAAA,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;AAClF,YAAA,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI;AAAE,gBAAA,IAAI,GAAG,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI;AAAE,gBAAA,GAAG,GAAG,IAAI,CAAC,CAAC;AAEjC,YAAA,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI;AAC3B,YAAA,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI;;AAG7B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK;AAC7D,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM;YAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;YAC5F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;YAE5F,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;YAEhG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAC5C,YAAA,MAAM,OAAO,GAAkB;AAC7B,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE;oBACJ,EAAE;AACF,oBAAA,KAAK,EAAE,SAAS,CAAC,eAAe,KAAK,UAAU,GAAG,OAAO,GAAG,EAAE;oBAC9D,eAAe,EAAE,SAAS,CAAC,eAAe;oBAC1C,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,UAAU,EAAE,SAAS,CAAC,UAAU;AAChC,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,GAAG,EAAE,cAAc;AACnB,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,SAAS,CAAC,aAAa;oBAC/B,KAAK,EAAE,SAAS,CAAC,YAAY;oBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;oBACrD,QAAQ,EAAE,IAAI,CAAC,UAAU;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,oBAAA,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,IAAI,CAAC,OAAO;AAClB,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,SAAS,CAAC,eAAe,KAAK,UAAU;AAClD,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,UAAU,EAAE,IAAI;oBAChB,EAAE,EAAE,eAAe,GAAG,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;oBAC3F,EAAE,EAAE,cAAc,GAAG,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;oBAC1F,EAAE,EAAE,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK;oBAC5F,EAAE,EAAE,CAAC,cAAc,GAAG,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM;AAC7F,oBAAA,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AACd,iBAAA;aAClB;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;;AAE/B,KAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,CAAgB,KAAI;AACrC,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,CAAC,CAAC,cAAc,EAAE;YAClB,CAAC,CAAC,eAAe,EAAE;AACnB,YAAA,OAAO,EAAE;;AAEb,KAAC;AAED,IAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;AACjC,IAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;AACnD,IAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AAC/C,IAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AACjD;AAEM,SAAU,gBAAgB,CAAC,KAAK,EAAA;;AAEpC,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;QACrD;;AAGF,IAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;AAChE,IAAA,IAAI;AACF,QAAA,IAAI,IAAI,GAAkB,IAAI,CAAC,iBAAkC;AAEjE,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AAClE,YAAA,IAAI,GAAG;AACL,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,eAAe,EAAE,MAAM;AACvB,gBAAA,WAAW,EAAE,MAAM;AACnB,gBAAA,UAAU,EAAE,CAAC;AACb,gBAAA,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,aAAa;AACnD,gBAAA,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY;aAClD;;AAGH,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AACzD,YAAA,IAAI,GAAG;AACL,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,eAAe,EAAE,WAAW;AAC5B,gBAAA,WAAW,EAAE,OAAO;AACpB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,aAAa,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,aAAa;AACxD,gBAAA,YAAY,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,YAAY;aACvD;;;QAGH,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AAChG,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB;;QAExF,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAC5C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK;AAC7D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM;AAC/D,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS;AAC1D,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;;AAG1E,QAAA,MAAM,OAAO,GAAkB;AAC7B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,IAAI,EAAE;gBACJ,EAAE;AACF,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,KAAK,UAAU,GAAG,OAAO,GAAG,EAAE;gBACzD,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,gBAAA,WAAW,EAAE,KAAK;gBAClB,GAAG;gBACH,IAAI;AACJ,gBAAA,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrD,gBAAA,QAAQ,EAAE,iBAAiB;AAC3B,gBAAA,QAAQ,EAAE,iBAAiB;AAC3B,gBAAA,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,OAAO;AAClB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,KAAK,UAAU;AAC7C,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,UAAU,EAAE,IAAI;gBAChB,EAAE,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;gBACrE,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;gBACpE,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK;gBAC5E,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM;AAC7E,gBAAA,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AACd,aAAA;SAClB;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;;IAC3B,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;AAEpB;;ACx/BA,MAAM,oBAAoB,GAAG,MAAM,CAAC,+3LAA+3L,CAAC;;MCWv5L,iBAAiB,iBAAAA,kBAAA,CAAA,MAAA,iBAAA,SAAAC,CAAA,CAAA;;;;;;;;;AAI5B,IAAA,QAAQ;IACA,QAAQ,GAAY,KAAK;AAOjC,IAAA,MAAM;;IAIN,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,SAAS;QAChE,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAC/D,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;;IAGrE,gBAAgB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,SAAS;QAChE,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACjE,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;;;;AAKrE,IAAA,KAAK,CAAC,IAAY,EAAA;AAChB,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAEjB,MAAM,KAAK,GAAoB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAG;AACnD,YAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,EAAkB,EAAE;AACtE,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAoB,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGzB,oBAAoB,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE;AAEhD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,yBAAyB,CAAqB;QACrG,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAG5D,IAAI,QAAQ,GAAG,CAAC;AAChB,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QACrD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAC3C,YAAA,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG;SAC3E,EAAE,QAAQ,CAAC;;AAEZ,QAAA,MAAM,UAAU,GAAW,SAAS,GAAG,QAAQ;AAE/C,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE;AACxB,YAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;;aAC7B;AACL,YAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;QAGzD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;AAC1C,YAAA,OAAO,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK;AAC7F,mBAAA,KAAK,KAAK;AACV,mBAAA,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC;AAClC,SAAC,CAAC;QAEF,MAAM,KAAK,GAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;YAEvD,OAAO;AACL,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,CAAC;oBACJ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACtD,iBAAA;aAClB;AACH,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAoB,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGzB,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE;QAElD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QAE1D,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;QAE1B,MAAM,KAAK,GAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAG;YAC5C,MAAM,MAAM,GAAG,MAAM;YACrB,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,OAAO;AACpC,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,GAAG,CAAC;AACJ,gBAAA,GAAG,EAAE,MAAM;aACI;YAEjB,OAAO;AACL,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE,GAAG,CAAC,MAAM;AACd,sBAAG;AACD,wBAAA,GAAG,CAAC;wBACJ,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;AAC5B;AAClB,sBAAE,MAAM;aACX;AACH,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAoB,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGzB,IAAA,aAAa,CAAC,OAAe,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE;QAElD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QAE1D,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAE3B,MAAM,KAAK,GAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAG;YAC5C,MAAM,OAAO,GAAG,MAAM;YACtB,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO;AACnC,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,GAAG,CAAC;AACJ,gBAAA,IAAI,EAAE,OAAO;aACE;YAEjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAEhC,OAAO;AACL,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE,GAAG,CAAC,MAAM;AACd,sBAAG;AACD,wBAAA,GAAG,CAAC;wBACJ,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;AAC1B;AAClB,sBAAE,MAAM;aACX;AACH,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAoB,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGzB,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE;QAEhD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAE1D,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;AACpD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AAC7C,QAAA,MAAM,cAAc,GAAG,OAAO,GAAG,WAAW;AAE5C,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAE5F,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,cAAc,GAAG,kBAAkB,IAAI,OAAO,CAAC;AAExE,QAAA,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG;AAEvD,QAAA,MAAM,KAAK,GAAoB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACrC,YAAA,UAAU,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG;YAE5B,OAAO;AACL,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,CAAC;AACJ,oBAAA,GAAG,EAAE,MAAM;AACI,iBAAA;aAClB;AACH,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAoB,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGzB,gBAAgB,GAAA;;IAGhB,MAAM,GAAA;QACJ,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gCAAgC,EAAA,EAC1C,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,qCAAqC,EAAA,EAC/C,CAAG,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,sCAAsC,EAAG,EAAA,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAK,EAC1F,CAAG,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,4CAA4C,EAAG,EAAA,MAAM,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAK,CACvG,EACN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,oBAAoB,EAAA,EAC9B,CACE,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,OAAO,EAAE,MAAK;gBACZ,IAAI,CAAC,kBAAkB,EAAE;aAC1B,EAAA,YAAA,EACW,MAAM,CAAC,CAAC,CAAC,gCAAgC,CAAC,qBACtC,eAAe,EAAA,sBAAA,EAAuB,MAAM,CAAC,CAAC,CAAC,gCAAgC,CAAC,EAChG,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAA,EAEvB,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,kCAAkC,EAAA,CAAW,CACpD,EACT,CACE,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,OAAO,EAAE,MAAK;gBACZ,IAAI,CAAC,oBAAoB,EAAE;aAC5B,EAAA,YAAA,EACW,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,qBACxC,eAAe,EAAA,sBAAA,EAAuB,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,EAClG,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAA,EAEvB,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,oCAAoC,EAAW,CAAA,CACtD,CACL,CACF,EACN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gCAAgC,EAAA,EAC1C,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,qCAAqC,EAAA,EAC/C,CAAG,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,sCAAsC,EAAG,EAAA,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAK,EACjF,CAAG,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,4CAA4C,EAAG,EAAA,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAK,CAC9F,EACN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,iBAAiB,EAAA,EAC3B,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,qBAAqB,EAAkB,iBAAA,EAAA,eAAe,EAAuB,sBAAA,EAAA,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAA,EAC3H,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,EAAE,EAAC,mBAAmB,EAAC,IAAI,EAAC,kCAAkC,EAAW,CAAA,EAClF,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,wBAAwB,EAC/B,EAAE,EAAC,uBAAuB,EAC1B,QAAQ,EAAE,CAAC,IAAG;AACZ,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAE,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;aACjE,EACD,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAC5B,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,SAAS,EAChG,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,GACvB,CACE,EACN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,qBAAqB,EAAkB,iBAAA,EAAA,eAAe,EAAuB,sBAAA,EAAA,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,EAAA,EAC7H,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,EAAE,EAAC,mBAAmB,EAAC,IAAI,EAAC,oCAAoC,EAAW,CAAA,EACpF,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,wBAAwB,EAC/B,EAAE,EAAC,yBAAyB,EAC5B,QAAQ,EAAE,CAAC,IAAG;AACZ,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAE,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;AACpE,aAAC,EACD,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAC9B,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,SAAS,EAClG,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAA,CACvB,CACE,CACF,CACF,EACN,CAAY,CAAA,YAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,SAAS,EAAC,eAAe,EAAG,CAAA,EACxC,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/ls-document-viewer/clipboard.ts","src/components/ls-document-viewer/snapHelper.ts","src/components/ls-document-viewer/mouseHandlers.ts","src/components/ls-field-distribute/ls-field-distribute.scss?tag=ls-field-distribute&encapsulation=shadow","src/components/ls-field-distribute/ls-field-distribute.tsx"],"sourcesContent":["import { LSApiElement } from '../../types/LSApiElement';\n\nconst PASTE_OFFSET = 10; // px offset when pasting without a click target\n\nlet clipboard: LSApiElement[] = [];\nlet lastClickPosition: { x: number; y: number } | null = null;\n\nexport function getClipboard(): LSApiElement[] {\n return clipboard;\n}\n\nexport function setLastClickPosition(x: number, y: number) {\n lastClickPosition = { x, y };\n}\n\nexport function clearLastClickPosition() {\n lastClickPosition = null;\n}\n\nexport function copySelected() {\n if (!this.selected || this.selected.length === 0) return;\n clipboard = this.selected.map(field => ({ ...field.dataItem }));\n lastClickPosition = null;\n}\n\nexport function cutSelected() {\n if (!this.selected || this.selected.length === 0) return;\n copySelected.bind(this)();\n\n const arr = Array.from(this.selected) as HTMLLsEditorFieldElement[];\n this.mutate.emit(\n arr.map(s => ({ action: 'delete', data: s.dataItem })),\n );\n}\n\nexport function pasteClipboard() {\n if (clipboard.length === 0) return;\n\n // Calculate bounding box of clipboard items to use as offset anchor\n const minTop = Math.min(...clipboard.map(item => item.top));\n const minLeft = Math.min(...clipboard.map(item => item.left));\n\n const createdItems = clipboard.map(item => {\n const newItem = { ...item, id: btoa('ele' + crypto.randomUUID()) };\n\n if (lastClickPosition) {\n // Paste relative to click position, maintaining relative layout of multiple fields\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n const rect = frame.getBoundingClientRect();\n const clickX = Math.round((lastClickPosition.x - rect.left) / this.zoom);\n const clickY = Math.round((lastClickPosition.y - rect.top) / this.zoom);\n\n newItem.top = clickY + (item.top - minTop);\n newItem.left = clickX + (item.left - minLeft);\n } else {\n // No click target — offset from original position\n newItem.top = item.top + PASTE_OFFSET;\n newItem.left = item.left + PASTE_OFFSET;\n }\n\n // Clamp to page bounds\n const pageDims = this.pageDimensions[this.pageNum - 1];\n if (newItem.top + item.height > pageDims.height) {\n newItem.top = pageDims.height - item.height;\n }\n if (newItem.left + item.width > pageDims.width) {\n newItem.left = pageDims.width - item.width;\n }\n if (newItem.top < 0) newItem.top = 0;\n if (newItem.left < 0) newItem.left = 0;\n\n newItem.page = this.pageNum;\n newItem.pageDimensions = pageDims;\n\n return newItem;\n });\n\n const pasteCount = createdItems.length;\n this.mutate.emit(createdItems.map(data => ({ action: 'create', data })));\n\n // Select pasted fields after mutations complete\n // Fields get new IDs from the API, so we select the last N fields added\n const waitForPaste = () => {\n const fields = Array.from(\n this.component.shadowRoot.querySelectorAll('ls-editor-field'),\n ) as HTMLLsEditorFieldElement[];\n\n const currentPage = fields.filter(f => f.dataItem?.page === this.pageNum);\n // Get the most recently added fields (they're appended to the DOM)\n const pastedFields = currentPage.slice(-pasteCount);\n\n if (pastedFields.length === pasteCount) {\n fields.forEach(f => { f.selected = false; f.multiSelected = false; });\n pastedFields.forEach(f => {\n f.selected = true;\n f.multiSelected = pastedFields.length > 1;\n });\n this.selected = pastedFields;\n this.selectFields.emit(pastedFields.map(f => f.dataItem));\n }\n };\n\n // Wait for isMutating to flip back to false\n const poll = () => {\n if (!this.isMutating) {\n requestAnimationFrame(waitForPaste);\n } else {\n requestAnimationFrame(poll);\n }\n };\n requestAnimationFrame(poll);\n\n // Update clipboard to new items so subsequent pastes keep offsetting\n clipboard = createdItems;\n lastClickPosition = null;\n}\n","export const SNAP_THRESHOLD = 8; // pixels proximity to trigger snap\n\nexport interface SnapResult {\n x: number | null; // snapped left position (null = no snap on x)\n y: number | null; // snapped top position (null = no snap on y)\n guides: { orientation: 'h' | 'v'; position: number }[];\n}\n\n/**\n * Calculate snap positions for a dragging field against existing fields.\n * Snaps edges and centers. Shows guides for ALL aligned edges at the snapped position.\n * All values are in zoomed pixel coordinates relative to the document frame.\n */\nexport interface ResizeSnapResult {\n edges: { n?: number; s?: number; e?: number; w?: number };\n guides: { orientation: 'h' | 'v'; position: number }[];\n}\n\n/**\n * Calculate snap positions for a resizing field edge against existing fields.\n * Only snaps the edges being dragged (determined by edgeSide).\n */\nexport function calculateResizeSnap(\n fieldLeft: number,\n fieldTop: number,\n fieldWidth: number,\n fieldHeight: number,\n edgeSide: string,\n fields: { offsetLeft: number; offsetTop: number; offsetWidth: number; offsetHeight: number; dataItem?: any }[],\n currentPage: number,\n excludeIds?: string[],\n): ResizeSnapResult {\n const result: ResizeSnapResult = { edges: {}, guides: [] };\n\n const fieldRight = fieldLeft + fieldWidth;\n const fieldBottom = fieldTop + fieldHeight;\n\n // Determine which edges are active based on edgeSide\n const activeH: ('n' | 's')[] = [];\n const activeV: ('e' | 'w')[] = [];\n if (edgeSide.includes('n')) activeH.push('n');\n if (edgeSide.includes('s')) activeH.push('s');\n if (edgeSide.includes('e')) activeV.push('e');\n if (edgeSide.includes('w')) activeV.push('w');\n\n // For each active edge, find closest snap target\n const edgePositions = { n: fieldTop, s: fieldBottom, e: fieldRight, w: fieldLeft };\n\n for (const edge of [...activeV, ...activeH] as ('n' | 's' | 'e' | 'w')[]) {\n const isVerticalEdge = edge === 'e' || edge === 'w';\n const pos = edgePositions[edge];\n let closest = SNAP_THRESHOLD + 1;\n let snapped: number | null = null;\n\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fLeft = field.offsetLeft;\n const fTop = field.offsetTop;\n const fRight = fLeft + field.offsetWidth;\n const fBottom = fTop + field.offsetHeight;\n const fCenterX = fLeft + field.offsetWidth / 2;\n const fCenterY = fTop + field.offsetHeight / 2;\n\n const targets = isVerticalEdge ? [fLeft, fRight, fCenterX] : [fTop, fBottom, fCenterY];\n for (const t of targets) {\n const dist = Math.abs(pos - t);\n if (dist < closest) {\n closest = dist;\n snapped = t;\n }\n }\n }\n\n if (snapped !== null && closest <= SNAP_THRESHOLD) {\n result.edges[edge] = snapped;\n result.guides.push({ orientation: isVerticalEdge ? 'v' : 'h', position: snapped });\n }\n }\n\n return result;\n}\n\nexport function calculateSnap(\n dragLeft: number,\n dragTop: number,\n dragWidth: number,\n dragHeight: number,\n fields: { offsetLeft: number; offsetTop: number; offsetWidth: number; offsetHeight: number; dataItem?: any }[],\n currentPage: number,\n excludeIds?: string[],\n): SnapResult {\n const result: SnapResult = { x: null, y: null, guides: [] };\n\n const dragRight = dragLeft + dragWidth;\n const dragBottom = dragTop + dragHeight;\n const dragCenterX = dragLeft + dragWidth / 2;\n const dragCenterY = dragTop + dragHeight / 2;\n\n let closestDx = SNAP_THRESHOLD + 1;\n let closestDy = SNAP_THRESHOLD + 1;\n let snappedX = dragLeft;\n let snappedY = dragTop;\n\n // First pass: find the closest snap distance per axis\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fLeft = field.offsetLeft;\n const fTop = field.offsetTop;\n const fRight = fLeft + field.offsetWidth;\n const fBottom = fTop + field.offsetHeight;\n const fCenterX = fLeft + field.offsetWidth / 2;\n const fCenterY = fTop + field.offsetHeight / 2;\n\n const xPairs = [\n { dragEdge: dragLeft, targetEdge: fLeft },\n { dragEdge: dragLeft, targetEdge: fRight },\n { dragEdge: dragRight, targetEdge: fLeft },\n { dragEdge: dragRight, targetEdge: fRight },\n { dragEdge: dragCenterX, targetEdge: fCenterX },\n ];\n\n for (const { dragEdge, targetEdge } of xPairs) {\n const dist = Math.abs(dragEdge - targetEdge);\n if (dist < closestDx) {\n closestDx = dist;\n snappedX = dragLeft + (targetEdge - dragEdge);\n }\n }\n\n const yPairs = [\n { dragEdge: dragTop, targetEdge: fTop },\n { dragEdge: dragTop, targetEdge: fBottom },\n { dragEdge: dragBottom, targetEdge: fTop },\n { dragEdge: dragBottom, targetEdge: fBottom },\n { dragEdge: dragCenterY, targetEdge: fCenterY },\n ];\n\n for (const { dragEdge, targetEdge } of yPairs) {\n const dist = Math.abs(dragEdge - targetEdge);\n if (dist < closestDy) {\n closestDy = dist;\n snappedY = dragTop + (targetEdge - dragEdge);\n }\n }\n }\n\n if (closestDx > SNAP_THRESHOLD) snappedX = dragLeft;\n if (closestDy > SNAP_THRESHOLD) snappedY = dragTop;\n\n // Second pass: collect ALL guides that align at the snapped position\n if (closestDx <= SNAP_THRESHOLD) {\n result.x = snappedX;\n const snappedRight = snappedX + dragWidth;\n const snappedCenterX = snappedX + dragWidth / 2;\n\n const guideSet = new Set<number>();\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fLeft = field.offsetLeft;\n const fRight = fLeft + field.offsetWidth;\n const fCenterX = fLeft + field.offsetWidth / 2;\n\n for (const target of [fLeft, fRight, fCenterX]) {\n if (Math.abs(snappedX - target) < 1 || Math.abs(snappedRight - target) < 1 || Math.abs(snappedCenterX - target) < 1) {\n guideSet.add(target);\n }\n }\n }\n guideSet.forEach(pos => result.guides.push({ orientation: 'v', position: pos }));\n }\n\n if (closestDy <= SNAP_THRESHOLD) {\n result.y = snappedY;\n const snappedBottom = snappedY + dragHeight;\n const snappedCenterY = snappedY + dragHeight / 2;\n\n const guideSet = new Set<number>();\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fTop = field.offsetTop;\n const fBottom = fTop + field.offsetHeight;\n const fCenterY = fTop + field.offsetHeight / 2;\n\n for (const target of [fTop, fBottom, fCenterY]) {\n if (Math.abs(snappedY - target) < 1 || Math.abs(snappedBottom - target) < 1 || Math.abs(snappedCenterY - target) < 1) {\n guideSet.add(target);\n }\n }\n }\n guideSet.forEach(pos => result.guides.push({ orientation: 'h', position: pos }));\n }\n\n return result;\n}\n","import { LSApiElement } from '../../types/LSApiElement';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { findDimensions, findIn, recalculateCoordinates } from './editorCalculator';\nimport { IToolboxField } from '../interfaces/IToolboxField';\nimport { FIELD_DEFAULTS, DEFAULT_FONT_SIZE, DEFAULT_FONT_NAME } from '../../constants/fieldDefaults';\nimport { setLastClickPosition, clearLastClickPosition } from './clipboard';\nimport { snapshotField } from './history';\nimport { calculateSnap, calculateResizeSnap } from './snapHelper';\nimport { defaultRolePalette } from './defaultPalette';\nimport { dvI18n } from '../../i18n/i18n';\n\nconst preventSelect = (e: Event) => e.preventDefault();\n\nfunction showMoveBlockedTooltip(event: MouseEvent) {\n let tooltip = this.component.shadowRoot.getElementById('ls-move-blocked-tooltip');\n if (!tooltip) {\n tooltip = document.createElement('div');\n tooltip.id = 'ls-move-blocked-tooltip';\n tooltip.style.position = 'fixed';\n tooltip.style.padding = '0.375rem 0.75rem';\n tooltip.style.borderRadius = '0.5rem';\n tooltip.style.background = 'var(--gray-100, #45484d)';\n tooltip.style.color = 'white';\n tooltip.style.fontSize = '0.75rem';\n tooltip.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';\n tooltip.style.pointerEvents = 'none';\n tooltip.style.zIndex = '10000';\n tooltip.style.whiteSpace = 'nowrap';\n tooltip.textContent = dvI18n.t('fieldproperties.cannotmovemultipage');\n this.component.shadowRoot.appendChild(tooltip);\n }\n tooltip.style.left = (event.clientX + 12) + 'px';\n tooltip.style.top = (event.clientY + 12) + 'px';\n}\n\nfunction hideMoveBlockedTooltip() {\n const tooltip = this.component.shadowRoot?.getElementById('ls-move-blocked-tooltip');\n if (tooltip) tooltip.remove();\n}\n\nfunction disableSelection() {\n document.body.style.userSelect = 'none';\n document.body.style.webkitUserSelect = 'none';\n document.addEventListener('selectstart', preventSelect);\n}\n\nfunction enableSelection() {\n document.body.style.userSelect = '';\n document.body.style.webkitUserSelect = '';\n document.removeEventListener('selectstart', preventSelect);\n}\n\nexport function updateSelectionBox() {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n const pageSelected = this.selected?.filter(f => f.dataItem?.page === this.pageNum);\n if (!pageSelected || pageSelected.length < 2) {\n box.style.visibility = 'hidden';\n return;\n }\n\n let minLeft = Infinity, minTop = Infinity, maxRight = -Infinity, maxBottom = -Infinity;\n\n pageSelected.forEach(f => {\n const left = f.offsetLeft;\n const top = f.offsetTop;\n const right = left + f.offsetWidth;\n const bottom = top + f.offsetHeight;\n if (left < minLeft) minLeft = left;\n if (top < minTop) minTop = top;\n if (right > maxRight) maxRight = right;\n if (bottom > maxBottom) maxBottom = bottom;\n });\n\n box.style.left = minLeft + 'px';\n box.style.top = minTop + 'px';\n box.style.width = (maxRight - minLeft) + 'px';\n box.style.height = (maxBottom - minTop) + 'px';\n box.style.visibility = 'visible';\n}\n\nlet mousetimer = null;\n\nexport function debounce(data, delay) {\n if (mousetimer) clearTimeout(mousetimer);\n\n mousetimer = setTimeout(() => {\n this.mutate.emit([data]);\n }, delay);\n}\n\nconst MIN_DRAG_DISTANCE = 5;\n\nexport function mouseDown(e) {\n if (this._isToolboxDragging) return;\n // Disable mouse interactions in preview mode or when template is locked\n if (this.mode === 'preview' || this._template?.locked) {\n return;\n }\n // Only process if mousedown target is the frame, canvas, wrapper itself, or an editor field.\n // This prevents floating UI children (select-menu) from triggering drags.\n const frame = this.component.shadowRoot.getElementById('ls-document-frame');\n const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper');\n if (!frame) return;\n const target = e.target as HTMLElement;\n const isValidTarget = target === frame || target === wrapper || target?.id === 'pdf-canvas' || target?.tagName?.toLowerCase() === 'canvas';\n const isFieldTarget = target?.tagName?.toLowerCase() === 'ls-editor-field';\n if (!isValidTarget && !isFieldTarget) return;\n\n // Find if this was\n // - a hit on a field edge RESIZE\n // - a hit on the middle of a field MOVE\n // - a hit on the background document SELECTMULTIPLE with a box\n this.hitField = null;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n\n fields.forEach(f => {\n const { left, top, height, width, bottom, right } = f.getBoundingClientRect();\n const fdims = { left: f.offsetLeft, top: f.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n // Scale edge threshold for small fields\n const edgeX = Math.min(8, width * 0.25);\n const edgeY = Math.min(8, height * 0.25);\n const cornerX = Math.min(16, width * 0.35);\n const cornerY = Math.min(16, height * 0.35);\n // corners (check before edges)\n if (Math.abs(e.clientX - right) < cornerX && Math.abs(e.clientY - bottom) < cornerY) {\n this.edgeSide = 'se';\n this.hitField = f;\n } else if (Math.abs(e.clientX - left) < cornerX && Math.abs(e.clientY - top) < cornerY) {\n this.edgeSide = 'nw';\n this.hitField = f;\n } else if (Math.abs(e.clientX - right) < cornerX && Math.abs(e.clientY - top) < cornerY) {\n this.edgeSide = 'ne';\n this.hitField = f;\n } else if (Math.abs(e.clientX - left) < cornerX && Math.abs(e.clientY - bottom) < cornerY) {\n this.edgeSide = 'sw';\n this.hitField = f;\n // west edge\n } else if (Math.abs(e.clientX - left) < edgeX && e.clientY >= top && e.clientY <= bottom) {\n this.edgeSide = 'w';\n this.hitField = f;\n // right / east edge\n } else if (Math.abs(e.clientX - right) < edgeX && e.clientY >= top && e.clientY <= bottom) {\n this.edgeSide = 'e';\n this.hitField = f;\n // north edge\n } else if (Math.abs(e.clientY - top) < edgeY && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = 'n';\n this.hitField = f;\n // south edge\n } else if (Math.abs(e.clientY - bottom) < edgeY && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = 's';\n this.hitField = f;\n } else if (e.clientY <= bottom && e.clientY >= top && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = null;\n this.hitField = f;\n }\n });\n\n if (this.hitField && e.shiftKey === false && e.altKey === false) {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // Snapshot field state before any resize/move begins\n snapshotField(this.hitField.dataItem);\n // Snapshot all currently selected fields (for multi-field move undo)\n this.selected.forEach(f => snapshotField(f.dataItem));\n\n // mouse down on a field, select it and note the start location\n if (this.hitField.selected === false) {\n // unselect all other fields\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [this.hitField];\n this.selectFields.emit([this.hitField.dataItem]);\n }\n\n const { height, width } = this.hitField.getBoundingClientRect();\n const fdims = { left: this.hitField.offsetLeft, top: this.hitField.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n\n this.startLocations = this.selected.map(f => {\n const { height, width } = f.getBoundingClientRect();\n const beHtml = f as HTMLElement;\n return { top: beHtml.offsetTop, left: beHtml.offsetLeft, height, width };\n });\n this.selectionBox = null;\n } else if (this.hitField && e.altKey === true) {\n // Alt+click: remove field from selection\n if (this.hitField.selected === true) {\n this.hitField.selected = false;\n this.selected = this.selected.filter(f => f !== this.hitField);\n this.selectFields.emit(this.selected.map(si => si.dataItem));\n }\n this.hitField = null;\n this.startMouse = null;\n this.startLocations = null;\n this.selectionBox = null;\n updateSelectionBox.bind(this)();\n } else if (this.hitField && e.shiftKey === true) {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n if (this.hitField.selected === true) {\n // Toggle off: remove from selection\n this.hitField.selected = false;\n this.selected = this.selected.filter(f => f !== this.hitField);\n this.selectFields.emit(this.selected.map(si => si.dataItem));\n this.hitField = null;\n this.startMouse = null;\n this.startLocations = null;\n this.selectionBox = null;\n updateSelectionBox.bind(this)();\n } else {\n // Add to selection\n this.hitField.selected = true;\n this.selected = [...this.selected, this.hitField];\n this.selectFields.emit(this.selected.map(si => si.dataItem));\n\n const { height, width } = this.hitField.getBoundingClientRect();\n const fdims = { left: this.hitField.offsetLeft, top: this.hitField.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n\n this.startLocations = this.selected.map(f => {\n const { height, width } = f.getBoundingClientRect();\n const beHtml = f as HTMLElement;\n return { top: beHtml.offsetTop, left: beHtml.offsetLeft, height, width };\n });\n this.selectionBox = null;\n }\n } else {\n // move down on empty space, store pending start for selection box\n this.startLocations = null;\n this.startMouse = null;\n this.selectionBox = null;\n this._pendingSelectionBox = { x: e.clientX, y: e.clientY };\n disableSelection();\n\n if (!e.shiftKey && !e.altKey) {\n this.unselect();\n this.selectFields.emit([]);\n this.selected = [];\n updateSelectionBox.bind(this)();\n }\n }\n}\n\nexport function outOfBounds(futureField) {\n return (\n futureField.height <= 5 ||\n futureField.left < 0 ||\n futureField.top < 0 ||\n futureField.left + futureField.width >= futureField.pageDimensions.width ||\n futureField.top + futureField.height >= futureField.pageDimensions.height\n );\n}\nexport function mouseMove(event) {\n event.preventDefault();\n if (this._isToolboxDragging) return;\n // Disable mouse move interactions in preview mode or when template is locked\n if (this.mode === 'preview' || this._template?.locked) {\n return;\n }\n\n // We have the mouse held down on a field edge to resize it.\n if (this.hitField && this.edgeSide && this.startMouse && event.buttons === 1) {\n disableSelection();\n const movedX = event.screenX - this.startMouse.x;\n const movedY = event.screenY - this.startMouse.y;\n var scale = this.hitField.dataItem.formElementType === 'signature' && this._template.fixSignatureScale;\n\n // Calculate candidate dimensions before snapping\n let candidateLeft = this.startMouse.left;\n let candidateTop = this.startMouse.top;\n let candidateWidth = this.startMouse.width;\n let candidateHeight = this.startMouse.height;\n\n switch (this.edgeSide) {\n case 'n':\n if (scale) {\n candidateHeight = this.startMouse.height - movedY;\n candidateWidth = candidateHeight * (this.startMouse.width / this.startMouse.height);\n } else {\n candidateTop = this.startMouse.top + movedY;\n candidateHeight = this.startMouse.height - movedY;\n }\n break;\n case 's':\n if (scale) {\n candidateHeight = this.startMouse.height + movedY;\n candidateWidth = candidateHeight * (this.startMouse.width / this.startMouse.height);\n } else {\n candidateHeight = this.startMouse.height + movedY;\n }\n break;\n case 'e':\n if (scale) {\n candidateWidth = this.startMouse.width + movedX;\n candidateHeight = candidateWidth * (this.startMouse.height / this.startMouse.width);\n } else {\n candidateWidth = this.startMouse.width + movedX;\n }\n break;\n case 'w':\n if (scale) {\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = candidateWidth * (this.startMouse.height / this.startMouse.width);\n candidateLeft = this.startMouse.left + movedX;\n } else {\n candidateLeft = this.startMouse.left + movedX;\n candidateWidth = this.startMouse.width - movedX;\n }\n break;\n case 'se':\n if (scale) {\n candidateWidth = this.startMouse.width + movedX;\n candidateHeight = candidateWidth / (this.startMouse.width / this.startMouse.height);\n } else {\n candidateWidth = this.startMouse.width + movedX;\n candidateHeight = this.startMouse.height + movedY;\n }\n break;\n case 'nw':\n if (scale) {\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = candidateWidth / (this.startMouse.width / this.startMouse.height);\n candidateLeft = this.startMouse.left + movedX;\n candidateTop = this.startMouse.top + (this.startMouse.height - candidateHeight);\n } else {\n candidateLeft = this.startMouse.left + movedX;\n candidateTop = this.startMouse.top + movedY;\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = this.startMouse.height - movedY;\n }\n break;\n case 'ne':\n if (scale) {\n candidateWidth = this.startMouse.width + movedX;\n candidateHeight = candidateWidth / (this.startMouse.width / this.startMouse.height);\n candidateTop = this.startMouse.top + (this.startMouse.height - candidateHeight);\n } else {\n candidateWidth = this.startMouse.width + movedX;\n candidateTop = this.startMouse.top + movedY;\n candidateHeight = this.startMouse.height - movedY;\n }\n break;\n case 'sw':\n if (scale) {\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = candidateWidth / (this.startMouse.width / this.startMouse.height);\n candidateLeft = this.startMouse.left + movedX;\n } else {\n candidateLeft = this.startMouse.left + movedX;\n candidateWidth = this.startMouse.width - movedX;\n candidateHeight = this.startMouse.height + movedY;\n }\n break;\n }\n\n // Snap active resize edges\n const allFields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const resizeSnap = calculateResizeSnap(\n candidateLeft, candidateTop, candidateWidth, candidateHeight,\n this.edgeSide, allFields, this.pageNum, [this.hitField.dataItem.id]\n );\n\n if (scale) {\n const aspect = this.startMouse.width / this.startMouse.height;\n const hasH = resizeSnap.edges.e !== undefined || resizeSnap.edges.w !== undefined;\n const hasV = resizeSnap.edges.n !== undefined || resizeSnap.edges.s !== undefined;\n\n // When both axes snap on a corner, pick the closer one\n let useH = hasH;\n let useV = hasV;\n if (hasH && hasV && this.edgeSide.length === 2) {\n const hDist = resizeSnap.edges.e !== undefined\n ? Math.abs((candidateLeft + candidateWidth) - resizeSnap.edges.e)\n : Math.abs(candidateLeft - resizeSnap.edges.w);\n const vDist = resizeSnap.edges.s !== undefined\n ? Math.abs((candidateTop + candidateHeight) - resizeSnap.edges.s)\n : Math.abs(candidateTop - resizeSnap.edges.n);\n if (hDist <= vDist) { useV = false; } else { useH = false; }\n }\n\n if (useV && !useH) {\n if (resizeSnap.edges.n !== undefined) {\n candidateHeight = (candidateTop + candidateHeight) - resizeSnap.edges.n;\n candidateTop = resizeSnap.edges.n;\n }\n if (resizeSnap.edges.s !== undefined) {\n candidateHeight = resizeSnap.edges.s - candidateTop;\n }\n candidateWidth = candidateHeight * aspect;\n } else if (useH) {\n if (resizeSnap.edges.w !== undefined) {\n candidateWidth = (candidateLeft + candidateWidth) - resizeSnap.edges.w;\n candidateLeft = resizeSnap.edges.w;\n }\n if (resizeSnap.edges.e !== undefined) {\n candidateWidth = resizeSnap.edges.e - candidateLeft;\n }\n candidateHeight = candidateWidth / aspect;\n }\n\n if (this.edgeSide.includes('n')) candidateTop = (this.startMouse.top + this.startMouse.height) - candidateHeight;\n if (this.edgeSide.includes('w')) candidateLeft = (this.startMouse.left + this.startMouse.width) - candidateWidth;\n\n // Only show guides for the axis we used\n const guides = resizeSnap.guides.filter(g =>\n (useH && g.orientation === 'v') || (useV && g.orientation === 'h')\n );\n showSnapGuides.bind(this)(guides);\n } else {\n if (resizeSnap.edges.n !== undefined) {\n candidateHeight = (candidateTop + candidateHeight) - resizeSnap.edges.n;\n candidateTop = resizeSnap.edges.n;\n }\n if (resizeSnap.edges.s !== undefined) {\n candidateHeight = resizeSnap.edges.s - candidateTop;\n }\n if (resizeSnap.edges.w !== undefined) {\n candidateWidth = (candidateLeft + candidateWidth) - resizeSnap.edges.w;\n candidateLeft = resizeSnap.edges.w;\n }\n if (resizeSnap.edges.e !== undefined) {\n candidateWidth = resizeSnap.edges.e - candidateLeft;\n }\n showSnapGuides.bind(this)(resizeSnap.guides);\n }\n\n if (!outOfBounds({ ...this.hitField.dataItem, left: candidateLeft / this.zoom, top: candidateTop / this.zoom, width: candidateWidth / this.zoom, height: candidateHeight / this.zoom })) {\n this.hitField.style.left = candidateLeft + 'px';\n this.hitField.style.top = candidateTop + 'px';\n this.hitField.style.width = candidateWidth + 'px';\n this.hitField.style.height = candidateHeight + 'px';\n this.hitField.dataItem = {\n ...this.hitField.dataItem,\n left: candidateLeft / this.zoom,\n top: candidateTop / this.zoom,\n width: candidateWidth / this.zoom,\n height: candidateHeight / this.zoom,\n };\n }\n\n debounce.bind(this)({ action: 'update', data: recalculateCoordinates(this.hitField.dataItem) }, 700);\n } else if ((this.selectionBox || this._pendingSelectionBox) && event.buttons === 1) {\n // Check minimum drag distance before activating selection box\n if (!this.selectionBox && this._pendingSelectionBox) {\n const dx = event.clientX - this._pendingSelectionBox.x;\n const dy = event.clientY - this._pendingSelectionBox.y;\n if (Math.abs(dx) < MIN_DRAG_DISTANCE && Math.abs(dy) < MIN_DRAG_DISTANCE) return;\n this.selectionBox = this._pendingSelectionBox;\n this._pendingSelectionBox = null;\n this.component.style.cursor = 'crosshair';\n }\n\n this.isBoxing = true;\n // draw the multiple selection box\n var dragBox = this.component.shadowRoot.getElementById('ls-drag-selector') as HTMLElement;\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n var leftOffset = frame.getBoundingClientRect().left;\n var topOffset = frame.getBoundingClientRect().top;\n\n const movedX = event.clientX - this.selectionBox.x;\n const movedY = event.clientY - this.selectionBox.y;\n\n // allow for the frame to be scrolled\n dragBox.style.visibility = 'visible';\n dragBox.style.left = (this.selectionBox.x > event.clientX ? event.clientX : this.selectionBox.x) - leftOffset + frame.scrollLeft + 'px';\n dragBox.style.top = (this.selectionBox.y > event.clientY ? event.clientY : this.selectionBox.y) - topOffset + frame.scrollTop + 'px';\n dragBox.style.width = Math.abs(movedX) + 'px';\n dragBox.style.height = Math.abs(movedY) + 'px';\n\n // Move one or more selected items\n } else if (this.startLocations && !this.edgeSide && this.startMouse && event.buttons === 1) {\n // Block move if selection spans multiple pages\n const pages = new Set(this.selected?.map(f => f.dataItem?.page));\n if (pages.size > 1) {\n showMoveBlockedTooltip.bind(this)(event);\n return;\n }\n\n this.isMoving = true;\n disableSelection();\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // Dismiss any open date picker when moving fields\n if (this.selected?.length) {\n this.selected.forEach(f => {\n const input = f.shadowRoot?.getElementById('editing-input') as HTMLInputElement;\n if (input) input.blur();\n });\n }\n\n // Move one or more selected items\n const movedX = event.screenX - this.startMouse.x;\n const movedY = event.screenY - this.startMouse.y;\n if (this.selected?.length) {\n // Calculate snap based on the primary (first) selected field\n const primaryLeft = this.startLocations[0].left + movedX;\n const primaryTop = this.startLocations[0].top + movedY;\n const primaryWidth = this.startLocations[0].width;\n const primaryHeight = this.startLocations[0].height;\n\n const allFields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const excludeIds = this.selected.map(s => s.dataItem.id);\n const snap = calculateSnap(primaryLeft, primaryTop, primaryWidth, primaryHeight, allFields, this.pageNum, excludeIds);\n\n // Apply snap offset to all selected fields\n const snapOffsetX = snap.x !== null ? snap.x - primaryLeft : 0;\n const snapOffsetY = snap.y !== null ? snap.y - primaryTop : 0;\n\n for (let i = 0; i < this.selected.length; i++) {\n const newLeft = this.startLocations[i].left + movedX + snapOffsetX;\n const newTop = this.startLocations[i].top + movedY + snapOffsetY;\n if (\n newLeft >= 0 &&\n newTop >= 0 &&\n newLeft <= (this.pageDimensions[this.pageNum - 1].width - this.selected[i].dataItem.width) * this.zoom &&\n newTop <= (this.pageDimensions[this.pageNum - 1].height - this.selected[i].dataItem.height) * this.zoom\n ) {\n this.selected[i].style.left = Math.round(newLeft) + 'px';\n this.selected[i].style.top = Math.round(newTop) + 'px';\n }\n }\n\n showSnapGuides.bind(this)(snap.guides);\n updateSelectionBox.bind(this)();\n }\n }\n}\n\nexport function mouseUp(event) {\n this.edgeSide = null;\n this.startMouse = null;\n this._pendingSelectionBox = null;\n this.component.style.cursor = 'auto';\n enableSelection();\n clearSnapGuides.bind(this)();\n hideMoveBlockedTooltip.bind(this)();\n\n // find what was inside the selection box emit the select event and change their style\n if (this.selectionBox && this.isBoxing) {\n this.isBoxing = false;\n var dragBox = this.component.shadowRoot.getElementById('ls-drag-selector') as HTMLElement;\n var fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n const isShift = event.shiftKey;\n const isAlt = event.altKey;\n this.selectionBox = null;\n const found = findIn(fields, dragBox, !isAlt, isShift || isAlt);\n dragBox.style.visibility = 'hidden';\n\n if (isAlt) {\n const removeIds = new Set(found.map(f => f.dataItem?.id));\n found.forEach(f => { f.selected = false; });\n this.selected = this.selected.filter(f => !removeIds.has(f.dataItem?.id));\n } else if (isShift) {\n const existingIds = new Set(this.selected.map(f => f.dataItem?.id));\n const newFields = found.filter(f => !existingIds.has(f.dataItem?.id));\n this.selected = [...this.selected, ...newFields];\n } else {\n this.selected = Array.from(found);\n }\n\n this.selectFields.emit(this.selected.map(fx => fx.dataItem));\n updateSelectionBox.bind(this)();\n }\n}\n\nexport function mouseClick(e) {\n // Disable click interactions in preview mode or when template is locked\n if (this.mode === 'preview' || this._template?.locked) {\n return;\n }\n \n // check we're not moving fields\n if (this.isMoving) {\n // End dragging fields\n this.isMoving = false;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field') as HTMLLsEditorFieldElement[];\n const divFrame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLDivElement;\n const selected = Array.from(fields).filter(fx => fx.selected);\n\n this.mutate.emit(\n Array.from(fields)\n .filter(fx => fx.selected)\n .map(fx => {\n // Calculate new positions and update the dataItem on the control\n const delta = {\n ...fx.dataItem,\n ...findDimensions(divFrame, fx, fx.dataItem.pageDimensions.height, fx.dataItem.pageDimensions.width, this.zoom),\n };\n // update the data in the html element\n fx.dataItem = delta;\n // send an update event to be processed\n return { action: 'update', data: delta };\n }),\n );\n this.selectFields.emit(selected.map(fx => fx.dataItem));\n updateSelectionBox.bind(this)();\n } else {\n // reset the selection box location\n this.selectionBox = null;\n\n let hitAny = false;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field') as HTMLLsEditorFieldElement[];\n fields.forEach(f => {\n const { left, top, bottom, right } = f.getBoundingClientRect();\n if (e.clientY <= bottom && e.clientY >= top && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = null;\n this.hitField = f;\n if (!e.shiftKey && !e.altKey) {\n fields.forEach(ft => (ft.selected = false));\n f.selected = true;\n }\n // shift/alt+click: mouseDown already toggled selected state, preserve it\n hitAny = true;\n }\n });\n\n // Track click position for paste targeting\n if (hitAny) {\n clearLastClickPosition();\n } else {\n setLastClickPosition(e.clientX, e.clientY);\n }\n\n this.selected = Array.from(fields).filter(fx => fx.selected);\n this.selectFields.emit(this.selected.map(fx => fx.dataItem));\n updateSelectionBox.bind(this)();\n }\n}\n\nexport function showSnapGuides(guides: { orientation: 'h' | 'v'; position: number }[]) {\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n let container = this.component.shadowRoot.getElementById('ls-snap-guides');\n if (!container) {\n container = document.createElement('div');\n container.id = 'ls-snap-guides';\n container.style.position = 'absolute';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.pointerEvents = 'none';\n container.style.zIndex = '9999';\n frame.appendChild(container);\n }\n\n container.innerHTML = '';\n for (const guide of guides) {\n const line = document.createElement('div');\n line.style.position = 'absolute';\n line.style.backgroundColor = 'transparent';\n if (guide.orientation === 'v') {\n line.style.left = guide.position + 'px';\n line.style.top = '0';\n line.style.width = '0';\n line.style.height = '100%';\n line.style.borderLeft = '1px dashed var(--gray-50, #c8c9cc)';\n } else {\n line.style.top = guide.position + 'px';\n line.style.left = '0';\n line.style.width = '100%';\n line.style.height = '0';\n line.style.borderTop = '1px dashed var(--gray-50, #c8c9cc)';\n }\n container.appendChild(line);\n }\n}\n\nexport function clearSnapGuides() {\n const container = this.component.shadowRoot.getElementById('ls-snap-guides');\n if (container) container.innerHTML = '';\n}\n\nexport function toolboxDragStart(fieldData: IToolboxField) {\n // Disable toolbox dragging when template is locked\n if (this._template?.locked) {\n return;\n }\n // Cancel any existing toolbox drag\n if (this._cancelToolboxDrag) {\n this._cancelToolboxDrag();\n }\n\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n const zoom = this.zoom;\n this._isToolboxDragging = true;\n let hasMoved = false;\n\n // Prevent text selection during drag\n disableSelection();\n\n // Add dragging class to toolbox fields (shadow DOM cursor override)\n this.component.shadowRoot.querySelectorAll('ls-left-bar, ls-compose-loader').forEach(bar => {\n bar.shadowRoot?.querySelectorAll('ls-toolbox-field').forEach(el => el.classList.add('ls-dv-dragging'));\n });\n\n // Create ghost preview element matching the original drag image style\n const ghost = document.createElement('div');\n ghost.id = 'ls-toolbox-ghost';\n ghost.style.position = 'fixed';\n ghost.style.width = fieldData.defaultWidth * zoom + 'px';\n ghost.style.height = fieldData.defaultHeight * zoom + 'px';\n ghost.style.border = `1px dashed ${defaultRolePalette[this.signer % 100].s60}`;\n const s20 = defaultRolePalette[this.signer % 100].s20.replace('#', '');\n const r = parseInt(s20.substring(0, 2), 16);\n const g = parseInt(s20.substring(2, 4), 16);\n const b = parseInt(s20.substring(4, 6), 16);\n ghost.style.background = `rgba(${r},${g},${b},0.5)`;\n ghost.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.10), 0 2px 4px -1px rgba(0, 0, 0, 0.06)';\n ghost.style.pointerEvents = 'none';\n ghost.style.zIndex = '10000';\n ghost.style.visibility = 'hidden';\n ghost.style.boxSizing = 'content-box';\n ghost.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';\n ghost.style.fontSize = Math.round(DEFAULT_FONT_SIZE * zoom) + 'px';\n ghost.style.color = defaultRolePalette[this.signer % 100].s100;\n ghost.style.overflow = 'visible';\n ghost.style.whiteSpace = 'nowrap';\n ghost.style.display = 'flex';\n ghost.style.alignItems = 'center';\n ghost.style.textTransform = 'capitalize';\n ghost.innerHTML = fieldData.formElementType;\n\n // Assignee label below ghost\n const assignee = this.mode === 'compose'\n ? this._recipients?.find(r => r.signerIndex === this.signer)\n : this._template.roles.find(r => r.signerIndex === this.signer);\n const assigneeName = this.mode === 'compose' && assignee?.previousRecipientDecides\n ? 'To Be Decided'\n : this.mode === 'compose'\n ? `${assignee?.firstName} ${assignee?.lastName}`\n : assignee?.name || (this.signer === 0 ? 'Sender' : `Participant ${this.signer}`);\n const assigneeLabel = document.createElement('p');\n assigneeLabel.style.position = 'absolute';\n assigneeLabel.style.color = 'var(--gray-80, #3a3a3a)';\n assigneeLabel.style.bottom = `-${1 * zoom}rem`;\n assigneeLabel.style.left = '0';\n assigneeLabel.style.margin = '0';\n assigneeLabel.style.padding = '0';\n assigneeLabel.style.lineHeight = '1';\n assigneeLabel.style.fontSize = `${0.625 * zoom}rem`;\n assigneeLabel.style.whiteSpace = 'nowrap';\n assigneeLabel.style.fontFamily = 'sans-serif';\n assigneeLabel.style.textTransform = 'none';\n assigneeLabel.style.pointerEvents = 'none';\n assigneeLabel.textContent = `${dvI18n.t('fieldproperties.assignedto')} ${assigneeName}`;\n ghost.appendChild(assigneeLabel);\n\n this.component.shadowRoot.appendChild(ghost);\n\n // Info chip at bottom of screen\n const chip = document.createElement('div');\n chip.id = 'ls-esc-chip';\n chip.style.position = 'fixed';\n chip.style.bottom = '1.5rem';\n chip.style.left = '50%';\n chip.style.transform = 'translateX(-50%)';\n chip.style.padding = '0.375rem 0.75rem';\n chip.style.borderRadius = '0.625rem';\n chip.style.background = 'var(--gray-100, #1f2937)';\n chip.style.color = 'white';\n chip.style.fontSize = '0.75rem';\n chip.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';\n chip.style.pointerEvents = 'none';\n chip.style.zIndex = '10000';\n chip.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1)';\n chip.textContent = 'Press Esc to cancel field placement';\n this.component.shadowRoot.appendChild(chip);\n\n const onMouseMove = (e: MouseEvent) => {\n e.preventDefault();\n hasMoved = true;\n const dragWidth = fieldData.defaultWidth * zoom;\n const dragHeight = fieldData.defaultHeight * zoom;\n\n const frameRect = frame.getBoundingClientRect();\n const isOverFrame = e.clientX >= frameRect.left && e.clientX <= frameRect.right &&\n e.clientY >= frameRect.top && e.clientY <= frameRect.bottom;\n const isDragging = e.buttons === 1;\n\n // Only show grabbing cursor when ghost is visible\n let cursorStyle = document.getElementById('ls-drag-cursor') as HTMLStyleElement;\n if ((isOverFrame || isDragging) && !cursorStyle) {\n cursorStyle = document.createElement('style');\n cursorStyle.id = 'ls-drag-cursor';\n cursorStyle.textContent = '* { cursor: grabbing !important; }';\n document.head.appendChild(cursorStyle);\n } else if (!isOverFrame && !isDragging && cursorStyle) {\n cursorStyle.remove();\n }\n\n // When dragging (mouse held): show ghost over wrapper area\n // When click-to-place (mouse not held): only show over document frame\n if (isOverFrame) {\n ghost.style.visibility = 'visible';\n ghost.style.opacity = '1';\n const x = e.clientX - frameRect.left + frame.scrollLeft;\n const y = e.clientY - frameRect.top + frame.scrollTop;\n let left = x - dragWidth / 2;\n let top = y - dragHeight / 2;\n\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const snap = calculateSnap(left, top, dragWidth, dragHeight, fields, this.pageNum);\n ghost.style.left = (snap.x !== null ? snap.x + frameRect.left - frame.scrollLeft : e.clientX - dragWidth / 2) + 'px';\n ghost.style.top = (snap.y !== null ? snap.y + frameRect.top - frame.scrollTop : e.clientY - dragHeight / 2) + 'px';\n\n showSnapGuides.bind(this)(snap.guides);\n } else if (isDragging) {\n ghost.style.visibility = 'visible';\n ghost.style.opacity = '0.5';\n ghost.style.left = (e.clientX - dragWidth / 2) + 'px';\n ghost.style.top = (e.clientY - dragHeight / 2) + 'px';\n clearSnapGuides.bind(this)();\n } else {\n ghost.style.visibility = 'hidden';\n clearSnapGuides.bind(this)();\n }\n };\n\n const cleanup = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('keydown', onKeyDown);\n ghost.remove();\n chip.remove();\n clearSnapGuides.bind(this)();\n enableSelection();\n const cursorStyle = document.getElementById('ls-drag-cursor');\n if (cursorStyle) cursorStyle.remove();\n this.component.shadowRoot.querySelectorAll('ls-left-bar, ls-compose-loader').forEach(bar => {\n bar.shadowRoot?.querySelectorAll('ls-toolbox-field').forEach(el => el.classList.remove('ls-dv-dragging'));\n });\n this._isToolboxDragging = false;\n this._cancelToolboxDrag = null;\n };\n\n const onMouseUp = (e: MouseEvent) => {\n // Ignore mouseup if it's from the same click that started the drag (no movement yet)\n if (!hasMoved) return;\n\n const frameRect = frame.getBoundingClientRect();\n const shouldPlace = e.clientX >= frameRect.left && e.clientX <= frameRect.right &&\n e.clientY >= frameRect.top && e.clientY <= frameRect.bottom;\n\n cleanup();\n\n if (shouldPlace) {\n\n const dragWidth = fieldData.defaultWidth * zoom;\n const dragHeight = fieldData.defaultHeight * zoom;\n const x = e.clientX - frameRect.left + frame.scrollLeft;\n const y = e.clientY - frameRect.top + frame.scrollTop;\n let left = x - dragWidth / 2;\n let top = y - dragHeight / 2;\n\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const snap = calculateSnap(left, top, dragWidth, dragHeight, fields, this.pageNum);\n if (snap.x !== null) left = snap.x;\n if (snap.y !== null) top = snap.y;\n\n const finalTop = top / zoom;\n const finalLeft = left / zoom;\n\n // Check if field fits on page - constrain to page boundaries\n const pageWidth = this.pageDimensions[this.pageNum - 1].width;\n const pageHeight = this.pageDimensions[this.pageNum - 1].height;\n const constrainedLeft = Math.max(0, Math.min(finalLeft, pageWidth - fieldData.defaultWidth));\n const constrainedTop = Math.max(0, Math.min(finalTop, pageHeight - fieldData.defaultHeight));\n\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));\n\n const id = btoa('ele' + crypto.randomUUID());\n const newData: LSMutateEvent = {\n action: 'create',\n data: {\n id,\n value: fieldData.formElementType === 'checkbox' ? 'false' : '',\n formElementType: fieldData.formElementType,\n elementType: fieldData.elementType,\n validation: fieldData.validation,\n substantive: false,\n top: constrainedTop,\n left: constrainedLeft,\n hideBorder: false,\n height: fieldData.defaultHeight,\n width: fieldData.defaultWidth,\n pageDimensions: this.pageDimensions[this.pageNum - 1],\n fontName: this.fontFamily,\n fontSize: this.fontSize,\n align: 'left',\n signer: this.signer,\n page: this.pageNum,\n mapTo: null,\n label: '',\n helpText: null,\n logicGroup: null,\n optional: fieldData.formElementType === 'checkbox',\n options: null,\n logicAction: null,\n labelExtra: null,\n fieldOrder: null,\n ax: constrainedLeft > 0 ? constrainedLeft / this.pageDimensions[this.pageNum - 1].width : 0,\n ay: constrainedTop > 0 ? constrainedTop / this.pageDimensions[this.pageNum - 1].height : 0,\n bx: (constrainedLeft + fieldData.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,\n by: (constrainedTop + fieldData.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,\n templateId: this._template.id,\n } as LSApiElement,\n };\n\n this.mutate.emit([newData]);\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n cleanup();\n }\n };\n\n this._cancelToolboxDrag = cleanup;\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('keydown', onKeyDown);\n}\n\nexport function mouseDoubleClick(event) {\n // Disable double-click field creation in preview mode or when template is locked\n if (this.mode === 'preview' || this._template?.locked) {\n return;\n }\n \n console.log('double click', this.fieldTypeSelected, this.signer);\n try {\n let data: IToolboxField = this.fieldTypeSelected as IToolboxField;\n\n if (this.checkType('APPROVER') && data.elementType === 'signature') {\n data = {\n label: 'Text',\n formElementType: 'text',\n elementType: 'text',\n validation: 0,\n defaultHeight: FIELD_DEFAULTS['text'].defaultHeight,\n defaultWidth: FIELD_DEFAULTS['text'].defaultWidth,\n };\n }\n\n if (this.signer === 0 && data.elementType === 'signature') {\n data = {\n label: 'Auto Sign',\n formElementType: 'auto sign',\n elementType: 'admin',\n validation: 3000,\n defaultHeight: FIELD_DEFAULTS['auto sign'].defaultHeight,\n defaultWidth: FIELD_DEFAULTS['auto sign'].defaultWidth,\n };\n }\n // Unselect all current selected items\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n // Make a new API compatible id for a template element (prefix 'ele')\n const id = btoa('ele' + crypto.randomUUID());\n const pageWidth = this.pageDimensions[this.pageNum - 1].width;\n const pageHeight = this.pageDimensions[this.pageNum - 1].height;\n const rawTop = event.offsetY / this.zoom + frame.scrollTop;\n const rawLeft = event.offsetX / this.zoom + frame.scrollLeft;\n const top = Math.max(0, Math.min(rawTop, pageHeight - data.defaultHeight));\n const left = Math.max(0, Math.min(rawLeft, pageWidth - data.defaultWidth));\n\n // TODO: Put these defaults somewhere sensible\n const newData: LSMutateEvent = {\n action: 'create',\n data: {\n id,\n value: data.formElementType === 'checkbox' ? 'false' : '',\n formElementType: data.formElementType,\n elementType: data.elementType,\n validation: data.validation,\n substantive: false,\n top,\n left,\n hideBorder: false,\n height: data.defaultHeight,\n width: data.defaultWidth,\n pageDimensions: this.pageDimensions[this.pageNum - 1],\n fontName: DEFAULT_FONT_NAME,\n fontSize: DEFAULT_FONT_SIZE,\n align: 'left',\n signer: this.signer,\n page: this.pageNum,\n mapTo: null,\n label: '',\n helpText: null,\n logicGroup: null,\n optional: data.formElementType === 'checkbox',\n options: null,\n logicAction: null,\n labelExtra: null,\n fieldOrder: null,\n ax: left > 0 ? left / this.pageDimensions[this.pageNum - 1].width : 0,\n ay: top > 0 ? top / this.pageDimensions[this.pageNum - 1].height : 0,\n bx: (left + data.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,\n by: (top + data.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,\n templateId: this._template.id,\n } as LSApiElement,\n };\n this.mutate.emit([newData]);\n } catch (e) {\n console.error(e);\n }\n}\n",":host {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n width: 100%;\n position: relative;\n}\n\n.ls-dv-toolbar-numeric {\n width: 2.813rem;\n max-height: 1.125rem;\n margin: 0px;\n padding: 0px;\n}\n\n* {\n margin: 0;\n box-sizing: border-box;\n}\n\n.ls-dv-field-set {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n width: 100%;\n}\n\n.ls-dv-field-properties-section {\n display: flex;\n position: relative;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.ls-dv-row {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n\n.ls-dv-multi-button-group-row {\n display: flex;\n gap: 0.5rem;\n}\n\n.ls-dv-field-properties-section-text {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n padding: 0.25rem;\n}\n\n.ls-dv-field-properties-section-title {\n color: $gray-90;\n font-size: 1rem;\n font-style: normal;\n font-weight: 500;\n line-height: 1.25rem; /* 142.857% */\n}\n\n.ls-dv-field-properties-section-description {\n overflow: hidden;\n color: $gray-80;\n text-overflow: ellipsis;\n font-size: 0.75rem;\n font-style: normal;\n font-weight: 400;\n line-height: 0.75rem; /* 120% */\n}\n\n.ls-dv-input-row {\n display: flex;\n gap: 0.5rem;\n}\n\n.ls-dv-input-row .ls-dv-input-wrapper input {\n width: 9.313rem;\n max-width: 9.313rem;\n}\n\n/* Global Styles */\n\np {\n color: $gray-80;\n font-family: var(--font-family);\n font-size: var(--text-sm);\n font-style: normal;\n font-weight: 400;\n line-height: var(--text-sm-line-height);\n}\n\na {\n color: $primary-60;\n font-size: var(--text-sm);\n font-style: normal;\n font-weight: 400;\n line-height: var(--text-sm-line-height);\n cursor: pointer;\n}\n\na:hover {\n text-decoration: underline;\n color: $primary-70;\n}\n\n.ls-dv-button-link,\n.ls-dv-button-link:hover {\n all: unset;\n}\n\nselect {\n appearance: none;\n height: 36px;\n}\n\n.ls-dv-input-wrapper {\n position: relative;\n width: 100%;\n}\n\n#selectorIcon {\n position: absolute;\n top: 50%;\n right: 0.675rem;\n transform: translateY(-50%);\n pointer-events: none;\n color: $gray-80;\n}\n\n#selectLeadingIcon {\n position: absolute;\n top: 50%;\n left: 0.675rem;\n transform: translateY(-50%);\n pointer-events: none;\n color: $gray-80;\n}\n\n#selectLeadingIconDisabled {\n position: absolute;\n top: 50%;\n left: 0.675rem;\n transform: translateY(-50%);\n pointer-events: none;\n color: $gray-50;\n}\n\n.ls-dv-has-leading-icon {\n padding-left: 2.5rem;\n}\n\ninput,\nselect,\ntextarea {\n border: 1px solid $gray-40;\n box-shadow: 0 1px 0.125rem rgba(0, 0, 0, 0.05);\n padding: 0.5rem 0.75rem;\n font-family: var(--font-family);\n font-size: var(--text-sm);\n border-radius: 0.625rem;\n color: $gray-100;\n font-weight: 400;\n}\n\ninput::placeholder,\nselect::placeholder,\ntextarea::placeholder {\n color: $gray-60;\n}\n\ninput:hover:not(:disabled),\nselect:hover:not(:disabled),\ntextarea:hover:not(:disabled) {\n border-color: $gray-50;\n background-color: $white;\n}\n\ninput:focus:not(:disabled),\nselect:focus:not(:disabled),\ntextarea:focus:not(:disabled) {\n outline: none;\n box-shadow: 0 0 0 0.25rem $primary-40;\n border-color: $primary-60;\n background-color: $white;\n}\n\ninput:active:not(:disabled),\nselect:active:not(:disabled),\ntextarea:active:not(:disabled) {\n border-color: $primary-50;\n}\n\ninput:disabled,\nselect:disabled,\ntextarea:disabled {\n cursor: not-allowed;\n background-color: $gray-10;\n color: $gray-50;\n box-shadow: none;\n}\n\ninput[type='checkbox'] {\n appearance: none;\n position: relative;\n height: 1rem;\n width: 1rem;\n padding: 0.25rem;\n border-radius: var(--radius-sm);\n border: 1px solid #d1d5db;\n background-color: #ffffff;\n cursor: pointer;\n}\n\ninput[type='checkbox']:checked,\ninput[type='checkbox'].ls-dv-indeterminate {\n background-color: $primary-60;\n border: none;\n}\n\ninput[type='checkbox']:checked::after {\n content: '';\n position: absolute;\n top: 45%;\n left: 50%;\n transform: translate(-50%, -50%) rotate(-45deg) scale(-1, 1);\n width: 0.5rem;\n height: 0.25rem;\n border-bottom: 0.125rem solid white;\n border-right: 0.125rem solid white;\n}\n\ninput[type='checkbox'].ls-dv-indeterminate::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 0.5rem;\n height: 0.125rem;\n background-color: white;\n}\n\ninput[type='checkbox']:checked:hover,\ninput[type='checkbox'].ls-dv-indeterminate:hover {\n background-color: $primary-70;\n border: none;\n}\n\ninput[type='checkbox']:hover {\n border: 1px solid #9ca3af;\n}\n\ninput[type='checkbox']:focus,\ninput[type='checkbox']:active {\n outline: none;\n box-shadow: 0 0 0 0.25rem $primary-20;\n background-color: #f0f4f8;\n}\n\ninput[type='checkbox']:disabled {\n background-color: #f3f4f6;\n outline: none;\n cursor: not-allowed;\n}\n\ninput[type='checkbox']:disabled:checked {\n background-color: #e5e7eb;\n border: none;\n outline: none;\n cursor: not-allowed;\n}\n\n.ls-dv-checkbox-container {\n display: flex;\n gap: 0.5rem;\n width: 100%;\n}\n\n.ls-dv-checkbox-label {\n color: $gray-100;\n font-size: 1rem;\n font-style: normal;\n font-weight: 400;\n line-height: 1rem;\n}\n\n.ls-dv-form-label {\n color: $gray-100;\n font-size: 1rem;\n font-style: normal;\n font-weight: 500;\n line-height: 1.5rem;\n}\n\n.ls-dv-form-field {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n width: 100%;\n}\n\n.ls-dv-loading-box {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100vh;\n color: $primary-60;\n}\n\nbutton {\n border: 0;\n appearance: button;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-lg);\n background-color: $primary-60;\n color: white;\n text-transform: capitalize;\n min-height: 2.25rem;\n min-width: 2.25rem;\n}\n\nbutton.ls-dv-tertiary-grey {\n border: 1px solid $gray-40;\n background-color: white;\n color: $gray-80;\n}\n\nbutton.ls-dv-tertiary-grey:hover {\n border: 1px solid $gray-50;\n background: $gray-10;\n}\n\n.ls-dv-button-group {\n display: flex;\n border-radius: 0.625rem;\n border: 1px solid $gray-30;\n background: $white;\n overflow: clip;\n width: 100%;\n}\n\n.ls-dv-button-group button {\n display: flex;\n width: 100%;\n background: transparent;\n border-radius: unset;\n padding: 0.25rem 0.75rem;\n min-width: 2.156rem;\n color: $gray-80;\n}\n\n.ls-dv-button-group button:disabled {\n background: $gray-10;\n cursor: not-allowed;\n color: $gray-50;\n}\n\n.ls-dv-button-group button:hover {\n background: $gray-10;\n}\n\n.ls-dv-button-group > :first-child {\n border-radius: 0.625rem 0 0 0.625rem;\n}\n\n.ls-dv-button-group > :last-child {\n border-radius: 0 0.5rem 0.5rem 0;\n}\n\n.ls-dv-button-group > :not(:first-child) {\n border-left: 1px solid $gray-30;\n}\n","import { Component, Host, Prop, h, Event, EventEmitter, Element } from '@stencil/core';\nimport { dvI18n } from '../../i18n/i18n';\nimport { LSApiElement, LSMutateEvent } from '../../components';\nimport { oob } from '../ls-document-viewer/editorUtils';\nimport { outOfBounds } from '../ls-document-viewer/mouseHandlers';\n\n@Component({\n tag: 'ls-field-distribute',\n styleUrl: 'ls-field-distribute.scss',\n shadow: true,\n})\nexport class LsFieldDistribute {\n @Prop({\n mutable: true,\n })\n dataItem: LSApiElement[];\n @Prop() readonly: boolean = false;\n\n @Event({\n bubbles: true,\n cancelable: true,\n composed: true,\n })\n mutate: EventEmitter<LSMutateEvent[]>;\n\n @Element() component: HTMLElement;\n\n getVerticalGap(): number | undefined {\n if (!this.dataItem || this.dataItem.length < 2) return undefined;\n const sorted = [...this.dataItem].sort((a, b) => a.top - b.top);\n const gaps = sorted.slice(1).map((item, i) => item.top - (sorted[i].top + sorted[i].height));\n const first = Math.round(gaps[0]);\n return gaps.every(g => Math.round(g) === first) ? first : undefined;\n }\n\n getHorizontalGap(): number | undefined {\n if (!this.dataItem || this.dataItem.length < 2) return undefined;\n const sorted = [...this.dataItem].sort((a, b) => a.left - b.left);\n const gaps = sorted.slice(1).map((item, i) => item.left - (sorted[i].left + sorted[i].width));\n const first = Math.round(gaps[0]);\n return gaps.every(g => Math.round(g) === first) ? first : undefined;\n }\n\n // Send one or more mutations up the chain\n // The source of the chain fires the mutation\n alter(diff: object) {\n console.log(diff);\n\n const diffs: LSMutateEvent[] = this.dataItem.map(c => {\n return { action: 'update', data: { ...c, ...diff } as LSApiElement };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n distributeHorizontal() {\n if (!this.dataItem || this.dataItem.length < 3) return;\n \n var spacing = this.component.shadowRoot.getElementById('ls-fix-horizontal-space') as HTMLInputElement;\n const sorted = this.dataItem.sort((a, b) => a.left - b.left);\n\n\n var avgspace = 0;\n const leftmost = sorted[0].left + sorted[0].width / 2;\n const rightmost = sorted.reduce((acc, cur) => {\n return cur.left + (cur.width / 2) > acc ? cur.left + (cur.width / 2) : acc;\n }, leftmost);\n // find total width between centre first and centre last\n const totalWidth: number = rightmost - leftmost;\n\n if (spacing.value !== '') {\n avgspace = parseInt(spacing.value);\n } else {\n avgspace = Math.floor(totalWidth / (sorted.length - 1));\n }\n\n const filtered = sorted.filter((c, index) => {\n return outOfBounds({ ...c, left: (Math.floor(leftmost - (c.width / 2) + avgspace * index)) }) === false\n && index !== 0\n && index !== sorted.length - 1\n });\n\n const diffs: LSMutateEvent[] = filtered.map((c, index) => {\n\n return {\n action: 'update',\n data: {\n ...c,\n left: Math.floor(leftmost - (c.width / 2) + (avgspace * (index + 1))),\n } as LSApiElement,\n };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n gapVertical(spacing: number) {\n if (!this.dataItem || this.dataItem.length === 0) return;\n \n const sorted = this.dataItem.sort((a, b) => a.top - b.top);\n\n var buffer = sorted[0].top;\n\n const diffs: LSMutateEvent[] = sorted.map(c => {\n const newTop = buffer;\n buffer = buffer + c.height + spacing;\n const target = {\n ...c,\n top: newTop,\n } as LSApiElement;\n\n return {\n action: 'update',\n data: oob(target)\n ? ({\n ...c,\n left: c.pageDimensions.height - c.height - 1,\n } as LSApiElement)\n : target,\n };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n gapHorizontal(spacing: number) {\n if (!this.dataItem || this.dataItem.length === 0) return;\n \n const sorted = this.dataItem.sort((a, b) => a.top - b.top);\n\n var buffer = sorted[0].left;\n\n const diffs: LSMutateEvent[] = sorted.map(c => {\n const newLeft = buffer;\n buffer = buffer + c.width + spacing;\n const target = {\n ...c,\n left: newLeft,\n } as LSApiElement;\n\n console.log(target, oob(target));\n\n return {\n action: 'update',\n data: oob(target)\n ? ({\n ...c,\n left: c.pageDimensions.width - c.width - 1,\n } as LSApiElement)\n : target,\n };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n distributeVertical() {\n if (!this.dataItem || this.dataItem.length < 3) return;\n \n const sorted = this.dataItem.sort((a, b) => a.top - b.top);\n \n const firstBottom = sorted[0].top + sorted[0].height;\n const lastTop = sorted[sorted.length - 1].top;\n const availableSpace = lastTop - firstBottom;\n \n const middleFieldsHeight = sorted.slice(1, -1).reduce((sum, field) => sum + field.height, 0);\n \n const numGaps = sorted.length - 1;\n const gap = Math.max(0, (availableSpace - middleFieldsHeight) / numGaps);\n \n let currentTop = sorted[0].top + sorted[0].height + gap;\n \n const diffs: LSMutateEvent[] = sorted.slice(1, -1).map((c) => {\n const newTop = Math.floor(currentTop);\n currentTop += c.height + gap;\n \n return {\n action: 'update',\n data: {\n ...c,\n top: newTop,\n } as LSApiElement,\n };\n });\n\n this.dataItem = diffs.map(d => d.data as LSApiElement);\n this.mutate.emit(diffs);\n }\n\n componentDidLoad() {\n }\n\n render() {\n return (\n <Host>\n <div class={'ls-dv-field-properties-section'}>\n <div class={'ls-dv-field-properties-section-text'}>\n <p class={'ls-dv-field-properties-section-title'}>{dvI18n.t('placement.distribution')}</p>\n <p class={'ls-dv-field-properties-section-description'}>{dvI18n.t('placement.distributiondescription')}</p>\n </div>\n <div class={'ls-dv-button-group'}>\n <button\n onClick={() => {\n this.distributeVertical();\n }}\n aria-label={dvI18n.t('alignment.distributevertically')}\n data-tooltip-id=\"ls-dv-tooltip\" data-tooltip-content={dvI18n.t('alignment.distributevertically')}\n disabled={this.readonly}\n >\n <ls-icon name=\"field-distribute-vertically-icon\"></ls-icon>\n </button>\n <button\n onClick={() => {\n this.distributeHorizontal();\n }}\n aria-label={dvI18n.t('alignment.distributehorizontally')}\n data-tooltip-id=\"ls-dv-tooltip\" data-tooltip-content={dvI18n.t('alignment.distributehorizontally')}\n disabled={this.readonly}\n >\n <ls-icon name=\"field-distribute-horizontally-icon\"></ls-icon>\n </button>\n </div>\n </div>\n <div class={'ls-dv-field-properties-section'}>\n <div class={'ls-dv-field-properties-section-text'}>\n <p class={'ls-dv-field-properties-section-title'}>{dvI18n.t('placement.gap')}</p>\n <p class={'ls-dv-field-properties-section-description'}>{dvI18n.t('placement.gapdescription')}</p>\n </div>\n <div class={'ls-dv-input-row'}>\n <div class={'ls-dv-input-wrapper'} data-tooltip-id=\"ls-dv-tooltip\" data-tooltip-content={dvI18n.t('placement.setverticalgap')}>\n <ls-icon id=\"selectLeadingIcon\" name=\"field-distribute-vertically-icon\"></ls-icon>\n <input\n type=\"number\"\n class={'ls-dv-has-leading-icon'}\n id=\"ls-fix-vertical-space\"\n onChange={e => {\n this.gapVertical(parseInt((e.target as HTMLInputElement).value));\n }}\n max={9999}\n value={this.getVerticalGap()}\n placeholder={this.getVerticalGap() === undefined ? dvI18n.t('fieldproperties.mixed') : undefined}\n size={4}\n disabled={this.readonly}\n />\n </div>\n <div class={'ls-dv-input-wrapper'} data-tooltip-id=\"ls-dv-tooltip\" data-tooltip-content={dvI18n.t('placement.sethorizontalgap')}>\n <ls-icon id=\"selectLeadingIcon\" name=\"field-distribute-horizontally-icon\"></ls-icon>\n <input\n type=\"number\"\n class={'ls-dv-has-leading-icon'}\n id=\"ls-fix-horizontal-space\"\n onChange={e => {\n this.gapHorizontal(parseInt((e.target as HTMLInputElement).value));\n }}\n max={9999}\n value={this.getHorizontalGap()}\n placeholder={this.getHorizontalGap() === undefined ? dvI18n.t('fieldproperties.mixed') : undefined}\n size={4}\n disabled={this.readonly}\n />\n </div>\n </div>\n </div>\n <ls-tooltip tooltipId=\"ls-dv-tooltip\" />\n <slot></slot>\n </Host>\n );\n }\n}\n"],"version":3}
|