integration-modules 0.1.6 → 0.1.8
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/chunks/{Board-CoDGhH3-.js → Board-CpOsQfT6.js} +544 -544
- package/dist/chunks/{Board-CoDGhH3-.js.map → Board-CpOsQfT6.js.map} +1 -1
- package/dist/chunks/{Board-wlHU_0oT.cjs → Board-jFbJOEpy.js} +6 -6
- package/dist/chunks/Board-jFbJOEpy.js.map +1 -0
- package/dist/chunks/EmojiBoardWidget-DU57KxVP.js +2 -0
- package/dist/chunks/EmojiBoardWidget-DU57KxVP.js.map +1 -0
- package/dist/chunks/{EmojiBoardWidget-C-Uhinz6.js → EmojiBoardWidget-eFGE2g4e.js} +2 -2
- package/dist/chunks/{EmojiBoardWidget-C-Uhinz6.js.map → EmojiBoardWidget-eFGE2g4e.js.map} +1 -1
- package/dist/chunks/{ShapeBoardWidget-0JrJFCZl.js → ShapeBoardWidget-B65qIGGa.js} +2 -2
- package/dist/chunks/{ShapeBoardWidget-0JrJFCZl.js.map → ShapeBoardWidget-B65qIGGa.js.map} +1 -1
- package/dist/chunks/ShapeBoardWidget-TpOdsGEn.js +2 -0
- package/dist/chunks/ShapeBoardWidget-TpOdsGEn.js.map +1 -0
- package/dist/emoji/index.cjs +1 -1
- package/dist/emoji/index.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/shape/index.cjs +1 -1
- package/dist/shape/index.js +1 -1
- package/package.json +4 -2
- package/dist/chunks/Board-wlHU_0oT.cjs.map +0 -1
- package/dist/chunks/EmojiBoardWidget-BA5Xt9cs.cjs +0 -2
- package/dist/chunks/EmojiBoardWidget-BA5Xt9cs.cjs.map +0 -1
- package/dist/chunks/ShapeBoardWidget-BKEMVbRg.cjs +0 -2
- package/dist/chunks/ShapeBoardWidget-BKEMVbRg.cjs.map +0 -1
- /package/dist/{assets/integration-modules-BCtq75x-.css → integration-modules.css} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var M=Object.create;var f=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var F=(t,s,n,l)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of v(s))!S.call(t,a)&&a!==n&&f(t,a,{get:()=>s[a],enumerable:!(l=R(s,a))||l.enumerable});return t};var I=(t,s,n)=>(n=t!=null?M(y(t)):{},F(s||!t||!t.__esModule?f(n,"default",{value:t,enumerable:!0}):n,t));const e=require("./Board-jFbJOEpy.js"),p=require("react"),u=require("@xyflow/react"),N="data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='black'%20stroke='black'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='black'/%3e%3cpath%20d='M30.2759%2016.0326C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0582C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0964%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9253%2032.3642%2023.4662%2032.1922%2023.0767C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0326Z'%20fill='black'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='black'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='black'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='black'%20stroke-linecap='round'/%3e%3c/svg%3e",L="data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='%230000FF'%20stroke='%230000FF'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='%230000FF'/%3e%3cpath%20d='M30.2759%2016.0327C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0583C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0965%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9254%2032.3642%2023.4662%2032.1922%2023.0768C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0327Z'%20fill='%230000FF'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='%230000FF'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3c/svg%3e",_=()=>{const[t,s]=p.useState(!1),n=p.useRef(null),l=i=>{i.stopPropagation(),s(r=>!r)};p.useEffect(()=>{if(!t)return;const i=r=>{n.current&&!n.current.contains(r.target)&&s(!1)};return window.addEventListener("pointerdown",i),()=>{window.removeEventListener("pointerdown",i)}},[t]);const a=i=>r=>{r.stopPropagation(),r.dataTransfer.setData(e.DND_EMOJI,JSON.stringify({stickerId:i.id,name:i.name})),r.dataTransfer.effectAllowed="copy"};return e.jsxRuntimeExports.jsxs("div",{className:"left-toolbar-container dragHandle__custom",ref:n,onClick:i=>{i.stopPropagation()},children:[e.jsxRuntimeExports.jsx("div",{className:`toolbar-card ${t?"toolbar-card--open":""}`,children:e.jsxRuntimeExports.jsx("button",{onClick:l,className:`toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${t?"toolbar-btn--active":""}`,children:e.jsxRuntimeExports.jsx("div",{className:`toolbar-emoji-plate ${t?"toolbar-emoji-plate--active":""}`,children:e.jsxRuntimeExports.jsx("img",{src:t?L:N,alt:"Эмодзи",draggable:!1})})})}),t&&e.jsxRuntimeExports.jsx("div",{className:"palette-wrapper",onClick:i=>{i.stopPropagation()},children:e.jsxRuntimeExports.jsxs("div",{className:"emoji-panel",style:{width:300,height:500},children:[e.jsxRuntimeExports.jsx("div",{className:"emoji-panel-header",children:e.jsxRuntimeExports.jsx("span",{className:"emoji-header-title",children:"Стикеры"})}),e.jsxRuntimeExports.jsx("div",{className:"emoji-grid",children:e.EMOJI_ITEMS.map(i=>e.jsxRuntimeExports.jsx("button",{draggable:!0,onDragStart:a(i),className:"emoji-item",children:e.jsxRuntimeExports.jsx("img",{src:i.url,draggable:!1})},i.id))})]})})]})},A=t=>{const{id:s,selected:n}=t,l=e.useStickersStore(r=>r.stickers.find(x=>String(x.id)===String(s))),a=e.useStickersStore(r=>r.bringToFront),i=e.useStickersStore(r=>r.updateSticker);return!l||!l.imageUrl?null:e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx(u.NodeResizer,{isVisible:n,minWidth:30,minHeight:30,onResizeEnd:async(r,x)=>{const c=Math.max(1,Math.round(x.width)),o=Math.max(1,Math.round(x.height));i(s,{width:c,height:o});try{await e.stickersApi.updateTransform(s,c,o)}catch(d){console.warn("Не удалось сохранить размер эмодзи",d)}}}),e.jsxRuntimeExports.jsx(u.Handle,{type:"target",position:u.Position.Left}),e.jsxRuntimeExports.jsx(u.Handle,{type:"source",position:u.Position.Right}),e.jsxRuntimeExports.jsx("div",{className:"dragHandle__custom",style:{width:l.width,height:l.height,position:"relative"},onPointerDown:()=>{a(s)},children:e.jsxRuntimeExports.jsx("img",{src:l.imageUrl,draggable:!1,style:{width:"100%",height:"100%"}})})]})},E={emoji:A},g=({children:t})=>e.jsxRuntimeExports.jsx("div",{children:t}),O=({nodeTypes:t})=>{const s=e.useStickersStore(c=>c.setStickers),n=p.useRef(null),[l,a]=p.useState(()=>g),i={...E,...t||{}};async function r(c){if(e.EMOJI_MAP&&e.EMOJI_MAP[c])return e.EMOJI_MAP[c];try{const o=await e.stickersApi.getById(c);if(o?.name){const d=e.EMOJI_CATALOG.find(h=>h.name===o.name);if(d)return d.url}}catch(o){console.warn("getEmojiUrlForStickerId: backend lookup failed",o)}return""}p.useEffect(()=>{(async()=>{try{const o=await e.stickersApi.getBoard();let d=30,h=30;const j=[];for(const m of o){const k=m.width??e.EMOJI_W,w=m.height??e.EMOJI_H;let C=e.EMOJI_MAP?.[String(m.stickerId)]??"";if(!C)try{C=await r(m.stickerId)}catch(b){console.warn("Ошибка при получении локального url для stickerId",m.stickerId,b),C=""}j.push({id:m.id,x:d,y:h,color:"transparent",width:k,height:w,text:"",zIndex:1,stickerId:m.stickerId,imageUrl:C,type:"emoji"}),d+=24,h+=24}s(j)}catch(o){console.warn("Не удалось загрузить доску для эмодзи:",o)}})()},[s]),p.useEffect(()=>{let c=!0;return import("@xyflow/react").then(o=>{if(!c)return;const d=(o&&(o.Widget||o.default||o?.widget||o?.XyflowWidget))??null;typeof d=="function"||p.isValidElement(d)?a(()=>d):a(()=>g)}).catch(()=>{c&&a(()=>g)}),()=>{c=!1}},[]);const x=l||g;return e.jsxRuntimeExports.jsx(x,{children:e.jsxRuntimeExports.jsxs("div",{className:"relative flex h-screen w-screen bg-gray-100",children:[e.jsxRuntimeExports.jsx(_,{}),e.jsxRuntimeExports.jsx(e.Board,{ref:n,nodeTypes:i})]})})};exports.EmojiBoardWidget=O;exports.emojiNodeTypes=E;
|
|
2
|
+
//# sourceMappingURL=EmojiBoardWidget-DU57KxVP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmojiBoardWidget-DU57KxVP.js","sources":["../../src/assets/emoji_add.svg?url","../../src/assets/emoji_add_active.svg?url","../../src/components/EmojiToolbar.jsx","../../src/features/emoji-sticker/ui/EmojiNode.jsx","../../src/features/emoji-sticker/public/emojiNodeTypes.js","../../src/widgets/EmojiBoardWidget.jsx"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='black'%20stroke='black'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='black'/%3e%3cpath%20d='M30.2759%2016.0326C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0582C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0964%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9253%2032.3642%2023.4662%2032.1922%2023.0767C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0326Z'%20fill='black'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='black'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='black'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='black'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='%230000FF'%20stroke='%230000FF'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='%230000FF'/%3e%3cpath%20d='M30.2759%2016.0327C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0583C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0965%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9254%2032.3642%2023.4662%2032.1922%2023.0768C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0327Z'%20fill='%230000FF'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='%230000FF'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3c/svg%3e\"","import React, { useState, useRef, useEffect } from 'react'\nimport { DND_EMOJI } from '../features/board/constants.js'\nimport emojiAdd from '../assets/emoji_add.svg?url'\nimport emojiAddActive from '../assets/emoji_add_active.svg?url'\nimport '../styles/stickerPalette.css'\nimport { EMOJI_ITEMS } from '../features/emoji-sticker/stickers.js'\n\nexport const EmojiToolbar = () => {\n const [emojiOpen, setEmojiOpen] = useState(false)\n const wrapperRef = useRef(null)\n\n const toggleEmoji = (e) => {\n e.stopPropagation()\n setEmojiOpen((v) => !v)\n }\n\n useEffect(() => {\n if (!emojiOpen) {\n return\n }\n\n const handler = (e) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\n setEmojiOpen(false)\n }\n }\n\n window.addEventListener('pointerdown', handler)\n\n return () => {\n window.removeEventListener('pointerdown', handler)\n }\n }, [emojiOpen])\n\n const onEmojiDragStart = (item) => (e) => {\n e.stopPropagation()\n e.dataTransfer.setData(\n DND_EMOJI,\n JSON.stringify({\n stickerId: item.id,\n name: item.name,\n })\n )\n e.dataTransfer.effectAllowed = 'copy'\n }\n\n return (\n <div\n className=\"left-toolbar-container dragHandle__custom\"\n ref={wrapperRef}\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <div className={`toolbar-card ${emojiOpen ? 'toolbar-card--open' : ''}`}>\n <button\n onClick={toggleEmoji}\n className={`toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${emojiOpen ? 'toolbar-btn--active' : ''}`}\n >\n <div className={`toolbar-emoji-plate ${emojiOpen ? 'toolbar-emoji-plate--active' : ''}`}>\n <img src={emojiOpen ? emojiAddActive : emojiAdd} alt=\"Эмодзи\" draggable={false} />\n </div>\n </button>\n </div>\n\n {emojiOpen && (\n <div\n className=\"palette-wrapper\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <div className=\"emoji-panel\" style={{ width: 300, height: 500 }}>\n <div className=\"emoji-panel-header\">\n <span className=\"emoji-header-title\">Стикеры</span>\n </div>\n\n <div className=\"emoji-grid\">\n {EMOJI_ITEMS.map((item) => (\n <button\n key={item.id}\n draggable\n onDragStart={onEmojiDragStart(item)}\n className=\"emoji-item\"\n >\n <img src={item.url} draggable={false} />\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}","import React from 'react';\nimport { NodeResizer, Handle, Position } from '@xyflow/react';\nimport { useStickersStore } from '../../../entities/stickers/model/useStickersStore.js';\nimport '../../../styles/sticker.css';\nimport { stickersApi } from '../../../shared/api/stickerApi.js';\n\n\nexport const EmojiNode = (props) => {\n const { id, selected } = props;\n\n const sticker = useStickersStore(s =>\n s.stickers.find(x => String(x.id) === String(id))\n );\n\n const bringToFront = useStickersStore(s => s.bringToFront);\n const updateSticker = useStickersStore(s => s.updateSticker);\n\n if (!sticker || !sticker.imageUrl) {\n return null;\n }\n\n return (\n <>\n <NodeResizer\n isVisible={selected}\n minWidth={30}\n minHeight={30}\n onResizeEnd={async (_, params) => {\n const w = Math.max(1, Math.round(params.width));\n const h = Math.max(1, Math.round(params.height));\n\n updateSticker(id, { width: w, height: h });\n\n try {\n await stickersApi.updateTransform(id, w, h);\n } catch (e) {\n console.warn('Не удалось сохранить размер эмодзи', e);\n }\n }}\n />\n\n <Handle type=\"target\" position={Position.Left} />\n <Handle type=\"source\" position={Position.Right} />\n\n <div\n className=\"dragHandle__custom\"\n style={{ width: sticker.width, height: sticker.height, position: 'relative' }}\n onPointerDown={() => {\n bringToFront(id);\n }}\n >\n <img\n src={sticker.imageUrl}\n draggable={false}\n style={{ width: '100%', height: '100%' }}\n />\n </div>\n </>\n );\n};\n","import { EmojiNode } from '../ui/EmojiNode.jsx'\n\nexport const emojiNodeTypes = {\n emoji: EmojiNode,\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { EmojiToolbar } from '../components/EmojiToolbar.jsx'\nimport { Board } from '../features/board/ui/Board.jsx'\nimport { useStickersStore } from '../entities/stickers/model/useStickersStore.js'\nimport { stickersApi } from '../shared/api/stickerApi.js'\nimport { EMOJI_W, EMOJI_H } from '../features/board/constants'\nimport { EMOJI_CATALOG, EMOJI_MAP } from '../features/emoji-sticker/stickers.js'\nimport { emojiNodeTypes } from '../features/emoji-sticker/public/emojiNodeTypes.js'\n\nconst SafeFallbackWidget = ({ children }) => <div>{children}</div>\n\n/**\n * @typedef {import('@xyflow/react').NodeProps} NodeProps\n * @typedef {Record<string, React.ComponentType<NodeProps>>} NodeTypes\n */\n\n/**\n * @param {{ nodeTypes?: NodeTypes }} props\n */\nexport const EmojiBoardWidget = ({ nodeTypes }) => {\n const setStickers = useStickersStore((state) => state.setStickers)\n const boardRef = useRef(null)\n const [WidgetComp, setWidgetComp] = useState(() => SafeFallbackWidget)\n\n const mergedNodeTypes = {\n ...emojiNodeTypes,\n ...(nodeTypes || {}),\n }\n\n async function getEmojiUrlForStickerId(stickerId) {\n if (EMOJI_MAP && EMOJI_MAP[stickerId]) {\n return EMOJI_MAP[stickerId]\n }\n\n try {\n const info = await stickersApi.getById(stickerId)\n if (info?.name) {\n const local = EMOJI_CATALOG.find((e) => e.name === info.name)\n if (local) {\n return local.url\n }\n }\n } catch (err) {\n console.warn('getEmojiUrlForStickerId: backend lookup failed', err)\n }\n\n return ''\n }\n\n useEffect(() => {\n const loadBoard = async () => {\n try {\n const boardEmojis = await stickersApi.getBoard()\n let x = 30\n let y = 30\n const items = []\n\n for (const e of boardEmojis) {\n const w = e.width ?? EMOJI_W\n const h = e.height ?? EMOJI_H\n\n let imageUrl = EMOJI_MAP?.[String(e.stickerId)] ?? ''\n if (!imageUrl) {\n try {\n imageUrl = await getEmojiUrlForStickerId(e.stickerId)\n } catch (err) {\n console.warn('Ошибка при получении локального url для stickerId', e.stickerId, err)\n imageUrl = ''\n }\n }\n\n items.push({\n id: e.id,\n x,\n y,\n color: 'transparent',\n width: w,\n height: h,\n text: '',\n zIndex: 1,\n stickerId: e.stickerId,\n imageUrl,\n type: 'emoji',\n })\n\n x += 24\n y += 24\n }\n\n setStickers(items)\n } catch (e) {\n console.warn('Не удалось загрузить доску для эмодзи:', e)\n }\n }\n\n loadBoard()\n }, [setStickers])\n\n useEffect(() => {\n let mounted = true\n\n import('@xyflow/react')\n .then((mod) => {\n if (!mounted) {\n return\n }\n\n const candidate = (mod && (mod.Widget || mod.default || mod?.widget || mod?.XyflowWidget)) ?? null\n if (typeof candidate === 'function' || React.isValidElement(candidate)) {\n setWidgetComp(() => candidate)\n } else {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n .catch(() => {\n if (mounted) {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n\n return () => { mounted = false }\n }, [])\n\n const Wrapper = WidgetComp || SafeFallbackWidget\n\n return (\n <Wrapper>\n <div className=\"relative flex h-screen w-screen bg-gray-100\">\n <EmojiToolbar />\n <Board ref={boardRef} nodeTypes={mergedNodeTypes} />\n </div>\n </Wrapper>\n )\n}\n"],"names":["emojiAdd","emojiAddActive","EmojiToolbar","emojiOpen","setEmojiOpen","useState","wrapperRef","useRef","toggleEmoji","e","v","useEffect","handler","onEmojiDragStart","item","DND_EMOJI","jsxs","jsx","EMOJI_ITEMS","EmojiNode","props","id","selected","sticker","useStickersStore","s","bringToFront","updateSticker","Fragment","NodeResizer","_","params","w","h","stickersApi","Handle","Position","emojiNodeTypes","SafeFallbackWidget","children","EmojiBoardWidget","nodeTypes","setStickers","state","boardRef","WidgetComp","setWidgetComp","mergedNodeTypes","getEmojiUrlForStickerId","stickerId","EMOJI_MAP","info","local","EMOJI_CATALOG","err","boardEmojis","x","y","items","EMOJI_W","EMOJI_H","imageUrl","mounted","mod","candidate","React","Wrapper","Board"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as e, E as N, b as S, u, c as j, B as I, d as L, e as _, f as p, g as H } from "./Board-
|
|
1
|
+
import { j as e, E as N, b as S, u, c as j, B as I, d as L, e as _, f as p, g as H } from "./Board-CpOsQfT6.js";
|
|
2
2
|
import T, { useState as v, useRef as M, useEffect as w } from "react";
|
|
3
3
|
import { NodeResizer as O, Handle as x, Position as b } from "@xyflow/react";
|
|
4
4
|
const V = "data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='black'%20stroke='black'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='black'/%3e%3cpath%20d='M30.2759%2016.0326C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0582C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0964%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9253%2032.3642%2023.4662%2032.1922%2023.0767C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0326Z'%20fill='black'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='black'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='black'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='black'%20stroke-linecap='round'/%3e%3c/svg%3e", Z = "data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='%230000FF'%20stroke='%230000FF'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='%230000FF'/%3e%3cpath%20d='M30.2759%2016.0327C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0583C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0965%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9254%2032.3642%2023.4662%2032.1922%2023.0768C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0327Z'%20fill='%230000FF'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='%230000FF'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3c/svg%3e", B = () => {
|
|
@@ -188,4 +188,4 @@ export {
|
|
|
188
188
|
D as E,
|
|
189
189
|
A as e
|
|
190
190
|
};
|
|
191
|
-
//# sourceMappingURL=EmojiBoardWidget-
|
|
191
|
+
//# sourceMappingURL=EmojiBoardWidget-eFGE2g4e.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiBoardWidget-C-Uhinz6.js","sources":["../../src/assets/emoji_add.svg?url","../../src/assets/emoji_add_active.svg?url","../../src/components/EmojiToolbar.jsx","../../src/features/emoji-sticker/ui/EmojiNode.jsx","../../src/features/emoji-sticker/public/emojiNodeTypes.js","../../src/widgets/EmojiBoardWidget.jsx"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='black'%20stroke='black'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='black'/%3e%3cpath%20d='M30.2759%2016.0326C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0582C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0964%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9253%2032.3642%2023.4662%2032.1922%2023.0767C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0326Z'%20fill='black'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='black'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='black'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='black'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='%230000FF'%20stroke='%230000FF'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='%230000FF'/%3e%3cpath%20d='M30.2759%2016.0327C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0583C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0965%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9254%2032.3642%2023.4662%2032.1922%2023.0768C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0327Z'%20fill='%230000FF'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='%230000FF'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3c/svg%3e\"","import React, { useState, useRef, useEffect } from 'react'\nimport { DND_EMOJI } from '../features/board/constants.js'\nimport emojiAdd from '../assets/emoji_add.svg?url'\nimport emojiAddActive from '../assets/emoji_add_active.svg?url'\nimport '../styles/stickerPalette.css'\nimport { EMOJI_ITEMS } from '../features/emoji-sticker/stickers.js'\n\nexport const EmojiToolbar = () => {\n const [emojiOpen, setEmojiOpen] = useState(false)\n const wrapperRef = useRef(null)\n\n const toggleEmoji = (e) => {\n e.stopPropagation()\n setEmojiOpen((v) => !v)\n }\n\n useEffect(() => {\n if (!emojiOpen) {\n return\n }\n\n const handler = (e) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\n setEmojiOpen(false)\n }\n }\n\n window.addEventListener('pointerdown', handler)\n\n return () => {\n window.removeEventListener('pointerdown', handler)\n }\n }, [emojiOpen])\n\n const onEmojiDragStart = (item) => (e) => {\n e.stopPropagation()\n e.dataTransfer.setData(\n DND_EMOJI,\n JSON.stringify({\n stickerId: item.id,\n name: item.name,\n })\n )\n e.dataTransfer.effectAllowed = 'copy'\n }\n\n return (\n <div\n className=\"left-toolbar-container dragHandle__custom\"\n ref={wrapperRef}\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <div className={`toolbar-card ${emojiOpen ? 'toolbar-card--open' : ''}`}>\n <button\n onClick={toggleEmoji}\n className={`toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${emojiOpen ? 'toolbar-btn--active' : ''}`}\n >\n <div className={`toolbar-emoji-plate ${emojiOpen ? 'toolbar-emoji-plate--active' : ''}`}>\n <img src={emojiOpen ? emojiAddActive : emojiAdd} alt=\"Эмодзи\" draggable={false} />\n </div>\n </button>\n </div>\n\n {emojiOpen && (\n <div\n className=\"palette-wrapper\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <div className=\"emoji-panel\" style={{ width: 300, height: 500 }}>\n <div className=\"emoji-panel-header\">\n <span className=\"emoji-header-title\">Стикеры</span>\n </div>\n\n <div className=\"emoji-grid\">\n {EMOJI_ITEMS.map((item) => (\n <button\n key={item.id}\n draggable\n onDragStart={onEmojiDragStart(item)}\n className=\"emoji-item\"\n >\n <img src={item.url} draggable={false} />\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}","import React from 'react';\nimport { NodeResizer, Handle, Position } from '@xyflow/react';\nimport { useStickersStore } from '../../../entities/stickers/model/useStickersStore.js';\nimport '../../../styles/sticker.css';\nimport { stickersApi } from '../../../shared/api/stickerApi.js';\n\n\nexport const EmojiNode = (props) => {\n const { id, selected } = props;\n\n const sticker = useStickersStore(s =>\n s.stickers.find(x => String(x.id) === String(id))\n );\n\n const bringToFront = useStickersStore(s => s.bringToFront);\n const updateSticker = useStickersStore(s => s.updateSticker);\n\n if (!sticker || !sticker.imageUrl) {\n return null;\n }\n\n return (\n <>\n <NodeResizer\n isVisible={selected}\n minWidth={30}\n minHeight={30}\n onResizeEnd={async (_, params) => {\n const w = Math.max(1, Math.round(params.width));\n const h = Math.max(1, Math.round(params.height));\n\n updateSticker(id, { width: w, height: h });\n\n try {\n await stickersApi.updateTransform(id, w, h);\n } catch (e) {\n console.warn('Не удалось сохранить размер эмодзи', e);\n }\n }}\n />\n\n <Handle type=\"target\" position={Position.Left} />\n <Handle type=\"source\" position={Position.Right} />\n\n <div\n className=\"dragHandle__custom\"\n style={{ width: sticker.width, height: sticker.height, position: 'relative' }}\n onPointerDown={() => {\n bringToFront(id);\n }}\n >\n <img\n src={sticker.imageUrl}\n draggable={false}\n style={{ width: '100%', height: '100%' }}\n />\n </div>\n </>\n );\n};\n","import { EmojiNode } from '../ui/EmojiNode.jsx'\n\nexport const emojiNodeTypes = {\n emoji: EmojiNode,\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { EmojiToolbar } from '../components/EmojiToolbar.jsx'\nimport { Board } from '../features/board/ui/Board.jsx'\nimport { useStickersStore } from '../entities/stickers/model/useStickersStore.js'\nimport { stickersApi } from '../shared/api/stickerApi.js'\nimport { EMOJI_W, EMOJI_H } from '../features/board/constants'\nimport { EMOJI_CATALOG, EMOJI_MAP } from '../features/emoji-sticker/stickers.js'\nimport { emojiNodeTypes } from '../features/emoji-sticker/public/emojiNodeTypes.js'\n\nconst SafeFallbackWidget = ({ children }) => <div>{children}</div>\n\n/**\n * @typedef {import('@xyflow/react').NodeProps} NodeProps\n * @typedef {Record<string, React.ComponentType<NodeProps>>} NodeTypes\n */\n\n/**\n * @param {{ nodeTypes?: NodeTypes }} props\n */\nexport const EmojiBoardWidget = ({ nodeTypes }) => {\n const setStickers = useStickersStore((state) => state.setStickers)\n const boardRef = useRef(null)\n const [WidgetComp, setWidgetComp] = useState(() => SafeFallbackWidget)\n\n const mergedNodeTypes = {\n ...emojiNodeTypes,\n ...(nodeTypes || {}),\n }\n\n async function getEmojiUrlForStickerId(stickerId) {\n if (EMOJI_MAP && EMOJI_MAP[stickerId]) {\n return EMOJI_MAP[stickerId]\n }\n\n try {\n const info = await stickersApi.getById(stickerId)\n if (info?.name) {\n const local = EMOJI_CATALOG.find((e) => e.name === info.name)\n if (local) {\n return local.url\n }\n }\n } catch (err) {\n console.warn('getEmojiUrlForStickerId: backend lookup failed', err)\n }\n\n return ''\n }\n\n useEffect(() => {\n const loadBoard = async () => {\n try {\n const boardEmojis = await stickersApi.getBoard()\n let x = 30\n let y = 30\n const items = []\n\n for (const e of boardEmojis) {\n const w = e.width ?? EMOJI_W\n const h = e.height ?? EMOJI_H\n\n let imageUrl = EMOJI_MAP?.[String(e.stickerId)] ?? ''\n if (!imageUrl) {\n try {\n imageUrl = await getEmojiUrlForStickerId(e.stickerId)\n } catch (err) {\n console.warn('Ошибка при получении локального url для stickerId', e.stickerId, err)\n imageUrl = ''\n }\n }\n\n items.push({\n id: e.id,\n x,\n y,\n color: 'transparent',\n width: w,\n height: h,\n text: '',\n zIndex: 1,\n stickerId: e.stickerId,\n imageUrl,\n type: 'emoji',\n })\n\n x += 24\n y += 24\n }\n\n setStickers(items)\n } catch (e) {\n console.warn('Не удалось загрузить доску для эмодзи:', e)\n }\n }\n\n loadBoard()\n }, [setStickers])\n\n useEffect(() => {\n let mounted = true\n\n import('@xyflow/react')\n .then((mod) => {\n if (!mounted) {\n return\n }\n\n const candidate = (mod && (mod.Widget || mod.default || mod?.widget || mod?.XyflowWidget)) ?? null\n if (typeof candidate === 'function' || React.isValidElement(candidate)) {\n setWidgetComp(() => candidate)\n } else {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n .catch(() => {\n if (mounted) {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n\n return () => { mounted = false }\n }, [])\n\n const Wrapper = WidgetComp || SafeFallbackWidget\n\n return (\n <Wrapper>\n <div className=\"relative flex h-screen w-screen bg-gray-100\">\n <EmojiToolbar />\n <Board ref={boardRef} nodeTypes={mergedNodeTypes} />\n </div>\n </Wrapper>\n )\n}\n"],"names":["emojiAdd","emojiAddActive","EmojiToolbar","emojiOpen","setEmojiOpen","useState","wrapperRef","useRef","toggleEmoji","e","v","useEffect","handler","onEmojiDragStart","item","DND_EMOJI","jsxs","jsx","EMOJI_ITEMS","EmojiNode","props","id","selected","sticker","useStickersStore","s","x","bringToFront","updateSticker","Fragment","NodeResizer","_","params","w","h","stickersApi","Handle","Position","emojiNodeTypes","SafeFallbackWidget","children","EmojiBoardWidget","nodeTypes","setStickers","state","boardRef","WidgetComp","setWidgetComp","mergedNodeTypes","getEmojiUrlForStickerId","stickerId","EMOJI_MAP","info","local","EMOJI_CATALOG","err","boardEmojis","y","items","EMOJI_W","EMOJI_H","imageUrl","mounted","mod","candidate","React","Wrapper","Board"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmojiBoardWidget-eFGE2g4e.js","sources":["../../src/assets/emoji_add.svg?url","../../src/assets/emoji_add_active.svg?url","../../src/components/EmojiToolbar.jsx","../../src/features/emoji-sticker/ui/EmojiNode.jsx","../../src/features/emoji-sticker/public/emojiNodeTypes.js","../../src/widgets/EmojiBoardWidget.jsx"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='black'%20stroke='black'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='black'/%3e%3cpath%20d='M30.2759%2016.0326C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0582C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0964%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9253%2032.3642%2023.4662%2032.1922%2023.0767C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0326Z'%20fill='black'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='black'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='black'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='black'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200%2053%2055'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.4805%209.06134C28.3439%205.4148%2041.8081%2012.4889%2044.7236%2025.491C45.7716%2030.1654%2045.6693%2034.5328%2044.3408%2038.5027C43.0128%2042.4712%2040.4491%2046.075%2036.5225%2049.2059C25.9108%2057.6673%2010.2323%2054.5413%203.62305%2042.8719V42.8709L3.24805%2042.1883C1.43682%2038.7598%200.519459%2035.0399%200.5%2030.0115C0.77733%2023.2257%203.8013%2016.4937%2010.9961%2011.8436C12.8987%2010.6151%2015.1951%209.82717%2017.4795%209.06134H17.4805ZM34.9678%2013.3192C27.8426%208.00625%2017.0199%207.82577%209.95508%2014.4168C5.12103%2018.9247%202.80092%2024.4062%202.70703%2029.743V29.7527C2.71638%2035.6997%204.17812%2040.1971%207.25879%2044.2195C13.7769%2052.7395%2025.531%2054.6508%2034.2949%2048.6111C46.3065%2040.3282%2046.6344%2022.0153%2034.9678%2013.3192Z'%20fill='%230000FF'%20stroke='%230000FF'/%3e%3cpath%20d='M23.0724%2043.0767C18.121%2043.2052%2013.133%2039.5978%2012.0915%2035.1336C12.0276%2034.868%2012.0002%2034.5766%2012.0002%2034.3367C11.991%2033.6598%2012.3656%2033.5056%2012.6579%2033.4199C12.9503%2033.3428%2013.4984%2033.5998%2013.7176%2033.8655C14.1379%2034.371%2014.4028%2034.9794%2014.7225%2035.5535C16.0563%2037.9013%2017.92%2039.7092%2020.688%2040.489C25.8039%2041.9285%2031.1848%2038.4668%2031.9887%2033.2742C32.0161%2033.0686%2032.144%2032.7258%2032.1988%2032.5716C32.4911%2031.8347%2032.8383%2031.8004%2033.2677%2031.7662C33.9711%2031.7147%2034.2086%2032.3402%2034.1264%2032.9315C33.3042%2038.7067%2028.9009%2042.9824%2023.0724%2043.0767Z'%20fill='%230000FF'/%3e%3cpath%20d='M30.2759%2016.0327C30.2857%2015.6747%2030.3776%2015.1557%2030.981%2015.0583C31.5663%2014.9637%2032.0339%2015.2446%2032.2178%2015.5452C33.5514%2017.7549%2034.3449%2020.1562%2034.4241%2022.7076C34.4385%2023.0965%2034.0825%2023.745%2033.6232%2023.8192C32.9658%2023.9254%2032.3642%2023.4662%2032.1922%2023.0768C31.4726%2021.498%2030.2216%2017.945%2030.2759%2016.0327Z'%20fill='%230000FF'/%3e%3cpath%20d='M12.722%2024.0753C12.459%2022.614%2012.4411%2021.9477%2012.4645%2020.9964C12.4712%2020.6216%2012.5813%2020.1518%2013.1437%2019.8784C13.8461%2019.765%2014.1506%2020.2721%2014.2698%2020.5745C15.209%2022.9609%2015.7361%2025.0662%2016.1952%2027.6693C16.3062%2028.2859%2016.2131%2028.9528%2015.3937%2029.1373C14.5022%2029.3334%2014.2111%2028.6938%2013.9424%2028.0766C13.3162%2026.6566%2012.9865%2025.5451%2012.722%2024.0753Z'%20fill='%230000FF'/%3e%3cpath%20d='M46.5%2013.2895V12.65L45.75%206.89475L45%201.13949V0.500015'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3cpath%20d='M39%207.60529H39.675L45.75%206.89476L51.825%206.18423H52.5'%20stroke='%230000FF'%20stroke-linecap='round'/%3e%3c/svg%3e\"","import React, { useState, useRef, useEffect } from 'react'\nimport { DND_EMOJI } from '../features/board/constants.js'\nimport emojiAdd from '../assets/emoji_add.svg?url'\nimport emojiAddActive from '../assets/emoji_add_active.svg?url'\nimport '../styles/stickerPalette.css'\nimport { EMOJI_ITEMS } from '../features/emoji-sticker/stickers.js'\n\nexport const EmojiToolbar = () => {\n const [emojiOpen, setEmojiOpen] = useState(false)\n const wrapperRef = useRef(null)\n\n const toggleEmoji = (e) => {\n e.stopPropagation()\n setEmojiOpen((v) => !v)\n }\n\n useEffect(() => {\n if (!emojiOpen) {\n return\n }\n\n const handler = (e) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\n setEmojiOpen(false)\n }\n }\n\n window.addEventListener('pointerdown', handler)\n\n return () => {\n window.removeEventListener('pointerdown', handler)\n }\n }, [emojiOpen])\n\n const onEmojiDragStart = (item) => (e) => {\n e.stopPropagation()\n e.dataTransfer.setData(\n DND_EMOJI,\n JSON.stringify({\n stickerId: item.id,\n name: item.name,\n })\n )\n e.dataTransfer.effectAllowed = 'copy'\n }\n\n return (\n <div\n className=\"left-toolbar-container dragHandle__custom\"\n ref={wrapperRef}\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <div className={`toolbar-card ${emojiOpen ? 'toolbar-card--open' : ''}`}>\n <button\n onClick={toggleEmoji}\n className={`toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${emojiOpen ? 'toolbar-btn--active' : ''}`}\n >\n <div className={`toolbar-emoji-plate ${emojiOpen ? 'toolbar-emoji-plate--active' : ''}`}>\n <img src={emojiOpen ? emojiAddActive : emojiAdd} alt=\"Эмодзи\" draggable={false} />\n </div>\n </button>\n </div>\n\n {emojiOpen && (\n <div\n className=\"palette-wrapper\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <div className=\"emoji-panel\" style={{ width: 300, height: 500 }}>\n <div className=\"emoji-panel-header\">\n <span className=\"emoji-header-title\">Стикеры</span>\n </div>\n\n <div className=\"emoji-grid\">\n {EMOJI_ITEMS.map((item) => (\n <button\n key={item.id}\n draggable\n onDragStart={onEmojiDragStart(item)}\n className=\"emoji-item\"\n >\n <img src={item.url} draggable={false} />\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}","import React from 'react';\nimport { NodeResizer, Handle, Position } from '@xyflow/react';\nimport { useStickersStore } from '../../../entities/stickers/model/useStickersStore.js';\nimport '../../../styles/sticker.css';\nimport { stickersApi } from '../../../shared/api/stickerApi.js';\n\n\nexport const EmojiNode = (props) => {\n const { id, selected } = props;\n\n const sticker = useStickersStore(s =>\n s.stickers.find(x => String(x.id) === String(id))\n );\n\n const bringToFront = useStickersStore(s => s.bringToFront);\n const updateSticker = useStickersStore(s => s.updateSticker);\n\n if (!sticker || !sticker.imageUrl) {\n return null;\n }\n\n return (\n <>\n <NodeResizer\n isVisible={selected}\n minWidth={30}\n minHeight={30}\n onResizeEnd={async (_, params) => {\n const w = Math.max(1, Math.round(params.width));\n const h = Math.max(1, Math.round(params.height));\n\n updateSticker(id, { width: w, height: h });\n\n try {\n await stickersApi.updateTransform(id, w, h);\n } catch (e) {\n console.warn('Не удалось сохранить размер эмодзи', e);\n }\n }}\n />\n\n <Handle type=\"target\" position={Position.Left} />\n <Handle type=\"source\" position={Position.Right} />\n\n <div\n className=\"dragHandle__custom\"\n style={{ width: sticker.width, height: sticker.height, position: 'relative' }}\n onPointerDown={() => {\n bringToFront(id);\n }}\n >\n <img\n src={sticker.imageUrl}\n draggable={false}\n style={{ width: '100%', height: '100%' }}\n />\n </div>\n </>\n );\n};\n","import { EmojiNode } from '../ui/EmojiNode.jsx'\n\nexport const emojiNodeTypes = {\n emoji: EmojiNode,\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { EmojiToolbar } from '../components/EmojiToolbar.jsx'\nimport { Board } from '../features/board/ui/Board.jsx'\nimport { useStickersStore } from '../entities/stickers/model/useStickersStore.js'\nimport { stickersApi } from '../shared/api/stickerApi.js'\nimport { EMOJI_W, EMOJI_H } from '../features/board/constants'\nimport { EMOJI_CATALOG, EMOJI_MAP } from '../features/emoji-sticker/stickers.js'\nimport { emojiNodeTypes } from '../features/emoji-sticker/public/emojiNodeTypes.js'\n\nconst SafeFallbackWidget = ({ children }) => <div>{children}</div>\n\n/**\n * @typedef {import('@xyflow/react').NodeProps} NodeProps\n * @typedef {Record<string, React.ComponentType<NodeProps>>} NodeTypes\n */\n\n/**\n * @param {{ nodeTypes?: NodeTypes }} props\n */\nexport const EmojiBoardWidget = ({ nodeTypes }) => {\n const setStickers = useStickersStore((state) => state.setStickers)\n const boardRef = useRef(null)\n const [WidgetComp, setWidgetComp] = useState(() => SafeFallbackWidget)\n\n const mergedNodeTypes = {\n ...emojiNodeTypes,\n ...(nodeTypes || {}),\n }\n\n async function getEmojiUrlForStickerId(stickerId) {\n if (EMOJI_MAP && EMOJI_MAP[stickerId]) {\n return EMOJI_MAP[stickerId]\n }\n\n try {\n const info = await stickersApi.getById(stickerId)\n if (info?.name) {\n const local = EMOJI_CATALOG.find((e) => e.name === info.name)\n if (local) {\n return local.url\n }\n }\n } catch (err) {\n console.warn('getEmojiUrlForStickerId: backend lookup failed', err)\n }\n\n return ''\n }\n\n useEffect(() => {\n const loadBoard = async () => {\n try {\n const boardEmojis = await stickersApi.getBoard()\n let x = 30\n let y = 30\n const items = []\n\n for (const e of boardEmojis) {\n const w = e.width ?? EMOJI_W\n const h = e.height ?? EMOJI_H\n\n let imageUrl = EMOJI_MAP?.[String(e.stickerId)] ?? ''\n if (!imageUrl) {\n try {\n imageUrl = await getEmojiUrlForStickerId(e.stickerId)\n } catch (err) {\n console.warn('Ошибка при получении локального url для stickerId', e.stickerId, err)\n imageUrl = ''\n }\n }\n\n items.push({\n id: e.id,\n x,\n y,\n color: 'transparent',\n width: w,\n height: h,\n text: '',\n zIndex: 1,\n stickerId: e.stickerId,\n imageUrl,\n type: 'emoji',\n })\n\n x += 24\n y += 24\n }\n\n setStickers(items)\n } catch (e) {\n console.warn('Не удалось загрузить доску для эмодзи:', e)\n }\n }\n\n loadBoard()\n }, [setStickers])\n\n useEffect(() => {\n let mounted = true\n\n import('@xyflow/react')\n .then((mod) => {\n if (!mounted) {\n return\n }\n\n const candidate = (mod && (mod.Widget || mod.default || mod?.widget || mod?.XyflowWidget)) ?? null\n if (typeof candidate === 'function' || React.isValidElement(candidate)) {\n setWidgetComp(() => candidate)\n } else {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n .catch(() => {\n if (mounted) {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n\n return () => { mounted = false }\n }, [])\n\n const Wrapper = WidgetComp || SafeFallbackWidget\n\n return (\n <Wrapper>\n <div className=\"relative flex h-screen w-screen bg-gray-100\">\n <EmojiToolbar />\n <Board ref={boardRef} nodeTypes={mergedNodeTypes} />\n </div>\n </Wrapper>\n )\n}\n"],"names":["emojiAdd","emojiAddActive","EmojiToolbar","emojiOpen","setEmojiOpen","useState","wrapperRef","useRef","toggleEmoji","e","v","useEffect","handler","onEmojiDragStart","item","DND_EMOJI","jsxs","jsx","EMOJI_ITEMS","EmojiNode","props","id","selected","sticker","useStickersStore","s","x","bringToFront","updateSticker","Fragment","NodeResizer","_","params","w","h","stickersApi","Handle","Position","emojiNodeTypes","SafeFallbackWidget","children","EmojiBoardWidget","nodeTypes","setStickers","state","boardRef","WidgetComp","setWidgetComp","mergedNodeTypes","getEmojiUrlForStickerId","stickerId","EMOJI_MAP","info","local","EMOJI_CATALOG","err","boardEmojis","y","items","EMOJI_W","EMOJI_H","imageUrl","mounted","mod","candidate","React","Wrapper","Board"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as e, S, D as B, a as N, u as C, B as A, s as j } from "./Board-
|
|
1
|
+
import { j as e, S, D as B, a as N, u as C, B as A, s as j } from "./Board-CpOsQfT6.js";
|
|
2
2
|
import I, { useState as y, useRef as b, useEffect as k } from "react";
|
|
3
3
|
const D = {
|
|
4
4
|
square: /* @__PURE__ */ e.jsx("svg", { width: "40", height: "40", children: /* @__PURE__ */ e.jsx("rect", { x: "4", y: "4", width: "32", height: "32", stroke: "black", fill: "none", strokeWidth: "2" }) }),
|
|
@@ -152,4 +152,4 @@ export {
|
|
|
152
152
|
V as S,
|
|
153
153
|
R as s
|
|
154
154
|
};
|
|
155
|
-
//# sourceMappingURL=ShapeBoardWidget-
|
|
155
|
+
//# sourceMappingURL=ShapeBoardWidget-B65qIGGa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapeBoardWidget-0JrJFCZl.js","sources":["../../src/components/shapeIcons.jsx","../../src/assets/shape_add.svg","../../src/assets/shape_add_active.svg","../../src/components/ShapeToolbar.jsx","../../src/features/shape/public/shapeNodeTypes.js","../../src/widgets/ShapeBoardWidget.jsx"],"sourcesContent":["import React from \"react\";\n\nexport const SHAPE_ICONS = {\n square: (\n <svg width=\"40\" height=\"40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n circle: (\n <svg width=\"40\" height=\"40\">\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n triangle: (\n <svg width=\"40\" height=\"40\">\n <polygon points=\"20,6 34,34 6,34\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n star: (\n <svg width=\"40\" height=\"40\">\n <polygon\n points=\"20,4 25,16 38,16 27,24 32,36 20,28 8,36 13,24 2,16 15,16\"\n stroke=\"black\"\n fill=\"none\"\n strokeWidth=\"2\"\n />\n </svg>\n ),\n\n stick: (\n <svg width=\"40\" height=\"40\">\n <rect x=\"16\" y=\"4\" width=\"8\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\" />\n </svg>\n ),\n\n line: (\n <svg width=\"40\" height=\"40\">\n <line x1=\"4\" y1=\"20\" x2=\"36\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\" />\n </svg>\n ),\n\n arrow: (\n <svg width=\"40\" height=\"40\">\n <line x1=\"4\" y1=\"20\" x2=\"30\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"30,14 38,20 30,26\" fill=\"black\"/>\n </svg>\n ),\n\n dblarrow: (\n <svg width=\"40\" height=\"40\">\n <polygon points=\"4,20 12,14 12,26\" fill=\"black\"/>\n <line x1=\"12\" y1=\"20\" x2=\"28\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"28,14 36,20 28,26\" fill=\"black\"/>\n </svg>\n ),\n\n parallelogram: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"8,8 34,8 26,32 0,32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n roundedRect: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"6\" y=\"10\" width=\"28\" height=\"20\" rx=\"4\" ry=\"4\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n capsule: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"6\" y=\"14\" width=\"28\" height=\"12\" rx=\"6\" ry=\"6\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n pentagon: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"20,6 34,15 28,32 12,32 6,15\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n chevron: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 100 100\">\n <polyline\n points=\"0,0 50,100 100,0\"\n fill=\"none\"\n stroke=\"black\"\n strokeWidth=\"5\"\n />\n </svg>\n ),\n table3x3: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n\n <line x1=\"14\" y1=\"4\" x2=\"14\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"26\" y1=\"4\" x2=\"26\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n\n <line x1=\"4\" y1=\"14\" x2=\"36\" y2=\"14\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"4\" y1=\"26\" x2=\"36\" y2=\"26\" stroke=\"black\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n pyramid: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"20,4 36,36 4,36\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\" />\n <line x1=\"15\" y1=\"12\" x2=\"25\" y2=\"12\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"11\" y1=\"20\" x2=\"28\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"7\" y1=\"28\" x2=\"32\" y2=\"28\" stroke=\"black\" strokeWidth=\"2\" />\n </svg>\n ),\n circleArrow: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n <line x1=\"20\" y1=\"6\" x2=\"20\" y2=\"0\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"18,2 22,2 20,0\" fill=\"black\"/>\n </svg>\n ),\n\n table3x3LeftMerge: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"4\" x2=\"14\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"26\" y1=\"4\" x2=\"26\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"16\" x2=\"36\" y2=\"16\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"28\" x2=\"36\" y2=\"28\" stroke=\"black\" strokeWidth=\"2\"/>\n </svg>\n ),\n};\n","export default \"data:image/svg+xml,%3csvg%20width='50'%20height='50'%20viewBox='0%200%2050%2050'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.5H47C47.8284%201.5%2048.5%202.17157%2048.5%203V47C48.5%2047.8284%2047.8284%2048.5%2047%2048.5H3C2.17157%2048.5%201.5%2047.8284%201.5%2047V3C1.5%202.17157%202.17157%201.5%203%201.5Z'%20stroke='black'%20stroke-width='3'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='50'%20height='50'%20viewBox='0%200%2050%2050'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.5H47C47.8284%201.5%2048.5%202.17157%2048.5%203V47C48.5%2047.8284%2047.8284%2048.5%2047%2048.5H3C2.17157%2048.5%201.5%2047.8284%201.5%2047V3C1.5%202.17157%202.17157%201.5%203%201.5Z'%20stroke='%230000FF'%20stroke-width='3'/%3e%3c/svg%3e\"","// ShapeToolbar.jsx\nimport React, { useState, useRef, useEffect } from 'react';\nimport { SHAPES } from '../features/shape/constants.jsx';\nimport { SHAPE_ICONS } from \"./shapeIcons.jsx\";\nimport { DND_SHAPE } from '../features/board/constants.js';\nimport shapeAdd from '../assets/shape_add.svg';\nimport shapeAddActive from '../assets/shape_add_active.svg';\nimport '../styles/stickerPalette.css';\n\nexport const ShapeToolbar = () => {\n const [shapeOpen, setShapeOpen] = useState(false);\n const wrapperRef = useRef(null);\n\n const toggleShape = (e) => {\n e.stopPropagation();\n setShapeOpen((v) => !v);\n };\n\n useEffect(() => {\n if (!shapeOpen) return;\n const handler = (e) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\n setShapeOpen(false);\n }\n };\n window.addEventListener('pointerdown', handler);\n return () => window.removeEventListener('pointerdown', handler);\n }, [shapeOpen]);\n\n const onShapeDragStart = (shape) => (e) => {\n e.stopPropagation();\n e.dataTransfer.setData(DND_SHAPE, JSON.stringify({ shapeId: shape.id }));\n e.dataTransfer.effectAllowed = 'copy';\n };\n\n return (\n <div className=\"left-toolbar-container dragHandle__custom\" ref={wrapperRef} onClick={(e) => e.stopPropagation()}>\n <div className={`toolbar-card ${shapeOpen ? 'toolbar-card--open' : ''}`}>\n <button onClick={toggleShape} className={`toolbar-btn toolbar-btn--icon toolbar-btn--shape ${shapeOpen ? 'toolbar-btn--active' : ''}`}>\n <div className={`toolbar-shape-plate ${shapeOpen ? 'toolbar-shape-plate--active' : ''}`}>\n <img src={shapeOpen ? shapeAddActive : shapeAdd} alt=\"Фигуры\" draggable={false} />\n </div>\n </button>\n </div>\n {shapeOpen && (\n <div className=\"palette-wrapper\" onClick={(e) => e.stopPropagation()}>\n <div className=\"shape-panel\">\n <div className=\"shape-grid\">\n {SHAPES.map((shape) => (\n <button\n key={shape.id}\n className=\"shape-item\"\n draggable\n onDragStart={onShapeDragStart(shape)}\n title={shape.name}\n >\n {SHAPE_ICONS[shape.id]}\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};","import { ShapeNode } from '../ui/ShapeNode.jsx'\n\nexport const shapeNodeTypes = {\n shape: ShapeNode,\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ShapeToolbar } from '../components/ShapeToolbar.jsx'\nimport { Board } from '../features/board/ui/Board.jsx'\nimport { useStickersStore } from '../entities/stickers/model/useStickersStore.js'\nimport { shapesApi } from '../shared/api/shapesApi.js'\nimport { shapeNodeTypes } from '../features/shape/public/shapeNodeTypes.js'\n\nconst SafeFallbackWidget = ({ children }) => <div>{children}</div>\n\n/**\n * @typedef {import('@xyflow/react').NodeProps} NodeProps\n * @typedef {Record<string, React.ComponentType<NodeProps>>} NodeTypes\n */\n\n/**\n * @param {{ nodeTypes?: NodeTypes }} props\n */\nexport const ShapeBoardWidget = ({ nodeTypes }) => {\n const setStickers = useStickersStore((state) => state.setStickers)\n const boardRef = useRef(null)\n const [WidgetComp, setWidgetComp] = useState(() => SafeFallbackWidget)\n\n const mergedNodeTypes = {\n ...shapeNodeTypes,\n ...(nodeTypes || {}),\n }\n\n useEffect(() => {\n const loadBoard = async () => {\n try {\n const [allShapes, boardShapes] = await Promise.all([\n shapesApi.getAll(),\n shapesApi.getBoard(),\n ])\n\n const shapeKeyByDbId = new Map(allShapes.map((x) => [String(x.id), x.shapeId]))\n\n let x = 30\n let y = 30\n const items = []\n\n for (const s of boardShapes) {\n const w = s.width ?? 140\n const h = s.height ?? 140\n const r = s.rotation ?? 0\n\n const shapeKey = shapeKeyByDbId.get(String(s.shapeId)) ?? 'square'\n\n items.push({\n id: s.id,\n stickerId: s.id,\n type: 'shape',\n shapeId: shapeKey,\n shapeDbId: s.shapeId,\n x,\n y,\n width: w,\n height: h,\n rotation: r,\n zIndex: 1,\n fill: 'transparent',\n stroke: '#000',\n })\n\n x += 24\n y += 24\n }\n\n setStickers(items)\n } catch (e) {\n console.warn('Не удалось загрузить доску для фигур:', e)\n }\n }\n\n loadBoard()\n }, [setStickers])\n\n useEffect(() => {\n let mounted = true\n\n import('@xyflow/react')\n .then((mod) => {\n if (!mounted) {\n return\n }\n\n const candidate =\n (mod && (mod.Widget || mod.default || mod?.widget || mod?.XyflowWidget)) ?? null\n\n if (typeof candidate === 'function' || React.isValidElement(candidate)) {\n setWidgetComp(() => candidate)\n } else {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n .catch(() => {\n if (mounted) {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n\n return () => {\n mounted = false\n }\n }, [])\n\n const Wrapper = WidgetComp || SafeFallbackWidget\n\n return (\n <Wrapper>\n <div className=\"relative flex h-screen w-screen bg-gray-100\">\n <ShapeToolbar />\n <Board ref={boardRef} nodeTypes={mergedNodeTypes} />\n </div>\n </Wrapper>\n )\n}\n"],"names":["SHAPE_ICONS","jsx","jsxs","shapeAdd","shapeAddActive","ShapeToolbar","shapeOpen","setShapeOpen","useState","wrapperRef","useRef","toggleShape","e","v","useEffect","handler","onShapeDragStart","shape","DND_SHAPE","SHAPES","shapeNodeTypes","ShapeNode","SafeFallbackWidget","children","ShapeBoardWidget","nodeTypes","setStickers","useStickersStore","state","boardRef","WidgetComp","setWidgetComp","mergedNodeTypes","allShapes","boardShapes","shapesApi","shapeKeyByDbId","x","y","items","s","w","h","r","shapeKey","mounted","mod","candidate","React","Wrapper","Board"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ShapeBoardWidget-B65qIGGa.js","sources":["../../src/components/shapeIcons.jsx","../../src/assets/shape_add.svg","../../src/assets/shape_add_active.svg","../../src/components/ShapeToolbar.jsx","../../src/features/shape/public/shapeNodeTypes.js","../../src/widgets/ShapeBoardWidget.jsx"],"sourcesContent":["import React from \"react\";\n\nexport const SHAPE_ICONS = {\n square: (\n <svg width=\"40\" height=\"40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n circle: (\n <svg width=\"40\" height=\"40\">\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n triangle: (\n <svg width=\"40\" height=\"40\">\n <polygon points=\"20,6 34,34 6,34\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n star: (\n <svg width=\"40\" height=\"40\">\n <polygon\n points=\"20,4 25,16 38,16 27,24 32,36 20,28 8,36 13,24 2,16 15,16\"\n stroke=\"black\"\n fill=\"none\"\n strokeWidth=\"2\"\n />\n </svg>\n ),\n\n stick: (\n <svg width=\"40\" height=\"40\">\n <rect x=\"16\" y=\"4\" width=\"8\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\" />\n </svg>\n ),\n\n line: (\n <svg width=\"40\" height=\"40\">\n <line x1=\"4\" y1=\"20\" x2=\"36\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\" />\n </svg>\n ),\n\n arrow: (\n <svg width=\"40\" height=\"40\">\n <line x1=\"4\" y1=\"20\" x2=\"30\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"30,14 38,20 30,26\" fill=\"black\"/>\n </svg>\n ),\n\n dblarrow: (\n <svg width=\"40\" height=\"40\">\n <polygon points=\"4,20 12,14 12,26\" fill=\"black\"/>\n <line x1=\"12\" y1=\"20\" x2=\"28\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"28,14 36,20 28,26\" fill=\"black\"/>\n </svg>\n ),\n\n parallelogram: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"8,8 34,8 26,32 0,32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n roundedRect: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"6\" y=\"10\" width=\"28\" height=\"20\" rx=\"4\" ry=\"4\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n capsule: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"6\" y=\"14\" width=\"28\" height=\"12\" rx=\"6\" ry=\"6\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n pentagon: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"20,6 34,15 28,32 12,32 6,15\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n chevron: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 100 100\">\n <polyline\n points=\"0,0 50,100 100,0\"\n fill=\"none\"\n stroke=\"black\"\n strokeWidth=\"5\"\n />\n </svg>\n ),\n table3x3: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n\n <line x1=\"14\" y1=\"4\" x2=\"14\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"26\" y1=\"4\" x2=\"26\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n\n <line x1=\"4\" y1=\"14\" x2=\"36\" y2=\"14\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"4\" y1=\"26\" x2=\"36\" y2=\"26\" stroke=\"black\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n pyramid: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"20,4 36,36 4,36\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\" />\n <line x1=\"15\" y1=\"12\" x2=\"25\" y2=\"12\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"11\" y1=\"20\" x2=\"28\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"7\" y1=\"28\" x2=\"32\" y2=\"28\" stroke=\"black\" strokeWidth=\"2\" />\n </svg>\n ),\n circleArrow: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n <line x1=\"20\" y1=\"6\" x2=\"20\" y2=\"0\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"18,2 22,2 20,0\" fill=\"black\"/>\n </svg>\n ),\n\n table3x3LeftMerge: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"4\" x2=\"14\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"26\" y1=\"4\" x2=\"26\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"16\" x2=\"36\" y2=\"16\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"28\" x2=\"36\" y2=\"28\" stroke=\"black\" strokeWidth=\"2\"/>\n </svg>\n ),\n};\n","export default \"data:image/svg+xml,%3csvg%20width='50'%20height='50'%20viewBox='0%200%2050%2050'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.5H47C47.8284%201.5%2048.5%202.17157%2048.5%203V47C48.5%2047.8284%2047.8284%2048.5%2047%2048.5H3C2.17157%2048.5%201.5%2047.8284%201.5%2047V3C1.5%202.17157%202.17157%201.5%203%201.5Z'%20stroke='black'%20stroke-width='3'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='50'%20height='50'%20viewBox='0%200%2050%2050'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.5H47C47.8284%201.5%2048.5%202.17157%2048.5%203V47C48.5%2047.8284%2047.8284%2048.5%2047%2048.5H3C2.17157%2048.5%201.5%2047.8284%201.5%2047V3C1.5%202.17157%202.17157%201.5%203%201.5Z'%20stroke='%230000FF'%20stroke-width='3'/%3e%3c/svg%3e\"","// ShapeToolbar.jsx\nimport React, { useState, useRef, useEffect } from 'react';\nimport { SHAPES } from '../features/shape/constants.jsx';\nimport { SHAPE_ICONS } from \"./shapeIcons.jsx\";\nimport { DND_SHAPE } from '../features/board/constants.js';\nimport shapeAdd from '../assets/shape_add.svg';\nimport shapeAddActive from '../assets/shape_add_active.svg';\nimport '../styles/stickerPalette.css';\n\nexport const ShapeToolbar = () => {\n const [shapeOpen, setShapeOpen] = useState(false);\n const wrapperRef = useRef(null);\n\n const toggleShape = (e) => {\n e.stopPropagation();\n setShapeOpen((v) => !v);\n };\n\n useEffect(() => {\n if (!shapeOpen) return;\n const handler = (e) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\n setShapeOpen(false);\n }\n };\n window.addEventListener('pointerdown', handler);\n return () => window.removeEventListener('pointerdown', handler);\n }, [shapeOpen]);\n\n const onShapeDragStart = (shape) => (e) => {\n e.stopPropagation();\n e.dataTransfer.setData(DND_SHAPE, JSON.stringify({ shapeId: shape.id }));\n e.dataTransfer.effectAllowed = 'copy';\n };\n\n return (\n <div className=\"left-toolbar-container dragHandle__custom\" ref={wrapperRef} onClick={(e) => e.stopPropagation()}>\n <div className={`toolbar-card ${shapeOpen ? 'toolbar-card--open' : ''}`}>\n <button onClick={toggleShape} className={`toolbar-btn toolbar-btn--icon toolbar-btn--shape ${shapeOpen ? 'toolbar-btn--active' : ''}`}>\n <div className={`toolbar-shape-plate ${shapeOpen ? 'toolbar-shape-plate--active' : ''}`}>\n <img src={shapeOpen ? shapeAddActive : shapeAdd} alt=\"Фигуры\" draggable={false} />\n </div>\n </button>\n </div>\n {shapeOpen && (\n <div className=\"palette-wrapper\" onClick={(e) => e.stopPropagation()}>\n <div className=\"shape-panel\">\n <div className=\"shape-grid\">\n {SHAPES.map((shape) => (\n <button\n key={shape.id}\n className=\"shape-item\"\n draggable\n onDragStart={onShapeDragStart(shape)}\n title={shape.name}\n >\n {SHAPE_ICONS[shape.id]}\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};","import { ShapeNode } from '../ui/ShapeNode.jsx'\n\nexport const shapeNodeTypes = {\n shape: ShapeNode,\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ShapeToolbar } from '../components/ShapeToolbar.jsx'\nimport { Board } from '../features/board/ui/Board.jsx'\nimport { useStickersStore } from '../entities/stickers/model/useStickersStore.js'\nimport { shapesApi } from '../shared/api/shapesApi.js'\nimport { shapeNodeTypes } from '../features/shape/public/shapeNodeTypes.js'\n\nconst SafeFallbackWidget = ({ children }) => <div>{children}</div>\n\n/**\n * @typedef {import('@xyflow/react').NodeProps} NodeProps\n * @typedef {Record<string, React.ComponentType<NodeProps>>} NodeTypes\n */\n\n/**\n * @param {{ nodeTypes?: NodeTypes }} props\n */\nexport const ShapeBoardWidget = ({ nodeTypes }) => {\n const setStickers = useStickersStore((state) => state.setStickers)\n const boardRef = useRef(null)\n const [WidgetComp, setWidgetComp] = useState(() => SafeFallbackWidget)\n\n const mergedNodeTypes = {\n ...shapeNodeTypes,\n ...(nodeTypes || {}),\n }\n\n useEffect(() => {\n const loadBoard = async () => {\n try {\n const [allShapes, boardShapes] = await Promise.all([\n shapesApi.getAll(),\n shapesApi.getBoard(),\n ])\n\n const shapeKeyByDbId = new Map(allShapes.map((x) => [String(x.id), x.shapeId]))\n\n let x = 30\n let y = 30\n const items = []\n\n for (const s of boardShapes) {\n const w = s.width ?? 140\n const h = s.height ?? 140\n const r = s.rotation ?? 0\n\n const shapeKey = shapeKeyByDbId.get(String(s.shapeId)) ?? 'square'\n\n items.push({\n id: s.id,\n stickerId: s.id,\n type: 'shape',\n shapeId: shapeKey,\n shapeDbId: s.shapeId,\n x,\n y,\n width: w,\n height: h,\n rotation: r,\n zIndex: 1,\n fill: 'transparent',\n stroke: '#000',\n })\n\n x += 24\n y += 24\n }\n\n setStickers(items)\n } catch (e) {\n console.warn('Не удалось загрузить доску для фигур:', e)\n }\n }\n\n loadBoard()\n }, [setStickers])\n\n useEffect(() => {\n let mounted = true\n\n import('@xyflow/react')\n .then((mod) => {\n if (!mounted) {\n return\n }\n\n const candidate =\n (mod && (mod.Widget || mod.default || mod?.widget || mod?.XyflowWidget)) ?? null\n\n if (typeof candidate === 'function' || React.isValidElement(candidate)) {\n setWidgetComp(() => candidate)\n } else {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n .catch(() => {\n if (mounted) {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n\n return () => {\n mounted = false\n }\n }, [])\n\n const Wrapper = WidgetComp || SafeFallbackWidget\n\n return (\n <Wrapper>\n <div className=\"relative flex h-screen w-screen bg-gray-100\">\n <ShapeToolbar />\n <Board ref={boardRef} nodeTypes={mergedNodeTypes} />\n </div>\n </Wrapper>\n )\n}\n"],"names":["SHAPE_ICONS","jsx","jsxs","shapeAdd","shapeAddActive","ShapeToolbar","shapeOpen","setShapeOpen","useState","wrapperRef","useRef","toggleShape","e","v","useEffect","handler","onShapeDragStart","shape","DND_SHAPE","SHAPES","shapeNodeTypes","ShapeNode","SafeFallbackWidget","children","ShapeBoardWidget","nodeTypes","setStickers","useStickersStore","state","boardRef","WidgetComp","setWidgetComp","mergedNodeTypes","allShapes","boardShapes","shapesApi","shapeKeyByDbId","x","y","items","s","w","h","r","shapeKey","mounted","mod","candidate","React","Wrapper","Board"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var f=Object.create;var u=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty;var N=(e,i,o,h)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of W(i))!B.call(e,r)&&r!==o&&u(e,r,{get:()=>i[r],enumerable:!(h=v(i,r))||h.enumerable});return e};var C=(e,i,o)=>(o=e!=null?f(S(e)):{},N(i||!e||!e.__esModule?u(o,"default",{value:e,enumerable:!0}):o,e));const t=require("./Board-jFbJOEpy.js"),a=require("react"),A={square:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",children:t.jsxRuntimeExports.jsx("rect",{x:"4",y:"4",width:"32",height:"32",stroke:"black",fill:"none",strokeWidth:"2"})}),circle:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",children:t.jsxRuntimeExports.jsx("circle",{cx:"20",cy:"20",r:"14",stroke:"black",fill:"none",strokeWidth:"2"})}),triangle:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",children:t.jsxRuntimeExports.jsx("polygon",{points:"20,6 34,34 6,34",stroke:"black",fill:"none",strokeWidth:"2"})}),star:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",children:t.jsxRuntimeExports.jsx("polygon",{points:"20,4 25,16 38,16 27,24 32,36 20,28 8,36 13,24 2,16 15,16",stroke:"black",fill:"none",strokeWidth:"2"})}),stick:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",children:t.jsxRuntimeExports.jsx("rect",{x:"16",y:"4",width:"8",height:"32",stroke:"black",fill:"none",strokeWidth:"2"})}),line:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",children:t.jsxRuntimeExports.jsx("line",{x1:"4",y1:"20",x2:"36",y2:"20",stroke:"black",strokeWidth:"2"})}),arrow:t.jsxRuntimeExports.jsxs("svg",{width:"40",height:"40",children:[t.jsxRuntimeExports.jsx("line",{x1:"4",y1:"20",x2:"30",y2:"20",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("polygon",{points:"30,14 38,20 30,26",fill:"black"})]}),dblarrow:t.jsxRuntimeExports.jsxs("svg",{width:"40",height:"40",children:[t.jsxRuntimeExports.jsx("polygon",{points:"4,20 12,14 12,26",fill:"black"}),t.jsxRuntimeExports.jsx("line",{x1:"12",y1:"20",x2:"28",y2:"20",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("polygon",{points:"28,14 36,20 28,26",fill:"black"})]}),parallelogram:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",viewBox:"0 0 40 40",children:t.jsxRuntimeExports.jsx("polygon",{points:"8,8 34,8 26,32 0,32",stroke:"black",fill:"none",strokeWidth:"2"})}),roundedRect:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",viewBox:"0 0 40 40",children:t.jsxRuntimeExports.jsx("rect",{x:"6",y:"10",width:"28",height:"20",rx:"4",ry:"4",stroke:"black",fill:"none",strokeWidth:"2"})}),capsule:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",viewBox:"0 0 40 40",children:t.jsxRuntimeExports.jsx("rect",{x:"6",y:"14",width:"28",height:"12",rx:"6",ry:"6",stroke:"black",fill:"none",strokeWidth:"2"})}),pentagon:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",viewBox:"0 0 40 40",children:t.jsxRuntimeExports.jsx("polygon",{points:"20,6 34,15 28,32 12,32 6,15",stroke:"black",fill:"none",strokeWidth:"2"})}),chevron:t.jsxRuntimeExports.jsx("svg",{width:"40",height:"40",viewBox:"0 0 100 100",children:t.jsxRuntimeExports.jsx("polyline",{points:"0,0 50,100 100,0",fill:"none",stroke:"black",strokeWidth:"5"})}),table3x3:t.jsxRuntimeExports.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 40 40",children:[t.jsxRuntimeExports.jsx("rect",{x:"4",y:"4",width:"32",height:"32",stroke:"black",fill:"none",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"14",y1:"4",x2:"14",y2:"36",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"26",y1:"4",x2:"26",y2:"36",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"4",y1:"14",x2:"36",y2:"14",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"4",y1:"26",x2:"36",y2:"26",stroke:"black",strokeWidth:"2"})]}),pyramid:t.jsxRuntimeExports.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 40 40",children:[t.jsxRuntimeExports.jsx("polygon",{points:"20,4 36,36 4,36",stroke:"black",fill:"none",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"15",y1:"12",x2:"25",y2:"12",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"11",y1:"20",x2:"28",y2:"20",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"7",y1:"28",x2:"32",y2:"28",stroke:"black",strokeWidth:"2"})]}),circleArrow:t.jsxRuntimeExports.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 40 40",children:[t.jsxRuntimeExports.jsx("circle",{cx:"20",cy:"20",r:"14",stroke:"black",fill:"none",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"20",y1:"6",x2:"20",y2:"0",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("polygon",{points:"18,2 22,2 20,0",fill:"black"})]}),table3x3LeftMerge:t.jsxRuntimeExports.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 40 40",children:[t.jsxRuntimeExports.jsx("rect",{x:"4",y:"4",width:"32",height:"32",stroke:"black",fill:"none",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"14",y1:"4",x2:"14",y2:"36",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"26",y1:"4",x2:"26",y2:"36",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"14",y1:"16",x2:"36",y2:"16",stroke:"black",strokeWidth:"2"}),t.jsxRuntimeExports.jsx("line",{x1:"14",y1:"28",x2:"36",y2:"28",stroke:"black",strokeWidth:"2"})]})},I="data:image/svg+xml,%3csvg%20width='50'%20height='50'%20viewBox='0%200%2050%2050'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.5H47C47.8284%201.5%2048.5%202.17157%2048.5%203V47C48.5%2047.8284%2047.8284%2048.5%2047%2048.5H3C2.17157%2048.5%201.5%2047.8284%201.5%2047V3C1.5%202.17157%202.17157%201.5%203%201.5Z'%20stroke='black'%20stroke-width='3'/%3e%3c/svg%3e",H="data:image/svg+xml,%3csvg%20width='50'%20height='50'%20viewBox='0%200%2050%2050'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.5H47C47.8284%201.5%2048.5%202.17157%2048.5%203V47C48.5%2047.8284%2047.8284%2048.5%2047%2048.5H3C2.17157%2048.5%201.5%2047.8284%201.5%2047V3C1.5%202.17157%202.17157%201.5%203%201.5Z'%20stroke='%230000FF'%20stroke-width='3'/%3e%3c/svg%3e",P=()=>{const[e,i]=a.useState(!1),o=a.useRef(null),h=s=>{s.stopPropagation(),i(x=>!x)};a.useEffect(()=>{if(!e)return;const s=x=>{o.current&&!o.current.contains(x.target)&&i(!1)};return window.addEventListener("pointerdown",s),()=>window.removeEventListener("pointerdown",s)},[e]);const r=s=>x=>{x.stopPropagation(),x.dataTransfer.setData(t.DND_SHAPE,JSON.stringify({shapeId:s.id})),x.dataTransfer.effectAllowed="copy"};return t.jsxRuntimeExports.jsxs("div",{className:"left-toolbar-container dragHandle__custom",ref:o,onClick:s=>s.stopPropagation(),children:[t.jsxRuntimeExports.jsx("div",{className:`toolbar-card ${e?"toolbar-card--open":""}`,children:t.jsxRuntimeExports.jsx("button",{onClick:h,className:`toolbar-btn toolbar-btn--icon toolbar-btn--shape ${e?"toolbar-btn--active":""}`,children:t.jsxRuntimeExports.jsx("div",{className:`toolbar-shape-plate ${e?"toolbar-shape-plate--active":""}`,children:t.jsxRuntimeExports.jsx("img",{src:e?H:I,alt:"Фигуры",draggable:!1})})})}),e&&t.jsxRuntimeExports.jsx("div",{className:"palette-wrapper",onClick:s=>s.stopPropagation(),children:t.jsxRuntimeExports.jsx("div",{className:"shape-panel",children:t.jsxRuntimeExports.jsx("div",{className:"shape-grid",children:t.SHAPES.map(s=>t.jsxRuntimeExports.jsx("button",{className:"shape-item",draggable:!0,onDragStart:r(s),title:s.name,children:A[s.id]},s.id))})})})]})},m={shape:t.ShapeNode},p=({children:e})=>t.jsxRuntimeExports.jsx("div",{children:e}),D=({nodeTypes:e})=>{const i=t.useStickersStore(c=>c.setStickers),o=a.useRef(null),[h,r]=a.useState(()=>p),s={...m,...e||{}};a.useEffect(()=>{(async()=>{try{const[l,d]=await Promise.all([t.shapesApi.getAll(),t.shapesApi.getBoard()]),E=new Map(l.map(n=>[String(n.id),n.shapeId]));let j=30,k=30;const g=[];for(const n of d){const R=n.width??140,w=n.height??140,y=n.rotation??0,b=E.get(String(n.shapeId))??"square";g.push({id:n.id,stickerId:n.id,type:"shape",shapeId:b,shapeDbId:n.shapeId,x:j,y:k,width:R,height:w,rotation:y,zIndex:1,fill:"transparent",stroke:"#000"}),j+=24,k+=24}i(g)}catch(l){console.warn("Не удалось загрузить доску для фигур:",l)}})()},[i]),a.useEffect(()=>{let c=!0;return import("@xyflow/react").then(l=>{if(!c)return;const d=(l&&(l.Widget||l.default||l?.widget||l?.XyflowWidget))??null;typeof d=="function"||a.isValidElement(d)?r(()=>d):r(()=>p)}).catch(()=>{c&&r(()=>p)}),()=>{c=!1}},[]);const x=h||p;return t.jsxRuntimeExports.jsx(x,{children:t.jsxRuntimeExports.jsxs("div",{className:"relative flex h-screen w-screen bg-gray-100",children:[t.jsxRuntimeExports.jsx(P,{}),t.jsxRuntimeExports.jsx(t.Board,{ref:o,nodeTypes:s})]})})};exports.ShapeBoardWidget=D;exports.shapeNodeTypes=m;
|
|
2
|
+
//# sourceMappingURL=ShapeBoardWidget-TpOdsGEn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShapeBoardWidget-TpOdsGEn.js","sources":["../../src/components/shapeIcons.jsx","../../src/assets/shape_add.svg","../../src/assets/shape_add_active.svg","../../src/components/ShapeToolbar.jsx","../../src/features/shape/public/shapeNodeTypes.js","../../src/widgets/ShapeBoardWidget.jsx"],"sourcesContent":["import React from \"react\";\n\nexport const SHAPE_ICONS = {\n square: (\n <svg width=\"40\" height=\"40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n circle: (\n <svg width=\"40\" height=\"40\">\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n triangle: (\n <svg width=\"40\" height=\"40\">\n <polygon points=\"20,6 34,34 6,34\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n star: (\n <svg width=\"40\" height=\"40\">\n <polygon\n points=\"20,4 25,16 38,16 27,24 32,36 20,28 8,36 13,24 2,16 15,16\"\n stroke=\"black\"\n fill=\"none\"\n strokeWidth=\"2\"\n />\n </svg>\n ),\n\n stick: (\n <svg width=\"40\" height=\"40\">\n <rect x=\"16\" y=\"4\" width=\"8\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\" />\n </svg>\n ),\n\n line: (\n <svg width=\"40\" height=\"40\">\n <line x1=\"4\" y1=\"20\" x2=\"36\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\" />\n </svg>\n ),\n\n arrow: (\n <svg width=\"40\" height=\"40\">\n <line x1=\"4\" y1=\"20\" x2=\"30\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"30,14 38,20 30,26\" fill=\"black\"/>\n </svg>\n ),\n\n dblarrow: (\n <svg width=\"40\" height=\"40\">\n <polygon points=\"4,20 12,14 12,26\" fill=\"black\"/>\n <line x1=\"12\" y1=\"20\" x2=\"28\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"28,14 36,20 28,26\" fill=\"black\"/>\n </svg>\n ),\n\n parallelogram: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"8,8 34,8 26,32 0,32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n roundedRect: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"6\" y=\"10\" width=\"28\" height=\"20\" rx=\"4\" ry=\"4\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n capsule: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"6\" y=\"14\" width=\"28\" height=\"12\" rx=\"6\" ry=\"6\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n pentagon: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"20,6 34,15 28,32 12,32 6,15\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n chevron: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 100 100\">\n <polyline\n points=\"0,0 50,100 100,0\"\n fill=\"none\"\n stroke=\"black\"\n strokeWidth=\"5\"\n />\n </svg>\n ),\n table3x3: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n\n <line x1=\"14\" y1=\"4\" x2=\"14\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"26\" y1=\"4\" x2=\"26\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n\n <line x1=\"4\" y1=\"14\" x2=\"36\" y2=\"14\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"4\" y1=\"26\" x2=\"36\" y2=\"26\" stroke=\"black\" strokeWidth=\"2\"/>\n </svg>\n ),\n\n pyramid: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <polygon points=\"20,4 36,36 4,36\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\" />\n <line x1=\"15\" y1=\"12\" x2=\"25\" y2=\"12\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"11\" y1=\"20\" x2=\"28\" y2=\"20\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"7\" y1=\"28\" x2=\"32\" y2=\"28\" stroke=\"black\" strokeWidth=\"2\" />\n </svg>\n ),\n circleArrow: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n <line x1=\"20\" y1=\"6\" x2=\"20\" y2=\"0\" stroke=\"black\" strokeWidth=\"2\"/>\n <polygon points=\"18,2 22,2 20,0\" fill=\"black\"/>\n </svg>\n ),\n\n table3x3LeftMerge: (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\n <rect x=\"4\" y=\"4\" width=\"32\" height=\"32\" stroke=\"black\" fill=\"none\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"4\" x2=\"14\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"26\" y1=\"4\" x2=\"26\" y2=\"36\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"16\" x2=\"36\" y2=\"16\" stroke=\"black\" strokeWidth=\"2\"/>\n <line x1=\"14\" y1=\"28\" x2=\"36\" y2=\"28\" stroke=\"black\" strokeWidth=\"2\"/>\n </svg>\n ),\n};\n","export default \"data:image/svg+xml,%3csvg%20width='50'%20height='50'%20viewBox='0%200%2050%2050'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.5H47C47.8284%201.5%2048.5%202.17157%2048.5%203V47C48.5%2047.8284%2047.8284%2048.5%2047%2048.5H3C2.17157%2048.5%201.5%2047.8284%201.5%2047V3C1.5%202.17157%202.17157%201.5%203%201.5Z'%20stroke='black'%20stroke-width='3'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='50'%20height='50'%20viewBox='0%200%2050%2050'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.5H47C47.8284%201.5%2048.5%202.17157%2048.5%203V47C48.5%2047.8284%2047.8284%2048.5%2047%2048.5H3C2.17157%2048.5%201.5%2047.8284%201.5%2047V3C1.5%202.17157%202.17157%201.5%203%201.5Z'%20stroke='%230000FF'%20stroke-width='3'/%3e%3c/svg%3e\"","// ShapeToolbar.jsx\nimport React, { useState, useRef, useEffect } from 'react';\nimport { SHAPES } from '../features/shape/constants.jsx';\nimport { SHAPE_ICONS } from \"./shapeIcons.jsx\";\nimport { DND_SHAPE } from '../features/board/constants.js';\nimport shapeAdd from '../assets/shape_add.svg';\nimport shapeAddActive from '../assets/shape_add_active.svg';\nimport '../styles/stickerPalette.css';\n\nexport const ShapeToolbar = () => {\n const [shapeOpen, setShapeOpen] = useState(false);\n const wrapperRef = useRef(null);\n\n const toggleShape = (e) => {\n e.stopPropagation();\n setShapeOpen((v) => !v);\n };\n\n useEffect(() => {\n if (!shapeOpen) return;\n const handler = (e) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\n setShapeOpen(false);\n }\n };\n window.addEventListener('pointerdown', handler);\n return () => window.removeEventListener('pointerdown', handler);\n }, [shapeOpen]);\n\n const onShapeDragStart = (shape) => (e) => {\n e.stopPropagation();\n e.dataTransfer.setData(DND_SHAPE, JSON.stringify({ shapeId: shape.id }));\n e.dataTransfer.effectAllowed = 'copy';\n };\n\n return (\n <div className=\"left-toolbar-container dragHandle__custom\" ref={wrapperRef} onClick={(e) => e.stopPropagation()}>\n <div className={`toolbar-card ${shapeOpen ? 'toolbar-card--open' : ''}`}>\n <button onClick={toggleShape} className={`toolbar-btn toolbar-btn--icon toolbar-btn--shape ${shapeOpen ? 'toolbar-btn--active' : ''}`}>\n <div className={`toolbar-shape-plate ${shapeOpen ? 'toolbar-shape-plate--active' : ''}`}>\n <img src={shapeOpen ? shapeAddActive : shapeAdd} alt=\"Фигуры\" draggable={false} />\n </div>\n </button>\n </div>\n {shapeOpen && (\n <div className=\"palette-wrapper\" onClick={(e) => e.stopPropagation()}>\n <div className=\"shape-panel\">\n <div className=\"shape-grid\">\n {SHAPES.map((shape) => (\n <button\n key={shape.id}\n className=\"shape-item\"\n draggable\n onDragStart={onShapeDragStart(shape)}\n title={shape.name}\n >\n {SHAPE_ICONS[shape.id]}\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};","import { ShapeNode } from '../ui/ShapeNode.jsx'\n\nexport const shapeNodeTypes = {\n shape: ShapeNode,\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ShapeToolbar } from '../components/ShapeToolbar.jsx'\nimport { Board } from '../features/board/ui/Board.jsx'\nimport { useStickersStore } from '../entities/stickers/model/useStickersStore.js'\nimport { shapesApi } from '../shared/api/shapesApi.js'\nimport { shapeNodeTypes } from '../features/shape/public/shapeNodeTypes.js'\n\nconst SafeFallbackWidget = ({ children }) => <div>{children}</div>\n\n/**\n * @typedef {import('@xyflow/react').NodeProps} NodeProps\n * @typedef {Record<string, React.ComponentType<NodeProps>>} NodeTypes\n */\n\n/**\n * @param {{ nodeTypes?: NodeTypes }} props\n */\nexport const ShapeBoardWidget = ({ nodeTypes }) => {\n const setStickers = useStickersStore((state) => state.setStickers)\n const boardRef = useRef(null)\n const [WidgetComp, setWidgetComp] = useState(() => SafeFallbackWidget)\n\n const mergedNodeTypes = {\n ...shapeNodeTypes,\n ...(nodeTypes || {}),\n }\n\n useEffect(() => {\n const loadBoard = async () => {\n try {\n const [allShapes, boardShapes] = await Promise.all([\n shapesApi.getAll(),\n shapesApi.getBoard(),\n ])\n\n const shapeKeyByDbId = new Map(allShapes.map((x) => [String(x.id), x.shapeId]))\n\n let x = 30\n let y = 30\n const items = []\n\n for (const s of boardShapes) {\n const w = s.width ?? 140\n const h = s.height ?? 140\n const r = s.rotation ?? 0\n\n const shapeKey = shapeKeyByDbId.get(String(s.shapeId)) ?? 'square'\n\n items.push({\n id: s.id,\n stickerId: s.id,\n type: 'shape',\n shapeId: shapeKey,\n shapeDbId: s.shapeId,\n x,\n y,\n width: w,\n height: h,\n rotation: r,\n zIndex: 1,\n fill: 'transparent',\n stroke: '#000',\n })\n\n x += 24\n y += 24\n }\n\n setStickers(items)\n } catch (e) {\n console.warn('Не удалось загрузить доску для фигур:', e)\n }\n }\n\n loadBoard()\n }, [setStickers])\n\n useEffect(() => {\n let mounted = true\n\n import('@xyflow/react')\n .then((mod) => {\n if (!mounted) {\n return\n }\n\n const candidate =\n (mod && (mod.Widget || mod.default || mod?.widget || mod?.XyflowWidget)) ?? null\n\n if (typeof candidate === 'function' || React.isValidElement(candidate)) {\n setWidgetComp(() => candidate)\n } else {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n .catch(() => {\n if (mounted) {\n setWidgetComp(() => SafeFallbackWidget)\n }\n })\n\n return () => {\n mounted = false\n }\n }, [])\n\n const Wrapper = WidgetComp || SafeFallbackWidget\n\n return (\n <Wrapper>\n <div className=\"relative flex h-screen w-screen bg-gray-100\">\n <ShapeToolbar />\n <Board ref={boardRef} nodeTypes={mergedNodeTypes} />\n </div>\n </Wrapper>\n )\n}\n"],"names":["SHAPE_ICONS","jsx","jsxs","shapeAdd","shapeAddActive","ShapeToolbar","shapeOpen","setShapeOpen","useState","wrapperRef","useRef","toggleShape","e","v","useEffect","handler","onShapeDragStart","shape","DND_SHAPE","SHAPES","shapeNodeTypes","ShapeNode","SafeFallbackWidget","children","ShapeBoardWidget","nodeTypes","setStickers","useStickersStore","state","boardRef","WidgetComp","setWidgetComp","mergedNodeTypes","allShapes","boardShapes","shapesApi","shapeKeyByDbId","x","y","items","s","w","h","r","shapeKey","mounted","mod","candidate","React","Wrapper","Board"],"mappings":"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"}
|
package/dist/emoji/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/Board-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/Board-jFbJOEpy.js");const e=require("../chunks/EmojiBoardWidget-DU57KxVP.js");exports.EmojiBoardWidget=e.EmojiBoardWidget;exports.emojiNodeTypes=e.emojiNodeTypes;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/emoji/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../chunks/Board-
|
|
2
|
-
import { E as m, e as r } from "../chunks/EmojiBoardWidget-
|
|
1
|
+
import "../chunks/Board-CpOsQfT6.js";
|
|
2
|
+
import { E as m, e as r } from "../chunks/EmojiBoardWidget-eFGE2g4e.js";
|
|
3
3
|
export {
|
|
4
4
|
m as EmojiBoardWidget,
|
|
5
5
|
r as emojiNodeTypes
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var v=Object.create;var b=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var y=(s,a,c,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let d of S(a))!R.call(s,d)&&d!==c&&b(s,d,{get:()=>a[d],enumerable:!(i=L(a,d))||i.enumerable});return s};var f=(s,a,c)=>(c=s!=null?v(M(s)):{},y(a||!s||!s.__esModule?b(c,"default",{value:s,enumerable:!0}):c,s));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./chunks/Board-wlHU_0oT.cjs"),j=require("./chunks/EmojiBoardWidget-BA5Xt9cs.cjs"),p=require("react"),E=require("./chunks/ShapeBoardWidget-BKEMVbRg.cjs"),F="application/x-integration-note",N=["#FFF79A","#FFD7A6","#FFD1F2","#FD9AE7","#99E5FF","#85B3F9","#B2D0FE","#D6C7FF","#A6FFD6","#68DF8B","#FFFFFF","#262626"],W=({onPick:s})=>{const a=i=>()=>{s&&s(i)},c=i=>d=>{d.stopPropagation();try{d.dataTransfer.setData(F,JSON.stringify({color:i})),d.dataTransfer.effectAllowed="copy"}catch(e){console.warn("Не удалось начать перенос заметки:",e)}};return t.jsxRuntimeExports.jsx("div",{className:"palette-panel--large",role:"dialog","aria-label":"Палитра",children:t.jsxRuntimeExports.jsx("div",{className:"palette-grid",children:N.map(i=>t.jsxRuntimeExports.jsx("button",{type:"button",className:"color-swatch color-swatch--large",title:i,style:{background:i},onClick:a(i),draggable:!0,onDragStart:c(i)},i))})})},B="data:image/svg+xml,%3csvg%20width='58'%20height='53'%20viewBox='0%200%2058%2053'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.5%204.5C1.5%202.84315%202.84315%201.5%204.5%201.5H52.8237C54.4806%201.5%2055.8237%202.84315%2055.8237%204.5V26.2263C55.8237%2040.0334%2044.6308%2051.2263%2030.8237%2051.2263H4.5C2.84315%2051.2263%201.5%2049.8832%201.5%2048.2263V4.5Z'%20stroke='black'%20stroke-width='3'/%3e%3cpath%20d='M35.0601%2031.2097C34.7425%2031.0584%2034.3739%2030.9988%2033.9426%2031.1381L33.7534%2031.2097L33.7524%2031.2107C33.5121%2031.3184%2033.3222%2031.459%2033.2417%2031.6573C33.1549%2031.8715%2033.2259%2032.0712%2033.3187%2032.2156C33.4103%2032.3579%2033.5466%2032.4867%2033.6731%2032.5948C33.7936%2032.6977%2033.9493%2032.8164%2034.0458%2032.896C36.3535%2034.7931%2039.159%2036.2031%2043.164%2036.228L43.163%2036.229C47.4558%2036.378%2051.4539%2036.0058%2054.6019%2034.0582C55.1353%2033.7296%2055.6664%2033.348%2056.0128%2032.9039L56.0118%2032.9029C56.1048%2032.7875%2056.2271%2032.5829%2056.1927%2032.3439C56.1537%2032.0744%2055.9392%2031.8802%2055.6031%2031.7644L55.4249%2031.7188C55.2448%2031.6873%2055.0608%2031.6962%2054.8946%2031.7229C54.6708%2031.7588%2054.4593%2031.8298%2054.2959%2031.903L54.2969%2031.9031C53.9148%2032.0702%2053.565%2032.2641%2053.2255%2032.4511C52.8827%2032.6399%2052.5495%2032.8224%2052.1866%2032.9789L52.1856%2032.9789C48.701%2034.4994%2044.8566%2034.9504%2040.6985%2034.1745L40.6985%2034.1736C38.6283%2033.7916%2037.1913%2032.8572%2035.9052%2031.8179L35.9042%2031.8169C35.6881%2031.6444%2035.3972%2031.3703%2035.0601%2031.2097Z'%20fill='black'%20stroke='black'%20stroke-width='0.5'/%3e%3cpath%20d='M33.3199%2032.0092C33.3711%2031.784%2033.5023%2031.5723%2033.7172%2031.3748L33.7186%2031.3732C33.9351%2031.1771%2034.16%2031.0665%2034.3932%2031.0561C34.6255%2031.0457%2034.8211%2031.1371%2034.9778%2031.2547C35.1328%2031.3711%2035.2665%2031.5255%2035.3799%2031.6731L35.6886%2032.0981C37.637%2034.7374%2038.8375%2037.7048%2037.8721%2041.3534C37.0056%2045.2765%2035.513%2048.7857%2032.1275%2051.0424C31.5557%2051.4251%2030.9218%2051.7831%2030.2602%2051.9579C30.0886%2052.0063%2029.8315%2052.042%2029.586%2051.9604C29.3206%2051.8722%2029.1054%2051.659%2029.0272%2051.288L29.0119%2051.1918C28.9909%2050.9686%2029.0611%2050.7564%2029.156%2050.581C29.2641%2050.3813%2029.4161%2050.208%2029.5556%2050.081C29.8749%2049.7851%2030.2219%2049.5259%2030.5549%2049.2766C30.8073%2049.0875%2031.0527%2048.9034%2031.2845%2048.7058L31.5119%2048.5028L31.5131%2048.5021C34.3886%2045.833%2035.9263%2042.5303%2035.9218%2038.5803L35.9211%2038.5791C35.9245%2036.6231%2035.0456%2035.0563%2033.9747%2033.5785L33.9739%2033.5773C33.9268%2033.5114%2033.8755%2033.4438%2033.821%2033.3711C33.7673%2033.2995%2033.7113%2033.2234%2033.6569%2033.1455C33.5491%2032.9909%2033.4413%2032.8178%2033.3724%2032.6319C33.3026%2032.4439%2033.2691%2032.2329%2033.3199%2032.0092Z'%20fill='black'%20stroke='black'%20stroke-width='0.5'/%3e%3c/svg%3e",Z="data:image/svg+xml,%3csvg%20width='58'%20height='53'%20viewBox='0%200%2058%2053'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.5%204.5C1.5%202.84315%202.84315%201.5%204.5%201.5H52.8237C54.4806%201.5%2055.8237%202.84315%2055.8237%204.5V26.2263C55.8237%2040.0334%2044.6308%2051.2263%2030.8237%2051.2263H4.5C2.84315%2051.2263%201.5%2049.8832%201.5%2048.2263V4.5Z'%20stroke='%230000FF'%20stroke-width='3'/%3e%3cpath%20d='M35.0599%2031.2098C34.7423%2031.0585%2034.3737%2030.9989%2033.9424%2031.1382L33.7532%2031.2097L33.7522%2031.2107C33.5119%2031.3185%2033.3221%2031.459%2033.2415%2031.6573C33.1547%2031.8716%2033.2257%2032.0713%2033.3185%2032.2156C33.4101%2032.3579%2033.5464%2032.4868%2033.6729%2032.5948C33.7935%2032.6977%2033.9491%2032.8165%2034.0457%2032.896C36.3533%2034.7932%2039.1588%2036.2031%2043.1638%2036.2281L43.1628%2036.229C47.4556%2036.3781%2051.4537%2036.0059%2054.6017%2034.0583C55.1351%2033.7297%2055.6662%2033.3481%2056.0126%2032.9039L56.0117%2032.9029C56.1047%2032.7876%2056.2269%2032.5829%2056.1925%2032.344C56.1535%2032.0744%2055.939%2031.8803%2055.603%2031.7645L55.4247%2031.7189C55.2446%2031.6874%2055.0607%2031.6962%2054.8944%2031.7229C54.6706%2031.7589%2054.4592%2031.8298%2054.2957%2031.9031L54.2967%2031.9031C53.9146%2032.0702%2053.5648%2032.2642%2053.2253%2032.4511C52.8825%2032.6399%2052.5493%2032.8225%2052.1864%2032.9789L52.1854%2032.9789C48.7008%2034.4994%2044.8564%2034.9504%2040.6983%2034.1746L40.6984%2034.1736C38.6281%2033.7917%2037.1911%2032.8573%2035.905%2031.818L35.904%2031.817C35.688%2031.6445%2035.397%2031.3704%2035.0599%2031.2098Z'%20fill='%230000FF'%20stroke='%230000FF'%20stroke-width='0.5'/%3e%3cpath%20d='M33.32%2032.0091C33.3712%2031.7839%2033.5024%2031.5722%2033.7173%2031.3747L33.7188%2031.373C33.9352%2031.177%2034.1602%2031.0664%2034.3934%2031.056C34.6256%2031.0456%2034.8213%2031.137%2034.9779%2031.2546C35.1329%2031.371%2035.2666%2031.5254%2035.3801%2031.673L35.6888%2032.098C37.6372%2034.7373%2038.8377%2037.7047%2037.8722%2041.3533C37.0057%2045.2764%2035.5131%2048.7856%2032.1276%2051.0422C31.5558%2051.425%2030.9219%2051.783%2030.2604%2051.9578C30.0887%2052.0062%2029.8316%2052.0419%2029.5861%2051.9603C29.3207%2051.8721%2029.1055%2051.6589%2029.0273%2051.2879L29.012%2051.1917C28.9911%2050.9685%2029.0612%2050.7563%2029.1561%2050.5809C29.2643%2050.3812%2029.4162%2050.2079%2029.5557%2050.0809C29.875%2049.785%2030.222%2049.5258%2030.555%2049.2765C30.8075%2049.0874%2031.0529%2048.9032%2031.2846%2048.7057L31.512%2048.5027L31.5132%2048.502C34.3887%2045.8329%2035.9264%2042.5302%2035.9219%2038.5801L35.9212%2038.579C35.9246%2036.623%2035.0457%2035.0562%2033.9748%2033.5784L33.9741%2033.5772C33.927%2033.5113%2033.8756%2033.4437%2033.8211%2033.371C33.7674%2033.2994%2033.7114%2033.2233%2033.6571%2033.1454C33.5492%2032.9908%2033.4414%2032.8177%2033.3725%2032.6318C33.3028%2032.4437%2033.2692%2032.2328%2033.32%2032.0091Z'%20fill='%230000FF'%20stroke='%230000FF'%20stroke-width='0.5'/%3e%3c/svg%3e",H=({onPick:s})=>{const[a,c]=p.useState(!1),i=p.useRef(null),d=e=>{e.stopPropagation(),c(o=>!o)};return p.useEffect(()=>{if(!a)return;const e=o=>{i.current&&!i.current.contains(o.target)&&c(!1)};return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e)},[a]),t.jsxRuntimeExports.jsxs("div",{className:"left-toolbar-container dragHandle__custom",ref:i,onClick:e=>e.stopPropagation(),children:[t.jsxRuntimeExports.jsx("div",{className:`toolbar-card ${a?"toolbar-card--open":""}`,children:t.jsxRuntimeExports.jsx("button",{onClick:d,className:`toolbar-btn toolbar-btn--icon toolbar-btn--note ${a?"toolbar-btn--active":""}`,children:t.jsxRuntimeExports.jsx("div",{className:`toolbar-note-plate ${a?"toolbar-note-plate--active":""}`,children:t.jsxRuntimeExports.jsx("img",{src:a?Z:B,alt:"Заметки",draggable:!1})})})}),a&&t.jsxRuntimeExports.jsx("div",{className:"palette-wrapper",onClick:e=>e.stopPropagation(),children:t.jsxRuntimeExports.jsx(W,{onPick:e=>{s?.(e),c(!1)}})})]})},x=({children:s})=>t.jsxRuntimeExports.jsx("div",{children:s}),V=()=>{const s=t.useStickersStore(r=>r.addSticker),a=t.useStickersStore(r=>r.setStickers),c=p.useRef(null),[i,d]=p.useState(()=>x);p.useEffect(()=>{(async()=>{try{const n=await t.notesApi.getAll();let h=30,C=30;const k=[];for(const l of n){const u=l.width??t.NOTE_W,m=l.height??t.NOTE_H;k.push({id:l.id,x:h,y:C,color:l.color,width:u,height:m,text:l.content??"",zIndex:1}),h+=24,C+=24}a(k)}catch(n){console.warn("Не удалось загрузить доску для заметок:",n)}})()},[a]),p.useEffect(()=>{let r=!0;return import("@xyflow/react").then(n=>{if(!r)return;const h=(n&&(n.Widget||n.default||n?.widget||n?.XyflowWidget))??null;typeof h=="function"||p.isValidElement(h)?d(()=>h):d(()=>x)}).catch(()=>{r&&d(()=>x)}),()=>{r=!1}},[]);const e=i||x,o=async r=>{try{const n=await t.notesApi.create(r,t.NOTE_W,t.NOTE_H),h=n.width??t.NOTE_W,C=n.height??t.NOTE_H;if(c.current?.addStickerAtCenter){c.current.addStickerAtCenter(r,{id:n.id,text:n.content??"",width:h,height:C});return}s({id:n.id,x:260,y:120,color:r,width:h,height:C,text:n.content??""})}catch(n){console.warn("Не удалось создать заметку:",n)}};return t.jsxRuntimeExports.jsx(e,{children:t.jsxRuntimeExports.jsxs("div",{className:"relative flex h-screen w-screen bg-gray-100",children:[t.jsxRuntimeExports.jsx(H,{onPick:o}),t.jsxRuntimeExports.jsx(t.Board,{ref:c})]})})},A="data:image/svg+xml,%3csvg%20width='52'%20height='51'%20viewBox='0%200%2052%2051'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.5%2049.0548V1.50049'%20stroke='black'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M14.0801%2034.3356L1.5%201.50049'%20stroke='black'%20stroke-width='3'/%3e%3cpath%20d='M14.0801%2034.3356L26.6602%201.50049'%20stroke='black'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M26.6602%201.50049V49.0548'%20stroke='black'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M50%2025.2776C50%2031.5634%2047.7786%2037.5611%2043.8701%2041.9583C40.3263%2045.945%2035.6696%2048.3122%2030.7773%2048.7151L30.7773%201.84009C35.6696%202.243%2040.3263%204.61018%2043.8701%208.59692C47.7786%2012.9941%2050%2018.9918%2050%2025.2776Z'%20stroke='black'%20stroke-width='3'/%3e%3c/svg%3e",I="data:image/svg+xml,%3csvg%20width='52'%20height='51'%20viewBox='0%200%2052%2051'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.5%2049.0548V1.50049'%20stroke='%230000FF'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M14.0801%2034.3356L1.5%201.50049'%20stroke='%230000FF'%20stroke-width='3'/%3e%3cpath%20d='M14.0801%2034.3356L26.6602%201.50049'%20stroke='%230000FF'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M26.6602%201.50049V49.0548'%20stroke='%230000FF'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M50%2025.2776C50%2031.5634%2047.7786%2037.5611%2043.8701%2041.9583C40.3263%2045.945%2035.6696%2048.3122%2030.7773%2048.7151L30.7773%201.84009C35.6696%202.243%2040.3263%204.61018%2043.8701%208.59692C47.7786%2012.9941%2050%2018.9918%2050%2025.2776Z'%20stroke='%230000FF'%20stroke-width='3'/%3e%3c/svg%3e",T=()=>{const[s,a]=p.useState(!1),c=t.useStickersStore(e=>e.addSticker),i=t.useStickersStore(e=>e.topZ),d=async()=>{if(!s){a(!0);try{const e=(i||1)+1,o=await t.markdownApi.create({content:`# Новый Markdown
|
|
1
|
+
"use strict";var v=Object.create;var b=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var y=(s,a,c,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let d of S(a))!R.call(s,d)&&d!==c&&b(s,d,{get:()=>a[d],enumerable:!(i=L(a,d))||i.enumerable});return s};var f=(s,a,c)=>(c=s!=null?v(M(s)):{},y(a||!s||!s.__esModule?b(c,"default",{value:s,enumerable:!0}):c,s));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./chunks/Board-jFbJOEpy.js"),j=require("./chunks/EmojiBoardWidget-DU57KxVP.js"),p=require("react"),E=require("./chunks/ShapeBoardWidget-TpOdsGEn.js"),F="application/x-integration-note",N=["#FFF79A","#FFD7A6","#FFD1F2","#FD9AE7","#99E5FF","#85B3F9","#B2D0FE","#D6C7FF","#A6FFD6","#68DF8B","#FFFFFF","#262626"],W=({onPick:s})=>{const a=i=>()=>{s&&s(i)},c=i=>d=>{d.stopPropagation();try{d.dataTransfer.setData(F,JSON.stringify({color:i})),d.dataTransfer.effectAllowed="copy"}catch(e){console.warn("Не удалось начать перенос заметки:",e)}};return t.jsxRuntimeExports.jsx("div",{className:"palette-panel--large",role:"dialog","aria-label":"Палитра",children:t.jsxRuntimeExports.jsx("div",{className:"palette-grid",children:N.map(i=>t.jsxRuntimeExports.jsx("button",{type:"button",className:"color-swatch color-swatch--large",title:i,style:{background:i},onClick:a(i),draggable:!0,onDragStart:c(i)},i))})})},B="data:image/svg+xml,%3csvg%20width='58'%20height='53'%20viewBox='0%200%2058%2053'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.5%204.5C1.5%202.84315%202.84315%201.5%204.5%201.5H52.8237C54.4806%201.5%2055.8237%202.84315%2055.8237%204.5V26.2263C55.8237%2040.0334%2044.6308%2051.2263%2030.8237%2051.2263H4.5C2.84315%2051.2263%201.5%2049.8832%201.5%2048.2263V4.5Z'%20stroke='black'%20stroke-width='3'/%3e%3cpath%20d='M35.0601%2031.2097C34.7425%2031.0584%2034.3739%2030.9988%2033.9426%2031.1381L33.7534%2031.2097L33.7524%2031.2107C33.5121%2031.3184%2033.3222%2031.459%2033.2417%2031.6573C33.1549%2031.8715%2033.2259%2032.0712%2033.3187%2032.2156C33.4103%2032.3579%2033.5466%2032.4867%2033.6731%2032.5948C33.7936%2032.6977%2033.9493%2032.8164%2034.0458%2032.896C36.3535%2034.7931%2039.159%2036.2031%2043.164%2036.228L43.163%2036.229C47.4558%2036.378%2051.4539%2036.0058%2054.6019%2034.0582C55.1353%2033.7296%2055.6664%2033.348%2056.0128%2032.9039L56.0118%2032.9029C56.1048%2032.7875%2056.2271%2032.5829%2056.1927%2032.3439C56.1537%2032.0744%2055.9392%2031.8802%2055.6031%2031.7644L55.4249%2031.7188C55.2448%2031.6873%2055.0608%2031.6962%2054.8946%2031.7229C54.6708%2031.7588%2054.4593%2031.8298%2054.2959%2031.903L54.2969%2031.9031C53.9148%2032.0702%2053.565%2032.2641%2053.2255%2032.4511C52.8827%2032.6399%2052.5495%2032.8224%2052.1866%2032.9789L52.1856%2032.9789C48.701%2034.4994%2044.8566%2034.9504%2040.6985%2034.1745L40.6985%2034.1736C38.6283%2033.7916%2037.1913%2032.8572%2035.9052%2031.8179L35.9042%2031.8169C35.6881%2031.6444%2035.3972%2031.3703%2035.0601%2031.2097Z'%20fill='black'%20stroke='black'%20stroke-width='0.5'/%3e%3cpath%20d='M33.3199%2032.0092C33.3711%2031.784%2033.5023%2031.5723%2033.7172%2031.3748L33.7186%2031.3732C33.9351%2031.1771%2034.16%2031.0665%2034.3932%2031.0561C34.6255%2031.0457%2034.8211%2031.1371%2034.9778%2031.2547C35.1328%2031.3711%2035.2665%2031.5255%2035.3799%2031.6731L35.6886%2032.0981C37.637%2034.7374%2038.8375%2037.7048%2037.8721%2041.3534C37.0056%2045.2765%2035.513%2048.7857%2032.1275%2051.0424C31.5557%2051.4251%2030.9218%2051.7831%2030.2602%2051.9579C30.0886%2052.0063%2029.8315%2052.042%2029.586%2051.9604C29.3206%2051.8722%2029.1054%2051.659%2029.0272%2051.288L29.0119%2051.1918C28.9909%2050.9686%2029.0611%2050.7564%2029.156%2050.581C29.2641%2050.3813%2029.4161%2050.208%2029.5556%2050.081C29.8749%2049.7851%2030.2219%2049.5259%2030.5549%2049.2766C30.8073%2049.0875%2031.0527%2048.9034%2031.2845%2048.7058L31.5119%2048.5028L31.5131%2048.5021C34.3886%2045.833%2035.9263%2042.5303%2035.9218%2038.5803L35.9211%2038.5791C35.9245%2036.6231%2035.0456%2035.0563%2033.9747%2033.5785L33.9739%2033.5773C33.9268%2033.5114%2033.8755%2033.4438%2033.821%2033.3711C33.7673%2033.2995%2033.7113%2033.2234%2033.6569%2033.1455C33.5491%2032.9909%2033.4413%2032.8178%2033.3724%2032.6319C33.3026%2032.4439%2033.2691%2032.2329%2033.3199%2032.0092Z'%20fill='black'%20stroke='black'%20stroke-width='0.5'/%3e%3c/svg%3e",Z="data:image/svg+xml,%3csvg%20width='58'%20height='53'%20viewBox='0%200%2058%2053'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.5%204.5C1.5%202.84315%202.84315%201.5%204.5%201.5H52.8237C54.4806%201.5%2055.8237%202.84315%2055.8237%204.5V26.2263C55.8237%2040.0334%2044.6308%2051.2263%2030.8237%2051.2263H4.5C2.84315%2051.2263%201.5%2049.8832%201.5%2048.2263V4.5Z'%20stroke='%230000FF'%20stroke-width='3'/%3e%3cpath%20d='M35.0599%2031.2098C34.7423%2031.0585%2034.3737%2030.9989%2033.9424%2031.1382L33.7532%2031.2097L33.7522%2031.2107C33.5119%2031.3185%2033.3221%2031.459%2033.2415%2031.6573C33.1547%2031.8716%2033.2257%2032.0713%2033.3185%2032.2156C33.4101%2032.3579%2033.5464%2032.4868%2033.6729%2032.5948C33.7935%2032.6977%2033.9491%2032.8165%2034.0457%2032.896C36.3533%2034.7932%2039.1588%2036.2031%2043.1638%2036.2281L43.1628%2036.229C47.4556%2036.3781%2051.4537%2036.0059%2054.6017%2034.0583C55.1351%2033.7297%2055.6662%2033.3481%2056.0126%2032.9039L56.0117%2032.9029C56.1047%2032.7876%2056.2269%2032.5829%2056.1925%2032.344C56.1535%2032.0744%2055.939%2031.8803%2055.603%2031.7645L55.4247%2031.7189C55.2446%2031.6874%2055.0607%2031.6962%2054.8944%2031.7229C54.6706%2031.7589%2054.4592%2031.8298%2054.2957%2031.9031L54.2967%2031.9031C53.9146%2032.0702%2053.5648%2032.2642%2053.2253%2032.4511C52.8825%2032.6399%2052.5493%2032.8225%2052.1864%2032.9789L52.1854%2032.9789C48.7008%2034.4994%2044.8564%2034.9504%2040.6983%2034.1746L40.6984%2034.1736C38.6281%2033.7917%2037.1911%2032.8573%2035.905%2031.818L35.904%2031.817C35.688%2031.6445%2035.397%2031.3704%2035.0599%2031.2098Z'%20fill='%230000FF'%20stroke='%230000FF'%20stroke-width='0.5'/%3e%3cpath%20d='M33.32%2032.0091C33.3712%2031.7839%2033.5024%2031.5722%2033.7173%2031.3747L33.7188%2031.373C33.9352%2031.177%2034.1602%2031.0664%2034.3934%2031.056C34.6256%2031.0456%2034.8213%2031.137%2034.9779%2031.2546C35.1329%2031.371%2035.2666%2031.5254%2035.3801%2031.673L35.6888%2032.098C37.6372%2034.7373%2038.8377%2037.7047%2037.8722%2041.3533C37.0057%2045.2764%2035.5131%2048.7856%2032.1276%2051.0422C31.5558%2051.425%2030.9219%2051.783%2030.2604%2051.9578C30.0887%2052.0062%2029.8316%2052.0419%2029.5861%2051.9603C29.3207%2051.8721%2029.1055%2051.6589%2029.0273%2051.2879L29.012%2051.1917C28.9911%2050.9685%2029.0612%2050.7563%2029.1561%2050.5809C29.2643%2050.3812%2029.4162%2050.2079%2029.5557%2050.0809C29.875%2049.785%2030.222%2049.5258%2030.555%2049.2765C30.8075%2049.0874%2031.0529%2048.9032%2031.2846%2048.7057L31.512%2048.5027L31.5132%2048.502C34.3887%2045.8329%2035.9264%2042.5302%2035.9219%2038.5801L35.9212%2038.579C35.9246%2036.623%2035.0457%2035.0562%2033.9748%2033.5784L33.9741%2033.5772C33.927%2033.5113%2033.8756%2033.4437%2033.8211%2033.371C33.7674%2033.2994%2033.7114%2033.2233%2033.6571%2033.1454C33.5492%2032.9908%2033.4414%2032.8177%2033.3725%2032.6318C33.3028%2032.4437%2033.2692%2032.2328%2033.32%2032.0091Z'%20fill='%230000FF'%20stroke='%230000FF'%20stroke-width='0.5'/%3e%3c/svg%3e",H=({onPick:s})=>{const[a,c]=p.useState(!1),i=p.useRef(null),d=e=>{e.stopPropagation(),c(o=>!o)};return p.useEffect(()=>{if(!a)return;const e=o=>{i.current&&!i.current.contains(o.target)&&c(!1)};return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e)},[a]),t.jsxRuntimeExports.jsxs("div",{className:"left-toolbar-container dragHandle__custom",ref:i,onClick:e=>e.stopPropagation(),children:[t.jsxRuntimeExports.jsx("div",{className:`toolbar-card ${a?"toolbar-card--open":""}`,children:t.jsxRuntimeExports.jsx("button",{onClick:d,className:`toolbar-btn toolbar-btn--icon toolbar-btn--note ${a?"toolbar-btn--active":""}`,children:t.jsxRuntimeExports.jsx("div",{className:`toolbar-note-plate ${a?"toolbar-note-plate--active":""}`,children:t.jsxRuntimeExports.jsx("img",{src:a?Z:B,alt:"Заметки",draggable:!1})})})}),a&&t.jsxRuntimeExports.jsx("div",{className:"palette-wrapper",onClick:e=>e.stopPropagation(),children:t.jsxRuntimeExports.jsx(W,{onPick:e=>{s?.(e),c(!1)}})})]})},x=({children:s})=>t.jsxRuntimeExports.jsx("div",{children:s}),V=()=>{const s=t.useStickersStore(r=>r.addSticker),a=t.useStickersStore(r=>r.setStickers),c=p.useRef(null),[i,d]=p.useState(()=>x);p.useEffect(()=>{(async()=>{try{const n=await t.notesApi.getAll();let h=30,C=30;const k=[];for(const l of n){const u=l.width??t.NOTE_W,m=l.height??t.NOTE_H;k.push({id:l.id,x:h,y:C,color:l.color,width:u,height:m,text:l.content??"",zIndex:1}),h+=24,C+=24}a(k)}catch(n){console.warn("Не удалось загрузить доску для заметок:",n)}})()},[a]),p.useEffect(()=>{let r=!0;return import("@xyflow/react").then(n=>{if(!r)return;const h=(n&&(n.Widget||n.default||n?.widget||n?.XyflowWidget))??null;typeof h=="function"||p.isValidElement(h)?d(()=>h):d(()=>x)}).catch(()=>{r&&d(()=>x)}),()=>{r=!1}},[]);const e=i||x,o=async r=>{try{const n=await t.notesApi.create(r,t.NOTE_W,t.NOTE_H),h=n.width??t.NOTE_W,C=n.height??t.NOTE_H;if(c.current?.addStickerAtCenter){c.current.addStickerAtCenter(r,{id:n.id,text:n.content??"",width:h,height:C});return}s({id:n.id,x:260,y:120,color:r,width:h,height:C,text:n.content??""})}catch(n){console.warn("Не удалось создать заметку:",n)}};return t.jsxRuntimeExports.jsx(e,{children:t.jsxRuntimeExports.jsxs("div",{className:"relative flex h-screen w-screen bg-gray-100",children:[t.jsxRuntimeExports.jsx(H,{onPick:o}),t.jsxRuntimeExports.jsx(t.Board,{ref:c})]})})},A="data:image/svg+xml,%3csvg%20width='52'%20height='51'%20viewBox='0%200%2052%2051'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.5%2049.0548V1.50049'%20stroke='black'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M14.0801%2034.3356L1.5%201.50049'%20stroke='black'%20stroke-width='3'/%3e%3cpath%20d='M14.0801%2034.3356L26.6602%201.50049'%20stroke='black'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M26.6602%201.50049V49.0548'%20stroke='black'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M50%2025.2776C50%2031.5634%2047.7786%2037.5611%2043.8701%2041.9583C40.3263%2045.945%2035.6696%2048.3122%2030.7773%2048.7151L30.7773%201.84009C35.6696%202.243%2040.3263%204.61018%2043.8701%208.59692C47.7786%2012.9941%2050%2018.9918%2050%2025.2776Z'%20stroke='black'%20stroke-width='3'/%3e%3c/svg%3e",I="data:image/svg+xml,%3csvg%20width='52'%20height='51'%20viewBox='0%200%2052%2051'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.5%2049.0548V1.50049'%20stroke='%230000FF'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M14.0801%2034.3356L1.5%201.50049'%20stroke='%230000FF'%20stroke-width='3'/%3e%3cpath%20d='M14.0801%2034.3356L26.6602%201.50049'%20stroke='%230000FF'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M26.6602%201.50049V49.0548'%20stroke='%230000FF'%20stroke-width='3'%20stroke-linecap='round'/%3e%3cpath%20d='M50%2025.2776C50%2031.5634%2047.7786%2037.5611%2043.8701%2041.9583C40.3263%2045.945%2035.6696%2048.3122%2030.7773%2048.7151L30.7773%201.84009C35.6696%202.243%2040.3263%204.61018%2043.8701%208.59692C47.7786%2012.9941%2050%2018.9918%2050%2025.2776Z'%20stroke='%230000FF'%20stroke-width='3'/%3e%3c/svg%3e",T=()=>{const[s,a]=p.useState(!1),c=t.useStickersStore(e=>e.addSticker),i=t.useStickersStore(e=>e.topZ),d=async()=>{if(!s){a(!0);try{const e=(i||1)+1,o=await t.markdownApi.create({content:`# Новый Markdown
|
|
2
2
|
|
|
3
3
|
Начните писать здесь...`,width:600,height:400,isEditorVisible:!0}),r=window.innerWidth/2-300,n=window.innerHeight/2-200;c({id:o.id,stickerId:o.markdownId,isEditorVisible:o.isEditorVisible??!0,type:"markdown",x:r,y:n,width:o.width??600,height:o.height??400,text:o.content??"",zIndex:e})}catch(e){console.warn("Не удалось создать markdown блок:",e)}finally{a(!1)}}};return t.jsxRuntimeExports.jsx("div",{className:"left-toolbar-container",onClick:e=>e.stopPropagation(),children:t.jsxRuntimeExports.jsx("div",{className:"toolbar-card",children:t.jsxRuntimeExports.jsx("button",{onClick:d,disabled:s,className:`toolbar-btn toolbar-btn--icon toolbar-btn--markdown ${s?"toolbar-btn--active":""}`.trim(),title:"Добавить Markdown блок",children:t.jsxRuntimeExports.jsx("div",{className:`toolbar-markdown-plate ${s?"toolbar-markdown-plate--active":""}`,children:t.jsxRuntimeExports.jsx("img",{src:s?I:A,alt:"Markdown",draggable:!1})})})})})},w=({children:s})=>t.jsxRuntimeExports.jsx("div",{children:s}),D=()=>{const s=t.useStickersStore(e=>e.setStickers),a=p.useRef(null),[c,i]=p.useState(()=>w);p.useEffect(()=>{(async()=>{try{const o=await t.markdownApi.getBoard();let r=30,n=30;const h=[];for(const C of o){const k=C.width??600,l=C.height??400;h.push({id:C.id,stickerId:C.markdownId,isEditorVisible:C.isEditorVisible??!0,type:"markdown",x:r,y:n,width:k,height:l,text:C.content??"",zIndex:1}),r+=24,n+=24}s(h)}catch(o){console.warn("Не удалось загрузить доску для markdown:",o)}})()},[s]),p.useEffect(()=>{let e=!0;return import("@xyflow/react").then(o=>{if(!e)return;const r=(o&&(o.Widget||o.default||o?.widget||o?.XyflowWidget))??null;typeof r=="function"||p.isValidElement(r)?i(()=>r):i(()=>w)}).catch(()=>{e&&i(()=>w)}),()=>{e=!1}},[]);const d=c||w;return t.jsxRuntimeExports.jsx(d,{children:t.jsxRuntimeExports.jsxs("div",{className:"relative flex h-screen w-screen bg-gray-100",children:[t.jsxRuntimeExports.jsx(T,{createInCenter:()=>({x:300,y:200})}),t.jsxRuntimeExports.jsx(t.Board,{ref:a})]})})},O="data:image/svg+xml,%3csvg%20width='57'%20height='45'%20viewBox='0%200%2057%2045'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.1%2023.36H1V44H49.06L55%2033.1067L49.06%2023.36H41.5M9.1%2023.36V18.2M9.1%2023.36H25.3M25.3%2023.36V14.76M25.3%2023.36H41.5M41.5%2023.36V11.32M41.5%2011.32V1H55L51.22%206.16L55%2011.32H41.5Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M22.5999%2033.6799L16.6599%2043.9999H32.8599L38.7999%2033.6799L32.8599%2023.3599H16.6599L22.5999%2033.6799Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M25.3003%209.45337C26.4817%209.45351%2027.5405%2010.489%2027.5405%2011.8938C27.5403%2013.2983%2026.4816%2014.3331%2025.3003%2014.3333C24.1189%2014.3333%2023.0603%2013.2984%2023.0601%2011.8938C23.0601%2010.4889%2024.1188%209.45337%2025.3003%209.45337Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M25.3003%209.45337C26.4817%209.45351%2027.5405%2010.489%2027.5405%2011.8938C27.5403%2013.2983%2026.4816%2014.3331%2025.3003%2014.3333C24.1189%2014.3333%2023.0603%2013.2984%2023.0601%2011.8938C23.0601%2010.4889%2024.1188%209.45337%2025.3003%209.45337Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M25.3003%209.45337C26.4817%209.45351%2027.5405%2010.489%2027.5405%2011.8938C27.5403%2013.2983%2026.4816%2014.3331%2025.3003%2014.3333C24.1189%2014.3333%2023.0603%2013.2984%2023.0601%2011.8938C23.0601%2010.4889%2024.1188%209.45337%2025.3003%209.45337Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M9.10028%2012.8933C10.2817%2012.8934%2011.3405%2013.929%2011.3405%2015.3337C11.3403%2016.7383%2010.2816%2017.7731%209.10028%2017.7732C7.91887%2017.7732%206.86026%2016.7384%206.86005%2015.3337C6.86005%2013.9289%207.91875%2012.8933%209.10028%2012.8933Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M9.10028%2012.8933C10.2817%2012.8934%2011.3405%2013.929%2011.3405%2015.3337C11.3403%2016.7383%2010.2816%2017.7731%209.10028%2017.7732C7.91887%2017.7732%206.86026%2016.7384%206.86005%2015.3337C6.86005%2013.9289%207.91875%2012.8933%209.10028%2012.8933Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M9.10028%2012.8933C10.2817%2012.8934%2011.3405%2013.929%2011.3405%2015.3337C11.3403%2016.7383%2010.2816%2017.7731%209.10028%2017.7732C7.91887%2017.7732%206.86026%2016.7384%206.86005%2015.3337C6.86005%2013.9289%207.91875%2012.8933%209.10028%2012.8933Z'%20stroke='black'%20stroke-width='2'/%3e%3c/svg%3e",$="data:image/svg+xml,%3csvg%20width='57'%20height='45'%20viewBox='0%200%2057%2045'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.1%2023.36H1V44H49.06L55%2033.1067L49.06%2023.36H41.5M9.1%2023.36V18.2M9.1%2023.36H25.3M25.3%2023.36V14.76M25.3%2023.36H41.5M41.5%2023.36V11.32M41.5%2011.32V1H55L51.22%206.16L55%2011.32H41.5Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M22.5999%2033.6799L16.6599%2043.9999H32.8599L38.7999%2033.6799L32.8599%2023.3599H16.6599L22.5999%2033.6799Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M25.3003%209.45337C26.4817%209.45351%2027.5405%2010.489%2027.5405%2011.8938C27.5403%2013.2983%2026.4816%2014.3331%2025.3003%2014.3333C24.1189%2014.3333%2023.0603%2013.2984%2023.0601%2011.8938C23.0601%2010.4889%2024.1188%209.45337%2025.3003%209.45337Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M25.3003%209.45337C26.4817%209.45351%2027.5405%2010.489%2027.5405%2011.8938C27.5403%2013.2983%2026.4816%2014.3331%2025.3003%2014.3333C24.1189%2014.3333%2023.0603%2013.2984%2023.0601%2011.8938C23.0601%2010.4889%2024.1188%209.45337%2025.3003%209.45337Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M25.3003%209.45337C26.4817%209.45351%2027.5405%2010.489%2027.5405%2011.8938C27.5403%2013.2983%2026.4816%2014.3331%2025.3003%2014.3333C24.1189%2014.3333%2023.0603%2013.2984%2023.0601%2011.8938C23.0601%2010.4889%2024.1188%209.45337%2025.3003%209.45337Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M9.10028%2012.8933C10.2817%2012.8934%2011.3405%2013.929%2011.3405%2015.3337C11.3403%2016.7383%2010.2816%2017.7731%209.10028%2017.7732C7.91887%2017.7732%206.86026%2016.7384%206.86005%2015.3337C6.86005%2013.9289%207.91875%2012.8933%209.10028%2012.8933Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M9.10028%2012.8933C10.2817%2012.8934%2011.3405%2013.929%2011.3405%2015.3337C11.3403%2016.7383%2010.2816%2017.7731%209.10028%2017.7732C7.91887%2017.7732%206.86026%2016.7384%206.86005%2015.3337C6.86005%2013.9289%207.91875%2012.8933%209.10028%2012.8933Z'%20stroke='black'%20stroke-width='2'/%3e%3cpath%20d='M9.10028%2012.8933C10.2817%2012.8934%2011.3405%2013.929%2011.3405%2015.3337C11.3403%2016.7383%2010.2816%2017.7731%209.10028%2017.7732C7.91887%2017.7732%206.86026%2016.7384%206.86005%2015.3337C6.86005%2013.9289%207.91875%2012.8933%209.10028%2012.8933Z'%20stroke='black'%20stroke-width='2'/%3e%3c/svg%3e",P=()=>{const[s,a]=p.useState(!1),c=t.useStickersStore(e=>e.addSticker),i=t.useStickersStore(e=>e.topZ),d=async()=>{if(!s){a(!0);try{const e=(i||1)+1,o=await t.roadmapApi.create({text:"",description:"",date:null,completed:!1,cancelled:!1,zIndex:e,width:200,height:50,parentId:null}),r=window.innerWidth/2-100,n=window.innerHeight/2-60;c({id:String(o.id),type:"roadmap",x:r,y:n,width:o.width??200,height:o.height??120,text:o.text??"",description:o.description??"",date:o.date??null,completed:o.completed??!1,cancelled:o.cancelled??!1,parentId:o.parentId??null,zIndex:o.zIndex??e})}catch(e){console.warn("Не удалось создать roadmap:",e)}finally{a(!1)}}};return t.jsxRuntimeExports.jsx("div",{className:"left-toolbar-container",onClick:e=>e.stopPropagation(),children:t.jsxRuntimeExports.jsx("div",{className:"toolbar-card",children:t.jsxRuntimeExports.jsx("button",{onClick:d,disabled:s,className:`toolbar-btn toolbar-btn--icon toolbar-btn--markdown ${s?"toolbar-btn--active":""}`,title:"Добавить Roadmap",children:t.jsxRuntimeExports.jsx("div",{className:`toolbar-markdown-plate ${s?"toolbar-markdown-plate--active":""}`,children:t.jsxRuntimeExports.jsx("img",{src:s?$:O,alt:"Roadmap",draggable:!1})})})})})},g=({children:s})=>t.jsxRuntimeExports.jsx("div",{children:s}),_=()=>{const s=t.useStickersStore(o=>o.setStickers),a=t.useStickersStore(o=>o.setEdges),c=p.useRef(null),[i,d]=p.useState(()=>g);p.useEffect(()=>{(async()=>{try{const r=await t.roadmapApi.getAll();let n=30,h=30;const C=[],k=[];for(const l of r){const u=l.width??200,m=l.height??120;C.push({id:String(l.id),type:"roadmap",x:n,y:h,width:u,height:m,text:l.text??"",description:l.description??"",date:l.date??null,completed:l.completed??!1,cancelled:l.cancelled??!1,parentId:l.parentId??null,zIndex:l.zIndex??1}),l.parentId&&k.push({id:`e-${l.parentId}-${l.id}`,source:String(l.parentId),target:String(l.id),type:"default",animated:!1}),n+=24,h+=24}s(C),a(k)}catch(r){console.warn("Не удалось загрузить доску для роадмапа:",r)}})()},[s,a]),p.useEffect(()=>{let o=!0;return import("@xyflow/react").then(r=>{if(!o)return;const n=(r&&(r.Widget||r.default||r?.widget||r?.XyflowWidget))??null;typeof n=="function"||p.isValidElement(n)?d(()=>n):d(()=>g)}).catch(()=>{o&&d(()=>g)}),()=>{o=!1}},[]);const e=i||g;return t.jsxRuntimeExports.jsx(e,{children:t.jsxRuntimeExports.jsxs("div",{className:"relative flex h-screen w-screen bg-gray-100",children:[t.jsxRuntimeExports.jsx(P,{createInCenter:()=>({x:300,y:200})}),t.jsxRuntimeExports.jsx(t.Board,{ref:c})]})})};exports.Board=t.Board;exports.baseNodeTypes=t.baseNodeTypes;exports.EmojiBoardWidget=j.EmojiBoardWidget;exports.emojiNodeTypes=j.emojiNodeTypes;exports.ShapeBoardWidget=E.ShapeBoardWidget;exports.shapeNodeTypes=E.shapeNodeTypes;exports.MarkdownBoardWidget=D;exports.NoteBoardWidget=V;exports.RoadmapBoardWidget=_;
|
|
4
4
|
//# sourceMappingURL=index.cjs.map
|