@solace-health/ui 0.10.716 → 0.10.717
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/{chunk-FRJSZEGQ.js → chunk-5QZUQ4TI.js} +2 -2
- package/dist/{chunk-FRJSZEGQ.js.map → chunk-5QZUQ4TI.js.map} +1 -1
- package/dist/chunk-HR4H6CIQ.js +2 -0
- package/dist/chunk-HR4H6CIQ.js.map +1 -0
- package/dist/chunk-N46NOSFX.cjs +2 -0
- package/dist/chunk-N46NOSFX.cjs.map +1 -0
- package/dist/{chunk-GA23ZFN3.cjs → chunk-UYYDGLZS.cjs} +2 -2
- package/dist/{chunk-GA23ZFN3.cjs.map → chunk-UYYDGLZS.cjs.map} +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/v2/address-input/address-input.cjs +1 -1
- package/dist/v2/address-input/address-input.js +1 -1
- package/dist/v2/date-picker/date-picker-input.cjs +1 -1
- package/dist/v2/date-picker/date-picker-input.js +1 -1
- package/dist/v2/date-picker/date-picker.cjs +1 -1
- package/dist/v2/date-picker/date-picker.js +1 -1
- package/dist/v2/image-preview/image-preview.cjs +1 -1
- package/dist/v2/image-preview/image-preview.js +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.js +1 -1
- package/dist/v2/rich-text-editor/rich-text-editor-with-code-blocks.cjs +1 -1
- package/dist/v2/rich-text-editor/rich-text-editor-with-code-blocks.js +1 -1
- package/dist/v2/rich-text-editor/rich-text-editor.cjs +1 -1
- package/dist/v2/rich-text-editor/rich-text-editor.d.ts +1 -1
- package/dist/v2/rich-text-editor/rich-text-editor.js +1 -1
- package/dist/v2/rich-text-editor/rich-text-editor.stories.d.ts +4 -0
- package/dist/v2/time-select/time-select.cjs +1 -1
- package/dist/v2/time-select/time-select.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-MRREQEME.cjs +0 -2
- package/dist/chunk-MRREQEME.cjs.map +0 -1
- package/dist/chunk-SKXW2JMJ.js +0 -2
- package/dist/chunk-SKXW2JMJ.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b}from'./chunk-HR4H6CIQ.js';import d from'react';import {codeBlockPlugin,codeMirrorPlugin}from'@mdxeditor/editor';import {jsx}from'react/jsx-runtime';var a={"":"Plain text",json:"JSON",md:"Markdown",xml:"XML",html:"HTML",css:"CSS",js:"JavaScript",ts:"TypeScript",sql:"SQL",bash:"Bash",python:"Python"},l=d.forwardRef(({options:t,plugins:e=[],...r},i)=>jsx(b,{...r,ref:i,options:{codeBlock:true,...t},plugins:[codeBlockPlugin({defaultCodeBlockLanguage:""}),codeMirrorPlugin({codeBlockLanguages:a}),...e]}));l.displayName="RichTextEditorWithCodeBlocks";export{l as a};//# sourceMappingURL=chunk-5QZUQ4TI.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-5QZUQ4TI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/rich-text-editor/rich-text-editor-with-code-blocks.tsx"],"names":["codeBlockLanguages","RichTextEditorWithCodeBlocks","React","options","plugins","props","editorRef","jsx","RichTextEditor","codeBlockPlugin","codeMirrorPlugin"],"mappings":"kKAKMA,CAAAA,CAAqB,CACzB,GAAI,YAAA,CACJ,IAAA,CAAM,OACN,EAAA,CAAI,UAAA,CACJ,GAAA,CAAK,KAAA,CACL,KAAM,MAAA,CACN,GAAA,CAAK,MACL,EAAA,CAAI,YAAA,CACJ,GAAI,YAAA,CACJ,GAAA,CAAK,MACL,IAAA,CAAM,MAAA,CACN,OAAQ,QACV,CAAA,CAMaC,EAA+BC,CAAAA,CAAM,UAAA,CAChD,CACE,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,EAAU,EAAC,CAAG,GAAGC,CAAM,CAAA,CAClCC,IAEAC,GAAAA,CAACC,CAAAA,CAAA,CACE,GAAGH,EACJ,GAAA,CAAKC,CAAAA,CACL,QAAS,CAAE,SAAA,CAAW,KAAM,GAAGH,CAAQ,CAAA,CACvC,OAAA,CAAS,CACPM,eAAAA,CAAgB,CAAE,yBAA0B,EAAG,CAAC,EAChDC,gBAAAA,CAAiB,CAAE,mBAAAV,CAAmB,CAAC,EACvC,GAAGI,CACL,EACF,CAEJ,EAEAH,EAA6B,WAAA,CAAc,8BAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/rich-text-editor/rich-text-editor-with-code-blocks.tsx"],"names":["codeBlockLanguages","RichTextEditorWithCodeBlocks","React","options","plugins","props","editorRef","jsx","RichTextEditor","codeBlockPlugin","codeMirrorPlugin"],"mappings":"kKAKMA,CAAAA,CAAqB,CACzB,GAAI,YAAA,CACJ,IAAA,CAAM,OACN,EAAA,CAAI,UAAA,CACJ,GAAA,CAAK,KAAA,CACL,KAAM,MAAA,CACN,GAAA,CAAK,MACL,EAAA,CAAI,YAAA,CACJ,GAAI,YAAA,CACJ,GAAA,CAAK,MACL,IAAA,CAAM,MAAA,CACN,OAAQ,QACV,CAAA,CAMaC,EAA+BC,CAAAA,CAAM,UAAA,CAChD,CACE,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,EAAU,EAAC,CAAG,GAAGC,CAAM,CAAA,CAClCC,IAEAC,GAAAA,CAACC,CAAAA,CAAA,CACE,GAAGH,EACJ,GAAA,CAAKC,CAAAA,CACL,QAAS,CAAE,SAAA,CAAW,KAAM,GAAGH,CAAQ,CAAA,CACvC,OAAA,CAAS,CACPM,eAAAA,CAAgB,CAAE,yBAA0B,EAAG,CAAC,EAChDC,gBAAAA,CAAiB,CAAE,mBAAAV,CAAmB,CAAC,EACvC,GAAGI,CACL,EACF,CAEJ,EAEAH,EAA6B,WAAA,CAAc,8BAAA","file":"chunk-5QZUQ4TI.js","sourcesContent":["import type { ForwardedRef } from 'react';\nimport React from 'react';\nimport { codeBlockPlugin, codeMirrorPlugin, type MDXEditorMethods } from '@mdxeditor/editor';\nimport { RichTextEditor, type RichTextEditorProps } from './rich-text-editor';\n\nconst codeBlockLanguages = {\n '': 'Plain text',\n json: 'JSON',\n md: 'Markdown',\n xml: 'XML',\n html: 'HTML',\n css: 'CSS',\n js: 'JavaScript',\n ts: 'TypeScript',\n sql: 'SQL',\n bash: 'Bash',\n python: 'Python',\n};\n\n/**\n * `RichTextEditor` with fenced code block support (parsing + CodeMirror editing + toolbar button).\n * Kept separate because CodeMirror adds ~140 KB gzipped; only importers of this component pay for it.\n */\nexport const RichTextEditorWithCodeBlocks = React.forwardRef(\n (\n { options, plugins = [], ...props }: RichTextEditorProps,\n editorRef?: ForwardedRef<MDXEditorMethods> | null,\n ) => (\n <RichTextEditor\n {...props}\n ref={editorRef}\n options={{ codeBlock: true, ...options }}\n plugins={[\n codeBlockPlugin({ defaultCodeBlockLanguage: '' }),\n codeMirrorPlugin({ codeBlockLanguages }),\n ...plugins,\n ]}\n />\n ),\n);\n\nRichTextEditorWithCodeBlocks.displayName = 'RichTextEditorWithCodeBlocks';\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-YTIIAU4W.js';import C,{useState}from'react';import {MDXEditor,headingsPlugin,listsPlugin,quotePlugin,thematicBreakPlugin,linkPlugin,linkDialogPlugin,tablePlugin,UndoRedo,BlockTypeSelect,BoldItalicUnderlineToggles,StrikeThroughSupSubToggles,CodeToggle,ListsToggle,CreateLink,InsertCodeBlock,InsertTable,InsertThematicBreak,Separator,markdownShortcutPlugin,toolbarPlugin}from'@mdxeditor/editor';import {jsx}from'react/jsx-runtime';var B={undoRedo:false,blockType:true,boldItalicUnderline:true,strikeThrough:true,inlineCode:false,lists:true,link:true,table:false,horizontalRule:true,toolbar:true},h=class extends C.Component{constructor(l){super(l),this.state={failed:false};}static getDerivedStateFromError(){return {failed:true}}componentDidCatch(l){let{onError:a}=this.props;a(l);}render(){let{failed:l}=this.state,{fallback:a,children:t}=this.props;return l?a:t}},q=C.forwardRef(({className:n="",preview:l=false,options:a$1=B,markdown:t="",suppressHtmlProcessing:k=true,plugins:f=[],onError:u,...p},g)=>{let[c,y]=useState(null),o={...B,...a$1};if(l){let s=jsx("div",{className:a("overflow-y-auto break-words whitespace-pre-wrap",n,p.contentEditableClassName),children:t});return c&&t.startsWith(c)?s:jsx(h,{fallback:s,onError:i=>{y(t),u?.({error:i.message,source:"render"});},children:jsx(MDXEditor,{markdown:t,plugins:[headingsPlugin(),listsPlugin(),quotePlugin(),thematicBreakPlugin(),linkPlugin(),linkDialogPlugin(),tablePlugin(),...f],className:a("preview overflow-y-auto",n),suppressHtmlProcessing:k,...p,onError:i=>{y(t),u?.(i);},readOnly:true,ref:g},"preview")},c??"")}let r=[];o.toolbar&&o.undoRedo&&r.push(jsx(UndoRedo,{},"undoRedo")),o.toolbar&&o.blockType&&r.push(jsx(BlockTypeSelect,{},"blockType")),o.toolbar&&o.boldItalicUnderline&&r.push(jsx(BoldItalicUnderlineToggles,{},"boldItalicUnderline")),o.toolbar&&o.strikeThrough&&r.push(jsx(StrikeThroughSupSubToggles,{options:["Strikethrough"]},"strikeThrough")),o.toolbar&&o.inlineCode&&r.push(jsx(CodeToggle,{},"inlineCode")),o.toolbar&&o.lists&&r.push(jsx(ListsToggle,{},"lists")),o.toolbar&&o.link&&r.push(jsx(CreateLink,{},"link")),o.toolbar&&o.codeBlock&&r.push(jsx(InsertCodeBlock,{},"codeBlock")),o.toolbar&&o.table&&r.push(jsx(InsertTable,{},"table")),o.toolbar&&o.horizontalRule&&r.push(jsx(InsertThematicBreak,{},"horizontalRule"));let b=[];return r.forEach((s,i)=>{b.push(s),i<r.length-1&&b.push(jsx(Separator,{},`separator-${i}`));}),jsx(MDXEditor,{markdown:t,plugins:[headingsPlugin({allowedHeadingLevels:[1]}),listsPlugin(),quotePlugin(),thematicBreakPlugin(),linkPlugin(),linkDialogPlugin(),tablePlugin(),markdownShortcutPlugin(),...o.toolbar?[toolbarPlugin({toolbarContents:()=>b})]:[],...f],className:a("overflow-y-auto rounded-md border border-gray-300 shadow-xs transition-all hover:border-green-800",!o.toolbar&&"no-toolbar",n),suppressHtmlProcessing:k,...p,onError:u,ref:g},`editor-${o.toolbar}`)});q.displayName="RichTextEditor";export{B as a,q as b};//# sourceMappingURL=chunk-HR4H6CIQ.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-HR4H6CIQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/rich-text-editor/rich-text-editor.tsx"],"names":["defaultOptions","PreviewErrorBoundary","React","props","error","onError","failed","fallback","children","RichTextEditor","className","preview","options","markdown","suppressHtmlProcessing","additionalPlugins","editorRef","failedMarkdown","setFailedMarkdown","useState","finalOptions","plainText","jsx","cn","MDXEditor","headingsPlugin","listsPlugin","quotePlugin","thematicBreakPlugin","linkPlugin","linkDialogPlugin","tablePlugin","payload","toolbarItems","UndoRedo","BlockTypeSelect","BoldItalicUnderlineToggles","StrikeThroughSupSubToggles","CodeToggle","ListsToggle","CreateLink","InsertCodeBlock","InsertTable","InsertThematicBreak","toolbarItemsWithSeparators","item","index","Separator","markdownShortcutPlugin","toolbarPlugin"],"mappings":"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","file":"chunk-HR4H6CIQ.js","sourcesContent":["/* eslint-disable react/no-array-index-key */\n/* eslint-disable react/require-default-props */\n/* eslint-disable react/no-unstable-nested-components */\nimport type { ForwardedRef, ReactNode } from 'react';\nimport React, { useState } from 'react';\nimport {\n BlockTypeSelect,\n BoldItalicUnderlineToggles,\n CodeToggle,\n CreateLink,\n headingsPlugin,\n InsertCodeBlock,\n InsertTable,\n InsertThematicBreak,\n linkDialogPlugin,\n linkPlugin,\n listsPlugin,\n ListsToggle,\n markdownShortcutPlugin,\n MDXEditor,\n type MDXEditorMethods,\n type MDXEditorProps,\n quotePlugin,\n Separator,\n StrikeThroughSupSubToggles,\n tablePlugin,\n thematicBreakPlugin,\n toolbarPlugin,\n UndoRedo,\n} from '@mdxeditor/editor';\nimport { cn } from '@/lib/utils';\n\ntype EditorOptions = {\n undoRedo?: boolean;\n blockType?: boolean;\n boldItalicUnderline?: boolean;\n strikeThrough?: boolean;\n inlineCode?: boolean;\n lists?: boolean;\n link?: boolean;\n /** Insert-code-block button. Only works with the code block plugins, so use `RichTextEditorWithCodeBlocks`. */\n codeBlock?: boolean;\n table?: boolean;\n horizontalRule?: boolean;\n toolbar?: boolean;\n};\n\nexport type RichTextEditorProps = {\n preview?: boolean;\n options?: EditorOptions;\n markdown?: string;\n} & Omit<MDXEditorProps, 'markdown'>;\n\nexport const defaultOptions: EditorOptions = {\n undoRedo: false,\n blockType: true,\n boldItalicUnderline: true,\n strikeThrough: true,\n inlineCode: false,\n lists: true,\n link: true,\n // `codeBlock` intentionally omitted: spreading defaultOptions into RichTextEditorWithCodeBlocks\n // options must not turn its button off.\n table: false,\n horizontalRule: true,\n toolbar: true,\n};\n\ntype PreviewBoundaryProps = {\n fallback: ReactNode;\n onError: (error: Error) => void;\n children: ReactNode;\n};\n\nclass PreviewErrorBoundary extends React.Component<PreviewBoundaryProps, { failed: boolean }> {\n constructor(props: PreviewBoundaryProps) {\n super(props);\n this.state = { failed: false };\n }\n\n static getDerivedStateFromError() {\n return { failed: true };\n }\n\n componentDidCatch(error: Error) {\n const { onError } = this.props;\n onError(error);\n }\n\n render() {\n const { failed } = this.state;\n const { fallback, children } = this.props;\n return failed ? fallback : children;\n }\n}\n\nexport const RichTextEditor = React.forwardRef(\n (\n {\n className = '',\n preview = false,\n options = defaultOptions,\n markdown = '',\n suppressHtmlProcessing = true,\n plugins: additionalPlugins = [],\n onError,\n ...props\n }: RichTextEditorProps,\n editorRef?: ForwardedRef<MDXEditorMethods> | null,\n ) => {\n // *** <Error handling> ***\n // The markdown the preview failed to render. A value that extends it (llm streaming content) stays\n // plain text instead of failing again on every delta; any other value gets a fresh attempt.\n const [failedMarkdown, setFailedMarkdown] = useState<string | null>(null);\n const finalOptions = { ...defaultOptions, ...options };\n\n if (preview) {\n // MDXEditor stops importing at constructs it doesn't support (raw HTML such as `<br>`)\n const plainText = (\n <div\n className={cn(\n 'overflow-y-auto break-words whitespace-pre-wrap',\n className,\n props.contentEditableClassName,\n )}\n >\n {markdown}\n </div>\n );\n if (failedMarkdown && markdown.startsWith(failedMarkdown)) return plainText;\n // *** </Error handling> ***\n\n // *** <Preview> ***\n return (\n <PreviewErrorBoundary\n // a new failure remounts the boundary so a replacement value gets a fresh attempt\n key={failedMarkdown ?? ''}\n fallback={plainText}\n onError={(error) => {\n setFailedMarkdown(markdown);\n onError?.({ error: error.message, source: 'render' });\n }}\n >\n <MDXEditor\n key=\"preview\"\n markdown={markdown}\n plugins={[\n headingsPlugin(),\n listsPlugin(),\n quotePlugin(),\n thematicBreakPlugin(),\n linkPlugin(),\n linkDialogPlugin(),\n tablePlugin(),\n ...additionalPlugins,\n ]}\n className={cn('preview overflow-y-auto', className)}\n suppressHtmlProcessing={suppressHtmlProcessing}\n {...props}\n onError={(payload) => {\n setFailedMarkdown(markdown);\n onError?.(payload);\n }}\n readOnly\n ref={editorRef}\n />\n </PreviewErrorBoundary>\n );\n }\n // *** </Preview> ***\n\n const toolbarItems: ReactNode[] = [];\n\n if (finalOptions.toolbar && finalOptions.undoRedo) {\n toolbarItems.push(<UndoRedo key=\"undoRedo\" />);\n }\n if (finalOptions.toolbar && finalOptions.blockType) {\n toolbarItems.push(<BlockTypeSelect key=\"blockType\" />);\n }\n if (finalOptions.toolbar && finalOptions.boldItalicUnderline) {\n toolbarItems.push(<BoldItalicUnderlineToggles key=\"boldItalicUnderline\" />);\n }\n if (finalOptions.toolbar && finalOptions.strikeThrough) {\n toolbarItems.push(\n <StrikeThroughSupSubToggles key=\"strikeThrough\" options={['Strikethrough']} />,\n );\n }\n if (finalOptions.toolbar && finalOptions.inlineCode) {\n toolbarItems.push(<CodeToggle key=\"inlineCode\" />);\n }\n if (finalOptions.toolbar && finalOptions.lists) {\n toolbarItems.push(<ListsToggle key=\"lists\" />);\n }\n if (finalOptions.toolbar && finalOptions.link) {\n toolbarItems.push(<CreateLink key=\"link\" />);\n }\n if (finalOptions.toolbar && finalOptions.codeBlock) {\n toolbarItems.push(<InsertCodeBlock key=\"codeBlock\" />);\n }\n if (finalOptions.toolbar && finalOptions.table) {\n toolbarItems.push(<InsertTable key=\"table\" />);\n }\n if (finalOptions.toolbar && finalOptions.horizontalRule) {\n toolbarItems.push(<InsertThematicBreak key=\"horizontalRule\" />);\n }\n\n const toolbarItemsWithSeparators: ReactNode[] = [];\n toolbarItems.forEach((item, index) => {\n toolbarItemsWithSeparators.push(item);\n if (index < toolbarItems.length - 1) {\n toolbarItemsWithSeparators.push(<Separator key={`separator-${index}`} />);\n }\n });\n\n return (\n <MDXEditor\n key={`editor-${finalOptions.toolbar}`}\n markdown={markdown}\n plugins={[\n headingsPlugin({ allowedHeadingLevels: [1] }),\n listsPlugin(),\n quotePlugin(),\n thematicBreakPlugin(),\n linkPlugin(),\n linkDialogPlugin(),\n tablePlugin(),\n markdownShortcutPlugin(),\n ...(finalOptions.toolbar\n ? [\n toolbarPlugin({\n toolbarContents: () => toolbarItemsWithSeparators,\n }),\n ]\n : []),\n ...additionalPlugins,\n ]}\n className={cn(\n 'overflow-y-auto rounded-md border border-gray-300 shadow-xs transition-all hover:border-green-800',\n !finalOptions.toolbar && 'no-toolbar',\n className,\n )}\n suppressHtmlProcessing={suppressHtmlProcessing}\n {...props}\n onError={onError}\n ref={editorRef}\n />\n );\n },\n);\n\nRichTextEditor.displayName = 'RichTextEditor';\n\nexport { type MDXEditorMethods, type MDXEditorProps };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),C=require('react'),editor=require('@mdxeditor/editor'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var C__default=/*#__PURE__*/_interopDefault(C);var B={undoRedo:false,blockType:true,boldItalicUnderline:true,strikeThrough:true,inlineCode:false,lists:true,link:true,table:false,horizontalRule:true,toolbar:true},h=class extends C__default.default.Component{constructor(l){super(l),this.state={failed:false};}static getDerivedStateFromError(){return {failed:true}}componentDidCatch(l){let{onError:a}=this.props;a(l);}render(){let{failed:l}=this.state,{fallback:a,children:t}=this.props;return l?a:t}},q=C__default.default.forwardRef(({className:n="",preview:l=false,options:a=B,markdown:t="",suppressHtmlProcessing:k=true,plugins:f=[],onError:u,...p},g)=>{let[c,y]=C.useState(null),o={...B,...a};if(l){let s=jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("overflow-y-auto break-words whitespace-pre-wrap",n,p.contentEditableClassName),children:t});return c&&t.startsWith(c)?s:jsxRuntime.jsx(h,{fallback:s,onError:i=>{y(t),u?.({error:i.message,source:"render"});},children:jsxRuntime.jsx(editor.MDXEditor,{markdown:t,plugins:[editor.headingsPlugin(),editor.listsPlugin(),editor.quotePlugin(),editor.thematicBreakPlugin(),editor.linkPlugin(),editor.linkDialogPlugin(),editor.tablePlugin(),...f],className:chunkQRO22BPZ_cjs.a("preview overflow-y-auto",n),suppressHtmlProcessing:k,...p,onError:i=>{y(t),u?.(i);},readOnly:true,ref:g},"preview")},c??"")}let r=[];o.toolbar&&o.undoRedo&&r.push(jsxRuntime.jsx(editor.UndoRedo,{},"undoRedo")),o.toolbar&&o.blockType&&r.push(jsxRuntime.jsx(editor.BlockTypeSelect,{},"blockType")),o.toolbar&&o.boldItalicUnderline&&r.push(jsxRuntime.jsx(editor.BoldItalicUnderlineToggles,{},"boldItalicUnderline")),o.toolbar&&o.strikeThrough&&r.push(jsxRuntime.jsx(editor.StrikeThroughSupSubToggles,{options:["Strikethrough"]},"strikeThrough")),o.toolbar&&o.inlineCode&&r.push(jsxRuntime.jsx(editor.CodeToggle,{},"inlineCode")),o.toolbar&&o.lists&&r.push(jsxRuntime.jsx(editor.ListsToggle,{},"lists")),o.toolbar&&o.link&&r.push(jsxRuntime.jsx(editor.CreateLink,{},"link")),o.toolbar&&o.codeBlock&&r.push(jsxRuntime.jsx(editor.InsertCodeBlock,{},"codeBlock")),o.toolbar&&o.table&&r.push(jsxRuntime.jsx(editor.InsertTable,{},"table")),o.toolbar&&o.horizontalRule&&r.push(jsxRuntime.jsx(editor.InsertThematicBreak,{},"horizontalRule"));let b=[];return r.forEach((s,i)=>{b.push(s),i<r.length-1&&b.push(jsxRuntime.jsx(editor.Separator,{},`separator-${i}`));}),jsxRuntime.jsx(editor.MDXEditor,{markdown:t,plugins:[editor.headingsPlugin({allowedHeadingLevels:[1]}),editor.listsPlugin(),editor.quotePlugin(),editor.thematicBreakPlugin(),editor.linkPlugin(),editor.linkDialogPlugin(),editor.tablePlugin(),editor.markdownShortcutPlugin(),...o.toolbar?[editor.toolbarPlugin({toolbarContents:()=>b})]:[],...f],className:chunkQRO22BPZ_cjs.a("overflow-y-auto rounded-md border border-gray-300 shadow-xs transition-all hover:border-green-800",!o.toolbar&&"no-toolbar",n),suppressHtmlProcessing:k,...p,onError:u,ref:g},`editor-${o.toolbar}`)});q.displayName="RichTextEditor";exports.a=B;exports.b=q;//# sourceMappingURL=chunk-N46NOSFX.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-N46NOSFX.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/rich-text-editor/rich-text-editor.tsx"],"names":["defaultOptions","PreviewErrorBoundary","React","props","error","onError","failed","fallback","children","RichTextEditor","className","preview","options","markdown","suppressHtmlProcessing","additionalPlugins","editorRef","failedMarkdown","setFailedMarkdown","useState","finalOptions","plainText","jsx","cn","MDXEditor","headingsPlugin","listsPlugin","quotePlugin","thematicBreakPlugin","linkPlugin","linkDialogPlugin","tablePlugin","payload","toolbarItems","UndoRedo","BlockTypeSelect","BoldItalicUnderlineToggles","StrikeThroughSupSubToggles","CodeToggle","ListsToggle","CreateLink","InsertCodeBlock","InsertTable","InsertThematicBreak","toolbarItemsWithSeparators","item","index","Separator","markdownShortcutPlugin","toolbarPlugin"],"mappings":"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","file":"chunk-N46NOSFX.cjs","sourcesContent":["/* eslint-disable react/no-array-index-key */\n/* eslint-disable react/require-default-props */\n/* eslint-disable react/no-unstable-nested-components */\nimport type { ForwardedRef, ReactNode } from 'react';\nimport React, { useState } from 'react';\nimport {\n BlockTypeSelect,\n BoldItalicUnderlineToggles,\n CodeToggle,\n CreateLink,\n headingsPlugin,\n InsertCodeBlock,\n InsertTable,\n InsertThematicBreak,\n linkDialogPlugin,\n linkPlugin,\n listsPlugin,\n ListsToggle,\n markdownShortcutPlugin,\n MDXEditor,\n type MDXEditorMethods,\n type MDXEditorProps,\n quotePlugin,\n Separator,\n StrikeThroughSupSubToggles,\n tablePlugin,\n thematicBreakPlugin,\n toolbarPlugin,\n UndoRedo,\n} from '@mdxeditor/editor';\nimport { cn } from '@/lib/utils';\n\ntype EditorOptions = {\n undoRedo?: boolean;\n blockType?: boolean;\n boldItalicUnderline?: boolean;\n strikeThrough?: boolean;\n inlineCode?: boolean;\n lists?: boolean;\n link?: boolean;\n /** Insert-code-block button. Only works with the code block plugins, so use `RichTextEditorWithCodeBlocks`. */\n codeBlock?: boolean;\n table?: boolean;\n horizontalRule?: boolean;\n toolbar?: boolean;\n};\n\nexport type RichTextEditorProps = {\n preview?: boolean;\n options?: EditorOptions;\n markdown?: string;\n} & Omit<MDXEditorProps, 'markdown'>;\n\nexport const defaultOptions: EditorOptions = {\n undoRedo: false,\n blockType: true,\n boldItalicUnderline: true,\n strikeThrough: true,\n inlineCode: false,\n lists: true,\n link: true,\n // `codeBlock` intentionally omitted: spreading defaultOptions into RichTextEditorWithCodeBlocks\n // options must not turn its button off.\n table: false,\n horizontalRule: true,\n toolbar: true,\n};\n\ntype PreviewBoundaryProps = {\n fallback: ReactNode;\n onError: (error: Error) => void;\n children: ReactNode;\n};\n\nclass PreviewErrorBoundary extends React.Component<PreviewBoundaryProps, { failed: boolean }> {\n constructor(props: PreviewBoundaryProps) {\n super(props);\n this.state = { failed: false };\n }\n\n static getDerivedStateFromError() {\n return { failed: true };\n }\n\n componentDidCatch(error: Error) {\n const { onError } = this.props;\n onError(error);\n }\n\n render() {\n const { failed } = this.state;\n const { fallback, children } = this.props;\n return failed ? fallback : children;\n }\n}\n\nexport const RichTextEditor = React.forwardRef(\n (\n {\n className = '',\n preview = false,\n options = defaultOptions,\n markdown = '',\n suppressHtmlProcessing = true,\n plugins: additionalPlugins = [],\n onError,\n ...props\n }: RichTextEditorProps,\n editorRef?: ForwardedRef<MDXEditorMethods> | null,\n ) => {\n // *** <Error handling> ***\n // The markdown the preview failed to render. A value that extends it (llm streaming content) stays\n // plain text instead of failing again on every delta; any other value gets a fresh attempt.\n const [failedMarkdown, setFailedMarkdown] = useState<string | null>(null);\n const finalOptions = { ...defaultOptions, ...options };\n\n if (preview) {\n // MDXEditor stops importing at constructs it doesn't support (raw HTML such as `<br>`)\n const plainText = (\n <div\n className={cn(\n 'overflow-y-auto break-words whitespace-pre-wrap',\n className,\n props.contentEditableClassName,\n )}\n >\n {markdown}\n </div>\n );\n if (failedMarkdown && markdown.startsWith(failedMarkdown)) return plainText;\n // *** </Error handling> ***\n\n // *** <Preview> ***\n return (\n <PreviewErrorBoundary\n // a new failure remounts the boundary so a replacement value gets a fresh attempt\n key={failedMarkdown ?? ''}\n fallback={plainText}\n onError={(error) => {\n setFailedMarkdown(markdown);\n onError?.({ error: error.message, source: 'render' });\n }}\n >\n <MDXEditor\n key=\"preview\"\n markdown={markdown}\n plugins={[\n headingsPlugin(),\n listsPlugin(),\n quotePlugin(),\n thematicBreakPlugin(),\n linkPlugin(),\n linkDialogPlugin(),\n tablePlugin(),\n ...additionalPlugins,\n ]}\n className={cn('preview overflow-y-auto', className)}\n suppressHtmlProcessing={suppressHtmlProcessing}\n {...props}\n onError={(payload) => {\n setFailedMarkdown(markdown);\n onError?.(payload);\n }}\n readOnly\n ref={editorRef}\n />\n </PreviewErrorBoundary>\n );\n }\n // *** </Preview> ***\n\n const toolbarItems: ReactNode[] = [];\n\n if (finalOptions.toolbar && finalOptions.undoRedo) {\n toolbarItems.push(<UndoRedo key=\"undoRedo\" />);\n }\n if (finalOptions.toolbar && finalOptions.blockType) {\n toolbarItems.push(<BlockTypeSelect key=\"blockType\" />);\n }\n if (finalOptions.toolbar && finalOptions.boldItalicUnderline) {\n toolbarItems.push(<BoldItalicUnderlineToggles key=\"boldItalicUnderline\" />);\n }\n if (finalOptions.toolbar && finalOptions.strikeThrough) {\n toolbarItems.push(\n <StrikeThroughSupSubToggles key=\"strikeThrough\" options={['Strikethrough']} />,\n );\n }\n if (finalOptions.toolbar && finalOptions.inlineCode) {\n toolbarItems.push(<CodeToggle key=\"inlineCode\" />);\n }\n if (finalOptions.toolbar && finalOptions.lists) {\n toolbarItems.push(<ListsToggle key=\"lists\" />);\n }\n if (finalOptions.toolbar && finalOptions.link) {\n toolbarItems.push(<CreateLink key=\"link\" />);\n }\n if (finalOptions.toolbar && finalOptions.codeBlock) {\n toolbarItems.push(<InsertCodeBlock key=\"codeBlock\" />);\n }\n if (finalOptions.toolbar && finalOptions.table) {\n toolbarItems.push(<InsertTable key=\"table\" />);\n }\n if (finalOptions.toolbar && finalOptions.horizontalRule) {\n toolbarItems.push(<InsertThematicBreak key=\"horizontalRule\" />);\n }\n\n const toolbarItemsWithSeparators: ReactNode[] = [];\n toolbarItems.forEach((item, index) => {\n toolbarItemsWithSeparators.push(item);\n if (index < toolbarItems.length - 1) {\n toolbarItemsWithSeparators.push(<Separator key={`separator-${index}`} />);\n }\n });\n\n return (\n <MDXEditor\n key={`editor-${finalOptions.toolbar}`}\n markdown={markdown}\n plugins={[\n headingsPlugin({ allowedHeadingLevels: [1] }),\n listsPlugin(),\n quotePlugin(),\n thematicBreakPlugin(),\n linkPlugin(),\n linkDialogPlugin(),\n tablePlugin(),\n markdownShortcutPlugin(),\n ...(finalOptions.toolbar\n ? [\n toolbarPlugin({\n toolbarContents: () => toolbarItemsWithSeparators,\n }),\n ]\n : []),\n ...additionalPlugins,\n ]}\n className={cn(\n 'overflow-y-auto rounded-md border border-gray-300 shadow-xs transition-all hover:border-green-800',\n !finalOptions.toolbar && 'no-toolbar',\n className,\n )}\n suppressHtmlProcessing={suppressHtmlProcessing}\n {...props}\n onError={onError}\n ref={editorRef}\n />\n );\n },\n);\n\nRichTextEditor.displayName = 'RichTextEditor';\n\nexport { type MDXEditorMethods, type MDXEditorProps };\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkN46NOSFX_cjs=require('./chunk-N46NOSFX.cjs'),d=require('react'),editor=require('@mdxeditor/editor'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var d__default=/*#__PURE__*/_interopDefault(d);var a={"":"Plain text",json:"JSON",md:"Markdown",xml:"XML",html:"HTML",css:"CSS",js:"JavaScript",ts:"TypeScript",sql:"SQL",bash:"Bash",python:"Python"},l=d__default.default.forwardRef(({options:t,plugins:e=[],...r},i)=>jsxRuntime.jsx(chunkN46NOSFX_cjs.b,{...r,ref:i,options:{codeBlock:true,...t},plugins:[editor.codeBlockPlugin({defaultCodeBlockLanguage:""}),editor.codeMirrorPlugin({codeBlockLanguages:a}),...e]}));l.displayName="RichTextEditorWithCodeBlocks";exports.a=l;//# sourceMappingURL=chunk-UYYDGLZS.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-UYYDGLZS.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/rich-text-editor/rich-text-editor-with-code-blocks.tsx"],"names":["codeBlockLanguages","RichTextEditorWithCodeBlocks","React","options","plugins","props","editorRef","jsx","RichTextEditor","codeBlockPlugin","codeMirrorPlugin"],"mappings":"sRAKMA,CAAAA,CAAqB,CACzB,GAAI,YAAA,CACJ,IAAA,CAAM,OACN,EAAA,CAAI,UAAA,CACJ,GAAA,CAAK,KAAA,CACL,KAAM,MAAA,CACN,GAAA,CAAK,MACL,EAAA,CAAI,YAAA,CACJ,GAAI,YAAA,CACJ,GAAA,CAAK,MACL,IAAA,CAAM,MAAA,CACN,OAAQ,QACV,CAAA,CAMaC,EAA+BC,kBAAAA,CAAM,UAAA,CAChD,CACE,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,EAAU,EAAC,CAAG,GAAGC,CAAM,CAAA,CAClCC,IAEAC,cAAAA,CAACC,mBAAAA,CAAA,CACE,GAAGH,EACJ,GAAA,CAAKC,CAAAA,CACL,QAAS,CAAE,SAAA,CAAW,KAAM,GAAGH,CAAQ,CAAA,CACvC,OAAA,CAAS,CACPM,sBAAAA,CAAgB,CAAE,yBAA0B,EAAG,CAAC,EAChDC,uBAAAA,CAAiB,CAAE,mBAAAV,CAAmB,CAAC,EACvC,GAAGI,CACL,EACF,CAEJ,EAEAH,EAA6B,WAAA,CAAc,8BAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/rich-text-editor/rich-text-editor-with-code-blocks.tsx"],"names":["codeBlockLanguages","RichTextEditorWithCodeBlocks","React","options","plugins","props","editorRef","jsx","RichTextEditor","codeBlockPlugin","codeMirrorPlugin"],"mappings":"sRAKMA,CAAAA,CAAqB,CACzB,GAAI,YAAA,CACJ,IAAA,CAAM,OACN,EAAA,CAAI,UAAA,CACJ,GAAA,CAAK,KAAA,CACL,KAAM,MAAA,CACN,GAAA,CAAK,MACL,EAAA,CAAI,YAAA,CACJ,GAAI,YAAA,CACJ,GAAA,CAAK,MACL,IAAA,CAAM,MAAA,CACN,OAAQ,QACV,CAAA,CAMaC,EAA+BC,kBAAAA,CAAM,UAAA,CAChD,CACE,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,EAAU,EAAC,CAAG,GAAGC,CAAM,CAAA,CAClCC,IAEAC,cAAAA,CAACC,mBAAAA,CAAA,CACE,GAAGH,EACJ,GAAA,CAAKC,CAAAA,CACL,QAAS,CAAE,SAAA,CAAW,KAAM,GAAGH,CAAQ,CAAA,CACvC,OAAA,CAAS,CACPM,sBAAAA,CAAgB,CAAE,yBAA0B,EAAG,CAAC,EAChDC,uBAAAA,CAAiB,CAAE,mBAAAV,CAAmB,CAAC,EACvC,GAAGI,CACL,EACF,CAEJ,EAEAH,EAA6B,WAAA,CAAc,8BAAA","file":"chunk-UYYDGLZS.cjs","sourcesContent":["import type { ForwardedRef } from 'react';\nimport React from 'react';\nimport { codeBlockPlugin, codeMirrorPlugin, type MDXEditorMethods } from '@mdxeditor/editor';\nimport { RichTextEditor, type RichTextEditorProps } from './rich-text-editor';\n\nconst codeBlockLanguages = {\n '': 'Plain text',\n json: 'JSON',\n md: 'Markdown',\n xml: 'XML',\n html: 'HTML',\n css: 'CSS',\n js: 'JavaScript',\n ts: 'TypeScript',\n sql: 'SQL',\n bash: 'Bash',\n python: 'Python',\n};\n\n/**\n * `RichTextEditor` with fenced code block support (parsing + CodeMirror editing + toolbar button).\n * Kept separate because CodeMirror adds ~140 KB gzipped; only importers of this component pay for it.\n */\nexport const RichTextEditorWithCodeBlocks = React.forwardRef(\n (\n { options, plugins = [], ...props }: RichTextEditorProps,\n editorRef?: ForwardedRef<MDXEditorMethods> | null,\n ) => (\n <RichTextEditor\n {...props}\n ref={editorRef}\n options={{ codeBlock: true, ...options }}\n plugins={[\n codeBlockPlugin({ defaultCodeBlockLanguage: '' }),\n codeMirrorPlugin({ codeBlockLanguages }),\n ...plugins,\n ]}\n />\n ),\n);\n\nRichTextEditorWithCodeBlocks.displayName = 'RichTextEditorWithCodeBlocks';\n"]}
|