From 2131b773a403e2161d5c42c92953624014a56bbd Mon Sep 17 00:00:00 2001 From: Daniel Eriksson Date: Wed, 15 Jan 2025 10:59:00 +0100 Subject: [PATCH] Update all dependencies, migrate Plate to new version --- frontend/bun.lockb | Bin 210455 -> 159770 bytes frontend/package.json | 75 +++-- .../malteksteksjon-references/preview.tsx | 2 +- .../texts/text-draft/text-draft.tsx | 6 +- .../smart-editor/bookmarks/bookmarks.tsx | 9 +- .../smart-editor/bookmarks/positioned.tsx | 3 +- .../smart-editor/bookmarks/use-bookmarks.ts | 4 +- .../smart-editor/comments/connect-thread.ts | 9 +- .../comments/expandable-thread.tsx | 6 +- .../smart-editor/comments/new-comment.tsx | 9 +- .../smart-editor/comments/use-threads.ts | 5 +- .../src/components/smart-editor/context.tsx | 2 +- .../functions/get-positioned-items.ts | 4 +- .../gode-formuleringer/add-button.tsx | 8 +- .../gode-formuleringer/god-formulering.tsx | 4 +- .../gode-formuleringer/gode-formuleringer.tsx | 3 +- .../smart-editor/gode-formuleringer/insert.ts | 11 +- .../gode-formuleringer/section-select.tsx | 5 +- .../smart-editor/history/history-editor.tsx | 19 +- .../new-document/generated-icon.tsx | 2 +- .../tabbed-editors/cursors/cursors.tsx | 7 +- .../smart-editor/tabbed-editors/editor.tsx | 6 +- .../functions/are-descendants-equal.test.ts | 2 +- .../src/functions/are-descendants-equal.ts | 10 +- frontend/src/hooks/use-template-sections.ts | 4 +- .../common/add-new-paragraph-buttons.tsx | 11 +- .../components/common/delete-section.tsx | 3 +- .../src/plate/components/current-date.tsx | 2 +- frontend/src/plate/components/empty-void.tsx | 2 +- frontend/src/plate/components/fullmektig.tsx | 30 +- .../src/plate/components/header-footer.tsx | 8 +- frontend/src/plate/components/headings.tsx | 6 +- .../src/plate/components/label-content.tsx | 7 +- .../components/legacy-redigerbar-maltekst.tsx | 8 +- frontend/src/plate/components/lists.tsx | 2 +- .../components/maltekst/legacy-maltekst.tsx | 15 +- .../plate/components/maltekst/maltekst.tsx | 15 +- .../plate/components/maltekst/nodes-equals.ts | 8 +- .../maltekstseksjon/get-children.ts | 8 +- .../maltekstseksjon/maltekstseksjon.tsx | 9 +- .../maltekstseksjon/replace-nodes.ts | 25 +- .../components/maltekstseksjon/toolbar.tsx | 2 +- .../components/maltekstseksjon/use-path.ts | 4 +- frontend/src/plate/components/page-break.tsx | 20 +- frontend/src/plate/components/paragraph.tsx | 6 +- .../plate/components/placeholder/helpers.ts | 46 ++- .../components/placeholder/placeholder.tsx | 42 ++- .../plate-ui/table-cell-element.tsx | 55 ++-- .../components/plate-ui/table-element.tsx | 44 +-- .../components/plate-ui/table-row-element.tsx | 19 +- .../plate/components/redigerbar-maltekst.tsx | 10 +- frontend/src/plate/components/regelverk.tsx | 13 +- .../signature/individual-signature.tsx | 7 +- .../plate/components/signature/signature.tsx | 10 +- .../plate/components/styled-components.tsx | 2 +- .../plate/drag-start-handler/helpers.test.ts | 2 +- .../src/plate/functions/get-range-position.ts | 2 +- .../src/plate/functions/get-text-string.tsx | 14 +- .../src/plate/functions/range-position.ts | 3 +- .../src/plate/functions/selection-start.ts | 6 +- .../src/plate/hooks/use-is-element-active.ts | 8 +- frontend/src/plate/leaf/bookmark.tsx | 2 +- frontend/src/plate/leaf/comment.tsx | 2 +- frontend/src/plate/leaf/marks.tsx | 2 +- frontend/src/plate/plate-editor.tsx | 7 +- .../src/plate/plugins/autoformat/utils.ts | 6 +- frontend/src/plate/plugins/bookmark.ts | 67 ++-- frontend/src/plate/plugins/comments.ts | 65 ++-- frontend/src/plate/plugins/copy/copy.ts | 51 ++-- .../get-short-and-long.ts | 22 +- .../custom-abbreviations/on-key-down.ts | 11 +- .../src/plate/plugins/normalize-node.test.ts | 10 +- frontend/src/plate/plugins/normalize-node.ts | 285 +++++++++--------- frontend/src/plate/plugins/page-break.ts | 19 +- frontend/src/plate/plugins/paste.ts | 37 +-- .../src/plate/plugins/placeholder/arrows.ts | 20 +- .../plate/plugins/placeholder/delete.test.ts | 64 ++-- .../src/plate/plugins/placeholder/delete.ts | 35 +-- .../src/plate/plugins/placeholder/queries.ts | 6 +- .../plate/plugins/placeholder/redaktoer.ts | 3 +- .../plugins/placeholder/saksbehandler.ts | 22 +- .../plate/plugins/placeholder/select-all.ts | 5 +- .../plugins/placeholder/with-overrides.ts | 34 +-- .../src/plate/plugins/plugin-sets/default.ts | 27 +- .../plugins/plugin-sets/saksbehandler.ts | 2 +- .../plugins/prohibit-deletion/fullmektig.ts | 13 +- .../plugins/prohibit-deletion/helpers.ts | 28 +- .../prohibit-deletion/prohibit-deletion.ts | 27 +- .../plugins/prohibit-deletion/unchangeable.ts | 65 ++-- .../plugins/prohibit-deletion/undeletable.ts | 12 +- frontend/src/plate/plugins/regelverk.ts | 21 +- frontend/src/plate/plugins/selection.ts | 45 ++- frontend/src/plate/templates/ankevedtak.ts | 2 +- .../behandling-etter-tr-opphevet-vedtak.ts | 2 +- ...utning-om-ikke-\303\245-omgj\303\270re.ts" | 2 +- frontend/src/plate/templates/klagevedtak.ts | 2 +- .../templates/omgj\303\270ringskravvedtak.ts" | 2 +- ...ing-om-tilsvar-direkte-til-trygderetten.ts | 2 +- ...svar-p\303\245-innsynsbegj\303\246ring.ts" | 2 +- frontend/src/plate/toolbar/abbreviation.tsx | 17 +- frontend/src/plate/toolbar/add-comment.tsx | 4 +- .../src/plate/toolbar/bookmark-button.tsx | 12 +- .../plate/toolbar/default-toolbar-buttons.tsx | 4 +- frontend/src/plate/toolbar/headings.tsx | 7 +- frontend/src/plate/toolbar/indent.tsx | 5 +- .../src/plate/toolbar/insert-placeholder.tsx | 8 +- frontend/src/plate/toolbar/marks.tsx | 14 +- .../src/plate/toolbar/paragraph-button.tsx | 4 +- frontend/src/plate/toolbar/table/helpers.ts | 26 +- .../plate/toolbar/table/icons/merge-cells.tsx | 2 +- .../plate/toolbar/table/icons/split-cells.tsx | 9 + .../toolbar/table/insert-table-button.tsx | 10 +- .../src/plate/toolbar/table/merge-cells.ts | 24 +- frontend/src/plate/toolbar/table/table.tsx | 156 ++++++---- .../floating-redaktoer-toolbar-buttons.tsx | 8 +- ...floating-saksbehandler-toolbar-buttons.tsx | 8 +- .../toolbar/toolbars/floating-toolbar.tsx | 9 +- .../plate/toolbar/toolbars/table-toolbar.tsx | 8 +- .../src/plate/toolbar/use-is-in-table.tsx | 3 +- frontend/src/plate/types.ts | 2 +- frontend/src/plate/utils/queries.ts | 46 ++- frontend/src/plate/utils/transforms.ts | 35 +-- frontend/src/types/smart-editor/params.ts | 4 +- .../src/types/smart-editor/smart-editor.ts | 2 +- 124 files changed, 992 insertions(+), 1153 deletions(-) create mode 100644 frontend/src/plate/toolbar/table/icons/split-cells.tsx diff --git a/frontend/bun.lockb b/frontend/bun.lockb index c4d29610b7a21b9cdfb46c4e361880551754b51c..a1ca63c27416ecfe16f20b4bd3fee53a87d759ef 100755 GIT binary patch delta 44363 zcmeFa2Urx#)-^oSGROcUK@?DwAfg~SBRXJ40kZ-oL_h(_h+<*@1;wnbw(*z)m~+IO z6~&A>E1;;Dv;W#N-8v_D&$;(~zdt>99+#{3uC%LaS5u(|i=83zovPe@`!^vRzdV$M7oJ3Yff@wl2uBom3U zjKBuqhe#m>r$$Fa4nb05iAo-l79TqRa@vsL@v&(l(QyrtNEhjnlhTGnrlpC}HC5#d z25Uo~7?GG18zmAUZpiTDXwg=ruL*r=b&<#jd<<+T5-GAGBNC$HV@E`eqho^CM6AyjTVV2kxmElE&OK;-Vd%1PJ!|C zF-9g`kwTO;9|5vxBA6N@&$~RXMIP!wgQ0>2vAEdz+#Fh6sru#MSme})-ayy zz)C7GEk0rh8Yt3%Ocgx@Qw6aJ3DK$0&xTwFvIN~{0#-n#ic`Q;UJRJZ2?r}E5T6tk zkrsooa*XK3_F3#h0TYq%Q$exjVsBaW1$aSeWjLp|*U* zU~-OVJ5|90k&wDNH99RiK00!UW)oEpq((=jXP`&ABAzO0$*0SPj=J={JwHV7QHOzv zX^$b(&{!fJ8C(LHT5jc}OsB|FAV6K02&RPlkbq=CKO|znfQSL{(e5aK4AcTsiz;KVO3>Q_t3^z18@V~5`;6~uL{vwejcmiZhjI0q!iP4Uj z5r>sse6+selt;O1A|}6)oc9^ZEF6UXBD) z{?w%S`1E9qNLQ6__6M6m-%2TC53)mmoLU!5u29xR)zc@y7LW_Uq#p++r;i3(f!l(~ zsT=Vu1yj0;&MN&`Fjce#Oe47xOzYfXj0CyR2CxzN;Lup*mLmF}cKtu>^56Bi;{QaK zuL)DNbS~Hs4Lly9^2Ho5`ReikDt*oXtO3-OgP@=;+Jpo&#`Afe0;VoYK|zhd{$Sd3 z^arXY$zCvZc_El8`VCAKd>o`ICps-MB0eH2`Wa*@rxZ-icm_=AW(`FDOA#0z5sxdY zAtGV=S7DE*v4w?71INUv#&RC?deH9z8-NSI`rx=URE6`47dHE?YwQw|;mW@HtiD| z&;_E0Y`_blqx4TxR6UdpSr_t>RF&bvR-%}U2x@_lfc6*a5n80kOKS{K$z6C3g`S28 zTavOXd!(xjYz?L!5qhTeP*u5+F%j{Dk@g;B>iUadY5=b290tZmC8qIFiIR9%z^rh;pM z$pE2+S4XP!LPdfB$DyYlM5~mW-^5InLHEGqE9by86o^)~JOLrvB)fv^Iv~�TZw_ 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ℜ~vZpW5y-nOrN`O`RkOlE=+^F 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 diff --git a/frontend/package.json b/frontend/package.json index 472f76af9..3ab8b8075 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,60 +13,53 @@ "license": "MIT", "devDependencies": { "@biomejs/biome": "1.9.4", - "@happy-dom/global-registrator": "16.5.2", + "@happy-dom/global-registrator": "16.7.3", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.6.3", - "@testing-library/react": "16.1.0", - "@types/bun": "1.1.15", - "@types/react": "19.0.3", - "@types/react-dom": "19.0.2", + "@testing-library/react": "16.2.0", + "@types/bun": "1.2.1", + "@types/qs": "6.9.18", + "@types/react": "19.0.8", + "@types/react-dom": "19.0.3", "@types/react-redux": "7.1.34", "@vitejs/plugin-react": "4.3.4", - "typescript": "5.7.2", - "vite": "6.0.7", + "typescript": "5.7.3", + "vite": "6.0.11", "vite-tsconfig-paths": "5.1.4" }, "dependencies": { - "@grafana/faro-react": "1.12.2", - "@grafana/faro-web-sdk": "1.12.2", - "@grafana/faro-web-tracing": "1.12.2", - "@hocuspocus/provider": "2.15.0", - "@navikt/aksel-icons": "7.9.1", - "@navikt/ds-css": "7.9.1", - "@navikt/ds-react": "7.9.1", + "@grafana/faro-react": "1.12.3", + "@grafana/faro-web-sdk": "1.12.3", + "@grafana/faro-web-tracing": "1.12.3", + "@navikt/aksel-icons": "7.10.0", + "@navikt/ds-css": "7.10.0", + "@navikt/ds-react": "7.10.0", "@navikt/fnrvalidator": "2.1.5", - "@reduxjs/toolkit": "2.5.0", + "@reduxjs/toolkit": "2.5.1", "@slate-yjs/core": "1.0.2", - "@slate-yjs/react": "1.1.0", "@styled-icons/fluentui-system-regular": "10.47.0", - "@types/qs": "6.9.17", - "@udecode/plate": "41.0.14", - "@udecode/plate-alignment": "41.0.0", - "@udecode/plate-autoformat": "41.0.0", - "@udecode/plate-basic-marks": "41.0.0", - "@udecode/plate-break": "41.0.0", - "@udecode/plate-common": "41.0.13", - "@udecode/plate-core": "41.0.13", - "@udecode/plate-cursor": "41.0.0", - "@udecode/plate-docx": "41.0.10", - "@udecode/plate-font": "41.0.12", - "@udecode/plate-heading": "41.0.0", - "@udecode/plate-indent": "41.0.0", - "@udecode/plate-list": "41.0.0", - "@udecode/plate-resizable": "41.0.0", - "@udecode/plate-table": "41.0.9", - "@udecode/plate-yjs": "41.0.0", - "@udecode/slate-react": "41.0.5", - "qs": "6.13.1", + "@udecode/plate": "43.0.5", + "@udecode/plate-alignment": "43.0.0", + "@udecode/plate-autoformat": "43.0.0", + "@udecode/plate-basic-marks": "43.0.1", + "@udecode/plate-break": "43.0.0", + "@udecode/plate-core": "43.0.5", + "@udecode/plate-cursor": "43.0.0", + "@udecode/plate-docx": "43.0.5", + "@udecode/plate-heading": "43.0.0", + "@udecode/plate-indent": "43.0.0", + "@udecode/plate-list": "43.0.0", + "@udecode/plate-node-id": "43.0.3", + "@udecode/plate-resizable": "43.0.0", + "@udecode/plate-table": "43.0.3", + "@udecode/plate-yjs": "43.0.0", + "qs": "6.14.0", "react": "19.0.0", "react-dom": "19.0.0", "react-redux": "9.2.0", - "react-router": "7.1.1", - "react-router-dom": "7.1.1", - "slate": "0.112.0", - "slate-history": "0.110.3", - "slate-react": "0.112.0", + "react-router": "7.1.3", + "react-router-dom": "7.1.3", "styled-components": "6.1.14", - "yjs": "13.6.21" + "yjs": "13.6.23" } } diff --git a/frontend/src/components/malteksteksjon-references/preview.tsx b/frontend/src/components/malteksteksjon-references/preview.tsx index bbc439c4e..6fbe93a01 100644 --- a/frontend/src/components/malteksteksjon-references/preview.tsx +++ b/frontend/src/components/malteksteksjon-references/preview.tsx @@ -12,7 +12,7 @@ import type { IMaltekstseksjon } from '@app/types/maltekstseksjoner/responses'; import type { IRichText, IText } from '@app/types/texts/responses'; import { Heading, Loader } from '@navikt/ds-react'; import { skipToken } from '@reduxjs/toolkit/query'; -import { Plate, usePlateEditor } from '@udecode/plate-common/react'; +import { Plate, usePlateEditor } from '@udecode/plate/react'; import { useCallback, useEffect, useState } from 'react'; import { styled } from 'styled-components'; diff --git a/frontend/src/components/maltekstseksjoner/texts/text-draft/text-draft.tsx b/frontend/src/components/maltekstseksjoner/texts/text-draft/text-draft.tsx index 7bdc88d1a..655dfa67d 100644 --- a/frontend/src/components/maltekstseksjoner/texts/text-draft/text-draft.tsx +++ b/frontend/src/components/maltekstseksjoner/texts/text-draft/text-draft.tsx @@ -16,8 +16,6 @@ import { RichTextTypes } from '@app/types/common-text-types'; import { LANGUAGES, type Language, isLanguage } from '@app/types/texts/language'; import type { IDraftRichText } from '@app/types/texts/responses'; import { BodyShort, HStack, HelpText, Label, Loader, Switch, Tooltip, VStack } from '@navikt/ds-react'; -import { getEndPoint } from '@udecode/plate-common'; -import { focusEditor, isEditorFocused } from '@udecode/plate-common/react'; import { useCallback, useEffect, useRef, useState } from 'react'; import { areDescendantsEqual } from '../../../../functions/are-descendants-equal'; @@ -50,10 +48,10 @@ export const DraftText = ({ text, isActive, setActive, ...rest }: Props) => { }, [text.richText]); useEffect(() => { - if (isActive && editorRef.current !== null && !isEditorFocused(editorRef.current)) { + if (isActive && editorRef.current !== null && !editorRef.current.api.isFocused()) { setTimeout(() => { if (editorRef.current !== null) { - focusEditor(editorRef.current, getEndPoint(editorRef.current, [])); + editorRef.current.tf.focus({ at: editorRef.current.api.end([]) }); } }, 0); } diff --git a/frontend/src/components/smart-editor/bookmarks/bookmarks.tsx b/frontend/src/components/smart-editor/bookmarks/bookmarks.tsx index de74a2205..6b146abec 100644 --- a/frontend/src/components/smart-editor/bookmarks/bookmarks.tsx +++ b/frontend/src/components/smart-editor/bookmarks/bookmarks.tsx @@ -5,8 +5,7 @@ import { BookmarkPlugin } from '@app/plate/plugins/bookmark'; import { type FormattedText, useMyPlateEditorState } from '@app/plate/types'; import { BookmarkFillIcon, TrashIcon } from '@navikt/aksel-icons'; import { Button } from '@navikt/ds-react'; -import { type TNode, getNodeString, unsetNodes } from '@udecode/plate-common'; -import { toDOMNode } from '@udecode/plate-common/react'; +import { NodeApi, type TNode } from '@udecode/plate'; import { styled } from 'styled-components'; interface Props { @@ -21,7 +20,7 @@ export const Bookmarks = ({ editorId }: Props) => { return null; } - const onClick = (node: TNode) => toDOMNode(editor, node)?.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); + const onClick = (node: TNode) => editor.api.toDOMNode(node)?.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); return ( @@ -38,7 +37,7 @@ export const Bookmarks = ({ editorId }: Props) => { return null; } - const content = nodes.map((n) => getNodeString(n)).join(''); + const content = nodes.map((n) => NodeApi.string(n)).join(''); return ( @@ -56,7 +55,7 @@ export const Bookmarks = ({ editorId }: Props) => { variant="tertiary-neutral" onClick={() => { pushEvent('remove-bookmark', 'smart-editor'); - unsetNodes(editor, [BookmarkPlugin.key, key], { + editor.tf.unsetNodes([BookmarkPlugin.key, key], { match: (n) => hasOwn(n, key), mode: 'lowest', at: [], diff --git a/frontend/src/components/smart-editor/bookmarks/positioned.tsx b/frontend/src/components/smart-editor/bookmarks/positioned.tsx index fe052d3b3..0c5aa8c22 100644 --- a/frontend/src/components/smart-editor/bookmarks/positioned.tsx +++ b/frontend/src/components/smart-editor/bookmarks/positioned.tsx @@ -12,7 +12,6 @@ import { BASE_FONT_SIZE } from '@app/plate/components/get-scaled-em'; import { useMyPlateEditorRef } from '@app/plate/types'; import { BookmarkFillIcon, TrashFillIcon } from '@navikt/aksel-icons'; import { Tooltip } from '@navikt/ds-react'; -import { setNodes } from '@udecode/plate-common'; import { useCallback, useContext, useMemo, useState } from 'react'; import { styled } from 'styled-components'; @@ -43,7 +42,7 @@ export const PositionedBookmarks = () => { const onDelete = useCallback( (id: string) => { pushEvent('remove-bookmark', 'smart-editor'); - setNodes(editorRef, { [id]: undefined }, { match: (n) => id in n, mode: 'lowest', at: [] }); + editorRef.tf.setNodes({ [id]: undefined }, { match: (n) => id in n, mode: 'lowest', at: [] }); }, [editorRef], ); diff --git a/frontend/src/components/smart-editor/bookmarks/use-bookmarks.ts b/frontend/src/components/smart-editor/bookmarks/use-bookmarks.ts index ce8f2b5cb..c10bead20 100644 --- a/frontend/src/components/smart-editor/bookmarks/use-bookmarks.ts +++ b/frontend/src/components/smart-editor/bookmarks/use-bookmarks.ts @@ -1,12 +1,12 @@ import { BOOKMARK_PREFIX } from '@app/components/smart-editor/constants'; import { type FormattedText, useMyPlateEditorState } from '@app/plate/types'; -import { isText } from '@udecode/plate-common'; +import { TextApi } from '@udecode/plate'; export const useBookmarks = (): [string, FormattedText[]][] => { const editor = useMyPlateEditorState(); const bookmarkEntries = editor.nodes({ - match: (n) => isText(n) && Object.keys(n).some((k) => k.startsWith(BOOKMARK_PREFIX)), + match: (n) => TextApi.isText(n) && Object.keys(n).some((k) => k.startsWith(BOOKMARK_PREFIX)), at: [], }); diff --git a/frontend/src/components/smart-editor/comments/connect-thread.ts b/frontend/src/components/smart-editor/comments/connect-thread.ts index 7590f8477..3017a2cb7 100644 --- a/frontend/src/components/smart-editor/comments/connect-thread.ts +++ b/frontend/src/components/smart-editor/comments/connect-thread.ts @@ -1,15 +1,14 @@ import { COMMENT_PREFIX } from '@app/components/smart-editor/constants'; import { CommentsPlugin } from '@app/plate/plugins/comments'; import type { RichTextEditor, RootElement } from '@app/plate/types'; -import { isText, setNodes, unsetNodes } from '@udecode/plate-common'; +import { TextApi } from '@udecode/plate'; import type { Selection } from 'slate'; export const connectCommentThread = (editor: RichTextEditor, selection: Selection, threadId: string) => { - setNodes( - editor, + editor.tf.setNodes( { [CommentsPlugin.key]: true, [COMMENT_PREFIX + threadId]: true }, { - match: isText, + match: TextApi.isText, mode: 'lowest', split: true, hanging: true, @@ -21,7 +20,7 @@ export const connectCommentThread = (editor: RichTextEditor, selection: Selectio export const disconnectCommentThread = (editor: RichTextEditor, threadId: string) => { const key = COMMENT_PREFIX + threadId; - unsetNodes(editor, key, { + editor.tf.unsetNodes(key, { match: (node) => Object.hasOwn(node, key), split: true, at: [], diff --git a/frontend/src/components/smart-editor/comments/expandable-thread.tsx b/frontend/src/components/smart-editor/comments/expandable-thread.tsx index 4a4e7da74..bfc5abf3c 100644 --- a/frontend/src/components/smart-editor/comments/expandable-thread.tsx +++ b/frontend/src/components/smart-editor/comments/expandable-thread.tsx @@ -3,8 +3,6 @@ import { SmartEditorContext } from '@app/components/smart-editor/context'; import { useOnClickOutside } from '@app/hooks/use-on-click-outside'; import { useMyPlateEditorRef } from '@app/plate/types'; import type { ISmartEditorComment } from '@app/types/smart-editor/comments'; -import { findNode } from '@udecode/plate-common'; -import { toDOMNode } from '@udecode/plate-common/react'; import { useCallback, useContext, useEffect, useRef } from 'react'; import { COMMENT_PREFIX } from '../constants'; @@ -44,14 +42,14 @@ export const ExpandableThread = ({ thread, isFocused, style, isOrphan = false, i return; } - const leafEntry = findNode(editor, { at: [], match: { [`${COMMENT_PREFIX}${thread.id}`]: true } }); + const leafEntry = editor.api.node({ at: [], match: { [`${COMMENT_PREFIX}${thread.id}`]: true } }); if (leafEntry === undefined) { return; } const [leafNode] = leafEntry; - const domNode = toDOMNode(editor, leafNode); + const domNode = editor.api.toDOMNode(leafNode); if (domNode === undefined) { return; diff --git a/frontend/src/components/smart-editor/comments/new-comment.tsx b/frontend/src/components/smart-editor/comments/new-comment.tsx index 5822656e3..abe0d16b0 100644 --- a/frontend/src/components/smart-editor/comments/new-comment.tsx +++ b/frontend/src/components/smart-editor/comments/new-comment.tsx @@ -8,8 +8,7 @@ import { useGetMySignatureQuery } from '@app/redux-api/bruker'; import { usePostCommentMutation } from '@app/redux-api/smart-editor-comments'; import { Loader } from '@navikt/ds-react'; import { skipToken } from '@reduxjs/toolkit/query'; -import { isCollapsed } from '@udecode/plate-common'; -import { focusEditor } from '@udecode/plate-common/react'; +import { RangeApi } from '@udecode/plate'; import { useCallback, useContext, useEffect, useRef } from 'react'; import { StyledNewThread } from './styled-components'; import { WriteComment } from './write-comment/write-comment'; @@ -31,7 +30,7 @@ export const NewComment = ({ container }: Props) => { const onNewThread = useCallback( (threadId: string) => { - if (editor === null || newCommentSelection === null || isCollapsed(newCommentSelection)) { + if (editor === null || newCommentSelection === null || RangeApi.isCollapsed(newCommentSelection)) { return; } @@ -72,14 +71,14 @@ export const NewComment = ({ container }: Props) => { setNewCommentSelection(null); setTimeout(() => { setFocusedThreadId(id); - focusEditor(editor); + editor.tf.focus(); }, 0); }); }; const close = () => { setNewCommentSelection(null); - focusEditor(editor); + editor.tf.focus(); }; return ( diff --git a/frontend/src/components/smart-editor/comments/use-threads.ts b/frontend/src/components/smart-editor/comments/use-threads.ts index 23d020ae2..d4b4ce278 100644 --- a/frontend/src/components/smart-editor/comments/use-threads.ts +++ b/frontend/src/components/smart-editor/comments/use-threads.ts @@ -5,8 +5,9 @@ import { useMyPlateEditorState } from '@app/plate/types'; import { useGetCommentsQuery } from '@app/redux-api/smart-editor-comments'; import type { ISmartEditorComment } from '@app/types/smart-editor/comments'; import { skipToken } from '@reduxjs/toolkit/query'; +import { ElementApi } from '@udecode/plate'; import { useContext, useMemo } from 'react'; -import { type Descendant, Text } from 'slate'; +import type { Descendant } from 'slate'; import { COMMENT_PREFIX } from '../constants'; export interface FocusedComment extends ISmartEditorComment { @@ -73,7 +74,7 @@ export const useThreads = (): Threads => { const getRichTextThreadIds = (richText: Descendant[]): string[] => richText.flatMap((child) => { - if (Text.isText(child)) { + if (!ElementApi.isElement(child)) { return Object.keys(child) .filter((key) => key.startsWith(COMMENT_PREFIX)) .map((key) => key.replace(COMMENT_PREFIX, '')); diff --git a/frontend/src/components/smart-editor/context.tsx b/frontend/src/components/smart-editor/context.tsx index 089b969c6..3c58326b7 100644 --- a/frontend/src/components/smart-editor/context.tsx +++ b/frontend/src/components/smart-editor/context.tsx @@ -6,7 +6,7 @@ import { } from '@app/hooks/settings/use-setting'; import { DistribusjonsType, type ISmartDocument } from '@app/types/documents/documents'; import { TemplateIdEnum } from '@app/types/smart-editor/template-enums'; -import type { TRange } from '@udecode/plate-common'; +import type { TRange } from '@udecode/plate'; import { type MutableRefObject, createContext, useRef, useState } from 'react'; const noop = () => {}; diff --git a/frontend/src/components/smart-editor/functions/get-positioned-items.ts b/frontend/src/components/smart-editor/functions/get-positioned-items.ts index 4d88ed9fe..814ad4440 100644 --- a/frontend/src/components/smart-editor/functions/get-positioned-items.ts +++ b/frontend/src/components/smart-editor/functions/get-positioned-items.ts @@ -2,7 +2,7 @@ import type { FocusedComment } from '@app/components/smart-editor/comments/use-t import { COMMENT_PREFIX } from '@app/components/smart-editor/constants'; import { calculateRangePosition } from '@app/plate/functions/range-position'; import type { FormattedText, RichTextEditor } from '@app/plate/types'; -import { findNode, isText } from '@udecode/plate-common'; +import { TextApi } from '@udecode/plate'; export enum ItemType { THREAD = 'thread', @@ -49,7 +49,7 @@ export const getPositionedItems = ( const mark = item.type === ItemType.THREAD ? `${COMMENT_PREFIX}${item.id}` : item.id; - const leafEntry = findNode(editor, { at: [], match: (n) => isText(n) && Object.hasOwn(n, mark) }); + const leafEntry = editor.api.node({ at: [], match: (n) => TextApi.isText(n) && Object.hasOwn(n, mark) }); if (leafEntry === undefined) { continue; diff --git a/frontend/src/components/smart-editor/gode-formuleringer/add-button.tsx b/frontend/src/components/smart-editor/gode-formuleringer/add-button.tsx index e6322b6b9..870c90357 100644 --- a/frontend/src/components/smart-editor/gode-formuleringer/add-button.tsx +++ b/frontend/src/components/smart-editor/gode-formuleringer/add-button.tsx @@ -1,8 +1,9 @@ +import { useSelection } from '@app/plate/hooks/use-selection'; import type { RichTextEditor } from '@app/plate/types'; import { Button } from '@navikt/ds-react'; -import type { Value } from '@udecode/plate-common'; +import type { Value } from '@udecode/plate'; import { styled } from 'styled-components'; -import { insertGodFormulering, isAvailable } from './insert'; +import { insertGodFormulering } from './insert'; interface AddButtonProps { editor: RichTextEditor; @@ -13,7 +14,8 @@ interface AddButtonProps { } export const AddButton = ({ editor, content, children, title = children, disabledTitle }: AddButtonProps) => { - const disabled = !isAvailable(editor); + const selection = useSelection(); + const disabled = selection === null; return ( { const ref = useRef(null); const [isExpanded, setIsExpanded] = useState(false); - const mainEditor = useMyPlateEditorState(); + const mainEditor = useMyPlateEditorRef(); const primaryLanguage = useSmartEditorLanguage(); const editor = usePlateEditor({ diff --git a/frontend/src/components/smart-editor/gode-formuleringer/gode-formuleringer.tsx b/frontend/src/components/smart-editor/gode-formuleringer/gode-formuleringer.tsx index 9001e3123..491d23f56 100644 --- a/frontend/src/components/smart-editor/gode-formuleringer/gode-formuleringer.tsx +++ b/frontend/src/components/smart-editor/gode-formuleringer/gode-formuleringer.tsx @@ -20,7 +20,6 @@ import type { TemplateIdEnum } from '@app/types/smart-editor/template-enums'; import type { IConsumerText, NonNullableGodFormulering } from '@app/types/texts/consumer'; import { LightBulbIcon, XMarkIcon } from '@navikt/aksel-icons'; import { Button } from '@navikt/ds-react'; -import { focusEditor } from '@udecode/plate-common/react'; import { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react'; import { Filter } from './filter'; import { insertGodFormulering } from './insert'; @@ -136,7 +135,7 @@ export const GodeFormuleringer = ({ templateId }: Props) => { } if (editor !== null) { - focusEditor(editor); + editor.tf.focus(); } return setShowGodeFormuleringer(false); diff --git a/frontend/src/components/smart-editor/gode-formuleringer/insert.ts b/frontend/src/components/smart-editor/gode-formuleringer/insert.ts index 2e8c18071..27c3b3552 100644 --- a/frontend/src/components/smart-editor/gode-formuleringer/insert.ts +++ b/frontend/src/components/smart-editor/gode-formuleringer/insert.ts @@ -1,17 +1,14 @@ import type { RichTextEditor } from '@app/plate/types'; -import { type Value, insertFragment } from '@udecode/plate-common'; -import { focusEditor } from '@udecode/plate-common/react'; +import type { Value } from '@udecode/plate'; export const insertGodFormulering = (editor: RichTextEditor, content: Value) => { - if (!isAvailable(editor)) { + if (editor.selection === null) { return; } - insertFragment(editor, structuredClone(content), { voids: false }); + editor.tf.insertFragment(structuredClone(content), { voids: false }); setTimeout(() => { - focusEditor(editor); + editor.tf.focus(); }); }; - -export const isAvailable = (editor: RichTextEditor): boolean => editor.selection !== null; diff --git a/frontend/src/components/smart-editor/gode-formuleringer/section-select.tsx b/frontend/src/components/smart-editor/gode-formuleringer/section-select.tsx index af83bd945..a7b5fbf10 100644 --- a/frontend/src/components/smart-editor/gode-formuleringer/section-select.tsx +++ b/frontend/src/components/smart-editor/gode-formuleringer/section-select.tsx @@ -20,7 +20,6 @@ import { } from '@app/plate/types'; import { isOfElementTypeFn, isOfElementTypesFn } from '@app/plate/utils/queries'; import { Select } from '@navikt/ds-react'; -import { findNode } from '@udecode/plate-common'; import { useContext, useEffect, useMemo } from 'react'; import type { BasePoint, Range } from 'slate'; @@ -39,11 +38,11 @@ const ANCHOR: BasePoint = { path: [0], offset: 0 }; const getActiveSection = (editor: RichTextEditor, selection: Range): TemplateSections | null => { const entry = - findNode(editor, { + editor.api.node({ at: selection.focus, match: MATCH, }) ?? - findNode(editor, { + editor.api.node({ at: { anchor: ANCHOR, focus: selection.focus }, match: MATCH_SECTION, reverse: true, diff --git a/frontend/src/components/smart-editor/history/history-editor.tsx b/frontend/src/components/smart-editor/history/history-editor.tsx index fea9b339c..07255a181 100644 --- a/frontend/src/components/smart-editor/history/history-editor.tsx +++ b/frontend/src/components/smart-editor/history/history-editor.tsx @@ -12,14 +12,7 @@ import { Sheet } from '@app/plate/sheet'; import { type KabalValue, type RichTextEditor, useMyPlateEditorRef } from '@app/plate/types'; import type { ISmartDocument } from '@app/types/documents/documents'; import { Button } from '@navikt/ds-react'; -import { - type Value, - insertNodes, - removeNodes, - resetEditorChildren, - withoutNormalizing, - withoutSavingHistory, -} from '@udecode/plate-common'; +import type { Value } from '@udecode/plate'; import { Plate, usePlateEditor } from '@udecode/plate-core/react'; import { memo, useContext, useEffect } from 'react'; import { styled } from 'styled-components'; @@ -97,13 +90,13 @@ const HistoryContent = ({ id, version }: HistoryContentProps) => { }; const restore = (editor: RichTextEditor, content: Value) => { - withoutNormalizing(editor, () => { - withoutSavingHistory(editor, () => { - resetEditorChildren(editor); - insertNodes(editor, content, { at: [0] }); + editor.tf.withoutNormalizing(() => { + editor.tf.withoutSaving(() => { + editor.tf.reset({ children: true }); + editor.tf.insertNodes(content, { at: [0] }); // Remove empty paragraph that is added automatically - removeNodes(editor, { at: [content.length] }); + editor.tf.removeNodes({ at: [content.length] }); }); }); }; diff --git a/frontend/src/components/smart-editor/new-document/generated-icon.tsx b/frontend/src/components/smart-editor/new-document/generated-icon.tsx index 5df5faf95..7d848103b 100644 --- a/frontend/src/components/smart-editor/new-document/generated-icon.tsx +++ b/frontend/src/components/smart-editor/new-document/generated-icon.tsx @@ -12,7 +12,7 @@ import { } from '@app/plate/plugins/element-types'; import { LabelContentPlugin } from '@app/plate/plugins/label-content'; import type { ISmartEditorTemplate } from '@app/types/smart-editor/smart-editor'; -import { BaseParagraphPlugin } from '@udecode/plate-common'; +import { BaseParagraphPlugin } from '@udecode/plate'; import { HEADING_KEYS } from '@udecode/plate-heading'; import { BaseBulletedListPlugin, BaseNumberedListPlugin } from '@udecode/plate-list'; import { BaseTablePlugin } from '@udecode/plate-table'; diff --git a/frontend/src/components/smart-editor/tabbed-editors/cursors/cursors.tsx b/frontend/src/components/smart-editor/tabbed-editors/cursors/cursors.tsx index 4b5ce540d..bd570dc7a 100644 --- a/frontend/src/components/smart-editor/tabbed-editors/cursors/cursors.tsx +++ b/frontend/src/components/smart-editor/tabbed-editors/cursors/cursors.tsx @@ -1,6 +1,6 @@ import { getColors } from '@app/components/smart-editor/tabbed-editors/cursors/cursor-colors'; import type { RelativeRange } from '@slate-yjs/core'; -import { type UnknownObject, createZustandStore } from '@udecode/plate-common'; +import { type UnknownObject, createZustandStore } from '@udecode/plate'; import { type CursorData, type CursorProps, type CursorState, useCursorOverlayPositions } from '@udecode/plate-cursor'; import { useEffect, useMemo, useRef } from 'react'; import { styled } from 'styled-components'; @@ -83,7 +83,10 @@ const CaretLabel = styled.div` white-space: nowrap; `; -export const cursorStore = createZustandStore('cursors')>>({}); +export const cursorStore = createZustandStore>>( + {}, + { mutative: true, name: 'cursors' }, +); interface CursorOverlayProps { containerElement: HTMLElement; diff --git a/frontend/src/components/smart-editor/tabbed-editors/editor.tsx b/frontend/src/components/smart-editor/tabbed-editors/editor.tsx index 55c63b6a0..396ffa509 100644 --- a/frontend/src/components/smart-editor/tabbed-editors/editor.tsx +++ b/frontend/src/components/smart-editor/tabbed-editors/editor.tsx @@ -30,7 +30,7 @@ import type { IOppgavebehandling } from '@app/types/oppgavebehandling/oppgavebeh import { isObject } from '@grafana/faro-web-sdk'; import { ClockDashedIcon, CloudFillIcon, CloudSlashFillIcon } from '@navikt/aksel-icons'; import { Tooltip } from '@navikt/ds-react'; -import { isCollapsed, isText } from '@udecode/plate-common'; +import { RangeApi, TextApi } from '@udecode/plate'; import { Plate, useEditorRef, usePlateEditor } from '@udecode/plate-core/react'; import { YjsPlugin } from '@udecode/plate-yjs/react'; import { useContext, useEffect, useState } from 'react'; @@ -80,7 +80,7 @@ const LoadedEditor = ({ oppgave, smartDocument, scalingGroup }: LoadedEditorProp override: { components, }, - value: smartDocument.content, + value: structuredClone(smartDocument.content), }); return ( @@ -90,7 +90,7 @@ const LoadedEditor = ({ oppgave, smartDocument, scalingGroup }: LoadedEditorProp readOnly={!canEdit} decorate={({ entry }) => { const [node, path] = entry; - if (newCommentSelection === null || isCollapsed(newCommentSelection) || !isText(node)) { + if (newCommentSelection === null || RangeApi.isCollapsed(newCommentSelection) || !TextApi.isText(node)) { return []; } diff --git a/frontend/src/functions/are-descendants-equal.test.ts b/frontend/src/functions/are-descendants-equal.test.ts index 6dd476809..25cc86168 100644 --- a/frontend/src/functions/are-descendants-equal.test.ts +++ b/frontend/src/functions/are-descendants-equal.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'bun:test'; import { areDescendantsEqual, areKeysEqual } from '@app/functions/are-descendants-equal'; -import type { TElement, TText } from '@udecode/plate-common'; +import type { TElement, TText } from '@udecode/plate'; describe('are-descendants-equal', () => { it('should return false if the two lists are of different lengths', () => { diff --git a/frontend/src/functions/are-descendants-equal.ts b/frontend/src/functions/are-descendants-equal.ts index 2420ef41c..58c6cfe5c 100644 --- a/frontend/src/functions/are-descendants-equal.ts +++ b/frontend/src/functions/are-descendants-equal.ts @@ -1,8 +1,8 @@ import { removeEmptyCharInText } from '@app/functions/remove-empty-char-in-text'; -import { type TDescendant, isElement } from '@udecode/plate-common'; +import { type Descendant, ElementApi } from '@udecode/plate'; // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ¯\_(ツ)_/¯ -export const areDescendantsEqual = (listA: TDescendant[], listB: TDescendant[]): boolean => { +export const areDescendantsEqual = (listA: Descendant[], listB: Descendant[]): boolean => { if (listA.length !== listB.length) { return false; } @@ -15,8 +15,8 @@ export const areDescendantsEqual = (listA: TDescendant[], listB: TDescendant[]): return false; } - if (isElement(nodeA)) { - if (!isElement(nodeB)) { + if (ElementApi.isElement(nodeA)) { + if (!ElementApi.isElement(nodeB)) { return false; } @@ -38,7 +38,7 @@ export const areDescendantsEqual = (listA: TDescendant[], listB: TDescendant[]): continue; } - if (isElement(nodeB)) { + if (ElementApi.isElement(nodeB)) { return false; } diff --git a/frontend/src/hooks/use-template-sections.ts b/frontend/src/hooks/use-template-sections.ts index fba7f3e2c..ca29a234a 100644 --- a/frontend/src/hooks/use-template-sections.ts +++ b/frontend/src/hooks/use-template-sections.ts @@ -4,7 +4,7 @@ import { TEMPLATE_MAP } from '@app/plate/templates/templates'; import type { MaltekstseksjonElement } from '@app/plate/types'; import { isOfElementType } from '@app/plate/utils/queries'; import type { TemplateIdEnum } from '@app/types/smart-editor/template-enums'; -import type { TDescendant, Value } from '@udecode/plate-common'; +import type { Descendant, Value } from '@udecode/plate'; import { useMemo } from 'react'; const EMPTY_LIST: TemplateSections[] = []; @@ -27,7 +27,7 @@ export const getTemplateSections = (templateId: TemplateIdEnum): GroupedTemplate return getSections(template.richText as Value); }; -const getSections = (children: TDescendant[]): GroupedTemplateSections => { +const getSections = (children: Descendant[]): GroupedTemplateSections => { const used: TemplateSections[] = []; const unused: TemplateSections[] = []; diff --git a/frontend/src/plate/components/common/add-new-paragraph-buttons.tsx b/frontend/src/plate/components/common/add-new-paragraph-buttons.tsx index a9a5f9fc7..0b59aa851 100644 --- a/frontend/src/plate/components/common/add-new-paragraph-buttons.tsx +++ b/frontend/src/plate/components/common/add-new-paragraph-buttons.tsx @@ -3,8 +3,7 @@ import type { RootElement } from '@app/plate/types'; import { nextPath } from '@app/plate/utils/queries'; import { Button, Tooltip } from '@navikt/ds-react'; import { TextAddSpaceAfter, TextAddSpaceBefore } from '@styled-icons/fluentui-system-regular'; -import { findDescendant, insertElements } from '@udecode/plate-common'; -import { type PlateEditor, useEditorReadOnly } from '@udecode/plate-common/react'; +import { type PlateEditor, useEditorReadOnly } from '@udecode/plate/react'; interface Props { element: RootElement; @@ -29,13 +28,13 @@ export const AddNewParagraphBelow = ({ editor, element }: Props) => (