UNPKG

@liveblocks/react-ui

Version:

A set of React pre-built components for the Liveblocks products. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.

1 lines 3.78 kB
{"version":3,"file":"marks.cjs","sources":["../../../src/slate/utils/marks.ts"],"sourcesContent":["import type { EditorMarks, Text } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\nimport { getCharacterAfter, getCharacterBefore } from \"./get-character\";\n\nconst defaultMarks: Required<EditorMarks> = {\n bold: false,\n italic: false,\n strikethrough: false,\n code: false,\n};\n\nexport function isMarkActive(editor: SlateEditor, mark: keyof EditorMarks) {\n const marks = SlateEditor.marks(editor);\n\n return marks ? marks[mark] === true : false;\n}\n\nexport function getMarks(editor?: SlateEditor) {\n if (!editor) {\n return { ...defaultMarks };\n }\n\n const marks = SlateEditor.marks(editor);\n\n return { ...defaultMarks, ...marks };\n}\n\nexport function filterActiveMarks(\n value: Text | EditorMarks | null | undefined\n) {\n return Object.keys(value ?? {}).filter(\n (key) => key !== \"text\"\n ) as (keyof EditorMarks)[];\n}\n\nexport function toggleMark(editor: SlateEditor, mark: keyof EditorMarks) {\n const isActive = isMarkActive(editor, mark);\n\n if (isActive) {\n SlateEditor.removeMark(editor, mark);\n } else {\n SlateEditor.addMark(editor, mark, true);\n }\n}\n\nexport function removeMarks(editor: SlateEditor) {\n const marks = SlateEditor.marks(editor);\n\n if (marks) {\n for (const mark in marks) {\n SlateEditor.removeMark(editor, mark);\n }\n }\n}\n\nexport function leaveMarkEdge(editor: SlateEditor, edge: \"start\" | \"end\") {\n if (editor.selection && SlateRange.isCollapsed(editor.selection)) {\n const marks = Object.keys(SlateEditor.marks(editor) ?? {});\n\n if (marks.length > 0) {\n const sibling =\n edge === \"start\"\n ? getCharacterBefore(editor, editor.selection)\n : getCharacterAfter(editor, editor.selection);\n\n if (!sibling) {\n removeMarks(editor);\n }\n }\n }\n}\n"],"names":["SlateEditor","SlateRange","getCharacterBefore","getCharacterAfter"],"mappings":";;;;;AAKA,MAAM,YAAsC,GAAA;AAAA,EAC1C,IAAM,EAAA,KAAA;AAAA,EACN,MAAQ,EAAA,KAAA;AAAA,EACR,aAAe,EAAA,KAAA;AAAA,EACf,IAAM,EAAA,KAAA;AACR,CAAA,CAAA;AAEgB,SAAA,YAAA,CAAa,QAAqB,IAAyB,EAAA;AACzE,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAO,OAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,CAAA,KAAU,IAAO,GAAA,KAAA,CAAA;AACxC,CAAA;AAEO,SAAS,SAAS,MAAsB,EAAA;AAC7C,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,EAAE,GAAG,YAAa,EAAA,CAAA;AAAA,GAC3B;AAEA,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,OAAO,EAAE,GAAG,YAAc,EAAA,GAAG,KAAM,EAAA,CAAA;AACrC,CAAA;AAEO,SAAS,kBACd,KACA,EAAA;AACA,EAAA,OAAO,MAAO,CAAA,IAAA,CAAK,KAAS,IAAA,EAAE,CAAE,CAAA,MAAA;AAAA,IAC9B,CAAC,QAAQ,GAAQ,KAAA,MAAA;AAAA,GACnB,CAAA;AACF,CAAA;AAEgB,SAAA,UAAA,CAAW,QAAqB,IAAyB,EAAA;AACvE,EAAM,MAAA,QAAA,GAAW,YAAa,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAE1C,EAAA,IAAI,QAAU,EAAA;AACZ,IAAYA,YAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC9B,MAAA;AACL,IAAYA,YAAA,CAAA,OAAA,CAAQ,MAAQ,EAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,GACxC;AACF,CAAA;AAEO,SAAS,YAAY,MAAqB,EAAA;AAC/C,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,MAAYA,YAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,KACrC;AAAA,GACF;AACF,CAAA;AAEgB,SAAA,aAAA,CAAc,QAAqB,IAAuB,EAAA;AACxE,EAAA,IAAI,OAAO,SAAa,IAAAC,WAAA,CAAW,WAAY,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAChE,IAAM,MAAA,KAAA,GAAQ,OAAO,IAAK,CAAAD,YAAA,CAAY,MAAM,MAAM,CAAA,IAAK,EAAE,CAAA,CAAA;AAEzD,IAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,MAAM,MAAA,OAAA,GACJ,IAAS,KAAA,OAAA,GACLE,+BAAmB,CAAA,MAAA,EAAQ,MAAO,CAAA,SAAS,CAC3C,GAAAC,8BAAA,CAAkB,MAAQ,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAEhD,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,GACF;AACF;;;;;;;;;"}