@uva-glass/component-library 3.57.0 → 3.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Lexical.prod-DApSVwEN.js → Lexical.prod-nAj5fF96.js} +2200 -1708
- package/dist/Lexical.prod-nAj5fF96.js.map +1 -0
- package/dist/LexicalClipboard.prod-B9sWgdS2.js +348 -0
- package/dist/LexicalClipboard.prod-B9sWgdS2.js.map +1 -0
- package/dist/{LexicalComposerContext.prod-o3ynMZsi.js → LexicalComposerContext.prod-DumMmRBt.js} +2 -2
- package/dist/LexicalComposerContext.prod-DumMmRBt.js.map +1 -0
- package/dist/LexicalHtml.prod-RCMsF0qt.js +2139 -0
- package/dist/LexicalHtml.prod-RCMsF0qt.js.map +1 -0
- package/dist/{LexicalLink.prod-DCBvBDd1.js → LexicalLink.prod-BcBNTFEb.js} +212 -195
- package/dist/LexicalLink.prod-BcBNTFEb.js.map +1 -0
- package/dist/LexicalList.prod-THQt9B32.js +890 -0
- package/dist/LexicalList.prod-THQt9B32.js.map +1 -0
- package/dist/{LexicalTable.prod-Dw8vTvL0.js → LexicalTable.prod-BpHQYpBM.js} +691 -608
- package/dist/LexicalTable.prod-BpHQYpBM.js.map +1 -0
- package/dist/LexicalUtils.prod-7S6iuu9A.js +347 -0
- package/dist/LexicalUtils.prod-7S6iuu9A.js.map +1 -0
- package/dist/{LinkContextMenu-Jna2w4Ob.js → LinkContextMenu-Byu3AEqp.js} +2 -2
- package/dist/{LinkContextMenu-Jna2w4Ob.js.map → LinkContextMenu-Byu3AEqp.js.map} +1 -1
- package/dist/{PasteHandlerPlugin-IsbHaMUu.js → PasteHandlerPlugin-DyTXcFsj.js} +5 -5
- package/dist/{PasteHandlerPlugin-IsbHaMUu.js.map → PasteHandlerPlugin-DyTXcFsj.js.map} +1 -1
- package/dist/{TableCellContextMenu-Dm-UNfH8.js → TableCellContextMenu--4IdoKAU.js} +2 -2
- package/dist/{TableCellContextMenu-Dm-UNfH8.js.map → TableCellContextMenu--4IdoKAU.js.map} +1 -1
- package/dist/TableCellResizerPlugin-Dn8Ks2Lm.js +208 -0
- package/dist/TableCellResizerPlugin-Dn8Ks2Lm.js.map +1 -0
- package/dist/components/CheckboxTree/CheckboxTree.js +1 -1
- package/dist/components/CheckboxTree/CheckboxTree.stories.js +1 -1
- package/dist/components/CheckboxTree/index.js +1 -1
- package/dist/components/FormInput/FormInput.js +1 -1
- package/dist/components/FormInput/FormInput.stories.js +1 -1
- package/dist/components/FormInput/index.js +1 -1
- package/dist/components/MultiSelect/MultiSelect.js +1 -1
- package/dist/components/MultiSelect/MultiSelect.stories.js +1 -1
- package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -1
- package/dist/components/MultiSelect/index.js +1 -1
- package/dist/components/PeriodSelector/PeriodSelector.js +1 -1
- package/dist/components/PeriodSelector/PeriodSelector.stories.js +1 -1
- package/dist/components/PeriodSelector/index.js +1 -1
- package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -1
- package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +1 -1
- package/dist/components/RadioTabSelector/index.js +1 -1
- package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -1
- package/dist/components/RteEditor/EditorHeader/index.js +1 -1
- package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +4 -4
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +35 -35
- package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +14 -14
- package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/index.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +30 -30
- package/dist/components/RteEditor/Plugins/TablePlugin/index.js +2 -2
- package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/index.js +4 -4
- package/dist/components/RteEditor/RteEditor.js +1 -1
- package/dist/components/RteEditor/RteEditor.stories.js +1 -1
- package/dist/components/RteEditor/helpers.js +4 -4
- package/dist/components/RteEditor/index.js +1 -1
- package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +18 -18
- package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +17 -17
- package/dist/components/index.js +1 -1
- package/dist/{components-DHB1OMJ8.js → components-KU0q76JR.js} +841 -686
- package/dist/components-KU0q76JR.js.map +1 -0
- package/dist/{helpers-C3IJbMVf.js → helpers-BzYayeT-.js} +9 -9
- package/dist/helpers-BzYayeT-.js.map +1 -0
- package/dist/index.js +1 -1
- package/package.json +14 -14
- package/dist/Lexical.prod-DApSVwEN.js.map +0 -1
- package/dist/LexicalClipboard.prod--xxt8Vi4.js +0 -651
- package/dist/LexicalClipboard.prod--xxt8Vi4.js.map +0 -1
- package/dist/LexicalComposerContext.prod-o3ynMZsi.js.map +0 -1
- package/dist/LexicalExtension.prod-efmFsltb.js +0 -913
- package/dist/LexicalExtension.prod-efmFsltb.js.map +0 -1
- package/dist/LexicalLink.prod-DCBvBDd1.js.map +0 -1
- package/dist/LexicalList.prod-DA6gHLh6.js +0 -806
- package/dist/LexicalList.prod-DA6gHLh6.js.map +0 -1
- package/dist/LexicalTable.prod-Dw8vTvL0.js.map +0 -1
- package/dist/LexicalUtils.prod-DRNc5TMZ.js +0 -343
- package/dist/LexicalUtils.prod-DRNc5TMZ.js.map +0 -1
- package/dist/TableCellResizerPlugin-OgsG5jSq.js +0 -208
- package/dist/TableCellResizerPlugin-OgsG5jSq.js.map +0 -1
- package/dist/components-DHB1OMJ8.js.map +0 -1
- package/dist/helpers-C3IJbMVf.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TableCellResizerPlugin-OgsG5jSq.js","names":["n","t","e","i","r","o"],"sources":["../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/useLexicalEditable.prod.mjs","../src/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.module.css","../src/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as n,useEffect as t,useMemo as i,useState as r,useRef as o}from\"react\";const c=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:t;function u(e){return{initialValueFn:()=>e.isEditable(),subscribe:n=>e.registerEditableListener(n)}}function a(){return function(n){const[t]=e(),u=i(()=>n(t),[t,n]),[a,l]=r(()=>u.initialValueFn()),d=o(a);return c(()=>{const{initialValueFn:e,subscribe:n}=u,t=e();return d.current!==t&&(d.current=t,l(t)),n(e=>{d.current=e,l(e)})},[u,n]),a}(u)}export{a as useLexicalEditable};\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\n\n.table-cell-resizer__resizer {\n position: absolute;\n}\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\r\n/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * Modified from original to fit project needs wim jurriaans.\r\n *\r\n *\r\n */\r\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\r\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable';\r\nimport {\r\n $computeTableMapSkipCellCheck,\r\n $getTableNodeFromLexicalNodeOrThrow,\r\n $getTableRowIndexFromTableCellNode,\r\n $isTableCellNode,\r\n $isTableRowNode,\r\n TableNode,\r\n getDOMCellFromTarget,\r\n getTableElement,\r\n TableCellNode,\r\n} from '@lexical/table';\r\nimport { $getNearestNodeOfType, calculateZoomLevel } from '@lexical/utils';\r\nimport { $getNearestNodeFromDOMNode, isHTMLElement } from 'lexical';\r\nimport { createPortal } from 'react-dom';\r\n\r\nimport type { LexicalEditor } from 'lexical';\r\nimport type { TableDOMCell, TableMapType, TableRowNode } from '@lexical/table';\r\nimport type { JSX, MouseEventHandler, ReactPortal } from 'react';\r\n\r\nimport styles from './TableCellResizerPlugin.module.css';\r\n\r\nimport {\r\n getEditorContentWidth,\r\n getEditorParrentCellWidth,\r\n tableHasContent,\r\n} from 'components/RteEditor/Plugins/TablePlugin/helpers';\r\nimport { $createTableWrapperNode, TableWrapperNode } from 'components/RteEditor/nodes';\r\n\r\ntype MousePosition = {\r\n x: number;\r\n y: number;\r\n};\r\n\r\ntype MouseDraggingDirection = 'right' | 'bottom';\r\n\r\nconst MIN_ROW_HEIGHT = 33;\r\nconst MIN_COLUMN_WIDTH = 32;\r\nconst HALF = 2;\r\n\r\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\r\n const targetRef = useRef<HTMLElement | null>(null);\r\n const resizerRef = useRef<HTMLDivElement | null>(null);\r\n const tableRectRef = useRef<DOMRect | null>(null);\r\n\r\n const mouseStartPosRef = useRef<MousePosition | null>(null);\r\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null);\r\n\r\n const [activeCell, updateActiveCell] = useState<TableDOMCell | null>(null);\r\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false);\r\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null);\r\n\r\n const resetState = useCallback(() => {\r\n updateActiveCell(null);\r\n targetRef.current = null;\r\n updateDraggingDirection(null);\r\n mouseStartPosRef.current = null;\r\n tableRectRef.current = null;\r\n }, []);\r\n\r\n const isMouseDownOnEvent = (event: MouseEvent) => {\r\n return (event.buttons & 1) === 1;\r\n };\r\n\r\n useEffect(() => {\r\n return editor.registerNodeTransform(TableNode, (tableNode) => {\r\n // modification: set default column widths if not defined or table cells of imported tables has the width set\r\n if (!tableNode.getColWidths()) {\r\n const tableRows = tableNode.getChildren();\r\n const columnCount = tableNode.getColumnCount();\r\n const colWidths = new Array(columnCount).fill(undefined);\r\n\r\n const firstRow = tableRows[0] as TableRowNode;\r\n const cells = firstRow.getChildren();\r\n cells.forEach((cell, colIdx) => {\r\n const domCell = editor.getElementByKey(cell.getKey());\r\n if (domCell && domCell.style.width) {\r\n colWidths[colIdx] = parseInt(domCell.style.width, 10);\r\n domCell.style.width = '';\r\n } else if (tableHasContent(tableNode)) {\r\n const isNested = tableNode ? $getNearestNodeOfType(tableNode, TableCellNode) : null;\r\n\r\n const availableWidth = isNested\r\n ? getEditorParrentCellWidth(isNested, columnCount, editor)\r\n : getEditorContentWidth(editor);\r\n const newColWidth = availableWidth / columnCount;\r\n colWidths[colIdx] = Math.max(newColWidth, MIN_COLUMN_WIDTH);\r\n } else {\r\n colWidths[colIdx] = MIN_COLUMN_WIDTH;\r\n }\r\n });\r\n\r\n tableNode.setColWidths(colWidths);\r\n }\r\n\r\n // modification: wrap table node in a wrapper node if there is no wrapper node present\r\n if (tableNode && !(tableNode.getParent() instanceof TableWrapperNode)) {\r\n const wrapperNode = $createTableWrapperNode();\r\n tableNode.replace(wrapperNode);\r\n wrapperNode.append(tableNode);\r\n }\r\n\r\n return tableNode;\r\n });\r\n }, [editor]);\r\n\r\n useEffect(() => {\r\n const onMouseMove = (event: MouseEvent) => {\r\n const target = event.target;\r\n if (!isHTMLElement(target)) {\r\n return;\r\n }\r\n\r\n if (draggingDirection) {\r\n updateMouseCurrentPos({\r\n x: event.clientX,\r\n y: event.clientY,\r\n });\r\n return;\r\n }\r\n updateIsMouseDown(isMouseDownOnEvent(event));\r\n if (resizerRef.current && resizerRef.current.contains(target)) {\r\n return;\r\n }\r\n\r\n if (targetRef.current !== target) {\r\n targetRef.current = target;\r\n const cell = getDOMCellFromTarget(target);\r\n\r\n if (cell && activeCell !== cell) {\r\n editor.getEditorState().read(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem);\r\n if (!tableCellNode) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));\r\n\r\n if (!tableElement) {\r\n throw new Error('TableCellResizer: Table element not found.');\r\n }\r\n\r\n targetRef.current = target;\r\n tableRectRef.current = tableElement.getBoundingClientRect();\r\n updateActiveCell(cell);\r\n },\r\n { editor }\r\n );\r\n } else if (cell == null) {\r\n resetState();\r\n }\r\n }\r\n };\r\n\r\n const onMouseDown = () => {\r\n updateIsMouseDown(true);\r\n };\r\n\r\n const onMouseUp = () => {\r\n updateIsMouseDown(false);\r\n };\r\n\r\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\r\n prevRootElement?.removeEventListener('mousemove', onMouseMove);\r\n prevRootElement?.removeEventListener('mousedown', onMouseDown);\r\n prevRootElement?.removeEventListener('mouseup', onMouseUp);\r\n rootElement?.addEventListener('mousemove', onMouseMove);\r\n rootElement?.addEventListener('mousedown', onMouseDown);\r\n rootElement?.addEventListener('mouseup', onMouseUp);\r\n });\r\n\r\n return () => {\r\n removeRootListener();\r\n };\r\n }, [activeCell, draggingDirection, editor, resetState]);\r\n\r\n const isHeightChanging = (direction: MouseDraggingDirection) => {\r\n if (direction === 'bottom') {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const updateRowHeight = useCallback(\r\n (heightChange: number) => {\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n editor.update(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\r\n if (!$isTableCellNode(tableCellNode)) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n\r\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode) + tableCellNode.getRowSpan() - 1;\r\n\r\n const tableRows = tableNode.getChildren();\r\n\r\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\r\n throw new Error('Expected table cell to be inside of table row.');\r\n }\r\n\r\n const tableRow = tableRows[tableRowIndex];\r\n\r\n if (!$isTableRowNode(tableRow)) {\r\n throw new Error('Expected table row');\r\n }\r\n\r\n let height = tableRow.getHeight();\r\n if (height === undefined) {\r\n const rowCells = tableRow.getChildren<TableCellNode>();\r\n height = Math.min(...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity));\r\n }\r\n\r\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT);\r\n tableRow.setHeight(newHeight);\r\n },\r\n { tag: 'skip-scroll-into-view' }\r\n );\r\n },\r\n [activeCell, editor]\r\n );\r\n\r\n const getCellNodeHeight = (cell: TableCellNode, activeEditor: LexicalEditor): number | undefined => {\r\n const domCellNode = activeEditor.getElementByKey(cell.getKey());\r\n return domCellNode?.clientHeight;\r\n };\r\n\r\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\r\n for (let row = 0; row < tableMap.length; row++) {\r\n for (let column = 0; column < tableMap[row].length; column++) {\r\n if (tableMap[row][column].cell === tableCellNode) {\r\n return column;\r\n }\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n const updateColumnWidth = useCallback(\r\n (widthChange: number) => {\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n editor.update(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\r\n if (!$isTableCellNode(tableCellNode)) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null);\r\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap);\r\n if (columnIndex === undefined) {\r\n throw new Error('TableCellResizer: Table column not found.');\r\n }\r\n\r\n const colWidths = tableNode.getColWidths();\r\n if (!colWidths) {\r\n return;\r\n }\r\n const width = colWidths[columnIndex];\r\n if (width === undefined) {\r\n return;\r\n }\r\n const newColWidths = [...colWidths];\r\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH);\r\n newColWidths[columnIndex] = newWidth;\r\n tableNode.setColWidths(newColWidths);\r\n\r\n // modification: when resizing a column, also resize the next column so the table doesn't overflow\r\n if (columnIndex < tableNode.getColumnCount() - 1) {\r\n const nextColWidths = tableNode.getColWidths();\r\n if (!nextColWidths) {\r\n return;\r\n }\r\n const newNextColWidths = [...nextColWidths];\r\n const newColumnIndex = columnIndex + 1;\r\n const newNextWidth = nextColWidths[newColumnIndex];\r\n const nextWidth = Math.max(newNextWidth - widthChange, MIN_COLUMN_WIDTH);\r\n newNextColWidths[newColumnIndex] = nextWidth;\r\n tableNode.setColWidths(newNextColWidths);\r\n }\r\n },\r\n { tag: 'skip-scroll-into-view' }\r\n );\r\n },\r\n [activeCell, editor]\r\n );\r\n\r\n const mouseUpHandler = useCallback(\r\n (direction: MouseDraggingDirection) => {\r\n const handler = (event: MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n if (mouseStartPosRef.current) {\r\n const { x, y } = mouseStartPosRef.current;\r\n\r\n if (activeCell === null) {\r\n return;\r\n }\r\n const zoom = calculateZoomLevel(event.target as Element);\r\n\r\n if (isHeightChanging(direction)) {\r\n const heightChange = (event.clientY - y) / zoom;\r\n updateRowHeight(heightChange);\r\n } else {\r\n const widthChange = (event.clientX - x) / zoom;\r\n updateColumnWidth(widthChange);\r\n }\r\n\r\n resetState();\r\n document.removeEventListener('mouseup', handler);\r\n }\r\n };\r\n return handler;\r\n },\r\n [activeCell, resetState, updateColumnWidth, updateRowHeight]\r\n );\r\n\r\n const toggleResize = useCallback(\r\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\r\n (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n mouseStartPosRef.current = {\r\n x: event.clientX,\r\n y: event.clientY,\r\n };\r\n updateMouseCurrentPos(mouseStartPosRef.current);\r\n updateDraggingDirection(direction);\r\n\r\n document.addEventListener('mouseup', mouseUpHandler(direction));\r\n },\r\n [activeCell, mouseUpHandler]\r\n );\r\n\r\n const getResizers = useCallback(() => {\r\n if (activeCell) {\r\n const { height, width, top, left } = activeCell.elem.getBoundingClientRect();\r\n const zoom = calculateZoomLevel(activeCell.elem);\r\n const zoneWidth = 10; // Pixel width of the zone where you can drag the edge\r\n const styles = {\r\n bottom: {\r\n backgroundColor: 'none',\r\n cursor: 'ns-resize',\r\n height: `${zoneWidth}px`,\r\n left: `${window.pageXOffset + left}px`,\r\n top: `${window.pageYOffset + top + height - zoneWidth / HALF}px`,\r\n width: `${width}px`,\r\n zIndex: 5000,\r\n },\r\n right: {\r\n backgroundColor: 'none',\r\n cursor: 'ew-resize',\r\n height: `${height}px`,\r\n left: `${window.pageXOffset + left + width - zoneWidth / HALF}px`,\r\n top: `${window.pageYOffset + top}px`,\r\n width: `${zoneWidth}px`,\r\n zIndex: 5000,\r\n },\r\n };\r\n\r\n const tableRect = tableRectRef.current;\r\n\r\n if (draggingDirection && mouseCurrentPos && tableRect) {\r\n if (isHeightChanging(draggingDirection)) {\r\n styles[draggingDirection].left = `${window.pageXOffset + tableRect.left}px`;\r\n styles[draggingDirection].top = `${window.pageYOffset + mouseCurrentPos.y / zoom}px`;\r\n styles[draggingDirection].height = '3px';\r\n styles[draggingDirection].width = `${tableRect.width}px`;\r\n } else {\r\n styles[draggingDirection].top = `${window.pageYOffset + tableRect.top}px`;\r\n styles[draggingDirection].left = `${window.pageXOffset + mouseCurrentPos.x / zoom}px`;\r\n styles[draggingDirection].width = '3px';\r\n styles[draggingDirection].height = `${tableRect.height}px`;\r\n }\r\n\r\n styles[draggingDirection].backgroundColor = '#adf';\r\n }\r\n\r\n return styles;\r\n }\r\n\r\n return {\r\n bottom: null,\r\n left: null,\r\n right: null,\r\n top: null,\r\n };\r\n }, [activeCell, draggingDirection, mouseCurrentPos]);\r\n\r\n const resizerStyles = getResizers();\r\n\r\n return (\r\n <div ref={resizerRef}>\r\n {activeCell != null && !isMouseDown && (\r\n <>\r\n <div\r\n className={styles['table-cell-resizer__resizer']}\r\n style={resizerStyles.right || undefined}\r\n onMouseDown={toggleResize('right')}\r\n />\r\n <div\r\n className={styles['table-cell-resizer__resizer']}\r\n style={resizerStyles.bottom || undefined}\r\n onMouseDown={toggleResize('bottom')}\r\n />\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport const TableCellResizerPlugin = (): null | ReactPortal => {\r\n const [editor] = useLexicalComposerContext();\r\n const isEditable = useLexicalEditable();\r\n\r\n return useMemo(\r\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\r\n [editor, isEditable]\r\n );\r\n};\r\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;AAQgL,IAAM,IAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,KAAK,KAA8B,OAAO,SAAS,kBAAzB,KAAK,IAAkCA,IAAEC;AAAE,SAAS,EAAE,GAAE;CAAC,OAAM;EAAC,sBAAmB,EAAE,WAAW;EAAE,YAAU,MAAG,EAAE,yBAAyB,CAAC;CAAC;AAAC;AAAC,SAAS,IAAG;CAAC,OAAO,SAAS,GAAE;EAAC,IAAK,CAAC,KAAGC,EAAE,GAAE,IAAEC,QAAM,EAAE,CAAC,GAAE,CAAC,GAAE,CAAC,CAAC,GAAE,CAAC,GAAE,KAAGC,QAAM,EAAE,eAAe,CAAC,GAAE,IAAEC,EAAE,CAAC;EAAE,OAAO,QAAM;GAAC,IAAK,EAAC,gBAAe,GAAE,WAAU,MAAG,GAAE,IAAE,EAAE;GAAE,OAAO,EAAE,YAAU,MAAI,EAAE,UAAQ,GAAE,EAAE,CAAC,IAAG,GAAE,MAAG;IAAC,EAAE,UAAQ,GAAE,EAAE,CAAC;GAAC,CAAC;EAAC,GAAE,CAAC,GAAE,CAAC,CAAC,GAAE;CAAC,EAAE,CAAC;AAAC;;;oFEyCvmB,IAAiB,IACjB,IAAmB,IACnB,IAAO;AAEb,SAAS,EAAiB,EAAE,aAAkD;CAC5E,IAAM,IAAY,EAA2B,IAAI,GAC3C,IAAa,EAA8B,IAAI,GAC/C,IAAe,EAAuB,IAAI,GAE1C,IAAmB,EAA6B,IAAI,GACpD,CAAC,GAAiB,KAAyB,EAA+B,IAAI,GAE9E,CAAC,GAAY,KAAoB,EAA8B,IAAI,GACnE,CAAC,GAAa,KAAqB,EAAkB,EAAK,GAC1D,CAAC,GAAmB,KAA2B,EAAwC,IAAI,GAE3F,IAAa,QAAkB;EAKnC,AAJA,EAAiB,IAAI,GACrB,EAAU,UAAU,MACpB,EAAwB,IAAI,GAC5B,EAAiB,UAAU,MAC3B,EAAa,UAAU;CACzB,GAAG,CAAC,CAAC,GAEC,KAAsB,OAClB,EAAM,UAAU,MAAO;CA6CjC,AA1CA,QACS,EAAO,sBAAsB,IAAY,MAAc;EAE5D,IAAI,CAAC,EAAU,aAAa,GAAG;GAC7B,IAAM,IAAY,EAAU,YAAY,GAClC,IAAc,EAAU,eAAe,GACvC,IAAgB,MAAM,CAAW,EAAE,KAAK,KAAA,CAAS;GAsBvD,AAlBA,EAF2B,GACJ,YACvB,EAAM,SAAS,GAAM,MAAW;IAC9B,IAAM,IAAU,EAAO,gBAAgB,EAAK,OAAO,CAAC;IACpD,IAAI,KAAW,EAAQ,MAAM,OAE3B,AADA,EAAU,KAAU,SAAS,EAAQ,MAAM,OAAO,EAAE,GACpD,EAAQ,MAAM,QAAQ;SACjB,IAAI,EAAgB,CAAS,GAAG;KACrC,IAAM,IAAW,IAAY,EAAsB,GAAW,CAAa,IAAI,MAKzE,KAHiB,IACnB,EAA0B,GAAU,GAAa,CAAM,IACvD,EAAsB,CAAM,KACK;KACrC,EAAU,KAAU,KAAK,IAAI,GAAa,CAAgB;IAC5D,OACE,EAAU,KAAU;GAExB,CAAC,GAED,EAAU,aAAa,CAAS;EAClC;EAGA,IAAI,KAAa,EAAE,EAAU,UAAU,aAAa,IAAmB;GACrE,IAAM,IAAc,EAAwB;GAE5C,AADA,EAAU,QAAQ,CAAW,GAC7B,EAAY,OAAO,CAAS;EAC9B;EAEA,OAAO;CACT,CAAC,GACA,CAAC,CAAM,CAAC,GAEX,QAAgB;EACd,IAAM,KAAe,MAAsB;GACzC,IAAM,IAAS,EAAM;GAChB,MAAc,CAAM,GAIzB;QAAI,GAAmB;KACrB,EAAsB;MACpB,GAAG,EAAM;MACT,GAAG,EAAM;KACX,CAAC;KACD;IACF;IACA,MAAkB,EAAmB,CAAK,CAAC,GACvC,IAAW,WAAW,EAAW,QAAQ,SAAS,CAAM,MAIxD,EAAU,YAAY,GAAQ;KAChC,EAAU,UAAU;KACpB,IAAM,IAAO,EAAqB,CAAM;KAExC,AAAI,KAAQ,MAAe,IACzB,EAAO,eAAe,EAAE,WAChB;MACJ,IAAM,IAAgB,EAA2B,EAAK,IAAI;MAC1D,IAAI,CAAC,GACH,MAAU,MAAM,8CAA8C;MAGhE,IAAM,IAAY,EAAoC,CAAa,GAC7D,IAAe,EAAgB,GAAW,EAAO,gBAAgB,EAAU,OAAO,CAAC,CAAC;MAE1F,IAAI,CAAC,GACH,MAAU,MAAM,4CAA4C;MAK9D,AAFA,EAAU,UAAU,GACpB,EAAa,UAAU,EAAa,sBAAsB,GAC1D,EAAiB,CAAI;KACvB,GACA,EAAE,UAAO,CACX,IACS,KACT,EAAW;IAEf;GAlCA;EAmCF,GAEM,UAAoB;GACxB,EAAkB,EAAI;EACxB,GAEM,UAAkB;GACtB,EAAkB,EAAK;EACzB,GAEM,IAAqB,EAAO,sBAAsB,GAAa,MAAoB;GAMvF,AALA,GAAiB,oBAAoB,aAAa,CAAW,GAC7D,GAAiB,oBAAoB,aAAa,CAAW,GAC7D,GAAiB,oBAAoB,WAAW,CAAS,GACzD,GAAa,iBAAiB,aAAa,CAAW,GACtD,GAAa,iBAAiB,aAAa,CAAW,GACtD,GAAa,iBAAiB,WAAW,CAAS;EACpD,CAAC;EAED,aAAa;GACX,EAAmB;EACrB;CACF,GAAG;EAAC;EAAY;EAAmB;EAAQ;CAAU,CAAC;CAEtD,IAAM,KAAoB,MACpB,MAAc,UAMd,IAAkB,GACrB,MAAyB;EACxB,IAAI,CAAC,GACH,MAAU,MAAM,yCAAyC;EAG3D,EAAO,aACC;GACJ,IAAM,IAAgB,EAA2B,EAAW,IAAI;GAChE,IAAI,CAAC,EAAiB,CAAa,GACjC,MAAU,MAAM,8CAA8C;GAGhE,IAAM,IAAY,EAAoC,CAAa,GAE7D,IAAgB,EAAmC,CAAa,IAAI,EAAc,WAAW,IAAI,GAEjG,IAAY,EAAU,YAAY;GAExC,IAAI,KAAiB,EAAU,UAAU,IAAgB,GACvD,MAAU,MAAM,gDAAgD;GAGlE,IAAM,IAAW,EAAU;GAE3B,IAAI,CAAC,EAAgB,CAAQ,GAC3B,MAAU,MAAM,oBAAoB;GAGtC,IAAI,IAAS,EAAS,UAAU;GAChC,IAAI,MAAW,KAAA,GAAW;IACxB,IAAM,IAAW,EAAS,YAA2B;IACrD,IAAS,KAAK,IAAI,GAAG,EAAS,KAAK,MAAS,EAAkB,GAAM,CAAM,KAAK,QAAQ,CAAC;GAC1F;GAEA,IAAM,IAAY,KAAK,IAAI,IAAS,GAAc,CAAc;GAChE,EAAS,UAAU,CAAS;EAC9B,GACA,EAAE,KAAK,wBAAwB,CACjC;CACF,GACA,CAAC,GAAY,CAAM,CACrB,GAEM,KAAqB,GAAqB,MAC1B,EAAa,gBAAgB,EAAK,OAAO,CACtD,GAAa,cAGhB,KAAsB,GAA8B,MAA2B;EACnF,KAAK,IAAI,IAAM,GAAG,IAAM,EAAS,QAAQ,KACvC,KAAK,IAAI,IAAS,GAAG,IAAS,EAAS,GAAK,QAAQ,KAClD,IAAI,EAAS,GAAK,GAAQ,SAAS,GACjC,OAAO;EAIb,OAAO;CACT,GAEM,IAAoB,GACvB,MAAwB;EACvB,IAAI,CAAC,GACH,MAAU,MAAM,yCAAyC;EAE3D,EAAO,aACC;GACJ,IAAM,IAAgB,EAA2B,EAAW,IAAI;GAChE,IAAI,CAAC,EAAiB,CAAa,GACjC,MAAU,MAAM,8CAA8C;GAGhE,IAAM,IAAY,EAAoC,CAAa,GAC7D,CAAC,KAAY,EAA8B,GAAW,MAAM,IAAI,GAChE,IAAc,EAAmB,GAAe,CAAQ;GAC9D,IAAI,MAAgB,KAAA,GAClB,MAAU,MAAM,2CAA2C;GAG7D,IAAM,IAAY,EAAU,aAAa;GACzC,IAAI,CAAC,GACH;GAEF,IAAM,IAAQ,EAAU;GACxB,IAAI,MAAU,KAAA,GACZ;GAEF,IAAM,IAAe,CAAC,GAAG,CAAS;GAMlC,IAJA,EAAa,KADI,KAAK,IAAI,IAAQ,GAAa,CACnB,GAC5B,EAAU,aAAa,CAAY,GAG/B,IAAc,EAAU,eAAe,IAAI,GAAG;IAChD,IAAM,IAAgB,EAAU,aAAa;IAC7C,IAAI,CAAC,GACH;IAEF,IAAM,IAAmB,CAAC,GAAG,CAAa,GACpC,IAAiB,IAAc,GAC/B,IAAe,EAAc;IAGnC,AADA,EAAiB,KADC,KAAK,IAAI,IAAe,GAAa,CACpB,GACnC,EAAU,aAAa,CAAgB;GACzC;EACF,GACA,EAAE,KAAK,wBAAwB,CACjC;CACF,GACA,CAAC,GAAY,CAAM,CACrB,GAEM,IAAiB,GACpB,MAAsC;EACrC,IAAM,KAAW,MAAsB;GAIrC,IAHA,EAAM,eAAe,GACrB,EAAM,gBAAgB,GAElB,CAAC,GACH,MAAU,MAAM,yCAAyC;GAG3D,IAAI,EAAiB,SAAS;IAC5B,IAAM,EAAE,MAAG,SAAM,EAAiB;IAElC,IAAI,MAAe,MACjB;IAEF,IAAM,IAAO,EAAmB,EAAM,MAAiB;IAWvD,AATI,EAAiB,CAAS,IAE5B,GADsB,EAAM,UAAU,KAAK,CACf,IAG5B,GADqB,EAAM,UAAU,KAAK,CACb,GAG/B,EAAW,GACX,SAAS,oBAAoB,WAAW,CAAO;GACjD;EACF;EACA,OAAO;CACT,GACA;EAAC;EAAY;EAAY;EAAmB;CAAe,CAC7D,GAEM,IAAe,GAClB,OACE,MAAU;EAIT,IAHA,EAAM,eAAe,GACrB,EAAM,gBAAgB,GAElB,CAAC,GACH,MAAU,MAAM,yCAAyC;EAU3D,AAPA,EAAiB,UAAU;GACzB,GAAG,EAAM;GACT,GAAG,EAAM;EACX,GACA,EAAsB,EAAiB,OAAO,GAC9C,EAAwB,CAAS,GAEjC,SAAS,iBAAiB,WAAW,EAAe,CAAS,CAAC;CAChE,GACF,CAAC,GAAY,CAAc,CAC7B,GAyDM,IAvDc,QAAkB;EACpC,IAAI,GAAY;GACd,IAAM,EAAE,WAAQ,UAAO,QAAK,YAAS,EAAW,KAAK,sBAAsB,GACrE,IAAO,EAAmB,EAAW,IAAI,GAEzC,IAAS;IACb,QAAQ;KACN,iBAAiB;KACjB,QAAQ;KACR,QAAQ;KACR,MAAM,GAAG,OAAO,cAAc,EAAK;KACnC,KAAK,GAAG,OAAO,cAAc,IAAM,IAAS,KAAY,EAAK;KAC7D,OAAO,GAAG,EAAM;KAChB,QAAQ;IACV;IACA,OAAO;KACL,iBAAiB;KACjB,QAAQ;KACR,QAAQ,GAAG,EAAO;KAClB,MAAM,GAAG,OAAO,cAAc,IAAO,IAAQ,KAAY,EAAK;KAC9D,KAAK,GAAG,OAAO,cAAc,EAAI;KACjC,OAAO;KACP,QAAQ;IACV;GACF,GAEM,IAAY,EAAa;GAkB/B,OAhBI,KAAqB,KAAmB,MACtC,EAAiB,CAAiB,KACpC,EAAO,GAAmB,OAAO,GAAG,OAAO,cAAc,EAAU,KAAK,KACxE,EAAO,GAAmB,MAAM,GAAG,OAAO,cAAc,EAAgB,IAAI,EAAK,KACjF,EAAO,GAAmB,SAAS,OACnC,EAAO,GAAmB,QAAQ,GAAG,EAAU,MAAM,QAErD,EAAO,GAAmB,MAAM,GAAG,OAAO,cAAc,EAAU,IAAI,KACtE,EAAO,GAAmB,OAAO,GAAG,OAAO,cAAc,EAAgB,IAAI,EAAK,KAClF,EAAO,GAAmB,QAAQ,OAClC,EAAO,GAAmB,SAAS,GAAG,EAAU,OAAO,MAGzD,EAAO,GAAmB,kBAAkB,SAGvC;EACT;EAEA,OAAO;GACL,QAAQ;GACR,MAAM;GACN,OAAO;GACP,KAAK;EACP;CACF,GAAG;EAAC;EAAY;EAAmB;CAAe,CAE5B,EAAY;CAElC,OACE,kBAAC,OAAD;EAAK,KAAK;YACP,KAAc,QAAQ,CAAC,KACtB,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD;GACE,WAAW,EAAO;GAClB,OAAO,EAAc,SAAS,KAAA;GAC9B,aAAa,EAAa,OAAO;EAClC,CAAA,GACD,kBAAC,OAAD;GACE,WAAW,EAAO;GAClB,OAAO,EAAc,UAAU,KAAA;GAC/B,aAAa,EAAa,QAAQ;EACnC,CAAA,CACD,EAAA,CAAA;CAED,CAAA;AAET;AAEA,IAAa,UAAmD;CAC9D,IAAM,CAAC,KAAU,EAA0B,GACrC,IAAa,EAAmB;CAEtC,OAAO,QACE,IAAa,EAAa,kBAAC,GAAD,EAA0B,UAAS,CAAA,GAAG,SAAS,IAAI,IAAI,MACxF,CAAC,GAAQ,CAAU,CACrB;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"components-DHB1OMJ8.js","names":["m","c","l","p","a","f","d","e","o","n","i","r","s","t","r","e","s","t","f","c","e","n","r","i","g","i","a","r","n","t","o","e","C","mt","g","p","ft","vt","Ct","f","q","Q","l","y","x","D","N","w","T","E","F","O","P","A","d","S","M","I","b","K","k","J","m","L","W","R","z","gt","X","a","c","u","Y","B","pt","h","G","V","j","H","U","Z","$","e","et","n","r","o","nt","rt","ot","it","i","st","at","ct","ut","t","lt","dt","v","s","n","i","w","c","a","d","l","u","v","t","o","p","r","x","h","E","f","m","b","e","m","t","i","r","n","o","l","b","a","s","E","e","d","c","u","l","m","y","C","d","n","o","r","o","i","e","l","i","s","e","o","n","r","t","o","i","t","e","r","r","i","o","e","k","x","v","S","o","d","p","h","u","c","f","i","e","a","t","s","r","t","e","o","r","r","l","t","u","e","c","a","n","s","i","t"],"sources":["../src/components/CheckboxTree/CheckboxTree.module.css","../src/components/CheckboxTree/CheckboxTree.tsx","../src/components/FormInput/FormInput.module.css","../src/components/FormInput/FormInput.tsx","../src/components/MultiSelect/components/MultiSelectHeader.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/PeriodSelector/PeriodSelector.module.css","../src/components/PeriodSelector/PeriodSelector.tsx","../src/components/RadioTabSelector/RadioTabSelector.module.css","../src/components/RadioTabSelector/RadioTabSelector.tsx","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalComposer.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalReactProviderExtension.prod.mjs","../node_modules/.pnpm/@lexical+text@0.44.0/node_modules/@lexical/text/LexicalText.prod.mjs","../node_modules/.pnpm/@lexical+dragon@0.44.0/node_modules/@lexical/dragon/LexicalDragon.prod.mjs","../node_modules/.pnpm/@lexical+rich-text@0.44.0/node_modules/@lexical/rich-text/LexicalRichText.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalRichTextPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalContentEditable.prod.mjs","../node_modules/.pnpm/react-error-boundary@6.1.2_react@19.2.7/node_modules/react-error-boundary/dist/react-error-boundary.js","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalErrorBoundary.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalOnChangePlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalListPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalLinkPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalClickableLinkPlugin.prod.mjs","../node_modules/.pnpm/@lexical+history@0.44.0/node_modules/@lexical/history/LexicalHistory.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalHistoryPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalTablePlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalEditorRefPlugin.prod.mjs","../src/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.tsx","../src/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkForm.module.css","../src/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.tsx","../src/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.tsx","../src/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.tsx","../src/components/RteEditor/Plugins/TablePlugin/AddTableFrom.module.css","../src/components/RteEditor/Plugins/TablePlugin/AddTableFrom.tsx","../src/components/RteEditor/Plugins/TablePlugin/TablePlugin.tsx","../src/components/RteEditor/EditorHeader/EditorHeader.module.css","../src/components/RteEditor/EditorHeader/EditorHeader.tsx","../src/components/RteEditor/RteEditor.tsx"],"sourcesContent":[".checkbox-tree__header {\n display: block;\n font-weight: var(--semibold);\n margin-bottom: 0.25rem;\n text-align: left;\n}\n\n.checkbox-tree__branch {\n list-style: none;\n user-select: none;\n}\n\n.checkbox-tree__branch[aria-expanded=\"false\"] {\n margin-bottom: 0.5rem;\n}\n\n.checkbox-tree__branch input[type=\"checkbox\"]:disabled + label {\n color: var(--color-grey-500);\n}\n\n.checkbox-tree__branch--icon {\n pointer-events: none;\n transform: rotate(0deg);\n transition: transform 300ms ease-out;\n}\n\n.checkbox-tree__branch--icon--expanded {\n transform: rotate(90deg);\n transition: transform 300ms ease-in;\n}\n\n.checkbox-tree__branch--formfield {\n align-items: center;\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n}\n\n.checkbox-tree__leaves {\n display: none;\n flex-direction: column;\n gap: 0.5rem;\n list-style: none;\n margin: 0.5rem 0 0.5rem 1rem;\n user-select: none;\n}\n\n.checkbox-tree__leaves--expanded {\n display: flex;\n}\n\n.checkbox-tree__leaf {\n align-items: center;\n display: flex;\n flex-direction: row;\n gap: 0 0.5rem;\n margin-left: 1.5rem;\n user-select: none;\n}\n\n.checkbox-tree__leaf input[type=\"checkbox\"]:disabled + label {\n color: var(--color-grey-500);\n}\n","import { createRef, useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { MouseEventHandler, RefObject } from 'react';\n\nimport styles from './CheckboxTree.module.css';\n\nimport { Button, Checkbox, FormField, Icon, Label } from 'components';\nimport { useResponsive } from 'components/hooks/useResponsive';\n\n// TODO: Currently the checkbox tree shows odd behavior when a disabled checkbox is checked.\n// When deselecting the parent checkbox, the disabled checkbox is deselected, and will never\n// be checked again. We'll leave this for now, until we run into a real world\n// example where this is necessary.\n\nexport type CheckboxLeaf = {\n itemName: string;\n itemValue: string;\n disabled?: boolean;\n};\n\nexport type CheckboxBranch = {\n itemName: string;\n children: CheckboxLeaf[];\n};\n\nexport interface CheckboxTreeProps {\n /** The title of the component. */\n title?: string;\n /** Array of checkbox groups with a label and array of children (itemName, itemValue and disabled boolean). */\n checkboxTree: CheckboxBranch[];\n /** Array of selected values. */\n selectedValues?: string[];\n /** `true` if the font-weight needs to be unset; otherwise, `false`. The default is `false`. */\n noLabelFrontWeight?: boolean;\n /** Returns array of selected values. */\n onChange?: (value: string[]) => void;\n}\n\n/** Represents a component to render a tree of checkboxes. */\nexport const CheckboxTree = ({\n title,\n checkboxTree,\n selectedValues,\n noLabelFrontWeight = false,\n onChange,\n}: CheckboxTreeProps) => {\n const checkboxRefs = useRef<Record<string, RefObject<HTMLInputElement | null>>>({});\n const [values, setValues] = useState<string[]>([]);\n const { lessThan } = useResponsive();\n\n const valuesAreEqual = (values1: string[], values2: string[]): boolean => {\n if (values1.length !== values2.length) return false;\n\n const countElements = (list: string[]) =>\n list.reduce((acc: Record<string, number>, val) => {\n acc[val] = (acc[val] || 0) + 1;\n return acc;\n }, {});\n\n const numberOfValues1 = countElements(values1);\n const numberOfValues2 = countElements(values2);\n\n return !Object.keys(numberOfValues1).some((key) => numberOfValues1[key] !== numberOfValues2[key]);\n };\n\n const createRefForKey = (key: string) => {\n if (!checkboxRefs.current[key]) {\n checkboxRefs.current[key] = createRef();\n }\n return checkboxRefs.current[key];\n };\n\n const setValue = () => {\n const newValues: string[] = [];\n Object.entries(checkboxRefs.current).forEach(([key]) => {\n const chkBox = checkboxRefs.current[key].current;\n if (chkBox && chkBox.name.indexOf('Group') === -1 && chkBox.checked) {\n newValues.push(chkBox.value);\n }\n });\n setValues(newValues);\n if (onChange) onChange(newValues);\n };\n\n const setCheckboxesState = (checkGroupName: string) => {\n if (checkGroupName === '') return;\n\n const groupStatus: boolean[] = [];\n\n Object.entries(checkboxRefs.current).forEach(([key]) => {\n const chkBox = checkboxRefs.current[key].current;\n if (!chkBox) return;\n if (chkBox?.getAttribute('data-groupname') === checkGroupName) {\n groupStatus.push(chkBox.checked);\n }\n });\n\n const every = groupStatus.every(Boolean);\n const some = groupStatus.some(Boolean);\n\n if (checkboxRefs.current[checkGroupName].current) {\n checkboxRefs.current[checkGroupName].current.checked = every;\n checkboxRefs.current[checkGroupName].current.indeterminate = !every && every !== some;\n checkboxRefs.current[checkGroupName].current.checked = every && every === some;\n }\n };\n\n const setExpandedAttributes = (trigger: HTMLButtonElement, container: Element | null) => {\n const children = container?.querySelector('[data-ul]');\n\n (trigger.childNodes[0] as Element).classList.toggle(styles['checkbox-tree__branch--icon--expanded']);\n container\n ?.closest('[data-li]')\n ?.setAttribute(\n 'aria-expanded',\n container?.closest('[data-li]')?.getAttribute('aria-expanded') === 'false' ? 'true' : 'false'\n );\n\n if (children) {\n children.classList.toggle(styles['checkbox-tree__leaves--expanded']);\n }\n };\n\n const handleChange: MouseEventHandler<HTMLDivElement> = (event) => {\n const check = event.target as HTMLInputElement;\n\n if (check.type !== 'checkbox' && check.type !== 'button') return;\n\n if (\n lessThan.md &&\n check.name.indexOf('Group') !== -1 &&\n check.parentNode &&\n (check.parentNode.parentNode as HTMLElement).getAttribute('aria-expanded') === 'false'\n ) {\n event.preventDefault();\n setExpandedAttributes(check.parentNode as HTMLButtonElement, check.parentNode.parentNode as HTMLElement);\n return;\n }\n\n if (check.name.indexOf('Group') !== -1) {\n const childPrefix = check.name;\n Object.entries(checkboxRefs.current).forEach(([key]) => {\n if (key.indexOf(`${childPrefix}_`) !== -1) {\n const chkBox = checkboxRefs.current[key].current;\n const parentCheckbox = checkboxRefs.current[childPrefix].current;\n if (!chkBox || !parentCheckbox) return;\n chkBox.checked = parentCheckbox.checked ? true : false;\n }\n });\n setCheckboxesState(childPrefix);\n setValue();\n return;\n }\n setCheckboxesState(check.getAttribute('data-groupname') || '');\n setValue();\n };\n\n const handleExpanded: MouseEventHandler<HTMLButtonElement> = (event) => {\n const target = event.target as HTMLButtonElement;\n const parent = target.closest('[data-li]');\n setExpandedAttributes(target, parent);\n };\n\n useEffect(() => {\n if (selectedValues && !valuesAreEqual(selectedValues, values)) {\n Object.entries(checkboxRefs.current).forEach(([key]) => {\n const chkBox = checkboxRefs.current[key].current;\n if (!chkBox) return;\n if (selectedValues?.includes(chkBox.value)) {\n chkBox.checked = true;\n } else {\n chkBox.checked = false;\n }\n if (chkBox.name.indexOf('Group') !== -1) {\n setValues(selectedValues || []);\n }\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedValues]);\n\n useEffect(() => {\n Object.entries(checkboxRefs.current).forEach(([key]) => {\n const chkBox = checkboxRefs.current[key].current;\n if (!chkBox) return;\n if (chkBox.name.indexOf('Group') !== -1) {\n setCheckboxesState(chkBox.name);\n }\n });\n }, [values]);\n\n return (\n <div>\n {title && <span className={styles['checkbox-tree__header']}>{title}</span>}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div onClick={handleChange} data-ul role=\"tree\" tabIndex={0}>\n {checkboxTree.map(({ itemName, children }, index) => (\n <div\n key={itemName}\n className={styles['checkbox-tree__branch']}\n data-li\n aria-expanded={lessThan.md ? 'false' : 'true'}\n >\n <FormField inline className={styles['checkbox-tree__branch--formfield']}>\n <Button variant=\"blank\" onClick={handleExpanded}>\n <Icon\n name=\"CheveronRight\"\n size={16}\n className={clsx(styles['checkbox-tree__branch--icon'], {\n [styles['checkbox-tree__branch--icon--expanded']]: !lessThan.md,\n })}\n />\n </Button>\n <Checkbox\n id={itemName}\n name={`Group${index}`}\n disabled={children.every((checkbox) => checkbox.disabled)}\n ref={createRefForKey(`Group${index}`)}\n />\n <Label htmlFor={itemName} noFontWeight={noLabelFrontWeight}>\n {itemName}\n </Label>\n </FormField>\n <div\n className={clsx(styles['checkbox-tree__leaves'], {\n [styles['checkbox-tree__leaves--expanded']]: !lessThan.md,\n })}\n data-ul\n >\n {children.map(({ itemName, itemValue, disabled }) => (\n <div key={itemName} className={styles['checkbox-tree__leaf']} data-li>\n <FormField inline className={styles['checkbox-tree__branch--formfield']}>\n <Checkbox\n id={itemName}\n name={itemName}\n value={itemValue}\n disabled={disabled}\n data-groupname={`Group${index}`}\n ref={createRefForKey(`Group${index}_${itemName}`)}\n />\n <Label htmlFor={itemName} noFontWeight={noLabelFrontWeight}>\n {itemName}\n </Label>\n </FormField>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n",".form-input__container {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n}\n\n.form-input__container--label-left {\n align-items: flex-start;\n flex-direction: row;\n gap: 1rem;\n line-height: 2.5rem;\n}\n\n.form-input__container--label-left > label::after {\n line-height: 3.6;\n}\n\n.form-input__container--label-top {\n align-items: flex-start;\n flex-direction: column;\n gap: 0.5rem;\n line-height: normal;\n}\n\n.form-input__input-feedback-container {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 0.5rem;\n line-height: 1.5;\n position: relative;\n width: 100%;\n}\n\n.form-input__input-container {\n display: flex;\n flex: 1;\n}\n\n.form-input__input {\n appearance: none;\n background-color: transparent;\n border: 1px solid;\n border-radius: 0.5rem;\n color: var(--color-uva-black);\n flex: 1;\n font-family: inherit;\n font-size: inherit;\n height: 2.75rem;\n min-height: 2.5rem;\n padding: 0 1rem;\n text-align: inherit;\n}\n\n.form-input__input::-webkit-outer-spin-button,\n.form-input__input::-webkit-inner-spin-button {\n margin: 0;\n}\n\n.form-input__input.not-valid {\n border-color: var(--color-red-600);\n}\n","import { clsx } from 'clsx';\n\nimport type { ReactNode } from 'react';\n\nimport styles from './FormInput.module.css';\n\nimport { FeedbackBox, Label } from 'components';\n\nexport interface FormInputProps {\n /** The id of the input element. */\n id: string;\n /** label text if empthy the label is not renderd */\n label: string;\n /** label position `top` or `left`. The default is `top`. */\n labelPosition?: 'top' | 'left';\n /** The type of the input element. */\n type?: 'text' | 'password' | 'email' | 'number';\n /** Shows red * */\n required?: boolean;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n /** error text to display if set */\n notValidatedText?: string;\n /** Returns array of selected values as number */\n onChange?: (value: string) => void;\n /** Sets max length for the standard input */\n maxLength?: number;\n /** Determines if the container wrapper is rendered. */\n noContainer?: boolean;\n /** Optional custom input that will replace the default input */\n customInput?: ReactNode;\n}\n\nexport const FormInput = ({\n id,\n label,\n labelPosition = 'top',\n type = 'text',\n required = false,\n notValid = false,\n notValidatedText = '',\n onChange,\n maxLength,\n noContainer = false,\n customInput,\n}: FormInputProps) => {\n const blockInvalidChar = (event: React.KeyboardEvent<HTMLInputElement>) =>\n ['e', 'E', '+', '-'].includes(event.key) && event.preventDefault();\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (typeof onChange === 'function') {\n onChange(event.target.value);\n }\n };\n\n const componentContent = (\n <>\n {label && (\n <Label htmlFor={id} required={required} alignRight>\n {label}\n </Label>\n )}\n\n <div className={styles['form-input__input-feedback-container']}>\n {customInput ? (\n customInput\n ) : (\n <div className={styles['form-input__input-container']}>\n <input\n id={id}\n type={type}\n {...(type === 'number' && { onKeyDown: blockInvalidChar })}\n onChange={handleChange}\n className={clsx(styles['form-input__input'], {\n [styles['not-valid']]: notValid,\n })}\n {...(maxLength ? { maxLength } : {})}\n />\n </div>\n )}\n {notValidatedText !== '' && <FeedbackBox level=\"error\" feedback={notValidatedText} />}\n </div>\n </>\n );\n\n return noContainer ? (\n componentContent\n ) : (\n <div className={clsx(styles['form-input__container'], styles[`form-input__container--label-${labelPosition}`])}>\n {componentContent}\n </div>\n );\n};\n","import styles from 'components/MultiSelect/MultiSelect.module.css';\nimport { Label } from 'components/Label';\nimport { Button } from 'components';\n\nexport interface MultiSelectHeaderProps {\n label: string;\n clearTrigger?: string;\n onClear?: () => void;\n}\n\nexport function MultiSelectHeader({ label, clearTrigger, onClear }: MultiSelectHeaderProps) {\n return (\n <header className={styles['multi-select__header']}>\n <Label htmlFor=\"multi-select-list\">{label}</Label>\n {clearTrigger && (\n <Button variant={'blank'} onClick={onClear}>\n {clearTrigger}\n </Button>\n )}\n </header>\n );\n}\n","import { clsx } from 'clsx';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './MultiSelect.module.css';\n\nimport { MultiSelectItem } from 'components/MultiSelect/components/MultiSelectItem';\nimport { MultiSelectHeader } from 'components/MultiSelect/components/MultiSelectHeader';\n\nexport interface MultiSelectProps {\n /** `true` if the container should scroll on overflow; otherwise, `false` to resize the container to its contents. The default is `true`. */\n scrollable?: boolean;\n /** `true` to disable the border around the container; otherwise, `false`. The default is `false`. */\n noBorder?: boolean;\n /** The header contents. */\n header?: ReactNode;\n}\n\n/** Represents a component to list a number of checkboxes. */\nexport const MultiSelect = ({ scrollable = true, noBorder, header, children }: PropsWithChildren<MultiSelectProps>) => (\n <>\n {header}\n <div\n className={clsx(styles['multi-select'], {\n [styles['multi-select--no-border']]: noBorder,\n })}\n >\n <ul\n className={clsx(styles['multi-select__list'], {\n [styles['multi-select__list--scrollable']]: scrollable,\n })}\n id=\"multi-select-list\"\n >\n {children}\n </ul>\n </div>\n </>\n);\n\nMultiSelect.MultiSelectHeader = MultiSelectHeader;\nMultiSelect.MultiSelectItem = MultiSelectItem;\n",".period-selector__container {\n display: flex;\n flex-wrap: wrap;\n}\n\n.period-selector__container--label-left {\n flex-direction: row;\n gap: 1rem;\n align-items: baseline;\n}\n\n.period-selector__container--label-top {\n align-items: flex-start;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.period-selector__selector-container {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.period-selector__selector-row {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n","import { clsx } from 'clsx';\nimport { useEffect, useRef, useState } from 'react';\n\nimport styles from './PeriodSelector.module.css';\n\nimport { Label, CheckboxButtonBar, FeedbackBox } from 'components';\n\nexport interface PeriodSelectorProps {\n /** Indicates how many periods are shown. */\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n maxPeriods: 6 | 7;\n /** array of period values [3, 5 ...] */\n defaultValues?: number[];\n label?: string;\n labelPosition?: 'top' | 'left';\n /** Shows red * */\n required?: boolean;\n /** error text to display if set */\n notValidatedText?: string;\n /** Returns array of selected values as number */\n onChange: (values: number[]) => void;\n}\n\nconst SEMESTER_1 = 0;\nconst SEMESTER_2 = 1;\nconst SEMESTER_3 = 2;\n\nconst PERIODS_PER_SEMESTER = 3;\nconst MAX_PERIODS = 7;\n\nconst chunkPeriods = (array: number[]): number[][] => {\n const result: number[][] = [];\n for (let count = 0; count < array.length; count += PERIODS_PER_SEMESTER) {\n result.push(array.slice(count, count + PERIODS_PER_SEMESTER));\n }\n return result;\n};\n\n/** Checkbox group for selecting periods */\nexport const PeriodSelector = ({\n maxPeriods = MAX_PERIODS,\n defaultValues,\n label,\n labelPosition = 'top',\n required = false,\n notValidatedText = '',\n onChange,\n}: PeriodSelectorProps) => {\n const maxPeriodsList = Array.from({ length: maxPeriods }, (_, index) => index + 1);\n const chunkedPeriods = chunkPeriods(maxPeriodsList);\n\n const checkboxItems = chunkedPeriods.map((periods, _) => {\n return periods.map((period) => ({\n label: period.toString(),\n value: period.toString(),\n }));\n });\n\n const returnValues = useRef<number[][]>(\n chunkedPeriods.map((semester) =>\n semester.reduce((periods, period) => {\n if (defaultValues?.includes(period)) periods.push(period);\n return periods;\n }, [] as number[])\n )\n );\n const [disableSemesters, setDisableSemesters] = useState<number[]>([]);\n\n const disableGroups = (selects: number[][]) => {\n if (selects[SEMESTER_1].length !== 0 || selects[SEMESTER_2].length !== 0) return [SEMESTER_3];\n if (selects[SEMESTER_3].length !== 0) return [SEMESTER_1, SEMESTER_2];\n return [];\n };\n\n const handleChange = (values: string[], index: number) => {\n returnValues.current[index] = values.map((num) => Number(num));\n setDisableSemesters(disableGroups(returnValues.current));\n onChange([...returnValues.current.flat()].sort());\n };\n\n useEffect(() => {\n setDisableSemesters(disableGroups(returnValues.current));\n }, []);\n\n return (\n <div\n className={clsx(\n styles['period-selector__container'],\n styles[`period-selector__container--label-${labelPosition}`]\n )}\n >\n {label && (\n <Label htmlFor=\"\" required={required}>\n {label}\n </Label>\n )}\n <div className={styles['period-selector__selector-container']}>\n <div className={styles['period-selector__selector-row']}>\n {checkboxItems.map((checkboxes, semester) => (\n <CheckboxButtonBar\n key={`group_${semester}`}\n checkboxes={checkboxes}\n defaultValues={returnValues.current[semester].map((num) => num.toString())}\n disableGroup={disableSemesters.includes(semester)}\n required={required}\n onSetValues={(event) => handleChange(event, semester)}\n notValid={notValidatedText !== ''}\n />\n ))}\n </div>\n {notValidatedText !== '' && <FeedbackBox level=\"error\" feedback={notValidatedText} />}\n </div>\n </div>\n );\n};\n",".radio-tab-selector-button-bar__container {\n display: flex;\n flex-wrap: wrap;\n}\n\n.radio-tab-selector-button-bar__container--label-left {\n align-items: baseline;\n flex-direction: row;\n gap: 1rem;\n}\n\n.radio-tab-selector-button-bar__container--label-top {\n align-items: flex-start;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.radio-tab-selector-button-bar__row-container {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.radio-tab-selector-button-bar__row {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-700);\n border-radius: 0.5rem;\n display: flex;\n flex-wrap: nowrap;\n gap: 0.25rem;\n padding: 0.25rem;\n}\n\n.radio-tab-selector-button-bar__row--not-validated {\n border-color: var(--color-red-600);\n}\n","import { clsx } from 'clsx';\r\nimport { useState } from 'react';\r\n\r\nimport type { ChangeEvent } from 'react';\r\nimport type { IconProps } from 'components';\r\n\r\nimport styles from './RadioTabSelector.module.css';\r\n\r\nimport { ControlsButton, FeedbackBox, Label } from 'components';\r\n\r\ntype ButtonProps = {\r\n label: string;\r\n value: string;\r\n iconName?: IconProps['name'];\r\n disabled?: boolean;\r\n};\r\n\r\nexport interface RadioTabSelectorProps {\r\n /** array with button objects with label, value and optional iconName or disabled-state */\r\n buttons: ButtonProps[];\r\n /** name of the radiogroup */\r\n radioGroupName: string;\r\n /** innitial value */\r\n defaultValue?: string;\r\n /** label takst */\r\n label?: string;\r\n /** 'top' | 'left' */\r\n labelPosition?: 'top' | 'left';\r\n /** show red star */\r\n required?: boolean;\r\n /** error text to display if set */\r\n notValidatedText?: string;\r\n /** The callback function that is invoked when the radio tab selector changes value. */\r\n onSetValue: (value: string | null) => void;\r\n}\r\n\r\nexport const RadioTabSelector = ({\r\n buttons,\r\n radioGroupName,\r\n defaultValue,\r\n label,\r\n labelPosition = 'top',\r\n required = false,\r\n notValidatedText = '',\r\n onSetValue,\r\n}: RadioTabSelectorProps) => {\r\n const [currentValue, setCurrentValue] = useState<string | null>(defaultValue || null);\r\n\r\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\r\n setCurrentValue(event.target.value);\r\n onSetValue(event.target.value);\r\n };\r\n\r\n return (\r\n <div\r\n className={clsx(\r\n styles['radio-tab-selector-button-bar__container'],\r\n styles[`radio-tab-selector-button-bar__container--label-${labelPosition}`]\r\n )}\r\n >\r\n {label && (\r\n <Label htmlFor=\"\" required={required}>\r\n {label}\r\n </Label>\r\n )}\r\n <div className={styles['radio-tab-selector-button-bar__row-container']}>\r\n <div\r\n className={clsx(styles['radio-tab-selector-button-bar__row'], {\r\n [styles['radio-tab-selector-button-bar__row--not-validated']]: notValidatedText,\r\n })}\r\n >\r\n {buttons.map(({ label, value, iconName, disabled }) => (\r\n <ControlsButton\r\n type=\"radio\"\r\n name={radioGroupName}\r\n key={`${value}`}\r\n label={label}\r\n value={value}\r\n iconName={iconName}\r\n checked={currentValue === value}\r\n disabled={disabled}\r\n onSetValue={handleChange}\r\n />\r\n ))}\r\n </div>\r\n {notValidatedText !== '' && <FeedbackBox level=\"error\" feedback={notValidatedText} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{createLexicalComposerContext as e,LexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEditor as o,$getRoot as n,$createParagraphNode as i,$getSelection as r,HISTORY_MERGE_TAG as a}from\"lexical\";import{useLayoutEffect as c,useEffect as l,useMemo as d}from\"react\";import{jsx as s}from\"react/jsx-runtime\";const m=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,u=m?c:l,p={tag:a};function f({initialConfig:a,children:c}){const l=d(()=>{const{theme:t,namespace:c,nodes:l,onError:d,editorState:s,html:u}=a,f=e(null,t),E=o({editable:a.editable,html:u,namespace:c,nodes:l,onError:e=>d(e,E),theme:t});return function(e,t){if(null===t)return;if(void 0===t)e.update(()=>{const t=n();if(t.isEmpty()){const o=i();t.append(o);const n=m?document.activeElement:null;(null!==r()||null!==n&&n===e.getRootElement())&&o.select()}},p);else if(null!==t)switch(typeof t){case\"string\":{const o=e.parseEditorState(t);e.setEditorState(o,p);break}case\"object\":e.setEditorState(t,p);break;case\"function\":e.update(()=>{n().isEmpty()&&t(e)},p)}}(E,s),[E,f]},[]);return u(()=>{const e=a.editable,[t]=l;t.setEditable(void 0===e||e)},[]),s(t.Provider,{value:l,children:c})}export{f as LexicalComposer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{defineExtension as e}from\"lexical\";const r=e({name:\"@lexical/react/ReactProvider\"});export{r as ReactProviderExtension};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$getRoot as t,$isDecoratorNode as e,$isElementNode as n,$isParagraphNode as r,$isTextNode as i,TextNode as o,$createTextNode as l}from\"lexical\";function s(){return t().getTextContent()}function f(t,e=!0){if(t)return!1;let n=s();return e&&(n=n.trim()),\"\"===n}function u(t,e){return()=>f(t,e)}function c(o){if(!f(o,!1))return!1;const l=t().getChildren(),s=l.length;if(s>1)return!1;for(let t=0;t<s;t++){const o=l[t];if(e(o))return!1;if(n(o)){if(!r(o))return!1;if(0!==o.__indent)return!1;const e=o.getChildren(),n=e.length;for(let r=0;r<n;r++){const n=e[t];if(!i(n))return!1}}}return!0}function g(t){return()=>c(t)}function a(t,e){let r=t.getFirstChild(),o=0;t:for(;null!==r;){if(n(r)){const t=r.getFirstChild();if(null!==t){r=t;continue}}else if(i(r)){const t=r.getTextContentSize();if(o+t>e)return{node:r,offset:e-o};o+=t}const t=r.getNextSibling();if(null!==t){r=t;continue}let l=r.getParent();for(;null!==l;){const t=l.getNextSibling();if(null!==t){r=t;continue t}l=l.getParent()}break}return null}function d(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function x(t,e,n,r){const s=t=>t instanceof n,f=t=>{const e=l(t.getTextContent());e.setFormat(t.getFormat()),t.replace(e)};return[t.registerNodeTransform(o,t=>{if(!t.isSimpleText())return;let n,o=t.getPreviousSibling(),l=t.getTextContent(),u=t;if(i(o)){const n=o.getTextContent(),r=e(n+l);if(s(o)){if(null===r||0!==(t=>t.getLatest().__mode)(o))return void f(o);{const e=r.end-n.length;if(e>0){const r=n+l.slice(0,e);if(o.select(),o.setTextContent(r),e===l.length)t.remove();else{const n=l.slice(e);t.setTextContent(n)}return}}}else if(null===r||r.start<n.length)return}let c=0;for(;;){n=e(l);let t,g=null===n?\"\":l.slice(n.end);if(l=g,\"\"===g){const t=u.getNextSibling();if(i(t)){g=u.getTextContent()+t.getTextContent();const n=e(g);if(null===n)return void(s(t)?f(t):t.markDirty());if(0!==n.start)return}}if(null===n)return;if(0===n.start&&i(o)&&o.isTextEntity()){c+=n.end;continue}0===n.start?[t,u]=u.splitText(n.end):[,t,u]=u.splitText(n.start+c,n.end+c),void 0===t&&d(165,\"nodeToReplace\");const a=r(t);if(a.setFormat(t.getFormat()),t.replace(a),null==u)return;c=0,o=a}}),t.registerNodeTransform(n,t=>{const n=t.getTextContent(),r=e(n);if(null===r||0!==r.start)return void f(t);if(n.length>r.end)return void t.splitText(r.end);const o=t.getPreviousSibling();i(o)&&o.isTextEntity()&&(f(o),f(t));const l=t.getNextSibling();i(l)&&l.isTextEntity()&&(f(l),s(t)&&f(t))})]}export{c as $canShowPlaceholder,g as $canShowPlaceholderCurry,a as $findTextIntersectionFromCharacters,f as $isRootTextContentEmpty,u as $isRootTextContentEmptyCurry,s as $rootTextContent,x as registerLexicalTextEntity};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{effect as e,namedSignals as t}from\"@lexical/extension\";import{defineExtension as n,safeCast as o,$getSelection as i,$isRangeSelection as a,$isTextNode as r}from\"lexical\";function s(e){const t=window.location.origin,n=n=>{if(n.origin!==t)return;const o=e.getRootElement();if(document.activeElement!==o)return;const s=n.data;if(\"string\"==typeof s){let t;try{t=JSON.parse(s)}catch(e){return}if(t&&\"nuanria_messaging\"===t.protocol&&\"request\"===t.type){const o=t.payload;if(o&&\"makeChanges\"===o.functionId){const t=o.args;if(t){const[o,s,d,c,g]=t;e.update(()=>{const e=i();if(a(e)){const t=e.anchor;let i=t.getNode(),a=0,l=0;if(r(i)&&o>=0&&s>=0&&(a=o,l=o+s,e.setTextNodeRange(i,a,i,l)),a===l&&\"\"===d||(e.insertRawText(d),i=t.getNode()),r(i)){a=c,l=c+g;const t=i.getTextContentSize();a=a>t?t:a,l=l>t?t:l,e.setTextNodeRange(i,a,i,l)}n.stopImmediatePropagation()}})}}}}};return window.addEventListener(\"message\",n,!0),()=>{window.removeEventListener(\"message\",n,!0)}}const d=n({build:(e,n,o)=>t(n),config:o({disabled:\"undefined\"==typeof window}),name:\"@lexical/dragon\",register:(t,n,o)=>e(()=>o.getOutput().disabled.value?void 0:s(t))});export{d as DragonExtension,s as registerDragonSupport};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$insertDataTransferForRichText as t,$handleRichTextDrop as e,setLexicalClipboardDataTransfer as n,$getClipboardDataFromSelection as r,$writeDragSourceToDataTransfer as o,copyToClipboard as i}from\"@lexical/clipboard\";import{DragonExtension as s}from\"@lexical/dragon\";import{$isParentRTL as a,$shouldOverrideDefaultCharacterSelection as c,$moveCharacter as u}from\"@lexical/selection\";import{mergeRegister as l,$findMatchingParent as d,$handleIndentAndOutdent as m,objectKlassEquals as f,addClassNamesToElement as g,isHTMLElement as p,$getNearestBlockElementAncestorOrThrow as h}from\"@lexical/utils\";import{createCommand as C,defineExtension as v,CLICK_COMMAND as y,$getSelection as x,$isNodeSelection as D,COMMAND_PRIORITY_EDITOR as _,DELETE_CHARACTER_COMMAND as N,$isRangeSelection as w,DELETE_WORD_COMMAND as T,DELETE_LINE_COMMAND as E,CONTROLLED_TEXT_INSERTION_COMMAND as F,REMOVE_TEXT_COMMAND as O,FORMAT_TEXT_COMMAND as P,FORMAT_ELEMENT_COMMAND as A,$isElementNode as S,INSERT_LINE_BREAK_COMMAND as M,INSERT_PARAGRAPH_COMMAND as I,INSERT_TAB_COMMAND as b,$createTabNode as K,$insertNodes as k,INDENT_CONTENT_COMMAND as J,OUTDENT_CONTENT_COMMAND as L,KEY_ARROW_UP_COMMAND as W,$getAdjacentNode as R,$isDecoratorNode as q,KEY_ARROW_DOWN_COMMAND as z,KEY_ARROW_LEFT_COMMAND as X,KEY_ARROW_RIGHT_COMMAND as Y,KEY_BACKSPACE_COMMAND as B,KEY_DELETE_COMMAND as G,KEY_ENTER_COMMAND as V,KEY_ESCAPE_COMMAND as j,DROP_COMMAND as H,$getNearestNodeFromDOMNode as Q,$createRangeSelection as U,$isTextNode as Z,$normalizeSelection__EXPERIMENTAL as $,$setSelection as tt,DRAGSTART_COMMAND as et,DRAGOVER_COMMAND as nt,SELECT_ALL_COMMAND as rt,$selectAll as ot,COPY_COMMAND as it,CUT_COMMAND as st,PASTE_COMMAND as at,isDOMNode as ct,isSelectionCapturedInDecoratorInput as ut,KEY_SPACE_COMMAND as lt,KEY_TAB_COMMAND as dt,ElementNode as mt,$createParagraphNode as ft,$getRoot as gt,$isRootNode as pt,PASTE_TAG as ht,setNodeIndentFromDOM as Ct,$applyNodeReplacement as vt}from\"lexical\";function yt(t,e){if(void 0!==document.caretRangeFromPoint){const n=document.caretRangeFromPoint(t,e);return null===n?null:{node:n.startContainer,offset:n.startOffset}}if(\"undefined\"!==document.caretPositionFromPoint){const n=document.caretPositionFromPoint(t,e);return null===n?null:{node:n.offsetNode,offset:n.offset}}return null}const xt=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,Dt=xt&&\"documentMode\"in document?document.documentMode:null,_t=xt&&/Mac|iPod|iPhone|iPad/.test(navigator.platform),Nt=!(!xt||!(\"InputEvent\"in window)||Dt)&&\"getTargetRanges\"in new window.InputEvent(\"input\"),wt=xt&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,Tt=xt&&/Android/.test(navigator.userAgent),Et=xt&&/Version\\/[\\d.]+.*Safari/.test(navigator.userAgent)&&!Tt,Ft=xt&&/^(?=.*Chrome).*/i.test(navigator.userAgent),Ot=xt&&/AppleWebKit\\/[\\d.]+/.test(navigator.userAgent)&&_t&&!Ft,Pt=C(\"DRAG_DROP_PASTE_FILE\");class At extends mt{static getType(){return\"quote\"}static clone(t){return new At(t.__key)}createDOM(t){const e=document.createElement(\"blockquote\");return g(e,t.theme.quote),e}updateDOM(t,e){return!1}static importDOM(){return{blockquote:t=>({conversion:kt,priority:0})}}exportDOM(t){const{element:e}=super.exportDOM(t);if(p(e)){this.isEmpty()&&e.append(document.createElement(\"br\"));const t=this.getFormatType();t&&(e.style.textAlign=t);const n=this.getDirection();n&&(e.dir=n)}return{element:e}}static importJSON(t){return St().updateFromJSON(t)}insertNewAfter(t,e){const n=ft(),r=this.getDirection();return n.setDirection(r),this.insertAfter(n,e),n}collapseAtStart(){const t=ft();return this.getChildren().forEach(e=>t.append(e)),this.replace(t),!0}canMergeWhenEmpty(){return!0}}function St(){return vt(new At)}function Mt(t){return t instanceof At}class It extends mt{__tag;static getType(){return\"heading\"}static clone(t){return new It(t.__tag,t.__key)}afterCloneFrom(t){super.afterCloneFrom(t),this.__tag=t.__tag}constructor(t=\"h1\",e){super(e),this.__tag=t}getTag(){return this.getLatest().__tag}setTag(t){const e=this.getWritable();return e.__tag=t,e}createDOM(t){const e=this.__tag,n=document.createElement(e),r=t.theme.heading;if(void 0!==r){const t=r[e];g(n,t)}return n}updateDOM(t,e,n){return t.__tag!==this.__tag}static importDOM(){return{h1:t=>({conversion:Kt,priority:0}),h2:t=>({conversion:Kt,priority:0}),h3:t=>({conversion:Kt,priority:0}),h4:t=>({conversion:Kt,priority:0}),h5:t=>({conversion:Kt,priority:0}),h6:t=>({conversion:Kt,priority:0}),p:t=>{const e=t.firstChild;return null!==e&&bt(e)?{conversion:()=>({node:null}),priority:3}:null},span:t=>bt(t)?{conversion:t=>({node:Jt(\"h1\")}),priority:3}:null}}exportDOM(t){const{element:e}=super.exportDOM(t);if(p(e)){this.isEmpty()&&e.append(document.createElement(\"br\"));const t=this.getFormatType();t&&(e.style.textAlign=t);const n=this.getDirection();n&&(e.dir=n)}return{element:e}}static importJSON(t){return Jt(t.tag).updateFromJSON(t)}updateFromJSON(t){return super.updateFromJSON(t).setTag(t.tag)}exportJSON(){return{...super.exportJSON(),tag:this.getTag()}}insertNewAfter(t,e=!0){const n=t?t.anchor.offset:0,r=this.getLastDescendant(),o=!r||t&&t.anchor.key===r.getKey()&&n===r.getTextContentSize()||!t?ft():Jt(this.getTag()),i=this.getDirection();if(o.setDirection(i),this.insertAfter(o,e),0===n&&!this.isEmpty()&&t){const t=ft();t.select(),this.replace(t,!0)}return o}collapseAtStart(){const t=this.isEmpty()?ft():Jt(this.getTag());return this.getChildren().forEach(e=>t.append(e)),this.replace(t),!0}extractWithChild(){return!0}}function bt(t){return\"span\"===t.nodeName.toLowerCase()&&\"26pt\"===t.style.fontSize}function Kt(t){const e=t.nodeName.toLowerCase();let n=null;return\"h1\"!==e&&\"h2\"!==e&&\"h3\"!==e&&\"h4\"!==e&&\"h5\"!==e&&\"h6\"!==e||(n=Jt(e),null!==t.style&&(Ct(t,n),n.setFormat(t.style.textAlign))),{node:n}}function kt(t){const e=St();return null!==t.style&&(e.setFormat(t.style.textAlign),Ct(t,e)),{node:e}}function Jt(t=\"h1\"){return vt(new It(t))}function Lt(t){return t instanceof It}function Wt(t){let e=null;if(f(t,DragEvent)?e=t.dataTransfer:f(t,ClipboardEvent)&&(e=t.clipboardData),null===e)return[!1,[],!1];const n=e.types,r=n.includes(\"Files\"),o=n.includes(\"text/html\")||n.includes(\"text/plain\");return[r,Array.from(e.files),o]}function Rt(t){const e=Q(t);return q(e)}function qt(t){for(const e of[\"lowercase\",\"uppercase\",\"capitalize\"])t.hasFormat(e)&&t.toggleFormat(e)}function zt(s){return l(s.registerCommand(y,t=>{const e=x();return!!D(e)&&(e.clear(),!0)},_),s.registerCommand(N,t=>{const e=x();return w(e)?(e.deleteCharacter(t),!0):!!D(e)&&(e.deleteNodes(),!0)},_),s.registerCommand(T,t=>{const e=x();return!!w(e)&&(e.deleteWord(t),!0)},_),s.registerCommand(E,t=>{const e=x();return!!w(e)&&(e.deleteLine(t),!0)},_),s.registerCommand(F,e=>{const n=x();if(\"string\"==typeof e)null!==n&&n.insertText(e);else{if(null===n)return!1;const r=e.dataTransfer;if(null!=r)t(r,n,s);else if(w(n)){const t=e.data;return t&&n.insertText(t),!0}}return!0},_),s.registerCommand(O,()=>{const t=x();return!!w(t)&&(t.removeText(),!0)},_),s.registerCommand(P,t=>{const e=x();return!!w(e)&&(e.formatText(t),!0)},_),s.registerCommand(A,t=>{const e=x();if(!w(e)&&!D(e))return!1;const n=e.getNodes();for(const e of n){const n=d(e,t=>S(t)&&!t.isInline());null!==n&&n.setFormat(t)}return!0},_),s.registerCommand(M,t=>{const e=x();return!!w(e)&&(e.insertLineBreak(t),!0)},_),s.registerCommand(I,()=>{const t=x();return!!w(t)&&(t.insertParagraph(),!0)},_),s.registerCommand(b,()=>{const t=K(),e=x();return w(e)&&(t.setFormat(e.format),t.setStyle(e.style)),k([t]),!0},_),s.registerCommand(J,()=>m(t=>{const e=t.getIndent();t.setIndent(e+1)}),_),s.registerCommand(L,()=>m(t=>{const e=t.getIndent();e>0&&t.setIndent(Math.max(0,e-1))}),_),s.registerCommand(W,t=>{const e=x();if(D(e)){const n=e.getNodes();if(n.length>0)return t.preventDefault(),n[0].selectPrevious(),!0}else if(w(e)){const n=R(e.focus,!0);if(!t.shiftKey&&q(n)&&!n.isIsolated()&&!n.isInline())return n.selectPrevious(),t.preventDefault(),!0}return!1},_),s.registerCommand(z,t=>{const e=x();if(D(e)){const n=e.getNodes();if(n.length>0)return t.preventDefault(),n[0].selectNext(0,0),!0}else if(w(e)){if(function(t){const e=t.focus;return\"root\"===e.key&&e.offset===gt().getChildrenSize()}(e))return t.preventDefault(),!0;const n=R(e.focus,!1);if(!t.shiftKey&&q(n)&&!n.isIsolated()&&!n.isInline())return n.selectNext(),t.preventDefault(),!0}return!1},_),s.registerCommand(X,t=>{const e=x();if(D(e)){const n=e.getNodes();if(n.length>0)return t.preventDefault(),a(n[0])?n[0].selectNext(0,0):n[0].selectPrevious(),!0}if(!w(e))return!1;if(c(e,!0)){const n=t.shiftKey;return t.preventDefault(),u(e,n,!0),!0}return!1},_),s.registerCommand(Y,t=>{const e=x();if(D(e)){const n=e.getNodes();if(n.length>0)return t.preventDefault(),a(n[0])?n[0].selectPrevious():n[0].selectNext(0,0),!0}if(!w(e))return!1;const n=t.shiftKey;return!!c(e,!1)&&(t.preventDefault(),u(e,n,!1),!0)},_),s.registerCommand(B,t=>{if(Rt(t.target))return!1;const e=x();if(w(e)){if(function(t){if(!t.isCollapsed())return!1;const{anchor:e}=t;if(0!==e.offset)return!1;const n=e.getNode();if(pt(n))return!1;const r=h(n);return r.getIndent()>0&&(r.is(n)||n.is(r.getFirstDescendant()))}(e))return t.preventDefault(),s.dispatchCommand(L,void 0);if(wt&&\"ko-KR\"===navigator.language)return!1}else if(!D(e))return!1;return t.preventDefault(),s.dispatchCommand(N,!0)},_),s.registerCommand(G,t=>{if(Rt(t.target))return!1;const e=x();return!(!w(e)&&!D(e))&&(t.preventDefault(),s.dispatchCommand(N,!1))},_),s.registerCommand(V,t=>{const e=x();if(!w(e))return!1;if(qt(e),null!==t){if((wt||Et||Ot)&&Nt)return!1;if(t.preventDefault(),t.shiftKey)return s.dispatchCommand(M,!1)}return s.dispatchCommand(I,void 0)},_),s.registerCommand(j,()=>{const t=x();return!!w(t)&&(s.blur(),!0)},_),s.registerCommand(H,t=>{const[,n]=Wt(t);if(n.length>0){const e=yt(t.clientX,t.clientY);if(null!==e){const{offset:t,node:r}=e,o=Q(r);if(null!==o){const e=U();if(Z(o))e.anchor.set(o.getKey(),t,\"text\"),e.focus.set(o.getKey(),t,\"text\");else{const t=o.getParentOrThrow().getKey(),n=o.getIndexWithinParent()+1;e.anchor.set(t,n,\"element\"),e.focus.set(t,n,\"element\")}const n=$(e);tt(n)}s.dispatchCommand(Pt,n)}return t.preventDefault(),!0}return e(t,s)},_),s.registerCommand(et,t=>{const[e]=Wt(t),i=x();return!(e&&!w(i))&&(w(i)&&!i.isCollapsed()&&null!==t.dataTransfer&&(n(t.dataTransfer,r(i)),o(t.dataTransfer,s)),!0)},_),s.registerCommand(nt,t=>{const[e]=Wt(t),n=x();if(e&&!w(n))return!1;const r=yt(t.clientX,t.clientY);if(null!==r){const e=Q(r.node);q(e)&&t.preventDefault()}return!0},_),s.registerCommand(rt,()=>(ot(),!0),_),s.registerCommand(it,t=>(i(s,f(t,ClipboardEvent)?t:null),!0),_),s.registerCommand(st,t=>(async function(t,e){await i(e,f(t,ClipboardEvent)?t:null),e.update(()=>{const t=x();w(t)?t.removeText():D(t)&&t.getNodes().forEach(t=>t.remove())})}(t,s),!0),_),s.registerCommand(at,e=>{const[,n,r]=Wt(e);if(n.length>0&&!r)return s.dispatchCommand(Pt,n),!0;if(ct(e.target)&&ut(e.target))return!1;return null!==x()&&(function(e,n){e.preventDefault(),n.update(()=>{const r=x(),o=f(e,InputEvent)||f(e,KeyboardEvent)?null:e.clipboardData;null!=o&&null!==r&&t(o,r,n)},{tag:ht})}(e,s),!0)},_),s.registerCommand(lt,t=>{const e=x();return w(e)&&qt(e),!1},_),s.registerCommand(dt,t=>{const e=x();return w(e)&&qt(e),!1},_))}const Xt=v({conflictsWith:[\"@lexical/plain-text\"],dependencies:[s],name:\"@lexical/rich-text\",nodes:()=>[It,At],register:zt});export{Jt as $createHeadingNode,St as $createQuoteNode,Lt as $isHeadingNode,Mt as $isQuoteNode,Pt as DRAG_DROP_PASTE,It as HeadingNode,At as QuoteNode,Xt as RichTextExtension,Wt as eventFiles,zt as registerRichText};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useLexicalEditable as e}from\"@lexical/react/useLexicalEditable\";import{LexicalBuilder as t}from\"@lexical/extension\";import{ReactProviderExtension as o}from\"@lexical/react/ReactProviderExtension\";import{useLayoutEffect as n,useEffect as i,useState as c,useMemo as a,Suspense as l}from\"react\";import{flushSync as s,createPortal as u}from\"react-dom\";import{jsx as d,jsxs as f,Fragment as m}from\"react/jsx-runtime\";import{$canShowPlaceholderCurry as p}from\"@lexical/text\";import{mergeRegister as x}from\"@lexical/utils\";import{registerDragonSupport as E}from\"@lexical/dragon\";import{registerRichText as h}from\"@lexical/rich-text\";function g(r,...e){const t=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",r);for(const r of e)o.append(\"v\",r);throw t.search=o.toString(),Error(`Minified Lexical error #${r}; visit ${t.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}const y=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:i;function w({editor:r,ErrorBoundary:e}){return function(r,e){const[t,o]=c(()=>r.getDecorators());return y(()=>r.registerDecoratorListener(r=>{s(()=>{o(r)})}),[r]),i(()=>{o(r.getDecorators())},[r]),a(()=>{const o=[],n=Object.keys(t);for(let i=0;i<n.length;i++){const c=n[i],a=d(e,{onError:e=>r._onError(e),children:d(l,{fallback:null,children:t[c]})}),s=r.getElementByKey(c);null!==s&&o.push(u(a,s,c))}return o},[e,t,r])}(r,e)}function v({editor:r,ErrorBoundary:e}){return function(r){const e=t.maybeFromEditor(r);if(e&&e.hasExtensionByName(o.name)){for(const r of[\"@lexical/plain-text\",\"@lexical/rich-text\"])e.hasExtensionByName(r)&&g(320,r);return!0}return!1}(r)?null:d(w,{editor:r,ErrorBoundary:e})}function B(r){return r.getEditorState().read(p(r.isComposing()))}function L({contentEditable:e,placeholder:t=null,ErrorBoundary:o}){const[n]=r();return function(r){y(()=>x(h(r),E(r)),[r])}(n),f(m,{children:[e,d(b,{content:t}),d(v,{editor:n,ErrorBoundary:o})]})}function b({content:t}){const[o]=r(),n=function(r){const[e,t]=c(()=>B(r));return y(()=>{function e(){const e=B(r);t(e)}return e(),x(r.registerUpdateListener(()=>{e()}),r.registerEditableListener(()=>{e()}))},[r]),e}(o),i=e();return n?\"function\"==typeof t?t(i):t:null}export{L as RichTextPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as i,forwardRef as a,useState as r,useCallback as n,useMemo as o}from\"react\";import{jsx as l,jsxs as d,Fragment as c}from\"react/jsx-runtime\";import{$canShowPlaceholderCurry as s}from\"@lexical/text\";import{mergeRegister as u}from\"@lexical/utils\";const m=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:i;function f({editor:e,ariaActiveDescendant:t,ariaAutoComplete:i,ariaControls:a,ariaDescribedBy:d,ariaErrorMessage:c,ariaExpanded:s,ariaInvalid:u,ariaLabel:f,ariaLabelledBy:b,ariaMultiline:p,ariaOwns:x,ariaRequired:E,autoCapitalize:v,className:w,id:y,role:C=\"textbox\",spellCheck:g=!0,style:L,tabIndex:h,\"data-testid\":D,...I},R){const[k,q]=r(e.isEditable()),z=n(t=>{t&&t.ownerDocument&&t.ownerDocument.defaultView?e.setRootElement(t):e.setRootElement(null)},[e]),A=o(()=>function(...e){return t=>{for(const i of e)\"function\"==typeof i?i(t):null!=i&&(i.current=t)}}(R,z),[z,R]);return m(()=>(q(e.isEditable()),e.registerEditableListener(e=>{q(e)})),[e]),l(\"div\",{\"aria-activedescendant\":k?t:void 0,\"aria-autocomplete\":k?i:\"none\",\"aria-controls\":k?a:void 0,\"aria-describedby\":d,...null!=c?{\"aria-errormessage\":c}:{},\"aria-expanded\":k&&\"combobox\"===C?!!s:void 0,...null!=u?{\"aria-invalid\":u}:{},\"aria-label\":f,\"aria-labelledby\":b,\"aria-multiline\":p,\"aria-owns\":k?x:void 0,\"aria-readonly\":!k||void 0,\"aria-required\":E,autoCapitalize:v,className:w,contentEditable:k,\"data-testid\":D,id:y,ref:A,role:C,spellCheck:g,style:L,tabIndex:h,...I})}const b=a(f);function p(e){return e.getEditorState().read(s(e.isComposing()))}const x=a(E);function E(t,i){const{placeholder:a,...r}=t,[n]=e();return d(c,{children:[l(b,{editor:n,...r,ref:i}),null!=a&&l(v,{editor:n,content:a})]})}function v({content:e,editor:i}){const a=function(e){const[t,i]=r(()=>p(e));return m(()=>{function t(){const t=p(e);i(t)}return t(),u(e.registerUpdateListener(()=>{t()}),e.registerEditableListener(()=>{t()}))},[e]),t}(i),[n,o]=r(i.isEditable());if(t(()=>(o(i.isEditable()),i.registerEditableListener(e=>{o(e)})),[i]),!a)return null;let d=null;return\"function\"==typeof e?d=e(n):null!==e&&(d=e),null===d?null:l(\"div\",{\"aria-hidden\":!0,children:d})}export{x as ContentEditable,b as ContentEditableElement};\n","\"use client\";\nimport { createContext as l, Component as y, createElement as d, useContext as f, useState as p, useMemo as E, forwardRef as B } from \"react\";\nconst h = l(null), c = {\n didCatch: !1,\n error: null\n};\nclass m extends y {\n constructor(e) {\n super(e), this.resetErrorBoundary = this.resetErrorBoundary.bind(this), this.state = c;\n }\n static getDerivedStateFromError(e) {\n return { didCatch: !0, error: e };\n }\n resetErrorBoundary(...e) {\n const { error: t } = this.state;\n t !== null && (this.props.onReset?.({\n args: e,\n reason: \"imperative-api\"\n }), this.setState(c));\n }\n componentDidCatch(e, t) {\n this.props.onError?.(e, t);\n }\n componentDidUpdate(e, t) {\n const { didCatch: o } = this.state, { resetKeys: s } = this.props;\n o && t.error !== null && C(e.resetKeys, s) && (this.props.onReset?.({\n next: s,\n prev: e.resetKeys,\n reason: \"keys\"\n }), this.setState(c));\n }\n render() {\n const { children: e, fallbackRender: t, FallbackComponent: o, fallback: s } = this.props, { didCatch: n, error: a } = this.state;\n let i = e;\n if (n) {\n const u = {\n error: a,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof t == \"function\")\n i = t(u);\n else if (o)\n i = d(o, u);\n else if (s !== void 0)\n i = s;\n else\n throw a;\n }\n return d(\n h.Provider,\n {\n value: {\n didCatch: n,\n error: a,\n resetErrorBoundary: this.resetErrorBoundary\n }\n },\n i\n );\n }\n}\nfunction C(r = [], e = []) {\n return r.length !== e.length || r.some((t, o) => !Object.is(t, e[o]));\n}\nfunction g(r) {\n return r !== null && typeof r == \"object\" && \"didCatch\" in r && typeof r.didCatch == \"boolean\" && \"error\" in r && \"resetErrorBoundary\" in r && typeof r.resetErrorBoundary == \"function\";\n}\nfunction x(r) {\n if (!g(r))\n throw new Error(\"ErrorBoundaryContext not found\");\n}\nfunction k() {\n const r = f(h);\n x(r);\n const { error: e, resetErrorBoundary: t } = r, [o, s] = p({\n error: null,\n hasError: !1\n }), n = E(\n () => ({\n error: e,\n resetBoundary: () => {\n t(), s({ error: null, hasError: !1 });\n },\n showBoundary: (a) => s({\n error: a,\n hasError: !0\n })\n }),\n [e, t]\n );\n if (o.hasError)\n throw o.error;\n return n;\n}\nfunction S(r) {\n switch (typeof r) {\n case \"object\": {\n if (r !== null && \"message\" in r && typeof r.message == \"string\")\n return r.message;\n break;\n }\n case \"string\":\n return r;\n }\n}\nfunction w(r, e) {\n const t = B(\n (s, n) => d(\n m,\n e,\n d(r, { ...s, ref: n })\n )\n ), o = r.displayName || r.name || \"Unknown\";\n return t.displayName = `withErrorBoundary(${o})`, t;\n}\nexport {\n m as ErrorBoundary,\n h as ErrorBoundaryContext,\n S as getErrorMessage,\n k as useErrorBoundary,\n w as withErrorBoundary\n};\n//# sourceMappingURL=react-error-boundary.js.map\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{ErrorBoundary as r}from\"react-error-boundary\";import{jsx as o}from\"react/jsx-runtime\";function n({children:n,onError:e}){return o(r,{fallback:o(\"div\",{style:{border:\"1px solid #f00\",color:\"#f00\",padding:\"8px\"},children:\"An error was thrown.\"}),onError:e,children:n})}export{n as LexicalErrorBoundary};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{HISTORY_MERGE_TAG as t}from\"lexical\";import{useLayoutEffect as o,useEffect as i}from\"react\";const r=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?o:i;function n({ignoreHistoryMergeTagChange:o=!0,ignoreSelectionChange:i=!1,onChange:n}){const[a]=e();return r(()=>{if(n)return a.registerUpdateListener(({editorState:e,dirtyElements:r,dirtyLeaves:d,prevEditorState:s,tags:c})=>{i&&0===r.size&&0===d.size||o&&c.has(t)||s.isEmpty()||n(e,a,c)})},[a,o,i,n]),null}export{n as OnChangePlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{registerList as r,ListNode as e,ListItemNode as o,registerListStrictIndentTransform as t}from\"@lexical/list\";import{useLexicalComposerContext as i}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as n}from\"lexical\";import{useEffect as s}from\"react\";function l({hasStrictIndent:l=!1,shouldPreserveNumbering:m=!1}){const[c]=i();return s(()=>{if(!c.hasNodes([e,o]))throw new Error(\"ListPlugin: ListNode and/or ListItemNode not registered on editor\")},[c]),s(()=>n(r(c,{restoreNumbering:m}),l?t(c):()=>{}),[c,l,m]),function(e){s(()=>r(e),[e])}(c),null}export{l as ListPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{namedSignals as r}from\"@lexical/extension\";import{LinkNode as t,registerLink as e}from\"@lexical/link\";import{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{useEffect as i}from\"react\";function l({validateUrl:l,attributes:n}){const[a]=o();return i(()=>{if(!a.hasNodes([t]))throw new Error(\"LinkPlugin: LinkNode not registered on editor\")}),i(()=>e(a,r({attributes:n,validateUrl:l})),[a,l,n]),null}export{l as LinkPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{namedSignals as e}from\"@lexical/extension\";import{registerClickableLink as o}from\"@lexical/link\";import{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useEffect as i}from\"react\";function t({newTab:t=!0,disabled:l=!1}){const[n]=r();return i(()=>o(n,e({disabled:l,newTab:t})),[n,t,l]),null}export{t as ClickableLinkPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{effect as t,namedSignals as e,batch as n,getPeerDependencyFromEditor as r}from\"@lexical/extension\";import{mergeRegister as o}from\"@lexical/utils\";import{defineExtension as i,safeCast as a,configExtension as s,UNDO_COMMAND as d,COMMAND_PRIORITY_EDITOR as l,REDO_COMMAND as u,CLEAR_EDITOR_COMMAND as c,CLEAR_HISTORY_COMMAND as f,CAN_REDO_COMMAND as p,CAN_UNDO_COMMAND as h,COMPOSITION_START_TAG as m,HISTORIC_TAG as g,COMPOSITION_END_TAG as y,HISTORY_PUSH_TAG as S,HISTORY_MERGE_TAG as _,$isRangeSelection as k,$isTextNode as v,$isRootNode as x}from\"lexical\";function C(t,e,n,r,o){if(null===t||0===n.size&&0===r.size&&!o)return 0;const i=e._selection,a=t._selection;if(o)return 1;if(!(k(i)&&k(a)&&a.isCollapsed()&&i.isCollapsed()))return 0;const s=function(t,e,n){const r=t._nodeMap,o=[];for(const t of e){const e=r.get(t);void 0!==e&&o.push(e)}for(const[t,e]of n){if(!e)continue;const n=r.get(t);void 0===n||x(n)||o.push(n)}return o}(e,n,r);if(0===s.length)return 0;if(s.length>1){const n=e._nodeMap,r=n.get(i.anchor.key),o=n.get(a.anchor.key);return r&&o&&!t._nodeMap.has(r.__key)&&v(r)&&1===r.__text.length&&1===i.anchor.offset?2:0}const d=s[0],l=t._nodeMap.get(d.__key);if(!v(l)||!v(d)||l.__mode!==d.__mode)return 0;const u=l.__text,c=d.__text;if(u===c)return 0;const f=i.anchor,p=a.anchor;if(f.key!==p.key||\"text\"!==f.type)return 0;const h=f.offset,m=p.offset,g=c.length-u.length;return 1===g&&m===h-1?2:-1===g&&m===h+1?3:-1===g&&m===h?4:0}function b(t,e,n){let r=n(),o=0,i=r,a=0,s=null;return(d,l,u,c,f,p)=>{const h=n();if(p.has(m)&&(i=r,a=o,s=d),p.has(g))return o=0,r=h,2;p.has(y)&&s&&(r=i,o=a,d=s);const x=C(d,l,c,f,t.isComposing()),b=(()=>{const n=null===u||u.editor===t,i=p.has(S);if(!i&&n&&p.has(_))return 0;if(1===x)return 2;if(null===d)return 1;const a=l._selection;if(!(c.size>0||f.size>0))return null!==a?0:2;const s=\"number\"==typeof e?e:e.peek();if(!1===i&&0!==x&&x===o&&h<r+s&&n)return 0;if(1===c.size){if(function(t,e,n){const r=e._nodeMap.get(t),o=n._nodeMap.get(t),i=e._selection,a=n._selection;return!(k(i)&&k(a)&&\"element\"===i.anchor.type&&\"element\"===i.focus.type&&\"text\"===a.anchor.type&&\"text\"===a.focus.type||!v(r)||!v(o)||r.__parent!==o.__parent)&&JSON.stringify(e.read(()=>r.exportJSON()))===JSON.stringify(n.read(()=>o.exportJSON()))}(Array.from(c)[0],d,l))return 0}return 1})();return r=h,o=x,b}}function w(t){t.undoStack=[],t.redoStack=[],t.current=null}function E(t,e,n,r=Date.now){const i=b(t,n,r);return o(t.registerCommand(d,()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==r.length){const o=e.current,i=r.pop();null!==o&&(n.push(o),t.dispatchCommand(p,!0)),0===r.length&&t.dispatchCommand(h,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:g})}}(t,e),!0),l),t.registerCommand(u,()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==n.length){const o=e.current;null!==o&&(r.push(o),t.dispatchCommand(h,!0));const i=n.pop();0===n.length&&t.dispatchCommand(p,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:g})}}(t,e),!0),l),t.registerCommand(c,()=>(w(e),!1),l),t.registerCommand(f,()=>(w(e),t.dispatchCommand(p,!1),t.dispatchCommand(h,!1),!0),l),t.registerUpdateListener(({editorState:n,prevEditorState:r,dirtyLeaves:o,dirtyElements:a,tags:s})=>{const d=e.current,l=e.redoStack,u=e.undoStack,c=null===d?null:d.editorState;if(null!==d&&n===c)return;const f=i(r,n,d,o,a,s);if(1===f)0!==l.length&&(e.redoStack=[],t.dispatchCommand(p,!1)),null!==d&&(u.push({...d}),t.dispatchCommand(h,!0));else if(2===f)return;e.current={editor:t,editorState:n}}))}function M(){return{current:null,redoStack:[],undoStack:[]}}const O=i({build:(t,{delay:n,createInitialHistoryState:r,disabled:o,now:i})=>e({delay:n,disabled:o,historyState:r(t),now:i}),config:a({createInitialHistoryState:M,delay:300,disabled:\"undefined\"==typeof window,now:Date.now}),name:\"@lexical/history/History\",register:(e,n,r)=>{const o=r.getOutput();return t(()=>o.disabled.value?void 0:E(e,o.historyState.value,o.delay,()=>o.now.peek()()))}});const z=i({build:(t,{disabled:n,parentEditor:r})=>e({disabled:n,parentEditor:r||t._parentEditor}),config:a({disabled:!1,parentEditor:null}),dependencies:[s(O,{disabled:!0})],name:\"@lexical/history/SharedHistory\",register:(e,o,i)=>t(()=>{const{disabled:t,parentEditor:e}=i.getOutput();if(!t.value){const{output:t}=i.getDependency(O),o=function(t){return t?r(t,O.name):null}(e.value);if(!o)return;const a=o.output;n(()=>{t.delay.value=a.delay.value,t.historyState.value=a.historyState.value,t.now.value=a.now.value,t.disabled.value=a.disabled.value})}})});export{O as HistoryExtension,z as SharedHistoryExtension,M as createEmptyHistoryState,E as registerHistory};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEmptyHistoryState as o,registerHistory as r}from\"@lexical/history\";export{createEmptyHistoryState}from\"@lexical/history\";import{useMemo as e,useEffect as i}from\"react\";function a({delay:a,externalHistoryState:c}){const[l]=t();return function(t,a,c=1e3){const l=e(()=>a||o(),[a]);i(()=>r(t,l,c),[c,t,l])}(l,c,a),null}export{a as HistoryPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{signal as e}from\"@lexical/extension\";import{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{$isScrollableTablesActive as o,setScrollableTablesActive as l,TableNode as t,registerTablePlugin as a,registerTableSelectionObserver as n,registerTableCellUnmergeTransform as s,TableCellNode as i}from\"@lexical/table\";import{useEffect as c,useState as u}from\"react\";function m({hasCellMerge:m=!0,hasCellBackgroundColor:f=!0,hasTabHandler:d=!0,hasHorizontalScroll:g=!1,hasNestedTables:p=!1}){const[x]=r();c(()=>{o(x)!==g&&(l(x,g),x.registerNodeTransform(t,()=>{})())},[x,g]);const C=function(r){const[o]=u(()=>e(r));o.peek()!==r&&(o.value=r);return o}(p);return c(()=>a(x,{hasNestedTables:C}),[x,C]),c(()=>n(x,d),[x,d]),c(()=>{if(!m)return s(x)},[x,m]),c(()=>{if(!f)return x.registerNodeTransform(i,e=>{null!==e.getBackgroundColor()&&e.setBackgroundColor(null)})},[x,f,m]),null}export{m as TablePlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import*as e from\"react\";function o({editorRef:o}){const[r]=t();return e.useEffect(()=>{\"function\"==typeof o?o(r):\"object\"==typeof o&&null!==o&&(o.current=r)},[r]),null}export{o as EditorRefPlugin};\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { $getSelection, $isRangeSelection, $setSelection, KEY_DOWN_COMMAND, COMMAND_PRIORITY_LOW } from 'lexical';\nimport { mergeRegister } from '@lexical/utils';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { $getTableCellNodeFromLexicalNode } from '@lexical/table';\n\nimport type { JSX } from 'react';\nimport type { Actions } from 'components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu';\nimport type { TableMutation } from 'components/RteEditor/Plugins/TablePlugin/TablePlugin';\nimport type { SearchResponse } from 'components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm';\n\nimport { CourseCataloguePlugin } from 'components/RteEditor/Plugins/CourseCataloguePlugin';\nimport {\n LinkPlugin,\n BlockFormatPlugin,\n ListPlugin,\n HistoryPlugin,\n TablePlugin,\n TableCellContextMenu,\n} from 'components/RteEditor/Plugins';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { removeScrollableContainers, setScrollableContainers } from 'components/RteEditor/helpers';\n\nexport type Position = {\n xPos: number;\n yPos: number;\n height: number;\n};\n\ninterface ToolBarProps {\n editorScrollPosition: number;\n onCatalogueLinkSearch?: (query: string, linkType: 'course' | 'programme') => void;\n catalogueSearchResponse?: SearchResponse;\n}\n\nexport const ToolBarPlugin = ({\n editorScrollPosition,\n onCatalogueLinkSearch,\n catalogueSearchResponse,\n}: ToolBarProps): JSX.Element => {\n const [editor] = useLexicalComposerContext();\n const [position, setPosition] = useState<Position | null>(null);\n const tableref = useRef<TableMutation>(null);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n setPosition(null);\n return;\n }\n\n const anchorNode = selection.anchor.getNode();\n const tableCell = $getTableCellNodeFromLexicalNode(anchorNode);\n if (!tableCell) {\n setPosition(null);\n return;\n }\n\n const domNode = editor.getElementByKey(tableCell.getKey());\n if (!domNode) return;\n\n const rect = domNode.getBoundingClientRect();\n setPosition({\n xPos: rect.right,\n yPos: rect.bottom,\n height: rect.height,\n });\n }, [editor]);\n\n const handleTableAction = (action: Actions) => {\n tableref.current?.mutateTable(action);\n };\n\n const handleResizeScroll = useCallback(() => {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n\n const tableCell = $getTableCellNodeFromLexicalNode(anchorNode);\n if (tableCell) {\n $setSelection(null);\n setPosition(null);\n }\n }\n });\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(updateToolbar);\n }),\n\n editor.registerCommand(\n KEY_DOWN_COMMAND,\n () => {\n setScrollableContainers(handleResizeScroll);\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n\n editor.registerRootListener((rootElement, prevRootElement) => {\n if (prevRootElement) {\n removeScrollableContainers(handleResizeScroll);\n }\n\n if (rootElement) {\n setScrollableContainers(handleResizeScroll);\n }\n })\n );\n }, [editor, updateToolbar, handleResizeScroll]);\n\n return (\n <div className={styles['editor__toolbar']}>\n <BlockFormatPlugin />\n <ListPlugin />\n <TablePlugin isActive={Boolean(position)} ref={tableref} />\n {position && (\n <TableCellContextMenu\n position={position}\n parentScrollPosition={editorScrollPosition}\n onAction={handleTableAction}\n />\n )}\n <LinkPlugin parentScrollPosition={editorScrollPosition} />\n {onCatalogueLinkSearch && catalogueSearchResponse && (\n <CourseCataloguePlugin\n parentScrollPosition={editorScrollPosition}\n onSearch={onCatalogueLinkSearch}\n searchResponse={catalogueSearchResponse}\n />\n )}\n <HistoryPlugin />\n </div>\n );\n};\n",".linkform {\n width: 26rem;\n}\n\n.linkform__input-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-bottom: 0.75rem;\n}\n\n.linkform__footer {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n margin-top: 1rem;\n}\n\n.linkform__input-url-wrapper {\n align-items: center;\n display: flex;\n gap: 0.5rem;\n justify-content: flex-start;\n width: 100%;\n}\n\n.linkform__input-url-wrapper div {\n width: 100%;\n}\n\n.linkform__open-url-button {\n align-items: center;\n aspect-ratio: 1/1;\n background-color: var(--color-uva-white);\n border: none;\n border-radius: 0.5rem;\n cursor: pointer;\n display: flex;\n height: 2.75rem;\n justify-content: center;\n width: 2.75rem;\n}\n\n.linkform__open-url-button:hover {\n background-color: var(--color-grey-400);\n border: 1px solid var(--color-grey-700);\n}\n\n.linkform__open-url-button:active {\n background-color: var(--color-uva-black);\n border: 1px solid var(--color-uva-black);\n color: var(--color-uva-white);\n}\n\n.editor__toolbar-button:active:hover {\n color: var(--color-uva-white);\n}\n","import { useState, forwardRef, useImperativeHandle, useRef, useId } from 'react';\n\nimport type { ChangeEvent, JSX } from 'react';\nimport type { LinkType } from 'components/RteEditor/Plugins/LinkPlugin';\n\nimport styles from './AddLinkForm.module.css';\n\nimport { ensureHttps, validateUrlWithProtocol } from 'components/RteEditor/Plugins/LinkPlugin/helpers';\nimport { Button, FeedbackBox, FormField, Icon, InputField, Label } from 'components';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ninterface AddLinkFormProps {\n onCloseHandler: () => void;\n onSaveHandler: (url: string, linktext: string) => void;\n isLink: LinkType;\n}\n\nexport interface addLinkFormMethods {\n clearForm: () => void;\n focusFirstField: () => void;\n setDefaults: (url: string, linktext: string) => void;\n}\n\nexport const AddLinkForm = forwardRef(\n (\n { onCloseHandler, onSaveHandler, isLink = { active: false, url: '', linktext: '' } }: AddLinkFormProps,\n ref\n ): JSX.Element => {\n const t = useTranslation();\n const [url, setUrl] = useState<string>(isLink.url || '');\n const [linkText, setLinkText] = useState<string>(isLink.linktext || '');\n const [showLinktextField, setShowLinktextField] = useState<boolean>(false);\n const [urlError, setUrlError] = useState<string | null>(null);\n const [linkTextError, setLinkTextError] = useState<string | null>(null);\n const firstField = useRef<HTMLInputElement>(null);\n const linkId = `link_${useId()}`;\n const textId = `text_${useId()}`;\n\n const handleOpenUrl = () => {\n window.open(ensureHttps(url), '_blank');\n };\n\n const handleUrl = (event: ChangeEvent<HTMLInputElement>) => {\n setUrl(event.target.value);\n };\n\n const handleLinkText = (event: ChangeEvent<HTMLInputElement>) => {\n setLinkText(event.target.value);\n };\n\n const validateUrl = (url: string): boolean => {\n if (validateUrlWithProtocol(url) === false || url.trim() === '') {\n setUrlError(t.errortext.urlNotValid);\n return false;\n }\n setUrlError(null);\n return true;\n };\n\n const validateLinkText = (linkText: string): boolean => {\n if (linkText.trim() === '') {\n setLinkTextError(t.errortext.linkTextNotValid);\n return false;\n }\n setLinkTextError(null);\n return true;\n };\n\n const handleSave = () => {\n if (!validateUrl(url) || (showLinktextField && !validateLinkText(linkText))) {\n return;\n }\n\n onSaveHandler(url, linkText);\n resetForm();\n };\n\n const handleClose = () => {\n onCloseHandler();\n resetForm();\n };\n\n const resetForm = () => {\n setUrl('');\n setShowLinktextField(false);\n setUrlError(null);\n setLinkTextError(null);\n };\n\n const setDefaults = (url: string, linktext: string) => {\n setUrl(url);\n if (!linktext && !url) {\n setShowLinktextField(true);\n }\n };\n\n const focusFirstField = () => {\n if (firstField.current) {\n firstField.current.focus();\n }\n };\n\n useImperativeHandle(ref, () => ({\n clearForm: resetForm,\n focusFirstField,\n setDefaults,\n }));\n\n return (\n <div className={styles['linkform']}>\n <FormField className={styles['linkform__input-field']}>\n <Label htmlFor={linkId}>{t.links.linkLabel}</Label>\n <div className={styles['linkform__input-url-wrapper']}>\n <InputField\n id={linkId}\n placeholder={t.links.linkPlaceholder}\n value={url}\n onChange={(event) => handleUrl(event)}\n onFocus={() => setUrlError(null)}\n ref={firstField}\n aria-label={t.aria.labels.linkField}\n />\n {url && (\n <button type=\"button\" onClick={handleOpenUrl} className={styles['linkform__open-url-button']}>\n <Icon name=\"ArrowTopRightOnSquare\" size={20} />\n </button>\n )}\n </div>\n {urlError && <FeedbackBox level=\"error\" feedback={urlError} />}\n </FormField>\n {showLinktextField && (\n <FormField className={styles['linkform__input-field']}>\n <Label htmlFor={textId}>{t.links.linkText}</Label>\n <InputField\n id={textId}\n value={linkText}\n onChange={(event) => handleLinkText(event)}\n onFocus={() => setLinkTextError(null)}\n aria-label={t.aria.labels.linkTextfield}\n />\n {linkTextError && <FeedbackBox level=\"error\" feedback={linkTextError} />}\n </FormField>\n )}\n <div className={styles['linkform__footer']}>\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel} type=\"button\">\n {t.common.cancel}\n </Button>\n <Button variant={'primary'} onClick={handleSave} aria-label={t.aria.labels.linkOkButton} type=\"button\">\n {t.links.addLink}\n </Button>\n </div>\n </div>\n );\n }\n);\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { clsx } from 'clsx';\nimport { $toggleLink, TOGGLE_LINK_COMMAND, LinkNode } from '@lexical/link';\nimport { useEffect, useRef, useState } from 'react';\nimport {\n $createTextNode,\n $getSelection,\n $isRangeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_LOW,\n KEY_DOWN_COMMAND,\n mergeRegister,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical';\nimport { $getNearestNodeOfType } from '@lexical/utils';\n\nimport type { ElementNode, BaseSelection } from 'lexical';\nimport type { addLinkFormMethods } from './AddLinkForm/AddLinkFrom';\nimport type { linkFormMethods } from './LinkContextMenu/LinkContextMenu';\n\nimport { AddLinkForm } from './AddLinkForm/AddLinkFrom';\nimport { ensureHttps } from './helpers';\nimport { LinkContextMenu } from './LinkContextMenu/LinkContextMenu';\n\nimport { useFlyout } from 'components/RteEditor/hooks/useFlyout';\nimport { Icon } from 'components';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\nconst PREVENT_OPEN_DELAY = 200;\n\nexport interface LinkType {\n active: boolean;\n url: string;\n linktext: string;\n}\n\ntype Position = {\n top: number;\n left: number;\n};\n\ninterface LinkPluginProps {\n parentScrollPosition: number;\n}\n\nexport const LinkPlugin = ({ parentScrollPosition }: LinkPluginProps) => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const { flyout, showFlyout, hideFlyout, isVisible } = useFlyout();\n const addLinkForm = useRef<addLinkFormMethods>(undefined);\n const preventOpen = useRef(false);\n const previousLinkText = useRef('');\n const selectedText = useRef('');\n const [isLink, setIsLink] = useState<LinkType>({ active: false, url: '', linktext: '' });\n const isVisibleRef = useRef(isVisible);\n const storedSelection = useRef<BaseSelection | null>(null);\n const linkButtonRef = useRef<HTMLButtonElement>(null);\n const editLinkForm = useRef<linkFormMethods>(undefined);\n\n const storeCursorPosition = () => {\n editor.update(() => {\n const selection = $getSelection();\n storedSelection.current = selection;\n });\n };\n\n const rePositionCursor = () => {\n editor.update(() => {\n if (storedSelection.current) {\n $setSelection(storedSelection.current);\n }\n });\n };\n\n const openContextMenu = (url: string, position: Position) => {\n showFlyout({\n position,\n children: (\n <LinkContextMenu\n url={url}\n onSave={(url) => insertLink(url, '')}\n onDelete={() => removeLink()}\n onClose={closeContextMenu}\n ref={editLinkForm}\n />\n ),\n });\n };\n\n const closeContextMenu = () => {\n editLinkForm.current?.clearForm();\n hideFlyout();\n rePositionCursor();\n };\n\n const openFlyout = () => {\n const rect = linkButtonRef.current?.getBoundingClientRect();\n if (!preventOpen.current && rect) {\n storeCursorPosition();\n showFlyout({ position: { top: rect.bottom, left: rect.left }, ...flyoutOptions });\n setTimeout(() => addLinkForm.current?.setDefaults('', selectedText.current), 0);\n }\n };\n\n const closeFlyout = () => {\n hideFlyout();\n rePositionCursor();\n };\n\n const insertLink = (url: string, linktext: string) => {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const linkNode = $getNearestNodeOfType(anchorNode, LinkNode);\n\n if (linktext && linktext !== '') {\n if (linkNode) {\n const newTextNode = $createTextNode(linktext);\n linkNode.replace(newTextNode);\n newTextNode.select();\n }\n if (linktext !== previousLinkText.current && previousLinkText.current === '') {\n const { anchor, focus } = selection;\n selection.insertText(linktext);\n anchor.offset -= linktext.length;\n focus.offset = anchor.offset + linktext.length;\n }\n }\n $toggleLink(ensureHttps(url), { target: '_blank' });\n }\n\n closeFlyout();\n });\n };\n\n const removeLink = (): void => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n closeContextMenu();\n };\n\n const flyoutOptions = {\n children: (\n <AddLinkForm\n isLink={isLink}\n onCloseHandler={closeFlyout}\n onSaveHandler={(url, linktext) => insertLink(url, linktext)}\n ref={addLinkForm}\n />\n ),\n };\n\n useEffect(() => {\n if (!isVisible) {\n addLinkForm.current?.clearForm();\n previousLinkText.current = selectedText.current = '';\n setTimeout(() => (preventOpen.current = false), PREVENT_OPEN_DELAY);\n } else {\n preventOpen.current = true;\n addLinkForm.current?.focusFirstField();\n }\n }, [addLinkForm, isVisible]);\n\n useEffect(() => {\n const handleSelectionClickOrChange = (selection: BaseSelection | null) => {\n if ($isRangeSelection(selection) && selection.isCollapsed()) {\n const anchorNode = selection.anchor.getNode() as ElementNode;\n const node = $getNearestNodeOfType(anchorNode, LinkNode);\n\n if (node) {\n const domNode = editor.getElementByKey(selection.anchor.getNode().getKey());\n const position = domNode\n ? { top: domNode.getBoundingClientRect().bottom, left: domNode.getBoundingClientRect().left }\n : { top: 0, left: 0 };\n openContextMenu(node.getURL(), position);\n return true;\n }\n }\n return false;\n };\n\n const unregisterSelect = editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const selection = $getSelection();\n selectedText.current = selection?.getTextContent() ?? '';\n handleSelectionClickOrChange(selection);\n return false;\n },\n 0\n );\n\n const unregisterClick = editor.registerCommand(\n CLICK_COMMAND,\n (event) => {\n const selection = $getSelection();\n storeCursorPosition();\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n handleSelectionClickOrChange(selection);\n return false;\n },\n 0\n );\n\n return () => {\n unregisterClick();\n unregisterSelect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.key === 'U') {\n const selection = $getSelection();\n storeCursorPosition();\n\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n const anchorNode = selection.anchor.getNode() as ElementNode;\n const node = $getNearestNodeOfType(anchorNode, LinkNode);\n\n const openFlyoutWithDefaults = (url = '', linkText = '') => {\n openFlyout();\n setTimeout(() => addLinkForm.current?.setDefaults(url, linkText), 0);\n };\n\n if (node) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n previousLinkText.current = node.getTextContent();\n openFlyoutWithDefaults(node.getURL(), node.getTextContent());\n\n return true;\n }\n\n const selectedTextContent = selection.getTextContent();\n if (selectedTextContent !== '') {\n selectedText.current = selectedTextContent;\n openFlyoutWithDefaults('', selectedText.current);\n\n return true;\n }\n\n openFlyout();\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\n setIsLink(\n editorState.read(() => {\n const selection = $getSelection();\n storeCursorPosition();\n\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode() as ElementNode;\n const node = $getNearestNodeOfType(anchorNode, LinkNode);\n\n if (node) {\n return {\n active: true,\n url: node.getURL(),\n linktext: node.getTextContent(),\n };\n }\n }\n\n return {\n active: false,\n url: '',\n linktext: '',\n };\n })\n );\n });\n\n return () => {\n removeKeyboardShortcut();\n removeStatusListener();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n useEffect(() => {\n isVisibleRef.current = isVisible;\n if (!isVisible) editLinkForm.current?.clearForm();\n }, [isVisible]);\n\n useEffect(() => {\n if (isVisible) {\n closeFlyout();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parentScrollPosition]);\n\n useEffect(() => {\n if (!isLink.active) {\n hideFlyout();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLink]);\n\n const handleOnScroll = () => {\n hideFlyout();\n };\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isVisibleRef.current) {\n event.preventDefault();\n closeFlyout();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n\n editor.registerRootListener((rootElement, prevRootElement) => {\n if (prevRootElement) {\n prevRootElement.removeEventListener('scroll', handleOnScroll);\n }\n\n if (rootElement) {\n rootElement.addEventListener('scroll', handleOnScroll);\n }\n })\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n <div className={styles['editor__toolbar-button-flyoutwrapper']}>\n <button\n onClick={openFlyout}\n title={t.links.linkTooltip}\n className={clsx(\n styles['editor__toolbar-button'],\n styles[`editor__toolbar-button--link`],\n isLink.active && styles['editor__toolbar-button--active']\n )}\n aria-label={t.aria.labels.link}\n aria-keyshortcuts={t.aria.keyshortcuts.link}\n type=\"button\"\n ref={linkButtonRef}\n >\n <Icon name=\"Link\" size={20} />\n </button>\n {flyout}\n </div>\n </div>\n );\n};\n","import { clsx } from 'clsx';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { CAN_UNDO_COMMAND, CAN_REDO_COMMAND, UNDO_COMMAND, REDO_COMMAND } from 'lexical';\nimport { useEffect, useState } from 'react';\n\nimport { Icon } from 'components';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\nexport const HistoryPlugin = () => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const [canUndo, setCanUndo] = useState(false);\n const [canRedo, setCanRedo] = useState(false);\n\n const handleUndo = () => {\n editor.dispatchCommand(UNDO_COMMAND, undefined);\n };\n\n const handleRedo = () => {\n editor.dispatchCommand(REDO_COMMAND, undefined);\n };\n\n useEffect(() => {\n return editor.registerCommand<boolean>(\n CAN_UNDO_COMMAND,\n (payload) => {\n setCanUndo(payload);\n return false;\n },\n 1\n );\n }, [editor]);\n\n useEffect(() => {\n return editor.registerCommand<boolean>(\n CAN_REDO_COMMAND,\n (payload) => {\n setCanRedo(payload);\n return false;\n },\n 1\n );\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n <button\n onClick={handleUndo}\n className={clsx(styles['editor__toolbar-button'], styles[`editor__toolbar-button--undo`])}\n aria-label={t.aria.labels.undo}\n aria-keyshortcuts={t.aria.keyshortcuts.undo}\n disabled={!canUndo}\n title={t.format.undoTooltip}\n type=\"button\"\n >\n <Icon name=\"StepBack\" size={24} />\n </button>\n <button\n onClick={handleRedo}\n className={clsx(styles['editor__toolbar-button'], styles[`editor__toolbar-button--redo`])}\n aria-label={t.aria.labels.redo}\n aria-keyshortcuts={t.aria.keyshortcuts.redo}\n disabled={!canRedo}\n title={t.format.redoTooltip}\n type=\"button\"\n >\n <Icon name=\"StepForwards\" size={24} />\n </button>\n </div>\n );\n};\n",".tableform {\n width: 18rem;\n}\n\n.tableform__input-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-bottom: 0.75rem;\n}\n\n.tableform__footer {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n margin-top: 1rem;\n}\n","import { useState, forwardRef, useImperativeHandle, useRef, useId, useEffect } from 'react';\n\nimport type { ChangeEvent } from 'react';\n\nimport styles from './AddTableFrom.module.css';\n\nimport { Button, FormField, InputField, Label } from 'components';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\nimport { removeScrollableContainers, setScrollableContainers } from 'components/RteEditor/helpers';\n\ninterface AddTableFormProps {\n onCloseHandler: () => void;\n onSaveHandler: (nrfOfRows: number, nrOfColumns: number) => void;\n}\n\nexport interface addTableForm {\n clearForm: () => void;\n focusFirstField: () => void;\n}\n\nexport const AddTableForm = forwardRef(({ onCloseHandler, onSaveHandler }: AddTableFormProps, ref) => {\n const t = useTranslation();\n const [rowCount, setRowCount] = useState<number>();\n const [columnCount, setColumnCount] = useState<number>();\n const firstField = useRef<HTMLInputElement>(null);\n const rowId = `row_${useId()}`;\n const columnId = `column_${useId()}`;\n\n const handleDimentionChange = (event: ChangeEvent<HTMLInputElement>, type: string) => {\n const value = event.target.value;\n type === 'row' ? setRowCount(parseInt(value)) : setColumnCount(parseInt(value));\n };\n\n const handleSave = () => {\n if (rowCount !== undefined && columnCount !== undefined) {\n onSaveHandler(rowCount, columnCount);\n resetForm();\n }\n };\n\n const handleClose = () => {\n onCloseHandler();\n resetForm();\n };\n\n const resetForm = () => {\n setRowCount(undefined);\n setColumnCount(undefined);\n };\n\n useImperativeHandle(ref, () => ({\n clearForm: resetForm,\n focusFirstField: () => firstField.current?.focus(),\n }));\n\n useEffect(() => {\n const handleResizeScroll = () => {\n handleClose();\n };\n\n setScrollableContainers(handleResizeScroll);\n\n window.addEventListener('scroll', handleResizeScroll);\n window.addEventListener('resize', handleResizeScroll);\n\n return () => {\n window.removeEventListener('scroll', handleResizeScroll);\n window.removeEventListener('resize', handleResizeScroll);\n removeScrollableContainers(handleResizeScroll);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className={styles['tableform']}>\n <FormField className={styles['tableform__input-field']}>\n <Label htmlFor={rowId}>{t.table.nrofRows}</Label>\n <InputField\n id={rowId}\n placeholder={t.table.nrofRowsPlaceholder}\n value={rowCount ? rowCount : ''}\n onChange={(event) => handleDimentionChange(event, 'row')}\n aria-label={t.aria.labels.tableRowfield}\n ref={firstField}\n />\n </FormField>\n <FormField className={styles['tableform__input-field']}>\n <Label htmlFor={columnId}>{t.table.nrofColumns}</Label>\n <InputField\n id={columnId}\n placeholder={t.table.nrofColumnsPlaceholder}\n value={columnCount ? columnCount : ''}\n onChange={(event) => handleDimentionChange(event, 'column')}\n aria-label={t.aria.labels.tableColumnfield}\n />\n </FormField>\n <div className={styles['tableform__footer']}>\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel}>\n {t.common.cancel}\n </Button>\n <Button\n variant={'primary'}\n onClick={handleSave}\n disabled={!rowCount || !columnCount}\n aria-label={t.aria.labels.tableOkButton}\n >\n {t.common.add}\n </Button>\n </div>\n </div>\n );\n});\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { clsx } from 'clsx';\nimport { $getTableCellNodeFromLexicalNode, $isTableCellNode, TableCellNode } from '@lexical/table';\nimport {\n $getSelection,\n $isRangeSelection,\n $getRoot,\n KEY_DOWN_COMMAND,\n $isNodeSelection,\n COMMAND_PRIORITY_CRITICAL,\n} from 'lexical';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { useRef, useEffect, useImperativeHandle, forwardRef } from 'react';\n\nimport type { TableNode } from '@lexical/table';\nimport type { JSX } from 'react';\nimport type { TextNode } from 'lexical';\nimport type { addTableForm } from './AddTableFrom';\nimport type { Actions } from './TableCellContextMenu';\n\nimport { AddTableForm } from './AddTableFrom';\nimport {\n createTable,\n DEFAULT_COL_WIDTH,\n DEFAULT_EDITOR_WIDTH,\n deleteColumn,\n deleteRow,\n deleteTable,\n getEditorContentWidth,\n getEditorParrentCellWidth,\n insertColumn,\n insertRow,\n PREVENT_OPEN_DELAY,\n} from './helpers';\n\nimport { $createTableWrapperNode } from 'components/RteEditor/nodes';\nimport { useFlyout } from 'components/RteEditor/hooks/useFlyout';\nimport { Icon } from 'components';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ninterface TablePluginProps {\n isActive: boolean;\n}\nexport interface TableMutation {\n mutateTable: (type: Actions) => void;\n}\n\nexport const TablePlugin = forwardRef(({ isActive }: TablePluginProps, ref): JSX.Element => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const { flyout, showFlyout, hideFlyout, isVisible } = useFlyout();\n const addTableForm = useRef<addTableForm>(undefined);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const preventOpen = useRef(false);\n const isVisibleRef = useRef(isVisible);\n\n const openFlyout = () => {\n const rect = buttonRef.current?.getBoundingClientRect();\n if (!preventOpen.current && rect) {\n showFlyout({ position: { top: rect.bottom, left: rect.left }, ...flyoutOptions });\n }\n };\n\n const closeFlyout = () => {\n hideFlyout();\n };\n\n const insertTable = (nrOfRows: number, nrOfColumns: number) => {\n editor.update(() => {\n const selection = $getSelection();\n const tableNode = createTable(nrOfRows, nrOfColumns);\n\n const anchorNode =\n ($isRangeSelection(selection) && selection.anchor.getNode()) ||\n ($isNodeSelection(selection) && selection.getNodes()[0]) ||\n null;\n\n const willBeNested = anchorNode ? $getNearestNodeOfType(anchorNode, TableCellNode) : null;\n\n const availibleWidth = willBeNested\n ? getEditorParrentCellWidth(willBeNested, nrOfColumns, editor)\n : getEditorContentWidth(editor) || DEFAULT_EDITOR_WIDTH;\n\n const perCol = Math.max(DEFAULT_COL_WIDTH, Math.floor(availibleWidth / Math.max(1, nrOfColumns)));\n\n const colWidths = Array.from({ length: nrOfColumns }, () => perCol);\n\n (tableNode as TableNode).setColWidths(colWidths);\n\n const tableWrapper = $createTableWrapperNode();\n tableWrapper.append(tableNode);\n if ($isRangeSelection(selection)) {\n selection.insertNodes([tableWrapper]);\n } else {\n $getRoot().append(tableWrapper);\n }\n const firstDescendant = tableWrapper.getFirstDescendant();\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n });\n\n closeFlyout();\n };\n\n const mutateTable = (action: Actions) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const currentNode = $getTableCellNodeFromLexicalNode(anchorNode);\n\n if ($isTableCellNode(currentNode)) {\n switch (action) {\n case 'insertRowAbove':\n case 'insertRowBelow':\n insertRow(currentNode, action);\n break;\n case 'deleteRow':\n deleteRow(currentNode);\n break;\n case 'insertColumnLeft':\n case 'insertColumnRight':\n insertColumn(currentNode, action);\n break;\n case 'deleteColumn':\n deleteColumn(currentNode);\n break;\n case 'deleteTable':\n deleteTable(currentNode);\n break;\n }\n }\n }\n });\n };\n\n const flyoutOptions = {\n children: (\n <AddTableForm\n onCloseHandler={closeFlyout}\n onSaveHandler={(rows, columns) => insertTable(rows, columns)}\n ref={addTableForm}\n />\n ),\n };\n\n useEffect(() => {\n if (!isVisible) {\n addTableForm.current?.clearForm();\n setTimeout(() => (preventOpen.current = false), PREVENT_OPEN_DELAY);\n } else {\n preventOpen.current = true;\n addTableForm.current?.focusFirstField();\n }\n }, [addTableForm, isVisible]);\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit9') {\n event.preventDefault();\n openFlyout();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n\n return () => {\n removeKeyboardShortcut();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n useEffect(() => {\n isVisibleRef.current = isVisible;\n }, [isVisible]);\n\n useEffect(() => {\n const removeKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isVisibleRef.current) {\n event.preventDefault();\n event.stopPropagation();\n closeFlyout();\n }\n };\n\n document.addEventListener('keydown', removeKeydown, { capture: true });\n\n return () => {\n document.removeEventListener('keydown', removeKeydown);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useImperativeHandle(ref, () => ({\n mutateTable,\n }));\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n <div className={styles['editor__toolbar-button-flyoutwrapper']}>\n <button\n onClick={openFlyout}\n title={t.table.tableTooltip}\n className={clsx(styles['editor__toolbar-button'], isActive && styles[`editor__toolbar-button--active`])}\n aria-label={t.aria.labels.table}\n aria-keyshortcuts={t.aria.keyshortcuts.table}\n ref={buttonRef}\n type=\"button\"\n >\n <Icon name=\"Table\" size={24} />\n </button>\n {flyout}\n </div>\n </div>\n );\n});\n",".editor-header__container {\n align-items: flex-start;\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: flex-start;\n max-width: calc(100% - 5rem);\n}\n\n.editor-header__info {\n color: var(--color-grey-700);\n font-size: var(--font-size-text-non-essential);\n}\n","import { useId } from 'react';\n\nimport styles from './EditorHeader.module.css';\n\nimport { Label } from 'components';\n\ninterface EditorHeaderProps {\n label: string;\n info?: string;\n required?: boolean;\n}\n\nexport const EditorHeader = ({ label, info = '', required = false }: EditorHeaderProps) => {\n const infoId = `info_${useId()}`;\n\n return (\n <div className={styles['editor-header__container']}>\n {label !== '' && (\n <div>\n <Label htmlFor={infoId} required={required}>\n {label}\n </Label>\n </div>\n )}\n {info !== '' && <div className={styles['editor-header__info']} dangerouslySetInnerHTML={{ __html: info }} />}\n </div>\n );\n};\n","import { LexicalComposer } from '@lexical/react/LexicalComposer';\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';\nimport { ContentEditable } from '@lexical/react/LexicalContentEditable';\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary';\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin';\nimport { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html';\nimport { $getRoot, $insertNodes, $setSelection, createEditor } from 'lexical';\nimport { ListItemNode, ListNode } from '@lexical/list';\nimport { ListPlugin } from '@lexical/react/LexicalListPlugin';\nimport { LinkPlugin } from '@lexical/react/LexicalLinkPlugin';\nimport { AutoLinkNode, LinkNode } from '@lexical/link';\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table';\nimport { AutoLinkPlugin } from '@lexical/react/LexicalAutoLinkPlugin';\nimport { ClickableLinkPlugin } from '@lexical/react/LexicalClickableLinkPlugin';\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin';\nimport { TablePlugin } from '@lexical/react/LexicalTablePlugin';\nimport { useEffect, useId, useState } from 'react';\nimport { clsx } from 'clsx';\nimport { EditorRefPlugin } from '@lexical/react/LexicalEditorRefPlugin';\n\nimport type { RefObject } from 'react';\nimport type { EditorState, LexicalEditor } from 'lexical';\nimport type { SearchResponse } from './Plugins/CourseCataloguePlugin/AddCatalogueLinkForm';\n\nimport { exportMap, mergeBoldStrongTags, cleanUpTable } from './helpers';\nimport { MATCHERS, validateUrl } from './Plugins/LinkPlugin/helpers';\nimport styles from './RteEditor.module.css';\nimport { ToolBarPlugin, PasteHandlerPlugin, TableCellResizerPlugin } from './Plugins';\nimport { UvaTheme } from './UvaTheme';\nimport { EditorHeader } from './EditorHeader';\nimport { LanguageProvider, useLanguage } from './Providers/LanguageProvider';\nimport { useTranslation } from './hooks/useTranslation';\nimport { TableWrapperNode, CourseCatalogueNode, CourseCatalogueLinkPlugin } from './nodes';\n\nimport { FeedbackBox } from 'components/FeedbackBox';\n\nexport interface RteEditorProps {\n /** current language setting for the editor labels NOT title ans label */\n currentLanguage?: 'NL' | 'EN' | 'nl' | 'en';\n /** unique id mandatory for the rte */\n editorId: string;\n /** imported content to edit */\n initialValue?: string;\n /** placeholder text in current Language */\n placeholder?: string;\n /** label/title of the RTE in current Language */\n label?: string;\n /** explanation of the text to be filled in, in current Language */\n info?: string;\n /** 'true' the rte field mandatory */\n required?: boolean;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n /** error text to display if required and field is empty */\n notValidatedText?: string;\n /** max height in rem default = 20rem*/\n maxHeightInRem?: `${number}rem`;\n /** max number of words 'allowed' but not enforced */\n maxWords?: number;\n /** Ref to the Lexical editor instance */\n rteRef?: RefObject<LexicalEditor> | null;\n /** updated output */\n onChange: (content: string) => void;\n /** callback for catalogue link search */\n onCatalogueLinkSearch?: (query: string, type: 'course' | 'programme') => void;\n /** updated catalogue search results */\n catalogueSearchResponse?: SearchResponse;\n}\n\nexport const Rte = ({\n currentLanguage = 'NL',\n editorId,\n initialValue = '',\n placeholder = '',\n label = '',\n info = '',\n required = false,\n notValid = false,\n notValidatedText = '',\n maxHeightInRem = '20rem',\n maxWords,\n rteRef = null,\n onChange,\n onCatalogueLinkSearch,\n catalogueSearchResponse = { state: 'idle', results: [] },\n}: RteEditorProps) => {\n const { switchLanguage } = useLanguage();\n const t = useTranslation();\n const [editor] = useState(() => createEditor());\n const [wordCount, setWordCount] = useState(0);\n const [scrollTopPosition, setScrollTopPosition] = useState(0);\n const rteId = useId();\n\n const initialConfig = {\n html: {\n export: exportMap,\n },\n namespace: `UvaRte-${editorId.replace(/\\s+/g, '-').toLowerCase()}`,\n editor,\n theme: UvaTheme,\n onError(error: Error) {\n throw error;\n },\n nodes: [\n ListNode,\n ListItemNode,\n LinkNode,\n AutoLinkNode,\n TableCellNode,\n TableRowNode,\n TableNode,\n TableWrapperNode,\n CourseCatalogueNode,\n ],\n editorState: (editor: LexicalEditor) => {\n const parser = new DOMParser();\n const dom = parser.parseFromString(initialValue, 'text/html');\n const nodes = $generateNodesFromDOM(editor, dom);\n const root = $getRoot();\n root.clear();\n $insertNodes(nodes);\n $setSelection(null);\n },\n };\n\n const getWordCount = (plainText: string): number => {\n if (plainText.trim().length === 0) {\n return 0;\n } else {\n return plainText.split(' ').length;\n }\n };\n\n const handleOnChange = (editorState: EditorState, editor: LexicalEditor): void => {\n editorState.read(() => {\n let htmlContent = '';\n setWordCount(getWordCount($getRoot().getTextContent().replace(/\\s+/g, ' ').trim()));\n htmlContent = mergeBoldStrongTags($generateHtmlFromNodes(editor));\n htmlContent = cleanUpTable(htmlContent);\n onChange(htmlContent);\n });\n };\n\n useEffect(() => {\n switchLanguage(currentLanguage.toUpperCase() as 'NL' | 'EN');\n }, [currentLanguage, switchLanguage]);\n\n useEffect(() => {\n const strippedInitialValue = initialValue\n .replace(/<br\\s*\\/?>| /gi, ' ')\n .replace(/<\\/?[^>]+(>|$)|&[a-z]+;/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n setWordCount(getWordCount(strippedInitialValue));\n }, [initialValue]);\n\n return (\n <div className={styles['editor__container']}>\n {(label || info || maxWords) && (\n <div className={styles['editor__header']}>\n <EditorHeader label={label} info={info} required={required} />\n {maxWords && maxWords > 0 && (\n <div className={styles['editor__header-word-count']}>\n <span className={clsx({ [styles['editor__header-word-count--alert']]: wordCount > maxWords })}>\n {wordCount}\n </span>\n / {maxWords}\n </div>\n )}\n </div>\n )}\n <div\n className={clsx(styles['editor'], {\n [styles['not-valid']]: notValid,\n })}\n >\n <LexicalComposer initialConfig={initialConfig}>\n <ToolBarPlugin\n editorScrollPosition={scrollTopPosition}\n onCatalogueLinkSearch={onCatalogueLinkSearch}\n catalogueSearchResponse={catalogueSearchResponse}\n />\n <div className={styles['editor__field-wrapper']}>\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n className={styles['editor__field']}\n aria-label={t.common.rteAriaLabel}\n aria-placeholder={placeholder}\n title={t.common.rteTitle}\n placeholder={<div className={styles['editor__placeholder']}>{placeholder}</div>}\n spellCheck={false}\n id={`${rteId}_rteEditor`}\n style={{ height: `${maxHeightInRem}`, maxHeight: `${maxHeightInRem}` }}\n onScroll={(event) => setScrollTopPosition(event.currentTarget.scrollTop)}\n />\n }\n placeholder={<div className={styles['editor__placeholder']}>{placeholder}</div>}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <TablePlugin />\n <TableCellResizerPlugin />\n <HistoryPlugin />\n <ListPlugin />\n <LinkPlugin validateUrl={validateUrl} />\n <AutoLinkPlugin matchers={MATCHERS} />\n <ClickableLinkPlugin />\n <OnChangePlugin onChange={handleOnChange} />\n <PasteHandlerPlugin />\n <CourseCatalogueLinkPlugin />\n {rteRef && <EditorRefPlugin editorRef={rteRef} />}\n </div>\n </LexicalComposer>\n </div>\n {notValidatedText !== '' && <FeedbackBox level=\"error\" feedback={notValidatedText} />}\n </div>\n );\n};\n\nexport const RteEditor = ({\n currentLanguage = 'NL',\n editorId,\n initialValue = '',\n placeholder = '',\n label = '',\n info = '',\n required = false,\n notValid = false,\n notValidatedText = '',\n maxWords,\n rteRef,\n onChange,\n onCatalogueLinkSearch,\n catalogueSearchResponse = { state: 'idle', results: [] },\n}: RteEditorProps) => (\n <LanguageProvider>\n <Rte\n currentLanguage={currentLanguage.toUpperCase() as 'NL' | 'EN'}\n editorId={editorId}\n initialValue={initialValue}\n placeholder={placeholder}\n label={label}\n info={info}\n required={required}\n notValid={notValid}\n notValidatedText={notValidatedText}\n maxWords={maxWords}\n rteRef={rteRef}\n onChange={onChange}\n onCatalogueLinkSearch={onCatalogueLinkSearch}\n catalogueSearchResponse={catalogueSearchResponse}\n />\n </LanguageProvider>\n);\n"],"x_google_ignoreList":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers-C3IJbMVf.js","names":["e","o","r","n"],"sources":["../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/LexicalAutoLinkPlugin.prod.mjs","../src/components/RteEditor/Plugins/LinkPlugin/helpers.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{AutoLinkNode as e,registerAutoLink as r}from\"@lexical/link\";export{createLinkMatcherWithRegExp}from\"@lexical/link\";import{useLexicalComposerContext as n}from\"@lexical/react/LexicalComposerContext\";import{useEffect as o}from\"react\";function t(n,t,i,a){o(()=>{n.hasNodes([e])||function(e,...r){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",e);for(const e of r)o.append(\"v\",e);throw n.search=o.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(77)}),o(()=>r(n,{changeHandlers:i?[i]:[],excludeParents:a??[],matchers:t}),[n,t,i,a])}function i({matchers:e,onChange:r,excludeParents:o}){const[i]=n();return t(i,e,r,o),null}export{i as AutoLinkPlugin};\n","import { createLinkMatcherWithRegExp } from '@lexical/react/LexicalAutoLinkPlugin';\n\nconst PROTOCOL_REGEX = /^(http|https):\\/\\//;\n\nconst URL_REGEX =\n /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/;\n\nconst EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/;\n\nconst URL_REGEX_OR_BLANK =\n /^(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})?$/;\n\nexport const validateUrl = (url: string): boolean => {\n return url === 'https://' || URL_REGEX.test(url);\n};\n\nexport const validateUrlWithProtocol = (url: string): boolean => {\n return url === 'https://' || URL_REGEX_OR_BLANK.test(url);\n};\n\nexport const MATCHERS = [\n createLinkMatcherWithRegExp(URL_REGEX, (text: string): string => {\n return !PROTOCOL_REGEX.test(text) ? `//${text}` : text;\n }),\n createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => {\n return `mailto:${text}`;\n }),\n];\n\nexport const ensureHttps = (url: string) => {\n if (!/^https?:\\/\\//i.test(url)) {\n return `https://${url}`;\n }\n return url;\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;AAQ8O,SAAS,EAAE,GAAE,GAAE,GAAE,GAAE;CAAC,QAAM;EAAC,EAAE,SAAS,CAACA,CAAC,CAAC,KAAG,SAAS,GAAE,GAAG,GAAE;GAAC,IAAM,IAAE,IAAI,IAAI,gCAAgC,GAAE,IAAE,IAAI,gBAAc;GAAE,EAAE,OAAO,QAAO,CAAC;GAAE,KAAI,IAAM,KAAK,GAAE,EAAE,OAAO,KAAI,CAAC;GAAE,MAAM,EAAE,SAAO,EAAE,SAAS,GAAE,MAAM,2BAA2B,EAAE,UAAU,EAAE,SAAS,EAAE,+GAA+G;EAAC,EAAE,EAAE;CAAC,CAAC,GAAEC,QAAMC,EAAE,GAAE;EAAC,gBAAe,IAAE,CAAC,CAAC,IAAE,CAAC;EAAE,gBAAe,KAAG,CAAC;EAAE,UAAS;CAAC,CAAC,GAAE;EAAC;EAAE;EAAE;EAAE;CAAC,CAAC;AAAC;AAAC,SAAS,EAAE,EAAC,UAAS,GAAE,UAAS,GAAE,gBAAeD,KAAG;CAAC,IAAK,CAAC,KAAGE,EAAE;CAAE,OAAO,EAAE,GAAE,GAAE,GAAEF,CAAC,GAAE;AAAI;;;ACN7xB,IAAM,IAAiB,sBAEjB,IACJ,qNAEI,IACJ,uJAEI,IACJ,wNAEW,KAAe,MACnB,MAAQ,cAAc,EAAU,KAAK,CAAG,GAGpC,KAA2B,MAC/B,MAAQ,cAAc,EAAmB,KAAK,CAAG,GAG7C,IAAW,CACtB,EAA4B,IAAY,MAC9B,EAAe,KAAK,CAAI,IAAkB,IAAd,KAAK,GAC1C,GACD,EAA4B,IAAc,MACjC,UAAU,GAClB,CACH,GAEa,KAAe,MACrB,gBAAgB,KAAK,CAAG,IAGtB,IAFE,WAAW"}
|