@wakastellar/ui 6.0.1 → 6.0.3
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/blocks/md-editor/WakaMdEditor.cjs.js +1 -1
- package/dist/blocks/md-editor/WakaMdEditor.es.js +169 -159
- package/dist/blocks/md-editor/index.cjs.js +1 -1
- package/dist/blocks/md-editor/index.es.js +14 -14
- package/dist/blocks/md-editor/types.d.ts +10 -0
- package/package.json +1 -1
- package/src/blocks/md-editor/WakaMdEditor.tsx +41 -3
- package/src/blocks/md-editor/types.ts +10 -0
- package/dist/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.cjs.js +0 -218
- package/dist/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.es.js +0 -11168
- package/dist/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.cjs.js +0 -9
- package/dist/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.es.js +0 -7385
- package/dist/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.cjs.js +0 -1
- package/dist/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.es.js +0 -21
- package/dist/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.cjs.js +0 -1
- package/dist/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.es.js +0 -204
- package/dist/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.cjs.js +0 -1
- package/dist/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.es.js +0 -204
- package/dist/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.cjs.js +0 -1
- package/dist/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.es.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require("../../node_modules/.pnpm/@muyajs_core@file_vendor_muyajs-core/node_modules/@muyajs/core/lib/es/index.cjs.js"),t=require("./muyaCommands.cjs.js"),n=require("./fileIO.cjs.js"),r=require("./toolbar-config.cjs.js"),i=require("./injectStyles.cjs.js");let a=require("react"),o=require("react/jsx-runtime");i.injectMdEditorStyles();var s={fr:e.fr,en:e.en,de:e.de,es:e.es,ja:e.ja,ko:e.ko,pt:e.pt,zhCN:e.zhCN,zhTW:e.zhTW},ee={frontMatter:!0,footnote:!0,superSubScript:!0,focusMode:!1,spellcheckEnabled:!1,fontSize:16,lineHeight:1.6},c={},l=!1;function u(){l||(l=!0,e.Muya.use(e.EmojiSelector),e.Muya.use(e.FootnoteTool),e.Muya.use(e.InlineFormatToolbar),e.Muya.use(e.ImageEditTool,{imagePathPicker:async()=>await c.picker?.()??``,imageAction:async e=>await c.action?.(e)??e}),e.Muya.use(e.ImagePathPicker),e.Muya.use(e.ImageToolBar),e.Muya.use(e.ImageResizeBar),e.Muya.use(e.CodeBlockLanguageSelector),e.Muya.use(e.LinkTools,{jumpClick:e=>{let t=e?.href;t&&/^https?:\/\//.test(t)&&window.open(t,`_blank`,`noopener,noreferrer`)}}),e.Muya.use(e.ParagraphFrontButton),e.Muya.use(e.ParagraphFrontMenu),e.Muya.use(e.TableChessboard),e.Muya.use(e.TableColumnToolbar),e.Muya.use(e.ParagraphQuickInsertMenu),e.Muya.use(e.TableDragBar),e.Muya.use(e.TableRowColumMenu),e.Muya.use(e.PreviewToolBar))}async function te(){return new Promise((e,t)=>{let n=document.createElement(`input`);n.type=`file`,n.accept=`image/*`,n.onchange=()=>{let r=n.files?.[0];if(!r){t(Error(`Aucune image sélectionnée`));return}let i=new FileReader;i.onload=()=>e(String(i.result)),i.onerror=()=>t(Error(`Lecture impossible`)),i.readAsDataURL(r)},n.click()})}var d=(0,a.forwardRef)(function(i,l){let{defaultValue:d=``,value:f,options:p,locale:m=`fr`,theme:h=`light`,toolbar:g=!0,onChange:_,onOpen:v,onSave:y,onDirtyChange:b,onLoadingChange:x,onSavingChange:S,getMuya:ne,className:C,style:re}=i;u(),c={picker:i.imagePathPicker??te,action:i.imageAction??(async e=>e)};let w=(0,a.useRef)(null),T=(0,a.useRef)(null),E=(0,a.useRef)(f??d),D=(0,a.useRef)(!1),O=(0,a.useRef)({handle:null,name:null}),[k,A]=(0,a.useState)(!1),j=(0,a.useRef)(!1),M=(0,a.useRef)(_);M.current=_;let N=(0,a.useRef)(b);N.current=b;let[P,ie]=(0,a.useState)({formats:new Set,blockName:null,headingLevel:null,inColorSpan:!1}),[F,I]=(0,a.useState)(null),[L,R]=(0,a.useState)(!1),[z,B]=(0,a.useState)(`idle`),V=(0,a.useRef)(null),H=(0,a.useCallback)(()=>{V.current&&=(clearTimeout(V.current),null),B(`saving`),S?.(!0)},[S]),U=(0,a.useCallback)(e=>{S?.(!1),B(e),e===`saved`&&(V.current&&clearTimeout(V.current),V.current=setTimeout(()=>B(`idle`),1200))},[S]);(0,a.useEffect)(()=>()=>{V.current&&clearTimeout(V.current)},[]);let W=(0,a.useCallback)(e=>{j.current!==e&&(j.current=e,A(e),N.current?.(e))},[]),G=(0,a.useCallback)(()=>{let e=T.current;e&&ie(t.getActiveState(e))},[]);(0,a.useEffect)(()=>{let t=w.current;if(!t)return;let n=new e.Muya(t,{...ee,...p,markdown:f??d});return n.locale(s[m]??e.fr),n.init(),T.current=n,ne?.(n),n.on(`json-change`,()=>{let e=n.getMarkdown();E.current=e,D.current||M.current?.(e),W(!0),G()}),n.on(`selection-change`,()=>G()),G(),()=>{n.destroy(),T.current=null}},[]),(0,a.useEffect)(()=>{let e=T.current;if(!(!e||f===void 0||f===E.current)){D.current=!0;try{e.setContent(f,!1),E.current=f}finally{D.current=!1}}},[f]),(0,a.useEffect)(()=>{T.current?.locale(s[m]??e.fr)},[m]),(0,a.useEffect)(()=>(document.body.classList.toggle(`wmd-theme-dark`,h===`dark`),()=>document.body.classList.remove(`wmd-theme-dark`)),[h]);let K=(0,a.useCallback)(async()=>{let e=await n.openMarkdownFile(),t=T.current;if(!(!e||!t)){R(!0),x?.(!0),await new Promise(e=>requestAnimationFrame(()=>requestAnimationFrame(()=>e())));try{O.current={handle:e.handle,name:e.name},D.current=!0;try{t.setContent(e.markdown,!1),E.current=e.markdown}finally{D.current=!1}W(!1),G(),v?.(e.markdown,{name:e.name,handle:e.handle})}finally{R(!1),x?.(!1)}}},[v,G,W,x]),q=(0,a.useRef)(!1),J=(0,a.useCallback)(async()=>{let e=T.current;if(!(!e||q.current)){q.current=!0,H();try{let t=await n.saveMarkdownFile(e.getMarkdown(),O.current,!0);if(!t){U(`idle`);return}O.current={handle:t.handle,name:t.name},W(!1),y?.(e.getMarkdown(),{name:t.name,handle:t.handle}),U(`saved`)}catch(e){throw U(`idle`),e}finally{q.current=!1}}},[y,W,U,H]),Y=(0,a.useCallback)(async()=>{let e=T.current;if(!(!e||q.current)){if(!O.current.handle){await J();return}q.current=!0,H();try{let t=e.getMarkdown(),r=await n.saveMarkdownFile(t,O.current,!1);if(!r){U(`idle`);return}W(!1),y?.(t,{name:r.name,handle:r.handle}),U(`saved`)}catch(e){throw U(`idle`),e}finally{q.current=!1}}},[y,J,W,U,H]);(0,a.useEffect)(()=>{let e=e=>{if(!(e.metaKey||e.ctrlKey))return;let t=e.key.toLowerCase();t===`s`?(e.preventDefault(),e.shiftKey?J():Y()):t===`o`&&(e.preventDefault(),K())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[K,Y,J]);let X=(0,a.useCallback)(e=>{let n=T.current;if(n){switch(e){case`open`:K();break;case`save`:Y();break;case`saveAs`:J();break;case`undo`:n.undo();break;case`redo`:n.redo();break;case`paragraph`:t.turnIntoBlock(n,`paragraph`);break;case`heading1`:case`heading2`:case`heading3`:case`heading4`:case`heading5`:case`heading6`:t.turnIntoBlock(n,`heading ${Number(e.slice(-1))}`);break;case`bold`:t.applyInlineFormat(n,`strong`);break;case`italic`:t.applyInlineFormat(n,`em`);break;case`underline`:t.applyInlineFormat(n,`u`);break;case`strikethrough`:t.applyInlineFormat(n,`del`);break;case`highlight`:t.applyInlineFormat(n,`mark`);break;case`inlineCode`:t.applyInlineFormat(n,`inline_code`);break;case`clearFormat`:t.applyInlineFormat(n,`clear`);break;case`bulletList`:t.turnIntoBlock(n,`ul-bullet`);break;case`orderedList`:t.turnIntoBlock(n,`ol-order`);break;case`taskList`:t.turnIntoBlock(n,`ul-task`);break;case`blockquote`:t.turnIntoBlock(n,`blockquote`);break;case`codeBlock`:t.turnIntoBlock(n,`pre`);break;case`horizontalRule`:t.turnIntoBlock(n,`hr`);break;case`link`:t.applyInlineFormat(n,`link`);break;case`image`:t.applyInlineFormat(n,`image`);break;case`table`:t.insertTable(n);break;default:break}G()}},[K,Y,J,G]),Z=(0,a.useCallback)(e=>{let n=T.current;n&&(t.applyTextColor(n,e),I(null),G())},[G]);(0,a.useImperativeHandle)(l,()=>({getMarkdown:()=>T.current?.getMarkdown()??``,setMarkdown:(e,t=!1)=>{let n=T.current;if(n){D.current=!0;try{n.setContent(e,t),E.current=e}finally{D.current=!1}}},focus:()=>T.current?.focus(),toggleFormat:e=>T.current&&t.applyInlineFormat(T.current,e),turnInto:e=>T.current&&t.turnIntoBlock(T.current,e),applyColor:e=>Z(e),undo:()=>T.current?.undo(),redo:()=>T.current?.redo(),openFile:()=>K(),saveFile:()=>Y(),saveFileAs:()=>J(),isDirty:()=>j.current}),[K,Y,J,Z]);let Q=g===!1?!1:Array.isArray(g)?g:r.DEFAULT_TOOLBAR,$=e=>{switch(e){case`bold`:return P.formats.has(`strong`);case`italic`:return P.formats.has(`em`);case`underline`:return P.formats.has(`u`);case`strikethrough`:return P.formats.has(`del`);case`highlight`:return P.formats.has(`mark`);case`inlineCode`:return P.formats.has(`inline_code`);case`textColor`:return P.formats.has(`color`);case`paragraph`:return P.blockName===`paragraph`;case`heading1`:return P.blockName===`atx-heading`&&P.headingLevel===1;case`heading2`:return P.blockName===`atx-heading`&&P.headingLevel===2;case`heading3`:return P.blockName===`atx-heading`&&P.headingLevel===3;case`heading4`:return P.blockName===`atx-heading`&&P.headingLevel===4;case`heading5`:return P.blockName===`atx-heading`&&P.headingLevel===5;case`heading6`:return P.blockName===`atx-heading`&&P.headingLevel===6;case`bulletList`:return P.blockName===`bullet-list`;case`orderedList`:return P.blockName===`order-list`;case`taskList`:return P.blockName===`task-list`;case`blockquote`:return P.blockName===`block-quote`;case`codeBlock`:return P.blockName===`code-block`;case`save`:return k;default:return!1}};(0,a.useEffect)(()=>{if(!F)return;let e=e=>{e.target?.closest(`.wmd-popup-anchor`)||I(null)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[F]);let ae=P.blockName===`atx-heading`&&P.headingLevel?`T${P.headingLevel}`:P.blockName===`paragraph`?`¶`:`T`,oe=e=>e===`heading`?(0,o.jsxs)(`div`,{className:`wmd-popup-anchor`,children:[(0,o.jsxs)(`button`,{type:`button`,className:`wmd-btn${F===`heading`?` wmd-btn--active`:``}`,title:r.TOOLBAR_LABELS.heading,onMouseDown:e=>e.preventDefault(),onClick:()=>I(F===`heading`?null:`heading`),children:[r.TOOLBAR_ICONS.heading,(0,o.jsx)(`span`,{className:`wmd-btn-label`,children:ae}),r.TOOLBAR_ICONS.chevronDown]}),F===`heading`&&(0,o.jsx)(`div`,{className:`wmd-popup`,role:`menu`,children:r.HEADING_MENU.map(e=>(0,o.jsx)(`button`,{type:`button`,role:`menuitem`,className:`wmd-popup-item${$(e.id)?` wmd-popup-item--active`:``}`,onMouseDown:e=>e.preventDefault(),onClick:()=>{X(e.id),I(null)},children:(0,o.jsx)(`span`,{className:`wmd-heading-item`,"data-level":e.id===`paragraph`?0:e.id.slice(-1),children:e.label})},e.id))})]},e):e===`textColor`?(0,o.jsxs)(`div`,{className:`wmd-popup-anchor`,children:[(0,o.jsxs)(`button`,{type:`button`,className:`wmd-btn${P.formats.has(`color`)||F===`textColor`?` wmd-btn--active`:``}`,title:r.TOOLBAR_LABELS.textColor,onMouseDown:e=>e.preventDefault(),onClick:()=>I(F===`textColor`?null:`textColor`),children:[r.TOOLBAR_ICONS.textColor,(0,o.jsx)(`span`,{className:`wmd-btn-label`,style:{borderBottom:`2px solid currentColor`,paddingBottom:1},children:`A`}),r.TOOLBAR_ICONS.chevronDown]}),F===`textColor`&&(0,o.jsxs)(`div`,{className:`wmd-popup`,role:`menu`,children:[(0,o.jsx)(`div`,{className:`wmd-color-grid`,children:r.TEXT_COLORS.map(e=>(0,o.jsx)(`button`,{type:`button`,className:`wmd-color-swatch`,title:e.name,style:{background:e.value},onMouseDown:e=>e.preventDefault(),onClick:()=>Z(e.value)},e.value))}),(0,o.jsxs)(`label`,{className:`wmd-color-custom`,children:[(0,o.jsx)(`input`,{type:`color`,defaultValue:`#2563eb`,onMouseDown:e=>e.stopPropagation(),onChange:e=>Z(e.target.value)}),`Couleur personnalisée…`]})]})]},e):(0,o.jsx)(`button`,{type:`button`,className:[`wmd-btn`,$(e)?`wmd-btn--active`:``,e===`save`&&k?`wmd-btn--dirty`:``].filter(Boolean).join(` `),title:r.TOOLBAR_LABELS[e],disabled:e===`open`&&L||(e===`save`||e===`saveAs`)&&z===`saving`,onMouseDown:e=>e.preventDefault(),onClick:()=>X(e),children:r.TOOLBAR_ICONS[e]??e},e);return(0,o.jsxs)(`div`,{className:`wmd-editor${C?` ${C}`:``}`,"data-theme":h,style:re,children:[Q!==!1&&(0,o.jsx)(`div`,{className:`wmd-toolbar`,role:`toolbar`,"aria-label":`Barre d'outils Markdown`,children:Q.map((e,t)=>e===`|`?(0,o.jsx)(`span`,{className:`wmd-separator`},`sep-${t}`):(0,o.jsx)(`div`,{className:`wmd-toolbar-group`,children:oe(e)},e))}),(0,o.jsxs)(`div`,{className:`wmd-editor-surface`,children:[(0,o.jsx)(`div`,{ref:w}),L&&(0,o.jsxs)(`div`,{className:`wmd-loading-overlay`,role:`status`,"aria-live":`polite`,children:[(0,o.jsx)(`span`,{className:`wmd-spinner`,"aria-hidden":`true`}),(0,o.jsx)(`span`,{children:`Chargement du fichier…`})]})]}),z!==`idle`&&(0,o.jsx)(`div`,{className:`wmd-modal-backdrop`,role:`status`,"aria-live":`polite`,children:(0,o.jsx)(`div`,{className:`wmd-modal`,children:z===`saving`?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`wmd-spinner`,"aria-hidden":`true`}),(0,o.jsx)(`span`,{className:`wmd-modal-text`,children:`Enregistrement…`})]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(`svg`,{className:`wmd-modal-check`,viewBox:`0 0 24 24`,width:`28`,height:`28`,"aria-hidden":`true`,children:[(0,o.jsx)(`circle`,{cx:`12`,cy:`12`,r:`11`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`}),(0,o.jsx)(`path`,{d:`M7 12.5l3 3 7-7`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})]}),(0,o.jsxs)(`span`,{className:`wmd-modal-text`,children:[`Enregistré`,O.current.name?` — ${O.current.name}`:``]})]})})})]})});exports.WakaMdEditor=d,exports.default=d;
|
|
1
|
+
"use client";const e=require("../../node_modules/.pnpm/@muyajs_core@file_vendor_muyajs-core/node_modules/@muyajs/core/lib/es/index.cjs.js"),t=require("./muyaCommands.cjs.js"),n=require("./fileIO.cjs.js"),r=require("./toolbar-config.cjs.js"),i=require("./injectStyles.cjs.js");let a=require("react"),o=require("react/jsx-runtime");i.injectMdEditorStyles();var s={fr:e.fr,en:e.en,de:e.de,es:e.es,ja:e.ja,ko:e.ko,pt:e.pt,zhCN:e.zhCN,zhTW:e.zhTW},ee={frontMatter:!0,footnote:!0,superSubScript:!0,focusMode:!1,spellcheckEnabled:!1,fontSize:16,lineHeight:1.6},c={},l={};function u(e){/^https?:\/\//.test(e)&&window.open(e,`_blank`,`noopener,noreferrer`)}var d=!1;function te(){d||(d=!0,e.Muya.use(e.EmojiSelector),e.Muya.use(e.FootnoteTool),e.Muya.use(e.InlineFormatToolbar),e.Muya.use(e.ImageEditTool,{imagePathPicker:async()=>await c.picker?.()??``,imageAction:async e=>await c.action?.(e)??e}),e.Muya.use(e.ImagePathPicker),e.Muya.use(e.ImageToolBar),e.Muya.use(e.ImageResizeBar),e.Muya.use(e.CodeBlockLanguageSelector),e.Muya.use(e.LinkTools,{jumpClick:e=>{let t=e?.href;t&&(l.onLinkClick?l.onLinkClick(t,()=>u(t)):u(t))}}),e.Muya.use(e.ParagraphFrontButton),e.Muya.use(e.ParagraphFrontMenu),e.Muya.use(e.TableChessboard),e.Muya.use(e.TableColumnToolbar),e.Muya.use(e.ParagraphQuickInsertMenu),e.Muya.use(e.TableDragBar),e.Muya.use(e.TableRowColumMenu),e.Muya.use(e.PreviewToolBar))}async function ne(){return new Promise((e,t)=>{let n=document.createElement(`input`);n.type=`file`,n.accept=`image/*`,n.onchange=()=>{let r=n.files?.[0];if(!r){t(Error(`Aucune image sélectionnée`));return}let i=new FileReader;i.onload=()=>e(String(i.result)),i.onerror=()=>t(Error(`Lecture impossible`)),i.readAsDataURL(r)},n.click()})}var f=(0,a.forwardRef)(function(i,u){let{defaultValue:d=``,value:f,options:re,locale:p=`fr`,theme:m=`light`,toolbar:h=!0,onChange:g,onOpen:_,onSave:v,onDirtyChange:y,onLoadingChange:b,onSavingChange:x,onLinkClick:S,getMuya:ie,className:C,style:ae}=i;te(),c={picker:i.imagePathPicker??ne,action:i.imageAction??(async e=>e)},l={onLinkClick:S};let w=(0,a.useRef)(null),T=(0,a.useRef)(null),E=(0,a.useRef)(f??d),D=(0,a.useRef)(!1),O=(0,a.useRef)({handle:null,name:null}),[k,oe]=(0,a.useState)(!1),A=(0,a.useRef)(!1),j=(0,a.useRef)(g);j.current=g;let M=(0,a.useRef)(y);M.current=y;let[N,P]=(0,a.useState)({formats:new Set,blockName:null,headingLevel:null,inColorSpan:!1}),[F,I]=(0,a.useState)(null),[L,R]=(0,a.useState)(!1),[z,B]=(0,a.useState)(`idle`),V=(0,a.useRef)(null),H=(0,a.useCallback)(()=>{V.current&&=(clearTimeout(V.current),null),B(`saving`),x?.(!0)},[x]),U=(0,a.useCallback)(e=>{x?.(!1),B(e),e===`saved`&&(V.current&&clearTimeout(V.current),V.current=setTimeout(()=>B(`idle`),1200))},[x]);(0,a.useEffect)(()=>()=>{V.current&&clearTimeout(V.current)},[]);let W=(0,a.useCallback)(e=>{A.current!==e&&(A.current=e,oe(e),M.current?.(e))},[]),G=(0,a.useCallback)(()=>{let e=T.current;e&&P(t.getActiveState(e))},[]);(0,a.useEffect)(()=>{let t=w.current;if(!t)return;let n=new e.Muya(t,{...ee,...re,markdown:f??d});n.locale(s[p]??e.fr);try{n.init()}catch(e){if(!(e instanceof Error)||!/Range to be added to the Selection/.test(e.message))throw e}return T.current=n,ie?.(n),n.on(`json-change`,()=>{let e=n.getMarkdown();E.current=e,D.current||j.current?.(e),W(!0),G()}),n.on(`selection-change`,()=>G()),G(),()=>{n.destroy(),T.current=null}},[]),(0,a.useEffect)(()=>{let e=T.current;if(!(!e||f===void 0||f===E.current)){D.current=!0;try{e.setContent(f,!1),E.current=f}finally{D.current=!1}}},[f]),(0,a.useEffect)(()=>{T.current?.locale(s[p]??e.fr)},[p]),(0,a.useEffect)(()=>(document.body.classList.toggle(`wmd-theme-dark`,m===`dark`),()=>document.body.classList.remove(`wmd-theme-dark`)),[m]);let K=(0,a.useCallback)(async()=>{let e=await n.openMarkdownFile(),t=T.current;if(!(!e||!t)){R(!0),b?.(!0),await new Promise(e=>requestAnimationFrame(()=>requestAnimationFrame(()=>e())));try{O.current={handle:e.handle,name:e.name},D.current=!0;try{t.setContent(e.markdown,!1),E.current=e.markdown}finally{D.current=!1}W(!1),G(),_?.(e.markdown,{name:e.name,handle:e.handle})}finally{R(!1),b?.(!1)}}},[_,G,W,b]),q=(0,a.useRef)(!1),J=(0,a.useCallback)(async()=>{let e=T.current;if(!(!e||q.current)){q.current=!0,H();try{let t=await n.saveMarkdownFile(e.getMarkdown(),O.current,!0);if(!t){U(`idle`);return}O.current={handle:t.handle,name:t.name},W(!1),v?.(e.getMarkdown(),{name:t.name,handle:t.handle}),U(`saved`)}catch(e){throw U(`idle`),e}finally{q.current=!1}}},[v,W,U,H]),Y=(0,a.useCallback)(async()=>{let e=T.current;if(!(!e||q.current)){if(!O.current.handle){await J();return}q.current=!0,H();try{let t=e.getMarkdown(),r=await n.saveMarkdownFile(t,O.current,!1);if(!r){U(`idle`);return}W(!1),v?.(t,{name:r.name,handle:r.handle}),U(`saved`)}catch(e){throw U(`idle`),e}finally{q.current=!1}}},[v,J,W,U,H]);(0,a.useEffect)(()=>{let e=e=>{if(!(e.metaKey||e.ctrlKey))return;let t=e.key.toLowerCase();t===`s`?(e.preventDefault(),e.shiftKey?J():Y()):t===`o`&&(e.preventDefault(),K())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[K,Y,J]);let X=(0,a.useCallback)(e=>{let n=T.current;if(n){switch(e){case`open`:K();break;case`save`:Y();break;case`saveAs`:J();break;case`undo`:n.undo();break;case`redo`:n.redo();break;case`paragraph`:t.turnIntoBlock(n,`paragraph`);break;case`heading1`:case`heading2`:case`heading3`:case`heading4`:case`heading5`:case`heading6`:t.turnIntoBlock(n,`heading ${Number(e.slice(-1))}`);break;case`bold`:t.applyInlineFormat(n,`strong`);break;case`italic`:t.applyInlineFormat(n,`em`);break;case`underline`:t.applyInlineFormat(n,`u`);break;case`strikethrough`:t.applyInlineFormat(n,`del`);break;case`highlight`:t.applyInlineFormat(n,`mark`);break;case`inlineCode`:t.applyInlineFormat(n,`inline_code`);break;case`clearFormat`:t.applyInlineFormat(n,`clear`);break;case`bulletList`:t.turnIntoBlock(n,`ul-bullet`);break;case`orderedList`:t.turnIntoBlock(n,`ol-order`);break;case`taskList`:t.turnIntoBlock(n,`ul-task`);break;case`blockquote`:t.turnIntoBlock(n,`blockquote`);break;case`codeBlock`:t.turnIntoBlock(n,`pre`);break;case`horizontalRule`:t.turnIntoBlock(n,`hr`);break;case`link`:t.applyInlineFormat(n,`link`);break;case`image`:t.applyInlineFormat(n,`image`);break;case`table`:t.insertTable(n);break;default:break}G()}},[K,Y,J,G]),Z=(0,a.useCallback)(e=>{let n=T.current;n&&(t.applyTextColor(n,e),I(null),G())},[G]);(0,a.useImperativeHandle)(u,()=>({getMarkdown:()=>T.current?.getMarkdown()??``,setMarkdown:(e,t=!1)=>{let n=T.current;if(n){D.current=!0;try{n.setContent(e,t),E.current=e}finally{D.current=!1}}},focus:()=>T.current?.focus(),toggleFormat:e=>T.current&&t.applyInlineFormat(T.current,e),turnInto:e=>T.current&&t.turnIntoBlock(T.current,e),applyColor:e=>Z(e),undo:()=>T.current?.undo(),redo:()=>T.current?.redo(),openFile:()=>K(),saveFile:()=>Y(),saveFileAs:()=>J(),isDirty:()=>A.current}),[K,Y,J,Z]);let Q=h===!1?!1:Array.isArray(h)?h:r.DEFAULT_TOOLBAR,$=e=>{switch(e){case`bold`:return N.formats.has(`strong`);case`italic`:return N.formats.has(`em`);case`underline`:return N.formats.has(`u`);case`strikethrough`:return N.formats.has(`del`);case`highlight`:return N.formats.has(`mark`);case`inlineCode`:return N.formats.has(`inline_code`);case`textColor`:return N.formats.has(`color`);case`paragraph`:return N.blockName===`paragraph`;case`heading1`:return N.blockName===`atx-heading`&&N.headingLevel===1;case`heading2`:return N.blockName===`atx-heading`&&N.headingLevel===2;case`heading3`:return N.blockName===`atx-heading`&&N.headingLevel===3;case`heading4`:return N.blockName===`atx-heading`&&N.headingLevel===4;case`heading5`:return N.blockName===`atx-heading`&&N.headingLevel===5;case`heading6`:return N.blockName===`atx-heading`&&N.headingLevel===6;case`bulletList`:return N.blockName===`bullet-list`;case`orderedList`:return N.blockName===`order-list`;case`taskList`:return N.blockName===`task-list`;case`blockquote`:return N.blockName===`block-quote`;case`codeBlock`:return N.blockName===`code-block`;case`save`:return k;default:return!1}};(0,a.useEffect)(()=>{if(!F)return;let e=e=>{e.target?.closest(`.wmd-popup-anchor`)||I(null)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[F]);let se=N.blockName===`atx-heading`&&N.headingLevel?`T${N.headingLevel}`:N.blockName===`paragraph`?`¶`:`T`,ce=e=>e===`heading`?(0,o.jsxs)(`div`,{className:`wmd-popup-anchor`,children:[(0,o.jsxs)(`button`,{type:`button`,className:`wmd-btn${F===`heading`?` wmd-btn--active`:``}`,title:r.TOOLBAR_LABELS.heading,onMouseDown:e=>e.preventDefault(),onClick:()=>I(F===`heading`?null:`heading`),children:[r.TOOLBAR_ICONS.heading,(0,o.jsx)(`span`,{className:`wmd-btn-label`,children:se}),r.TOOLBAR_ICONS.chevronDown]}),F===`heading`&&(0,o.jsx)(`div`,{className:`wmd-popup`,role:`menu`,children:r.HEADING_MENU.map(e=>(0,o.jsx)(`button`,{type:`button`,role:`menuitem`,className:`wmd-popup-item${$(e.id)?` wmd-popup-item--active`:``}`,onMouseDown:e=>e.preventDefault(),onClick:()=>{X(e.id),I(null)},children:(0,o.jsx)(`span`,{className:`wmd-heading-item`,"data-level":e.id===`paragraph`?0:e.id.slice(-1),children:e.label})},e.id))})]},e):e===`textColor`?(0,o.jsxs)(`div`,{className:`wmd-popup-anchor`,children:[(0,o.jsxs)(`button`,{type:`button`,className:`wmd-btn${N.formats.has(`color`)||F===`textColor`?` wmd-btn--active`:``}`,title:r.TOOLBAR_LABELS.textColor,onMouseDown:e=>e.preventDefault(),onClick:()=>I(F===`textColor`?null:`textColor`),children:[r.TOOLBAR_ICONS.textColor,(0,o.jsx)(`span`,{className:`wmd-btn-label`,style:{borderBottom:`2px solid currentColor`,paddingBottom:1},children:`A`}),r.TOOLBAR_ICONS.chevronDown]}),F===`textColor`&&(0,o.jsxs)(`div`,{className:`wmd-popup`,role:`menu`,children:[(0,o.jsx)(`div`,{className:`wmd-color-grid`,children:r.TEXT_COLORS.map(e=>(0,o.jsx)(`button`,{type:`button`,className:`wmd-color-swatch`,title:e.name,style:{background:e.value},onMouseDown:e=>e.preventDefault(),onClick:()=>Z(e.value)},e.value))}),(0,o.jsxs)(`label`,{className:`wmd-color-custom`,children:[(0,o.jsx)(`input`,{type:`color`,defaultValue:`#2563eb`,onMouseDown:e=>e.stopPropagation(),onChange:e=>Z(e.target.value)}),`Couleur personnalisée…`]})]})]},e):(0,o.jsx)(`button`,{type:`button`,className:[`wmd-btn`,$(e)?`wmd-btn--active`:``,e===`save`&&k?`wmd-btn--dirty`:``].filter(Boolean).join(` `),title:r.TOOLBAR_LABELS[e],disabled:e===`open`&&L||(e===`save`||e===`saveAs`)&&z===`saving`,onMouseDown:e=>e.preventDefault(),onClick:()=>X(e),children:r.TOOLBAR_ICONS[e]??e},e);return(0,o.jsxs)(`div`,{className:`wmd-editor${C?` ${C}`:``}`,"data-theme":m,style:ae,children:[Q!==!1&&(0,o.jsx)(`div`,{className:`wmd-toolbar`,role:`toolbar`,"aria-label":`Barre d'outils Markdown`,children:Q.map((e,t)=>e===`|`?(0,o.jsx)(`span`,{className:`wmd-separator`},`sep-${t}`):(0,o.jsx)(`div`,{className:`wmd-toolbar-group`,children:ce(e)},e))}),(0,o.jsxs)(`div`,{className:`wmd-editor-surface`,children:[(0,o.jsx)(`div`,{ref:w}),L&&(0,o.jsxs)(`div`,{className:`wmd-loading-overlay`,role:`status`,"aria-live":`polite`,children:[(0,o.jsx)(`span`,{className:`wmd-spinner`,"aria-hidden":`true`}),(0,o.jsx)(`span`,{children:`Chargement du fichier…`})]})]}),z!==`idle`&&(0,o.jsx)(`div`,{className:`wmd-modal-backdrop`,role:`status`,"aria-live":`polite`,children:(0,o.jsx)(`div`,{className:`wmd-modal`,children:z===`saving`?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`wmd-spinner`,"aria-hidden":`true`}),(0,o.jsx)(`span`,{className:`wmd-modal-text`,children:`Enregistrement…`})]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(`svg`,{className:`wmd-modal-check`,viewBox:`0 0 24 24`,width:`28`,height:`28`,"aria-hidden":`true`,children:[(0,o.jsx)(`circle`,{cx:`12`,cy:`12`,r:`11`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`}),(0,o.jsx)(`path`,{d:`M7 12.5l3 3 7-7`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})]}),(0,o.jsxs)(`span`,{className:`wmd-modal-text`,children:[`Enregistré`,O.current.name?` — ${O.current.name}`:``]})]})})})]})});exports.WakaMdEditor=f,exports.default=f;
|