integration-modules 0.1.18 → 0.1.19
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/README.md +16 -16
- package/dist/chunks/emojiNodeTypes-BEJUMlcU.js +2 -0
- package/dist/chunks/emojiNodeTypes-BEJUMlcU.js.map +1 -0
- package/dist/chunks/emojiNodeTypes-ChzS-8r3.js +129 -0
- package/dist/chunks/emojiNodeTypes-ChzS-8r3.js.map +1 -0
- package/dist/chunks/stickers-CgxhVTwt.js +7 -0
- package/dist/chunks/stickers-CgxhVTwt.js.map +1 -0
- package/dist/chunks/stickers-MBhZw3wd.js +299 -0
- package/dist/chunks/stickers-MBhZw3wd.js.map +1 -0
- package/dist/emoji/index.cjs +1 -1
- package/dist/emoji/index.js +6 -4
- package/dist/index.cjs +1 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +6 -17753
- package/dist/index.mjs.map +1 -1
- package/dist/integration-modules.css +1 -1
- package/dist/shape/index.cjs +32 -1
- package/dist/shape/index.cjs.map +1 -1
- package/dist/shape/index.js +19285 -3
- package/dist/shape/index.js.map +1 -1
- package/package.json +78 -78
- package/dist/chunks/EmojiBoardWidget-BT3AAibK.js +0 -270
- package/dist/chunks/EmojiBoardWidget-BT3AAibK.js.map +0 -1
- package/dist/chunks/EmojiBoardWidget-CzGz4-vT.js +0 -2
- package/dist/chunks/EmojiBoardWidget-CzGz4-vT.js.map +0 -1
- package/dist/chunks/ShapeBoardWidget-BmgYD5zN.js +0 -1321
- package/dist/chunks/ShapeBoardWidget-BmgYD5zN.js.map +0 -1
- package/dist/chunks/ShapeBoardWidget-quPjhnR6.js +0 -2
- package/dist/chunks/ShapeBoardWidget-quPjhnR6.js.map +0 -1
- package/dist/chunks/useStickersStore-BUOBakV7.js +0 -613
- package/dist/chunks/useStickersStore-BUOBakV7.js.map +0 -1
- package/dist/chunks/useStickersStore-CZRuiluy.js +0 -23
- package/dist/chunks/useStickersStore-CZRuiluy.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# React + Vite
|
|
2
|
-
|
|
3
|
-
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
|
4
|
-
|
|
5
|
-
Currently, two official plugins are available:
|
|
6
|
-
|
|
7
|
-
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
|
|
8
|
-
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
|
|
9
|
-
|
|
10
|
-
## React Compiler
|
|
11
|
-
|
|
12
|
-
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
|
|
13
|
-
|
|
14
|
-
## Expanding the ESLint configuration
|
|
15
|
-
|
|
16
|
-
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.
|
|
1
|
+
# React + Vite
|
|
2
|
+
|
|
3
|
+
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
|
4
|
+
|
|
5
|
+
Currently, two official plugins are available:
|
|
6
|
+
|
|
7
|
+
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
|
|
8
|
+
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
|
|
9
|
+
|
|
10
|
+
## React Compiler
|
|
11
|
+
|
|
12
|
+
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
|
|
13
|
+
|
|
14
|
+
## Expanding the ESLint configuration
|
|
15
|
+
|
|
16
|
+
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("./stickers-CgxhVTwt.js"),C=require("react"),a=require("@xyflow/react"),h="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",g="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",m=({onPick:r})=>{const[o,l]=C.useState(!1),i=C.useRef(null),n=t=>{t.stopPropagation(),l(s=>!s)};C.useEffect(()=>{if(!o)return;const t=s=>{i.current&&!i.current.contains(s.target)&&l(!1)};return window.addEventListener("pointerdown",t),()=>{window.removeEventListener("pointerdown",t)}},[o]);const c=t=>s=>{s.stopPropagation(),s.dataTransfer.setData(e.DND_EMOJI,JSON.stringify({stickerId:t.id,name:t.name})),s.dataTransfer.effectAllowed="copy"},d=t=>s=>{s.stopPropagation(),r&&r({stickerId:String(t.id),name:t.name,url:t.url})};return e.jsxRuntimeExports.jsxs("div",{className:"left-toolbar-container dragHandle__custom",ref:i,onClick:t=>{t.stopPropagation()},children:[e.jsxRuntimeExports.jsx("div",{className:`toolbar-card ${o?"toolbar-card--open":""}`,children:e.jsxRuntimeExports.jsx("button",{onClick:n,className:`toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${o?"toolbar-btn--active":""}`,children:e.jsxRuntimeExports.jsx("div",{className:`toolbar-emoji-plate ${o?"toolbar-emoji-plate--active":""}`,children:e.jsxRuntimeExports.jsx("img",{src:o?g:h,alt:"Эмодзи",draggable:!1})})})}),o&&e.jsxRuntimeExports.jsx("div",{className:"palette-wrapper",onClick:t=>{t.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(t=>e.jsxRuntimeExports.jsx("button",{draggable:!0,onDragStart:c(t),onClick:d(t),className:"emoji-item",children:e.jsxRuntimeExports.jsx("img",{src:t.url,draggable:!1,alt:""})},t.id))})]})})]})},u=({onPick:r})=>e.jsxRuntimeExports.jsx("div",{className:"relative",children:e.jsxRuntimeExports.jsx(m,{onPick:r})}),E=r=>{const{id:o,selected:l,data:i}=r,n=i?.sticker;if(!n||!n.imageUrl)return null;const c=n.width??30,d=n.height??30;return e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx(a.NodeResizer,{isVisible:l,minWidth:30,minHeight:30,onResizeEnd:async(t,s)=>{const p=Math.max(1,Math.round(s.width)),x=Math.max(1,Math.round(s.height));if(i?.onResizeEnd)try{await i.onResizeEnd(String(o),p,x)}catch(j){console.warn("Не удалось сохранить размер эмодзи",j)}}}),e.jsxRuntimeExports.jsx(a.Handle,{type:"target",position:a.Position.Left}),e.jsxRuntimeExports.jsx(a.Handle,{type:"source",position:a.Position.Right}),e.jsxRuntimeExports.jsx("div",{className:"dragHandle__custom",style:{width:c,height:d,position:"relative"},onPointerDown:()=>{i?.onBringToFront&&i.onBringToFront(String(o))},children:e.jsxRuntimeExports.jsx("img",{src:n.imageUrl,draggable:!1,style:{width:"100%",height:"100%"},alt:""})})]})},f={emoji:E};exports.EmojiToolbar=m;exports.EmojiWidget=u;exports.emojiNodeTypes=f;
|
|
2
|
+
//# sourceMappingURL=emojiNodeTypes-BEJUMlcU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emojiNodeTypes-BEJUMlcU.js","sources":["../../src/assets/emoji_add.svg?url","../../src/assets/emoji_add_active.svg?url","../../src/components/EmojiToolbar.jsx","../../src/widgets/EmojiWidget.jsx","../../src/features/emoji-sticker/ui/EmojiNode.jsx","../../src/features/emoji-sticker/public/emojiNodeTypes.js"],"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\n/**\n * @param {{ onPick?: (payload: { stickerId: string, name?: string, url?: string }) => void }} props\n */\nexport const EmojiToolbar = ({ onPick }) => {\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 const onEmojiClick = (item) => (e) => {\n e.stopPropagation();\n\n if (onPick) {\n onPick({\n stickerId: String(item.id),\n name: item.name,\n url: item.url,\n });\n }\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 onClick={onEmojiClick(item)}\n className=\"emoji-item\"\n >\n <img src={item.url} draggable={false} alt=\"\" />\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { EmojiToolbar } from '../components/EmojiToolbar.jsx';\n\nexport const EmojiWidget = ({ onPick }) => {\n return (\n <div className=\"relative\">\n <EmojiToolbar onPick={onPick} />\n </div>\n );\n};\n","import React from 'react';\nimport { NodeResizer, Handle, Position } from '@xyflow/react';\nimport '../../../styles/sticker.css';\n\n/**\n * Ожидаем, что потребитель положит в node.data:\n * {\n * sticker: { width, height, imageUrl, ... },\n * onResizeEnd?: (id, width, height) => void | Promise<void>,\n * onBringToFront?: (id) => void\n * }\n */\nexport const EmojiNode = (props) => {\n const { id, selected, data } = props;\n\n const sticker = data?.sticker;\n\n if (!sticker || !sticker.imageUrl) {\n return null;\n }\n\n const width = sticker.width ?? 30;\n const height = sticker.height ?? 30;\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 if (data?.onResizeEnd) {\n try {\n await data.onResizeEnd(String(id), w, h);\n } catch (e) {\n console.warn('Не удалось сохранить размер эмодзи', e);\n }\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, height, position: 'relative' }}\n onPointerDown={() => {\n if (data?.onBringToFront) {\n data.onBringToFront(String(id));\n }\n }}\n >\n <img\n src={sticker.imageUrl}\n draggable={false}\n style={{ width: '100%', height: '100%' }}\n alt=\"\"\n />\n </div>\n </>\n );\n};\n","import { EmojiNode } from '../ui/EmojiNode.jsx';\n\nexport const emojiNodeTypes = {\n emoji: EmojiNode,\n};\n"],"names":["emojiAdd","emojiAddActive","EmojiToolbar","onPick","emojiOpen","setEmojiOpen","useState","wrapperRef","useRef","toggleEmoji","e","v","useEffect","handler","onEmojiDragStart","item","DND_EMOJI","onEmojiClick","jsxs","jsx","EMOJI_ITEMS","EmojiWidget","EmojiNode","props","id","selected","data","sticker","width","height","Fragment","NodeResizer","_","params","w","h","Handle","Position","emojiNodeTypes"],"mappings":"qGAAAA,EAAe,yqFCAfC,EAAe,qsFCUFC,EAAe,CAAC,CAAE,OAAAC,KAAa,CACxC,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAC1CC,EAAaC,EAAAA,OAAO,IAAI,EAExBC,EAAeC,GAAM,CACvBA,EAAE,gBAAA,EACFL,EAAcM,GAAM,CAACA,CAAC,CAC1B,EAEAC,EAAAA,UAAU,IAAM,CACZ,GAAI,CAACR,EACD,OAGJ,MAAMS,EAAWH,GAAM,CACfH,EAAW,SAAW,CAACA,EAAW,QAAQ,SAASG,EAAE,MAAM,GAC3DL,EAAa,EAAK,CAE1B,EAEA,cAAO,iBAAiB,cAAeQ,CAAO,EAEvC,IAAM,CACT,OAAO,oBAAoB,cAAeA,CAAO,CACrD,CACJ,EAAG,CAACT,CAAS,CAAC,EAEd,MAAMU,EAAoBC,GAAUL,GAAM,CACtCA,EAAE,gBAAA,EACFA,EAAE,aAAa,QACXM,EAAAA,UACA,KAAK,UAAU,CACX,UAAWD,EAAK,GAChB,KAAMA,EAAK,IAAA,CACd,CAAA,EAELL,EAAE,aAAa,cAAgB,MACnC,EAEMO,EAAgBF,GAAUL,GAAM,CAClCA,EAAE,gBAAA,EAEEP,GACAA,EAAO,CACH,UAAW,OAAOY,EAAK,EAAE,EACzB,KAAMA,EAAK,KACX,IAAKA,EAAK,GAAA,CACb,CAET,EAEA,OACIG,EAAAA,kBAAAA,KAAC,MAAA,CACG,UAAU,4CACV,IAAKX,EACL,QAAUG,GAAM,CACZA,EAAE,gBAAA,CACN,EAEA,SAAA,CAAAS,EAAAA,kBAAAA,IAAC,OAAI,UAAW,gBAAgBf,EAAY,qBAAuB,EAAE,GACjE,SAAAe,EAAAA,kBAAAA,IAAC,SAAA,CACG,QAASV,EACT,UAAW,oDAAoDL,EAAY,sBAAwB,EAAE,GAErG,iCAAC,MAAA,CAAI,UAAW,uBAAuBA,EAAY,8BAAgC,EAAE,GACjF,SAAAe,wBAAC,MAAA,CAAI,IAAKf,EAAYH,EAAiBD,EAAU,IAAI,SAAS,UAAW,GAAO,CAAA,CACpF,CAAA,CAAA,EAER,EAECI,GACGe,EAAAA,kBAAAA,IAAC,MAAA,CACG,UAAU,kBACV,QAAUT,GAAM,CACZA,EAAE,gBAAA,CACN,EAEA,SAAAQ,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,cAAc,MAAO,CAAE,MAAO,IAAK,OAAQ,GAAA,EACtD,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,qBACX,SAAAA,EAAAA,kBAAAA,IAAC,QAAK,UAAU,qBAAqB,mBAAO,CAAA,CAChD,0BAEC,MAAA,CAAI,UAAU,aACV,SAAAC,cAAY,IAAKL,GACdI,EAAAA,kBAAAA,IAAC,SAAA,CAEG,UAAS,GACT,YAAaL,EAAiBC,CAAI,EAClC,QAASE,EAAaF,CAAI,EAC1B,UAAU,aAEV,SAAAI,EAAAA,kBAAAA,IAAC,OAAI,IAAKJ,EAAK,IAAK,UAAW,GAAO,IAAI,EAAA,CAAG,CAAA,EANxCA,EAAK,EAAA,CAQjB,CAAA,CACL,CAAA,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,CAAA,CAIhB,EC3GaM,EAAc,CAAC,CAAE,OAAAlB,6BAErB,MAAA,CAAI,UAAU,WACX,SAAAgB,EAAAA,kBAAAA,IAACjB,EAAA,CAAa,OAAAC,EAAgB,CAAA,CAClC,ECKKmB,EAAaC,GAAU,CAChC,KAAM,CAAE,GAAAC,EAAI,SAAAC,EAAU,KAAAC,CAAA,EAASH,EAEzBI,EAAUD,GAAM,QAEtB,GAAI,CAACC,GAAW,CAACA,EAAQ,SACrB,OAAO,KAGX,MAAMC,EAAQD,EAAQ,OAAS,GACzBE,EAASF,EAAQ,QAAU,GAEjC,OACIT,EAAAA,kBAAAA,KAAAY,6BAAA,CACI,SAAA,CAAAX,EAAAA,kBAAAA,IAACY,EAAAA,YAAA,CACG,UAAWN,EACX,SAAU,GACV,UAAW,GACX,YAAa,MAAOO,EAAGC,IAAW,CAC9B,MAAMC,EAAI,KAAK,IAAI,EAAG,KAAK,MAAMD,EAAO,KAAK,CAAC,EACxCE,EAAI,KAAK,IAAI,EAAG,KAAK,MAAMF,EAAO,MAAM,CAAC,EAE/C,GAAIP,GAAM,YACN,GAAI,CACA,MAAMA,EAAK,YAAY,OAAOF,CAAE,EAAGU,EAAGC,CAAC,CAC3C,OAASzB,EAAG,CACR,QAAQ,KAAK,qCAAsCA,CAAC,CACxD,CAER,CAAA,CAAA,0BAGH0B,EAAAA,OAAA,CAAO,KAAK,SAAS,SAAUC,EAAAA,SAAS,KAAM,0BAC9CD,EAAAA,OAAA,CAAO,KAAK,SAAS,SAAUC,EAAAA,SAAS,MAAO,EAEhDlB,EAAAA,kBAAAA,IAAC,MAAA,CACG,UAAU,qBACV,MAAO,CAAE,MAAAS,EAAO,OAAAC,EAAQ,SAAU,UAAA,EAClC,cAAe,IAAM,CACbH,GAAM,gBACNA,EAAK,eAAe,OAAOF,CAAE,CAAC,CAEtC,EAEA,SAAAL,EAAAA,kBAAAA,IAAC,MAAA,CACG,IAAKQ,EAAQ,SACb,UAAW,GACX,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAA,EAChC,IAAI,EAAA,CAAA,CACR,CAAA,CACJ,EACJ,CAER,EC/DaW,EAAiB,CAC1B,MAAOhB,CACX"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { j as t, E as p, D as j } from "./stickers-MBhZw3wd.js";
|
|
2
|
+
import { useState as f, useRef as x, useEffect as w } from "react";
|
|
3
|
+
import { NodeResizer as u, Handle as d, Position as C } from "@xyflow/react";
|
|
4
|
+
const 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='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", 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='%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", k = ({ onPick: n }) => {
|
|
5
|
+
const [o, r] = f(!1), i = x(null), s = (e) => {
|
|
6
|
+
e.stopPropagation(), r((a) => !a);
|
|
7
|
+
};
|
|
8
|
+
w(() => {
|
|
9
|
+
if (!o)
|
|
10
|
+
return;
|
|
11
|
+
const e = (a) => {
|
|
12
|
+
i.current && !i.current.contains(a.target) && r(!1);
|
|
13
|
+
};
|
|
14
|
+
return window.addEventListener("pointerdown", e), () => {
|
|
15
|
+
window.removeEventListener("pointerdown", e);
|
|
16
|
+
};
|
|
17
|
+
}, [o]);
|
|
18
|
+
const l = (e) => (a) => {
|
|
19
|
+
a.stopPropagation(), a.dataTransfer.setData(
|
|
20
|
+
j,
|
|
21
|
+
JSON.stringify({
|
|
22
|
+
stickerId: e.id,
|
|
23
|
+
name: e.name
|
|
24
|
+
})
|
|
25
|
+
), a.dataTransfer.effectAllowed = "copy";
|
|
26
|
+
}, c = (e) => (a) => {
|
|
27
|
+
a.stopPropagation(), n && n({
|
|
28
|
+
stickerId: String(e.id),
|
|
29
|
+
name: e.name,
|
|
30
|
+
url: e.url
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ t.jsxs(
|
|
34
|
+
"div",
|
|
35
|
+
{
|
|
36
|
+
className: "left-toolbar-container dragHandle__custom",
|
|
37
|
+
ref: i,
|
|
38
|
+
onClick: (e) => {
|
|
39
|
+
e.stopPropagation();
|
|
40
|
+
},
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ t.jsx("div", { className: `toolbar-card ${o ? "toolbar-card--open" : ""}`, children: /* @__PURE__ */ t.jsx(
|
|
43
|
+
"button",
|
|
44
|
+
{
|
|
45
|
+
onClick: s,
|
|
46
|
+
className: `toolbar-btn toolbar-btn--icon toolbar-btn--emoji ${o ? "toolbar-btn--active" : ""}`,
|
|
47
|
+
children: /* @__PURE__ */ t.jsx("div", { className: `toolbar-emoji-plate ${o ? "toolbar-emoji-plate--active" : ""}`, children: /* @__PURE__ */ t.jsx("img", { src: o ? v : b, alt: "Эмодзи", draggable: !1 }) })
|
|
48
|
+
}
|
|
49
|
+
) }),
|
|
50
|
+
o && /* @__PURE__ */ t.jsx(
|
|
51
|
+
"div",
|
|
52
|
+
{
|
|
53
|
+
className: "palette-wrapper",
|
|
54
|
+
onClick: (e) => {
|
|
55
|
+
e.stopPropagation();
|
|
56
|
+
},
|
|
57
|
+
children: /* @__PURE__ */ t.jsxs("div", { className: "emoji-panel", style: { width: 300, height: 500 }, children: [
|
|
58
|
+
/* @__PURE__ */ t.jsx("div", { className: "emoji-panel-header", children: /* @__PURE__ */ t.jsx("span", { className: "emoji-header-title", children: "Стикеры" }) }),
|
|
59
|
+
/* @__PURE__ */ t.jsx("div", { className: "emoji-grid", children: p.map((e) => /* @__PURE__ */ t.jsx(
|
|
60
|
+
"button",
|
|
61
|
+
{
|
|
62
|
+
draggable: !0,
|
|
63
|
+
onDragStart: l(e),
|
|
64
|
+
onClick: c(e),
|
|
65
|
+
className: "emoji-item",
|
|
66
|
+
children: /* @__PURE__ */ t.jsx("img", { src: e.url, draggable: !1, alt: "" })
|
|
67
|
+
},
|
|
68
|
+
e.id
|
|
69
|
+
)) })
|
|
70
|
+
] })
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
}, L = ({ onPick: n }) => /* @__PURE__ */ t.jsx("div", { className: "relative", children: /* @__PURE__ */ t.jsx(k, { onPick: n }) }), M = (n) => {
|
|
77
|
+
const { id: o, selected: r, data: i } = n, s = i?.sticker;
|
|
78
|
+
if (!s || !s.imageUrl)
|
|
79
|
+
return null;
|
|
80
|
+
const l = s.width ?? 30, c = s.height ?? 30;
|
|
81
|
+
return /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
|
|
82
|
+
/* @__PURE__ */ t.jsx(
|
|
83
|
+
u,
|
|
84
|
+
{
|
|
85
|
+
isVisible: r,
|
|
86
|
+
minWidth: 30,
|
|
87
|
+
minHeight: 30,
|
|
88
|
+
onResizeEnd: async (e, a) => {
|
|
89
|
+
const h = Math.max(1, Math.round(a.width)), m = Math.max(1, Math.round(a.height));
|
|
90
|
+
if (i?.onResizeEnd)
|
|
91
|
+
try {
|
|
92
|
+
await i.onResizeEnd(String(o), h, m);
|
|
93
|
+
} catch (g) {
|
|
94
|
+
console.warn("Не удалось сохранить размер эмодзи", g);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
),
|
|
99
|
+
/* @__PURE__ */ t.jsx(d, { type: "target", position: C.Left }),
|
|
100
|
+
/* @__PURE__ */ t.jsx(d, { type: "source", position: C.Right }),
|
|
101
|
+
/* @__PURE__ */ t.jsx(
|
|
102
|
+
"div",
|
|
103
|
+
{
|
|
104
|
+
className: "dragHandle__custom",
|
|
105
|
+
style: { width: l, height: c, position: "relative" },
|
|
106
|
+
onPointerDown: () => {
|
|
107
|
+
i?.onBringToFront && i.onBringToFront(String(o));
|
|
108
|
+
},
|
|
109
|
+
children: /* @__PURE__ */ t.jsx(
|
|
110
|
+
"img",
|
|
111
|
+
{
|
|
112
|
+
src: s.imageUrl,
|
|
113
|
+
draggable: !1,
|
|
114
|
+
style: { width: "100%", height: "100%" },
|
|
115
|
+
alt: ""
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
] });
|
|
121
|
+
}, y = {
|
|
122
|
+
emoji: M
|
|
123
|
+
};
|
|
124
|
+
export {
|
|
125
|
+
L as E,
|
|
126
|
+
k as a,
|
|
127
|
+
y as e
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=emojiNodeTypes-ChzS-8r3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emojiNodeTypes-ChzS-8r3.js","sources":["../../src/assets/emoji_add.svg?url","../../src/assets/emoji_add_active.svg?url","../../src/components/EmojiToolbar.jsx","../../src/widgets/EmojiWidget.jsx","../../src/features/emoji-sticker/ui/EmojiNode.jsx","../../src/features/emoji-sticker/public/emojiNodeTypes.js"],"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\n/**\n * @param {{ onPick?: (payload: { stickerId: string, name?: string, url?: string }) => void }} props\n */\nexport const EmojiToolbar = ({ onPick }) => {\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 const onEmojiClick = (item) => (e) => {\n e.stopPropagation();\n\n if (onPick) {\n onPick({\n stickerId: String(item.id),\n name: item.name,\n url: item.url,\n });\n }\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 onClick={onEmojiClick(item)}\n className=\"emoji-item\"\n >\n <img src={item.url} draggable={false} alt=\"\" />\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { EmojiToolbar } from '../components/EmojiToolbar.jsx';\n\nexport const EmojiWidget = ({ onPick }) => {\n return (\n <div className=\"relative\">\n <EmojiToolbar onPick={onPick} />\n </div>\n );\n};\n","import React from 'react';\nimport { NodeResizer, Handle, Position } from '@xyflow/react';\nimport '../../../styles/sticker.css';\n\n/**\n * Ожидаем, что потребитель положит в node.data:\n * {\n * sticker: { width, height, imageUrl, ... },\n * onResizeEnd?: (id, width, height) => void | Promise<void>,\n * onBringToFront?: (id) => void\n * }\n */\nexport const EmojiNode = (props) => {\n const { id, selected, data } = props;\n\n const sticker = data?.sticker;\n\n if (!sticker || !sticker.imageUrl) {\n return null;\n }\n\n const width = sticker.width ?? 30;\n const height = sticker.height ?? 30;\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 if (data?.onResizeEnd) {\n try {\n await data.onResizeEnd(String(id), w, h);\n } catch (e) {\n console.warn('Не удалось сохранить размер эмодзи', e);\n }\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, height, position: 'relative' }}\n onPointerDown={() => {\n if (data?.onBringToFront) {\n data.onBringToFront(String(id));\n }\n }}\n >\n <img\n src={sticker.imageUrl}\n draggable={false}\n style={{ width: '100%', height: '100%' }}\n alt=\"\"\n />\n </div>\n </>\n );\n};\n","import { EmojiNode } from '../ui/EmojiNode.jsx';\n\nexport const emojiNodeTypes = {\n emoji: EmojiNode,\n};\n"],"names":["emojiAdd","emojiAddActive","EmojiToolbar","onPick","emojiOpen","setEmojiOpen","useState","wrapperRef","useRef","toggleEmoji","v","useEffect","handler","e","onEmojiDragStart","item","DND_EMOJI","onEmojiClick","jsxs","jsx","EMOJI_ITEMS","EmojiWidget","EmojiNode","props","id","selected","data","sticker","width","height","Fragment","NodeResizer","_","params","w","h","Handle","Position","emojiNodeTypes"],"mappings":"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"}
|