@grafana/ui
Version:
Grafana Components Library
1 lines • 1.73 kB
Source Map (JSON)
{"version":3,"file":"newline.mjs","sources":["../../../src/slate-plugins/newline.ts"],"sourcesContent":["import { Plugin } from 'slate-react';\n\nfunction getIndent(text: string) {\n let offset = text.length - text.trimLeft().length;\n if (offset) {\n let indent = text[0];\n while (--offset) {\n indent += text[0];\n }\n return indent;\n }\n return '';\n}\n\nexport function NewlinePlugin(): Plugin {\n return {\n onKeyDown(event, editor, next) {\n const value = editor.value;\n\n if (value.selection.isExpanded) {\n return next();\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n const { startBlock } = value;\n const currentLineText = startBlock.text;\n const indent = getIndent(currentLineText);\n\n return editor.splitBlock().insertText(indent).focus();\n }\n\n return next();\n },\n };\n}\n"],"names":[],"mappings":"AAEA,SAAS,UAAU,IAAc,EAAA;AAC/B,EAAA,IAAI,MAAS,GAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAK,UAAW,CAAA,MAAA;AAC3C,EAAA,IAAI,MAAQ,EAAA;AACV,IAAI,IAAA,MAAA,GAAS,KAAK,CAAC,CAAA;AACnB,IAAA,OAAO,EAAE,MAAQ,EAAA;AACf,MAAA,MAAA,IAAU,KAAK,CAAC,CAAA;AAAA;AAElB,IAAO,OAAA,MAAA;AAAA;AAET,EAAO,OAAA,EAAA;AACT;AAEO,SAAS,aAAwB,GAAA;AACtC,EAAO,OAAA;AAAA,IACL,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAC7B,MAAA,MAAM,QAAQ,MAAO,CAAA,KAAA;AAErB,MAAI,IAAA,KAAA,CAAM,UAAU,UAAY,EAAA;AAC9B,QAAA,OAAO,IAAK,EAAA;AAAA;AAGd,MAAI,IAAA,KAAA,CAAM,QAAQ,OAAS,EAAA;AACzB,QAAA,KAAA,CAAM,cAAe,EAAA;AAErB,QAAM,MAAA,EAAE,YAAe,GAAA,KAAA;AACvB,QAAA,MAAM,kBAAkB,UAAW,CAAA,IAAA;AACnC,QAAM,MAAA,MAAA,GAAS,UAAU,eAAe,CAAA;AAExC,QAAA,OAAO,OAAO,UAAW,EAAA,CAAE,UAAW,CAAA,MAAM,EAAE,KAAM,EAAA;AAAA;AAGtD,MAAA,OAAO,IAAK,EAAA;AAAA;AACd,GACF;AACF;;;;"}