integration-modules 0.1.10 → 0.1.11

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.
Files changed (29) hide show
  1. package/README.md +16 -16
  2. package/dist/chunks/{Board-D7raFrnX.js → Board-3Ww5x9rN.js} +22 -22
  3. package/dist/chunks/Board-3Ww5x9rN.js.map +1 -0
  4. package/dist/chunks/{Board-C2sVqXKk.js → Board-snD7KHu1.js} +1694 -1638
  5. package/dist/chunks/Board-snD7KHu1.js.map +1 -0
  6. package/dist/chunks/{EmojiBoardWidget-DpXXIo8W.js → EmojiBoardWidget-af0pUa-V.js} +2 -2
  7. package/dist/chunks/EmojiBoardWidget-af0pUa-V.js.map +1 -0
  8. package/dist/chunks/{EmojiBoardWidget-Dk8VCGyk.js → EmojiBoardWidget-h0XAiqE4.js} +97 -96
  9. package/dist/chunks/EmojiBoardWidget-h0XAiqE4.js.map +1 -0
  10. package/dist/chunks/{ShapeBoardWidget-CURF-esc.js → ShapeBoardWidget-BN5RXzJF.js} +21 -20
  11. package/dist/chunks/ShapeBoardWidget-BN5RXzJF.js.map +1 -0
  12. package/dist/chunks/{ShapeBoardWidget-lQuZw7IG.js → ShapeBoardWidget-Du1LcAr8.js} +2 -2
  13. package/dist/chunks/ShapeBoardWidget-Du1LcAr8.js.map +1 -0
  14. package/dist/emoji/index.cjs +1 -1
  15. package/dist/emoji/index.js +2 -2
  16. package/dist/index.cjs +1 -1
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.mjs +5 -5
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/integration-modules.css +1 -1
  21. package/dist/shape/index.cjs +1 -1
  22. package/dist/shape/index.js +1 -1
  23. package/package.json +78 -78
  24. package/dist/chunks/Board-C2sVqXKk.js.map +0 -1
  25. package/dist/chunks/Board-D7raFrnX.js.map +0 -1
  26. package/dist/chunks/EmojiBoardWidget-Dk8VCGyk.js.map +0 -1
  27. package/dist/chunks/EmojiBoardWidget-DpXXIo8W.js.map +0 -1
  28. package/dist/chunks/ShapeBoardWidget-CURF-esc.js.map +0 -1
  29. package/dist/chunks/ShapeBoardWidget-lQuZw7IG.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";var R=Object.create;var f=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var I=(t,s,n,l)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of y(s))!F.call(t,a)&&a!==n&&f(t,a,{get:()=>s[a],enumerable:!(l=v(s,a))||l.enumerable});return t};var N=(t,s,n)=>(n=t!=null?R(S(t)):{},I(s||!t||!t.__esModule?f(n,"default",{value:t,enumerable:!0}):n,t));const e=require("./Board-D7raFrnX.js"),p=require("react"),u=require("@xyflow/react"),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='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",_="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",E=()=>{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,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%"}})})]})},k={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={...k,...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 w=m.width??e.EMOJI_W,b=m.height??e.EMOJI_H;let C=e.EMOJI_MAP?.[String(m.stickerId)]??"";if(!C)try{C=await r(m.stickerId)}catch(M){console.warn("Ошибка при получении локального url для stickerId",m.stickerId,M),C=""}j.push({id:m.id,x:d,y:h,color:"transparent",width:w,height:b,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,{}),e.jsxRuntimeExports.jsx(e.Board,{ref:n,nodeTypes:i})]})})};exports.EmojiBoardWidget=O;exports.EmojiToolbar=E;exports.emojiNodeTypes=k;
2
- //# sourceMappingURL=EmojiBoardWidget-DpXXIo8W.js.map
1
+ "use strict";var v=Object.create;var f=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var N=(t,s,a,d)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of S(s))!I.call(t,o)&&o!==a&&f(t,o,{get:()=>s[o],enumerable:!(d=y(s,o))||d.enumerable});return t};var _=(t,s,a)=>(a=t!=null?v(F(t)):{},N(s||!t||!t.__esModule?f(a,"default",{value:t,enumerable:!0}):a,t));const e=require("./Board-3Ww5x9rN.js"),m=require("react"),h=require("@xyflow/react"),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='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",O="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",E=t=>{const{id:s,selected:a,emojiOpen:d}=t,o=e.useStickersStore(p=>p.stickers.find(n=>String(n.id)===String(s))),i=e.useStickersStore(p=>p.bringToFront),l=e.useStickersStore(p=>p.updateSticker);return!o||!o.imageUrl?null:e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx(h.NodeResizer,{isVisible:a,minWidth:30,minHeight:30,onResizeEnd:async(p,n)=>{const r=Math.max(1,Math.round(n.width)),c=Math.max(1,Math.round(n.height));l(s,{width:r,height:c});try{await e.stickersApi.updateTransform(s,r,c)}catch(u){console.warn("Не удалось сохранить размер эмодзи",u)}}}),e.jsxRuntimeExports.jsx(h.Handle,{type:"target",position:h.Position.Left}),e.jsxRuntimeExports.jsx(h.Handle,{type:"source",position:h.Position.Right}),e.jsxRuntimeExports.jsx("div",{className:`dragHandle__custom ${d?"":"dragHandle__custom"}`,style:{width:o.width,height:o.height,position:"relative"},onPointerDown:()=>{i(s)},children:e.jsxRuntimeExports.jsx("img",{src:o.imageUrl,draggable:!1,style:{width:"100%",height:"100%"}})})]})},k=()=>{const[t,s]=m.useState(!1),a=m.useRef(null),d=i=>{i.stopPropagation(),s(l=>!l)};m.useEffect(()=>{if(!t)return;const i=l=>{a.current&&!a.current.contains(l.target)&&s(!1)};return window.addEventListener("pointerdown",i),()=>{window.removeEventListener("pointerdown",i)}},[t]);const o=i=>l=>{l.stopPropagation(),l.dataTransfer.setData(e.DND_EMOJI,JSON.stringify({stickerId:i.id,name:i.name})),l.dataTransfer.effectAllowed="copy"};return e.jsxRuntimeExports.jsxs("div",{className:"left-toolbar-container dragHandle__custom",ref:a,onClick:i=>{i.stopPropagation()},children:[e.jsxRuntimeExports.jsx("div",{className:`toolbar-card ${t?"toolbar-card--open":""}`,children:e.jsxRuntimeExports.jsx("button",{onClick:d,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?O:L,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:o(i),className:"emoji-item",children:e.jsxRuntimeExports.jsx("img",{src:i.url,draggable:!1})},i.id))})]})}),e.jsxRuntimeExports.jsx(E,{emojiOpen:t})]})},w={emoji:E},j=({children:t})=>e.jsxRuntimeExports.jsx("div",{children:t}),A=({nodeTypes:t})=>{const s=e.useStickersStore(n=>n.setStickers),a=m.useRef(null),[d,o]=m.useState(()=>j),i={...w,...t||{}};async function l(n){if(e.EMOJI_MAP&&e.EMOJI_MAP[n])return e.EMOJI_MAP[n];try{const r=await e.stickersApi.getById(n);if(r?.name){const c=e.EMOJI_CATALOG.find(u=>u.name===r.name);if(c)return c.url}}catch(r){console.warn("getEmojiUrlForStickerId: backend lookup failed",r)}return""}m.useEffect(()=>{(async()=>{try{const r=await e.stickersApi.getBoard();let c=30,u=30;const g=[];for(const x of r){const b=x.width??e.EMOJI_W,R=x.height??e.EMOJI_H;let C=e.EMOJI_MAP?.[String(x.stickerId)]??"";if(!C)try{C=await l(x.stickerId)}catch(M){console.warn("Ошибка при получении локального url для stickerId",x.stickerId,M),C=""}g.push({id:x.id,x:c,y:u,color:"transparent",width:b,height:R,text:"",zIndex:1,stickerId:x.stickerId,imageUrl:C,type:"emoji"}),c+=24,u+=24}s(g)}catch(r){console.warn("Не удалось загрузить доску для эмодзи:",r)}})()},[s]),m.useEffect(()=>{let n=!0;return import("@xyflow/react").then(r=>{if(!n)return;const c=(r&&(r.Widget||r.default||r?.widget||r?.XyflowWidget))??null;typeof c=="function"||m.isValidElement(c)?o(()=>c):o(()=>j)}).catch(()=>{n&&o(()=>j)}),()=>{n=!1}},[]);const p=d||j;return e.jsxRuntimeExports.jsx(p,{children:e.jsxRuntimeExports.jsxs("div",{className:"relative flex h-screen w-screen bg-gray-100",children:[e.jsxRuntimeExports.jsx(k,{}),e.jsxRuntimeExports.jsx(e.Board,{ref:a,nodeTypes:i})]})})};exports.EmojiBoardWidget=A;exports.EmojiToolbar=k;exports.emojiNodeTypes=w;
2
+ //# sourceMappingURL=EmojiBoardWidget-af0pUa-V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiBoardWidget-af0pUa-V.js","sources":["../../src/assets/emoji_add.svg?url","../../src/assets/emoji_add_active.svg?url","../../src/features/emoji-sticker/ui/EmojiNode.jsx","../../src/components/EmojiToolbar.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 from 'react';\r\nimport { NodeResizer, Handle, Position } from '@xyflow/react';\r\nimport { useStickersStore } from '../../../entities/stickers/model/useStickersStore.js';\r\nimport '../../../styles/sticker.css';\r\nimport { stickersApi } from '../../../shared/api/stickerApi.js';\r\n\r\n\r\nexport const EmojiNode = (props) => {\r\n const { id, selected, emojiOpen } = props;\r\n\r\n const sticker = useStickersStore(s =>\r\n s.stickers.find(x => String(x.id) === String(id))\r\n );\r\n\r\n const bringToFront = useStickersStore(s => s.bringToFront);\r\n const updateSticker = useStickersStore(s => s.updateSticker);\r\n\r\n if (!sticker || !sticker.imageUrl) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <NodeResizer\r\n isVisible={selected}\r\n minWidth={30}\r\n minHeight={30}\r\n onResizeEnd={async (_, params) => {\r\n const w = Math.max(1, Math.round(params.width));\r\n const h = Math.max(1, Math.round(params.height));\r\n\r\n updateSticker(id, { width: w, height: h });\r\n\r\n try {\r\n await stickersApi.updateTransform(id, w, h);\r\n } catch (e) {\r\n console.warn('Не удалось сохранить размер эмодзи', e);\r\n }\r\n }}\r\n />\r\n\r\n <Handle type=\"target\" position={Position.Left} />\r\n <Handle type=\"source\" position={Position.Right} />\r\n\r\n <div\r\n className={`dragHandle__custom ${emojiOpen ? '' : 'dragHandle__custom'}`}\r\n style={{ width: sticker.width, height: sticker.height, position: 'relative' }}\r\n onPointerDown={() => {\r\n bringToFront(id);\r\n }}\r\n >\r\n <img\r\n src={sticker.imageUrl}\r\n draggable={false}\r\n style={{ width: '100%', height: '100%' }}\r\n />\r\n </div>\r\n </>\r\n );\r\n};","import React, { useState, useRef, useEffect } from 'react'\r\nimport { DND_EMOJI } from '../features/board/constants.js'\r\nimport emojiAdd from '../assets/emoji_add.svg?url'\r\nimport emojiAddActive from '../assets/emoji_add_active.svg?url'\r\nimport '../styles/stickerPalette.css'\r\nimport { EMOJI_ITEMS } from '../features/emoji-sticker/stickers.js'\r\nimport { EmojiNode } from '../features/emoji-sticker/ui/EmojiNode.jsx';\r\n\r\nexport const EmojiToolbar = () => {\r\n const [emojiOpen, setEmojiOpen] = useState(false)\r\n const wrapperRef = useRef(null)\r\n\r\n const toggleEmoji = (e) => {\r\n e.stopPropagation()\r\n setEmojiOpen((v) => !v)\r\n }\r\n\r\n useEffect(() => {\r\n if (!emojiOpen) {\r\n return\r\n }\r\n\r\n const handler = (e) => {\r\n if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\r\n setEmojiOpen(false)\r\n }\r\n }\r\n\r\n window.addEventListener('pointerdown', handler)\r\n\r\n return () => {\r\n window.removeEventListener('pointerdown', handler)\r\n }\r\n }, [emojiOpen])\r\n\r\n const onEmojiDragStart = (item) => (e) => {\r\n e.stopPropagation()\r\n e.dataTransfer.setData(\r\n DND_EMOJI,\r\n JSON.stringify({\r\n stickerId: item.id,\r\n name: item.name,\r\n })\r\n )\r\n e.dataTransfer.effectAllowed = 'copy'\r\n }\r\n\r\n return (\r\n <div\r\n className=\"left-toolbar-container dragHandle__custom\"\r\n ref={wrapperRef}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <div className={`toolbar-card ${emojiOpen ? 'toolbar-card--open' : ''}`}>\r\n <button\r\n onClick={toggleEmoji}\r\n className={`toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${emojiOpen ? 'toolbar-btn--active' : ''}`}\r\n >\r\n <div className={`toolbar-emoji-plate ${emojiOpen ? 'toolbar-emoji-plate--active' : ''}`}>\r\n <img src={emojiOpen ? emojiAddActive : emojiAdd} alt=\"Эмодзи\" draggable={false} />\r\n </div>\r\n </button>\r\n </div>\r\n\r\n {emojiOpen && (\r\n <div\r\n className=\"palette-wrapper\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <div className=\"emoji-panel\" style={{ width: 300, height: 500 }}>\r\n <div className=\"emoji-panel-header\">\r\n <span className=\"emoji-header-title\">Стикеры</span>\r\n </div>\r\n\r\n <div className=\"emoji-grid\">\r\n {EMOJI_ITEMS.map((item) => (\r\n <button\r\n key={item.id}\r\n draggable\r\n onDragStart={onEmojiDragStart(item)}\r\n className=\"emoji-item\"\r\n >\r\n <img src={item.url} draggable={false} />\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n <EmojiNode emojiOpen={emojiOpen} />\r\n </div>\r\n )\r\n}\r\n","import { EmojiNode } from '../ui/EmojiNode.jsx'\r\n\r\nexport const emojiNodeTypes = {\r\n emoji: EmojiNode,\r\n}\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { EmojiToolbar } from '../components/EmojiToolbar.jsx'\r\nimport { Board } from '../features/board/ui/Board.jsx'\r\nimport { useStickersStore } from '../entities/stickers/model/useStickersStore.js'\r\nimport { stickersApi } from '../shared/api/stickerApi.js'\r\nimport { EMOJI_W, EMOJI_H } from '../features/board/constants'\r\nimport { EMOJI_CATALOG, EMOJI_MAP } from '../features/emoji-sticker/stickers.js'\r\nimport { emojiNodeTypes } from '../features/emoji-sticker/public/emojiNodeTypes.js'\r\n\r\nconst SafeFallbackWidget = ({ children }) => <div>{children}</div>\r\n\r\n/**\r\n * @typedef {import('@xyflow/react').NodeProps} NodeProps\r\n * @typedef {Record<string, React.ComponentType<NodeProps>>} NodeTypes\r\n */\r\n\r\n/**\r\n * @param {{ nodeTypes?: NodeTypes }} props\r\n */\r\nexport const EmojiBoardWidget = ({ nodeTypes }) => {\r\n const setStickers = useStickersStore((state) => state.setStickers)\r\n const boardRef = useRef(null)\r\n const [WidgetComp, setWidgetComp] = useState(() => SafeFallbackWidget)\r\n\r\n const mergedNodeTypes = {\r\n ...emojiNodeTypes,\r\n ...(nodeTypes || {}),\r\n }\r\n\r\n async function getEmojiUrlForStickerId(stickerId) {\r\n if (EMOJI_MAP && EMOJI_MAP[stickerId]) {\r\n return EMOJI_MAP[stickerId]\r\n }\r\n\r\n try {\r\n const info = await stickersApi.getById(stickerId)\r\n if (info?.name) {\r\n const local = EMOJI_CATALOG.find((e) => e.name === info.name)\r\n if (local) {\r\n return local.url\r\n }\r\n }\r\n } catch (err) {\r\n console.warn('getEmojiUrlForStickerId: backend lookup failed', err)\r\n }\r\n\r\n return ''\r\n }\r\n\r\n useEffect(() => {\r\n const loadBoard = async () => {\r\n try {\r\n const boardEmojis = await stickersApi.getBoard()\r\n let x = 30\r\n let y = 30\r\n const items = []\r\n\r\n for (const e of boardEmojis) {\r\n const w = e.width ?? EMOJI_W\r\n const h = e.height ?? EMOJI_H\r\n\r\n let imageUrl = EMOJI_MAP?.[String(e.stickerId)] ?? ''\r\n if (!imageUrl) {\r\n try {\r\n imageUrl = await getEmojiUrlForStickerId(e.stickerId)\r\n } catch (err) {\r\n console.warn('Ошибка при получении локального url для stickerId', e.stickerId, err)\r\n imageUrl = ''\r\n }\r\n }\r\n\r\n items.push({\r\n id: e.id,\r\n x,\r\n y,\r\n color: 'transparent',\r\n width: w,\r\n height: h,\r\n text: '',\r\n zIndex: 1,\r\n stickerId: e.stickerId,\r\n imageUrl,\r\n type: 'emoji',\r\n })\r\n\r\n x += 24\r\n y += 24\r\n }\r\n\r\n setStickers(items)\r\n } catch (e) {\r\n console.warn('Не удалось загрузить доску для эмодзи:', e)\r\n }\r\n }\r\n\r\n loadBoard()\r\n }, [setStickers])\r\n\r\n useEffect(() => {\r\n let mounted = true\r\n\r\n import('@xyflow/react')\r\n .then((mod) => {\r\n if (!mounted) {\r\n return\r\n }\r\n\r\n const candidate = (mod && (mod.Widget || mod.default || mod?.widget || mod?.XyflowWidget)) ?? null\r\n if (typeof candidate === 'function' || React.isValidElement(candidate)) {\r\n setWidgetComp(() => candidate)\r\n } else {\r\n setWidgetComp(() => SafeFallbackWidget)\r\n }\r\n })\r\n .catch(() => {\r\n if (mounted) {\r\n setWidgetComp(() => SafeFallbackWidget)\r\n }\r\n })\r\n\r\n return () => { mounted = false }\r\n }, [])\r\n\r\n const Wrapper = WidgetComp || SafeFallbackWidget\r\n\r\n return (\r\n <Wrapper>\r\n <div className=\"relative flex h-screen w-screen bg-gray-100\">\r\n <EmojiToolbar />\r\n <Board ref={boardRef} nodeTypes={mergedNodeTypes} />\r\n </div>\r\n </Wrapper>\r\n )\r\n}\r\n"],"names":["emojiAdd","emojiAddActive","EmojiNode","props","id","selected","emojiOpen","sticker","useStickersStore","s","x","bringToFront","updateSticker","jsxs","Fragment","jsx","NodeResizer","_","params","w","h","stickersApi","e","Handle","Position","EmojiToolbar","setEmojiOpen","useState","wrapperRef","useRef","toggleEmoji","v","useEffect","handler","onEmojiDragStart","item","DND_EMOJI","EMOJI_ITEMS","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,34 +1,77 @@
1
- import { j as e, f as N, g as S, u, s as j, B as I, E as L, b as _, c as p, d as H } from "./Board-C2sVqXKk.js";
1
+ import { u as j, j as e, s as u, f as S, g as I, B as _, E as L, b as H, c as p, d as O } from "./Board-snD7KHu1.js";
2
2
  import T, { useState as v, useRef as M, useEffect as w } from "react";
3
- import { NodeResizer as O, Handle as x, Position as b } from "@xyflow/react";
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 = () => {
5
- const [o, n] = v(!1), l = M(null), c = (t) => {
6
- t.stopPropagation(), n((i) => !i);
3
+ import { NodeResizer as V, Handle as k, Position as b } from "@xyflow/react";
4
+ const 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='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", B = "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", E = (o) => {
5
+ const { id: c, selected: d, emojiOpen: g } = o, r = j(
6
+ (l) => l.stickers.find((i) => String(i.id) === String(c))
7
+ ), t = j((l) => l.bringToFront), n = j((l) => l.updateSticker);
8
+ return !r || !r.imageUrl ? null : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
9
+ /* @__PURE__ */ e.jsx(
10
+ V,
11
+ {
12
+ isVisible: d,
13
+ minWidth: 30,
14
+ minHeight: 30,
15
+ onResizeEnd: async (l, i) => {
16
+ const a = Math.max(1, Math.round(i.width)), s = Math.max(1, Math.round(i.height));
17
+ n(c, { width: a, height: s });
18
+ try {
19
+ await u.updateTransform(c, a, s);
20
+ } catch (C) {
21
+ console.warn("Не удалось сохранить размер эмодзи", C);
22
+ }
23
+ }
24
+ }
25
+ ),
26
+ /* @__PURE__ */ e.jsx(k, { type: "target", position: b.Left }),
27
+ /* @__PURE__ */ e.jsx(k, { type: "source", position: b.Right }),
28
+ /* @__PURE__ */ e.jsx(
29
+ "div",
30
+ {
31
+ className: `dragHandle__custom ${g ? "" : "dragHandle__custom"}`,
32
+ style: { width: r.width, height: r.height, position: "relative" },
33
+ onPointerDown: () => {
34
+ t(c);
35
+ },
36
+ children: /* @__PURE__ */ e.jsx(
37
+ "img",
38
+ {
39
+ src: r.imageUrl,
40
+ draggable: !1,
41
+ style: { width: "100%", height: "100%" }
42
+ }
43
+ )
44
+ }
45
+ )
46
+ ] });
47
+ }, W = () => {
48
+ const [o, c] = v(!1), d = M(null), g = (t) => {
49
+ t.stopPropagation(), c((n) => !n);
7
50
  };
8
51
  w(() => {
9
52
  if (!o)
10
53
  return;
11
- const t = (i) => {
12
- l.current && !l.current.contains(i.target) && n(!1);
54
+ const t = (n) => {
55
+ d.current && !d.current.contains(n.target) && c(!1);
13
56
  };
14
57
  return window.addEventListener("pointerdown", t), () => {
15
58
  window.removeEventListener("pointerdown", t);
16
59
  };
17
60
  }, [o]);
18
- const d = (t) => (i) => {
19
- i.stopPropagation(), i.dataTransfer.setData(
20
- S,
61
+ const r = (t) => (n) => {
62
+ n.stopPropagation(), n.dataTransfer.setData(
63
+ I,
21
64
  JSON.stringify({
22
65
  stickerId: t.id,
23
66
  name: t.name
24
67
  })
25
- ), i.dataTransfer.effectAllowed = "copy";
68
+ ), n.dataTransfer.effectAllowed = "copy";
26
69
  };
27
70
  return /* @__PURE__ */ e.jsxs(
28
71
  "div",
29
72
  {
30
73
  className: "left-toolbar-container dragHandle__custom",
31
- ref: l,
74
+ ref: d,
32
75
  onClick: (t) => {
33
76
  t.stopPropagation();
34
77
  },
@@ -36,9 +79,9 @@ const V = "data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200
36
79
  /* @__PURE__ */ e.jsx("div", { className: `toolbar-card ${o ? "toolbar-card--open" : ""}`, children: /* @__PURE__ */ e.jsx(
37
80
  "button",
38
81
  {
39
- onClick: c,
82
+ onClick: g,
40
83
  className: `toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${o ? "toolbar-btn--active" : ""}`,
41
- children: /* @__PURE__ */ e.jsx("div", { className: `toolbar-emoji-plate ${o ? "toolbar-emoji-plate--active" : ""}`, children: /* @__PURE__ */ e.jsx("img", { src: o ? Z : V, alt: "Эмодзи", draggable: !1 }) })
84
+ children: /* @__PURE__ */ e.jsx("div", { className: `toolbar-emoji-plate ${o ? "toolbar-emoji-plate--active" : ""}`, children: /* @__PURE__ */ e.jsx("img", { src: o ? B : Z, alt: "Эмодзи", draggable: !1 }) })
42
85
  }
43
86
  ) }),
44
87
  o && /* @__PURE__ */ e.jsx(
@@ -50,11 +93,11 @@ const V = "data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200
50
93
  },
51
94
  children: /* @__PURE__ */ e.jsxs("div", { className: "emoji-panel", style: { width: 300, height: 500 }, children: [
52
95
  /* @__PURE__ */ e.jsx("div", { className: "emoji-panel-header", children: /* @__PURE__ */ e.jsx("span", { className: "emoji-header-title", children: "Стикеры" }) }),
53
- /* @__PURE__ */ e.jsx("div", { className: "emoji-grid", children: N.map((t) => /* @__PURE__ */ e.jsx(
96
+ /* @__PURE__ */ e.jsx("div", { className: "emoji-grid", children: S.map((t) => /* @__PURE__ */ e.jsx(
54
97
  "button",
55
98
  {
56
99
  draggable: !0,
57
- onDragStart: d(t),
100
+ onDragStart: r(t),
58
101
  className: "emoji-item",
59
102
  children: /* @__PURE__ */ e.jsx("img", { src: t.url, draggable: !1 })
60
103
  },
@@ -62,69 +105,27 @@ const V = "data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200
62
105
  )) })
63
106
  ] })
64
107
  }
65
- )
108
+ ),
109
+ /* @__PURE__ */ e.jsx(E, { emojiOpen: o })
66
110
  ]
67
111
  }
68
112
  );
69
- }, W = (o) => {
70
- const { id: n, selected: l } = o, c = u(
71
- (i) => i.stickers.find((C) => String(C.id) === String(n))
72
- ), d = u((i) => i.bringToFront), t = u((i) => i.updateSticker);
73
- return !c || !c.imageUrl ? null : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
74
- /* @__PURE__ */ e.jsx(
75
- O,
76
- {
77
- isVisible: l,
78
- minWidth: 30,
79
- minHeight: 30,
80
- onResizeEnd: async (i, C) => {
81
- const s = Math.max(1, Math.round(C.width)), a = Math.max(1, Math.round(C.height));
82
- t(n, { width: s, height: a });
83
- try {
84
- await j.updateTransform(n, s, a);
85
- } catch (r) {
86
- console.warn("Не удалось сохранить размер эмодзи", r);
87
- }
88
- }
89
- }
90
- ),
91
- /* @__PURE__ */ e.jsx(x, { type: "target", position: b.Left }),
92
- /* @__PURE__ */ e.jsx(x, { type: "source", position: b.Right }),
93
- /* @__PURE__ */ e.jsx(
94
- "div",
95
- {
96
- className: "dragHandle__custom",
97
- style: { width: c.width, height: c.height, position: "relative" },
98
- onPointerDown: () => {
99
- d(n);
100
- },
101
- children: /* @__PURE__ */ e.jsx(
102
- "img",
103
- {
104
- src: c.imageUrl,
105
- draggable: !1,
106
- style: { width: "100%", height: "100%" }
107
- }
108
- )
109
- }
110
- )
111
- ] });
112
113
  }, A = {
113
- emoji: W
114
+ emoji: E
114
115
  }, f = ({ children: o }) => /* @__PURE__ */ e.jsx("div", { children: o }), D = ({ nodeTypes: o }) => {
115
- const n = u((s) => s.setStickers), l = M(null), [c, d] = v(() => f), t = {
116
+ const c = j((i) => i.setStickers), d = M(null), [g, r] = v(() => f), t = {
116
117
  ...A,
117
118
  ...o || {}
118
119
  };
119
- async function i(s) {
120
- if (p && p[s])
121
- return p[s];
120
+ async function n(i) {
121
+ if (p && p[i])
122
+ return p[i];
122
123
  try {
123
- const a = await j.getById(s);
124
+ const a = await u.getById(i);
124
125
  if (a?.name) {
125
- const r = H.find((g) => g.name === a.name);
126
- if (r)
127
- return r.url;
126
+ const s = O.find((C) => C.name === a.name);
127
+ if (s)
128
+ return s.url;
128
129
  }
129
130
  } catch (a) {
130
131
  console.warn("getEmojiUrlForStickerId: backend lookup failed", a);
@@ -134,59 +135,59 @@ const V = "data:image/svg+xml,%3csvg%20width='53'%20height='55'%20viewBox='0%200
134
135
  w(() => {
135
136
  (async () => {
136
137
  try {
137
- const a = await j.getBoard();
138
- let r = 30, g = 30;
139
- const k = [];
138
+ const a = await u.getBoard();
139
+ let s = 30, C = 30;
140
+ const x = [];
140
141
  for (const h of a) {
141
- const E = h.width ?? L, y = h.height ?? _;
142
+ const y = h.width ?? L, F = h.height ?? H;
142
143
  let m = p?.[String(h.stickerId)] ?? "";
143
144
  if (!m)
144
145
  try {
145
- m = await i(h.stickerId);
146
- } catch (F) {
147
- console.warn("Ошибка при получении локального url для stickerId", h.stickerId, F), m = "";
146
+ m = await n(h.stickerId);
147
+ } catch (N) {
148
+ console.warn("Ошибка при получении локального url для stickerId", h.stickerId, N), m = "";
148
149
  }
149
- k.push({
150
+ x.push({
150
151
  id: h.id,
151
- x: r,
152
- y: g,
152
+ x: s,
153
+ y: C,
153
154
  color: "transparent",
154
- width: E,
155
- height: y,
155
+ width: y,
156
+ height: F,
156
157
  text: "",
157
158
  zIndex: 1,
158
159
  stickerId: h.stickerId,
159
160
  imageUrl: m,
160
161
  type: "emoji"
161
- }), r += 24, g += 24;
162
+ }), s += 24, C += 24;
162
163
  }
163
- n(k);
164
+ c(x);
164
165
  } catch (a) {
165
166
  console.warn("Не удалось загрузить доску для эмодзи:", a);
166
167
  }
167
168
  })();
168
- }, [n]), w(() => {
169
- let s = !0;
169
+ }, [c]), w(() => {
170
+ let i = !0;
170
171
  return import("@xyflow/react").then((a) => {
171
- if (!s)
172
+ if (!i)
172
173
  return;
173
- const r = (a && (a.Widget || a.default || a?.widget || a?.XyflowWidget)) ?? null;
174
- typeof r == "function" || T.isValidElement(r) ? d(() => r) : d(() => f);
174
+ const s = (a && (a.Widget || a.default || a?.widget || a?.XyflowWidget)) ?? null;
175
+ typeof s == "function" || T.isValidElement(s) ? r(() => s) : r(() => f);
175
176
  }).catch(() => {
176
- s && d(() => f);
177
+ i && r(() => f);
177
178
  }), () => {
178
- s = !1;
179
+ i = !1;
179
180
  };
180
181
  }, []);
181
- const C = c || f;
182
- return /* @__PURE__ */ e.jsx(C, { children: /* @__PURE__ */ e.jsxs("div", { className: "relative flex h-screen w-screen bg-gray-100", children: [
183
- /* @__PURE__ */ e.jsx(B, {}),
184
- /* @__PURE__ */ e.jsx(I, { ref: l, nodeTypes: t })
182
+ const l = g || f;
183
+ return /* @__PURE__ */ e.jsx(l, { children: /* @__PURE__ */ e.jsxs("div", { className: "relative flex h-screen w-screen bg-gray-100", children: [
184
+ /* @__PURE__ */ e.jsx(W, {}),
185
+ /* @__PURE__ */ e.jsx(_, { ref: d, nodeTypes: t })
185
186
  ] }) });
186
187
  };
187
188
  export {
188
189
  D as E,
189
- B as a,
190
+ W as a,
190
191
  A as e
191
192
  };
192
- //# sourceMappingURL=EmojiBoardWidget-Dk8VCGyk.js.map
193
+ //# sourceMappingURL=EmojiBoardWidget-h0XAiqE4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiBoardWidget-h0XAiqE4.js","sources":["../../src/assets/emoji_add.svg?url","../../src/assets/emoji_add_active.svg?url","../../src/features/emoji-sticker/ui/EmojiNode.jsx","../../src/components/EmojiToolbar.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 from 'react';\r\nimport { NodeResizer, Handle, Position } from '@xyflow/react';\r\nimport { useStickersStore } from '../../../entities/stickers/model/useStickersStore.js';\r\nimport '../../../styles/sticker.css';\r\nimport { stickersApi } from '../../../shared/api/stickerApi.js';\r\n\r\n\r\nexport const EmojiNode = (props) => {\r\n const { id, selected, emojiOpen } = props;\r\n\r\n const sticker = useStickersStore(s =>\r\n s.stickers.find(x => String(x.id) === String(id))\r\n );\r\n\r\n const bringToFront = useStickersStore(s => s.bringToFront);\r\n const updateSticker = useStickersStore(s => s.updateSticker);\r\n\r\n if (!sticker || !sticker.imageUrl) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <NodeResizer\r\n isVisible={selected}\r\n minWidth={30}\r\n minHeight={30}\r\n onResizeEnd={async (_, params) => {\r\n const w = Math.max(1, Math.round(params.width));\r\n const h = Math.max(1, Math.round(params.height));\r\n\r\n updateSticker(id, { width: w, height: h });\r\n\r\n try {\r\n await stickersApi.updateTransform(id, w, h);\r\n } catch (e) {\r\n console.warn('Не удалось сохранить размер эмодзи', e);\r\n }\r\n }}\r\n />\r\n\r\n <Handle type=\"target\" position={Position.Left} />\r\n <Handle type=\"source\" position={Position.Right} />\r\n\r\n <div\r\n className={`dragHandle__custom ${emojiOpen ? '' : 'dragHandle__custom'}`}\r\n style={{ width: sticker.width, height: sticker.height, position: 'relative' }}\r\n onPointerDown={() => {\r\n bringToFront(id);\r\n }}\r\n >\r\n <img\r\n src={sticker.imageUrl}\r\n draggable={false}\r\n style={{ width: '100%', height: '100%' }}\r\n />\r\n </div>\r\n </>\r\n );\r\n};","import React, { useState, useRef, useEffect } from 'react'\r\nimport { DND_EMOJI } from '../features/board/constants.js'\r\nimport emojiAdd from '../assets/emoji_add.svg?url'\r\nimport emojiAddActive from '../assets/emoji_add_active.svg?url'\r\nimport '../styles/stickerPalette.css'\r\nimport { EMOJI_ITEMS } from '../features/emoji-sticker/stickers.js'\r\nimport { EmojiNode } from '../features/emoji-sticker/ui/EmojiNode.jsx';\r\n\r\nexport const EmojiToolbar = () => {\r\n const [emojiOpen, setEmojiOpen] = useState(false)\r\n const wrapperRef = useRef(null)\r\n\r\n const toggleEmoji = (e) => {\r\n e.stopPropagation()\r\n setEmojiOpen((v) => !v)\r\n }\r\n\r\n useEffect(() => {\r\n if (!emojiOpen) {\r\n return\r\n }\r\n\r\n const handler = (e) => {\r\n if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\r\n setEmojiOpen(false)\r\n }\r\n }\r\n\r\n window.addEventListener('pointerdown', handler)\r\n\r\n return () => {\r\n window.removeEventListener('pointerdown', handler)\r\n }\r\n }, [emojiOpen])\r\n\r\n const onEmojiDragStart = (item) => (e) => {\r\n e.stopPropagation()\r\n e.dataTransfer.setData(\r\n DND_EMOJI,\r\n JSON.stringify({\r\n stickerId: item.id,\r\n name: item.name,\r\n })\r\n )\r\n e.dataTransfer.effectAllowed = 'copy'\r\n }\r\n\r\n return (\r\n <div\r\n className=\"left-toolbar-container dragHandle__custom\"\r\n ref={wrapperRef}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <div className={`toolbar-card ${emojiOpen ? 'toolbar-card--open' : ''}`}>\r\n <button\r\n onClick={toggleEmoji}\r\n className={`toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${emojiOpen ? 'toolbar-btn--active' : ''}`}\r\n >\r\n <div className={`toolbar-emoji-plate ${emojiOpen ? 'toolbar-emoji-plate--active' : ''}`}>\r\n <img src={emojiOpen ? emojiAddActive : emojiAdd} alt=\"Эмодзи\" draggable={false} />\r\n </div>\r\n </button>\r\n </div>\r\n\r\n {emojiOpen && (\r\n <div\r\n className=\"palette-wrapper\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <div className=\"emoji-panel\" style={{ width: 300, height: 500 }}>\r\n <div className=\"emoji-panel-header\">\r\n <span className=\"emoji-header-title\">Стикеры</span>\r\n </div>\r\n\r\n <div className=\"emoji-grid\">\r\n {EMOJI_ITEMS.map((item) => (\r\n <button\r\n key={item.id}\r\n draggable\r\n onDragStart={onEmojiDragStart(item)}\r\n className=\"emoji-item\"\r\n >\r\n <img src={item.url} draggable={false} />\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n <EmojiNode emojiOpen={emojiOpen} />\r\n </div>\r\n )\r\n}\r\n","import { EmojiNode } from '../ui/EmojiNode.jsx'\r\n\r\nexport const emojiNodeTypes = {\r\n emoji: EmojiNode,\r\n}\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { EmojiToolbar } from '../components/EmojiToolbar.jsx'\r\nimport { Board } from '../features/board/ui/Board.jsx'\r\nimport { useStickersStore } from '../entities/stickers/model/useStickersStore.js'\r\nimport { stickersApi } from '../shared/api/stickerApi.js'\r\nimport { EMOJI_W, EMOJI_H } from '../features/board/constants'\r\nimport { EMOJI_CATALOG, EMOJI_MAP } from '../features/emoji-sticker/stickers.js'\r\nimport { emojiNodeTypes } from '../features/emoji-sticker/public/emojiNodeTypes.js'\r\n\r\nconst SafeFallbackWidget = ({ children }) => <div>{children}</div>\r\n\r\n/**\r\n * @typedef {import('@xyflow/react').NodeProps} NodeProps\r\n * @typedef {Record<string, React.ComponentType<NodeProps>>} NodeTypes\r\n */\r\n\r\n/**\r\n * @param {{ nodeTypes?: NodeTypes }} props\r\n */\r\nexport const EmojiBoardWidget = ({ nodeTypes }) => {\r\n const setStickers = useStickersStore((state) => state.setStickers)\r\n const boardRef = useRef(null)\r\n const [WidgetComp, setWidgetComp] = useState(() => SafeFallbackWidget)\r\n\r\n const mergedNodeTypes = {\r\n ...emojiNodeTypes,\r\n ...(nodeTypes || {}),\r\n }\r\n\r\n async function getEmojiUrlForStickerId(stickerId) {\r\n if (EMOJI_MAP && EMOJI_MAP[stickerId]) {\r\n return EMOJI_MAP[stickerId]\r\n }\r\n\r\n try {\r\n const info = await stickersApi.getById(stickerId)\r\n if (info?.name) {\r\n const local = EMOJI_CATALOG.find((e) => e.name === info.name)\r\n if (local) {\r\n return local.url\r\n }\r\n }\r\n } catch (err) {\r\n console.warn('getEmojiUrlForStickerId: backend lookup failed', err)\r\n }\r\n\r\n return ''\r\n }\r\n\r\n useEffect(() => {\r\n const loadBoard = async () => {\r\n try {\r\n const boardEmojis = await stickersApi.getBoard()\r\n let x = 30\r\n let y = 30\r\n const items = []\r\n\r\n for (const e of boardEmojis) {\r\n const w = e.width ?? EMOJI_W\r\n const h = e.height ?? EMOJI_H\r\n\r\n let imageUrl = EMOJI_MAP?.[String(e.stickerId)] ?? ''\r\n if (!imageUrl) {\r\n try {\r\n imageUrl = await getEmojiUrlForStickerId(e.stickerId)\r\n } catch (err) {\r\n console.warn('Ошибка при получении локального url для stickerId', e.stickerId, err)\r\n imageUrl = ''\r\n }\r\n }\r\n\r\n items.push({\r\n id: e.id,\r\n x,\r\n y,\r\n color: 'transparent',\r\n width: w,\r\n height: h,\r\n text: '',\r\n zIndex: 1,\r\n stickerId: e.stickerId,\r\n imageUrl,\r\n type: 'emoji',\r\n })\r\n\r\n x += 24\r\n y += 24\r\n }\r\n\r\n setStickers(items)\r\n } catch (e) {\r\n console.warn('Не удалось загрузить доску для эмодзи:', e)\r\n }\r\n }\r\n\r\n loadBoard()\r\n }, [setStickers])\r\n\r\n useEffect(() => {\r\n let mounted = true\r\n\r\n import('@xyflow/react')\r\n .then((mod) => {\r\n if (!mounted) {\r\n return\r\n }\r\n\r\n const candidate = (mod && (mod.Widget || mod.default || mod?.widget || mod?.XyflowWidget)) ?? null\r\n if (typeof candidate === 'function' || React.isValidElement(candidate)) {\r\n setWidgetComp(() => candidate)\r\n } else {\r\n setWidgetComp(() => SafeFallbackWidget)\r\n }\r\n })\r\n .catch(() => {\r\n if (mounted) {\r\n setWidgetComp(() => SafeFallbackWidget)\r\n }\r\n })\r\n\r\n return () => { mounted = false }\r\n }, [])\r\n\r\n const Wrapper = WidgetComp || SafeFallbackWidget\r\n\r\n return (\r\n <Wrapper>\r\n <div className=\"relative flex h-screen w-screen bg-gray-100\">\r\n <EmojiToolbar />\r\n <Board ref={boardRef} nodeTypes={mergedNodeTypes} />\r\n </div>\r\n </Wrapper>\r\n )\r\n}\r\n"],"names":["emojiAdd","emojiAddActive","EmojiNode","props","id","selected","emojiOpen","sticker","useStickersStore","s","x","bringToFront","updateSticker","jsxs","Fragment","jsx","NodeResizer","_","params","w","h","stickersApi","e","Handle","Position","EmojiToolbar","setEmojiOpen","useState","wrapperRef","useRef","toggleEmoji","v","useEffect","handler","onEmojiDragStart","item","DND_EMOJI","EMOJI_ITEMS","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,5 +1,5 @@
1
- import { j as e, S, D as B, e as N, u as C, B as A, a as j } from "./Board-C2sVqXKk.js";
2
- import I, { useState as y, useRef as b, useEffect as k } from "react";
1
+ import { j as e, S as B, e as y, D as N, u as C, B as A, a as w } from "./Board-snD7KHu1.js";
2
+ import I, { useState as b, useRef as f, 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" }) }),
5
5
  circle: /* @__PURE__ */ e.jsx("svg", { width: "40", height: "40", children: /* @__PURE__ */ e.jsx("circle", { cx: "20", cy: "20", r: "14", stroke: "black", fill: "none", strokeWidth: "2" }) }),
@@ -63,7 +63,7 @@ const D = {
63
63
  /* @__PURE__ */ e.jsx("line", { x1: "14", y1: "28", x2: "36", y2: "28", stroke: "black", strokeWidth: "2" })
64
64
  ] })
65
65
  }, E = "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 = () => {
66
- const [s, a] = y(!1), n = b(null), x = (t) => {
66
+ const [s, a] = b(!1), n = f(null), x = (t) => {
67
67
  t.stopPropagation(), a((o) => !o);
68
68
  };
69
69
  k(() => {
@@ -74,11 +74,11 @@ const D = {
74
74
  return window.addEventListener("pointerdown", t), () => window.removeEventListener("pointerdown", t);
75
75
  }, [s]);
76
76
  const h = (t) => (o) => {
77
- o.stopPropagation(), o.dataTransfer.setData(B, JSON.stringify({ shapeId: t.id })), o.dataTransfer.effectAllowed = "copy";
77
+ o.stopPropagation(), o.dataTransfer.setData(N, JSON.stringify({ shapeId: t.id })), o.dataTransfer.effectAllowed = "copy";
78
78
  };
79
79
  return /* @__PURE__ */ e.jsxs("div", { className: "left-toolbar-container dragHandle__custom", ref: n, onClick: (t) => t.stopPropagation(), children: [
80
80
  /* @__PURE__ */ e.jsx("div", { className: `toolbar-card ${s ? "toolbar-card--open" : ""}`, children: /* @__PURE__ */ e.jsx("button", { onClick: x, className: `toolbar-btn toolbar-btn--icon toolbar-btn--shape ${s ? "toolbar-btn--active" : ""}`, children: /* @__PURE__ */ e.jsx("div", { className: `toolbar-shape-plate ${s ? "toolbar-shape-plate--active" : ""}`, children: /* @__PURE__ */ e.jsx("img", { src: s ? H : E, alt: "Фигуры", draggable: !1 }) }) }) }),
81
- s && /* @__PURE__ */ e.jsx("div", { className: "palette-wrapper", onClick: (t) => t.stopPropagation(), children: /* @__PURE__ */ e.jsx("div", { className: "shape-panel", children: /* @__PURE__ */ e.jsx("div", { className: "shape-grid", children: S.map((t) => /* @__PURE__ */ e.jsx(
81
+ s && /* @__PURE__ */ e.jsx("div", { className: "palette-wrapper", onClick: (t) => t.stopPropagation(), children: /* @__PURE__ */ e.jsx("div", { className: "shape-panel", children: /* @__PURE__ */ e.jsx("div", { className: "shape-grid", children: B.map((t) => /* @__PURE__ */ e.jsx(
82
82
  "button",
83
83
  {
84
84
  className: "shape-item",
@@ -88,12 +88,13 @@ const D = {
88
88
  children: D[t.id]
89
89
  },
90
90
  t.id
91
- )) }) }) })
91
+ )) }) }) }),
92
+ /* @__PURE__ */ e.jsx(y, { shapeOpen: s })
92
93
  ] });
93
94
  }, R = {
94
- shape: N
95
+ shape: y
95
96
  }, c = ({ children: s }) => /* @__PURE__ */ e.jsx("div", { children: s }), V = ({ nodeTypes: s }) => {
96
- const a = C((l) => l.setStickers), n = b(null), [x, h] = y(() => c), t = {
97
+ const a = C((l) => l.setStickers), n = f(null), [x, h] = b(() => c), t = {
97
98
  ...R,
98
99
  ...s || {}
99
100
  };
@@ -101,30 +102,30 @@ const D = {
101
102
  (async () => {
102
103
  try {
103
104
  const [r, d] = await Promise.all([
104
- j.getAll(),
105
- j.getBoard()
106
- ]), f = new Map(r.map((i) => [String(i.id), i.shapeId]));
105
+ w.getAll(),
106
+ w.getBoard()
107
+ ]), v = new Map(r.map((i) => [String(i.id), i.shapeId]));
107
108
  let g = 30, p = 30;
108
- const w = [];
109
+ const j = [];
109
110
  for (const i of d) {
110
- const v = i.width ?? 140, W = i.height ?? 140, m = i.rotation ?? 0, u = f.get(String(i.shapeId)) ?? "square";
111
- w.push({
111
+ const W = i.width ?? 140, m = i.height ?? 140, u = i.rotation ?? 0, S = v.get(String(i.shapeId)) ?? "square";
112
+ j.push({
112
113
  id: i.id,
113
114
  stickerId: i.id,
114
115
  type: "shape",
115
- shapeId: u,
116
+ shapeId: S,
116
117
  shapeDbId: i.shapeId,
117
118
  x: g,
118
119
  y: p,
119
- width: v,
120
- height: W,
121
- rotation: m,
120
+ width: W,
121
+ height: m,
122
+ rotation: u,
122
123
  zIndex: 1,
123
124
  fill: "transparent",
124
125
  stroke: "#000"
125
126
  }), g += 24, p += 24;
126
127
  }
127
- a(w);
128
+ a(j);
128
129
  } catch (r) {
129
130
  console.warn("Не удалось загрузить доску для фигур:", r);
130
131
  }
@@ -153,4 +154,4 @@ export {
153
154
  P as a,
154
155
  R as s
155
156
  };
156
- //# sourceMappingURL=ShapeBoardWidget-CURF-esc.js.map
157
+ //# sourceMappingURL=ShapeBoardWidget-BN5RXzJF.js.map