From 2c0e68ecd5a0366401c80ce08e410de52a12d64a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesus=20Manuel=20Pi=C3=B1eiro=20Cid?= Date: Wed, 12 Mar 2025 13:06:48 +0100 Subject: [PATCH 1/2] chore: initial commit From f67d924ede899b733622923a06c91eb201d2d68e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesus=20Manuel=20Pi=C3=B1eiro=20Cid?= Date: Wed, 12 Mar 2025 17:06:36 +0100 Subject: [PATCH 2/2] chore: fix lint issues --- code/app/layout.tsx | 6 +- .../actions/workspace-tool/workspace-tool.ts | 15 +- code/components/nodes/pantone/pantone.ts | 2 - code/components/nodes/workspace/workspace.ts | 9 +- .../overlay/room-information-overlay.tsx | 102 +-- .../overlay/text-overlay-options.tsx | 660 +++++++++--------- .../room-components/overlay/tools-overlay.tsx | 4 +- code/components/room/room.layout.tsx | 22 +- code/components/room/room.tsx | 54 +- code/package-lock.json | 38 +- code/package.json | 8 +- 11 files changed, 479 insertions(+), 441 deletions(-) diff --git a/code/app/layout.tsx b/code/app/layout.tsx index b12112b..2652d96 100644 --- a/code/app/layout.tsx +++ b/code/app/layout.tsx @@ -4,11 +4,13 @@ import "./globals.css"; import { AppProviders } from "./providers"; const notoSans = Noto_Sans({ + preload: true, variable: "--font-noto-sans", subsets: ["latin"], }); const notoSansMono = Noto_Sans_Mono({ + preload: true, variable: "--font-noto-sans-mono", subsets: ["latin"], }); @@ -28,9 +30,7 @@ export default function RootLayout({ - - {children} - + {children} ); diff --git a/code/components/actions/workspace-tool/workspace-tool.ts b/code/components/actions/workspace-tool/workspace-tool.ts index 92c0f08..ed938e9 100644 --- a/code/components/actions/workspace-tool/workspace-tool.ts +++ b/code/components/actions/workspace-tool/workspace-tool.ts @@ -2,7 +2,11 @@ import { v4 as uuidv4 } from "uuid"; import { Vector2d } from "konva/lib/types"; import { WeaveWorkspaceToolActionState } from "./types"; import { WORKSPACE_TOOL_STATE } from "./constants"; -import { WEAVE_NODE_LAYER_ID, WeaveAction, WeaveNodesSelectionPlugin } from "@inditextech/weavejs-sdk"; +import { + WEAVE_NODE_LAYER_ID, + WeaveAction, + WeaveNodesSelectionPlugin, +} from "@inditextech/weavejs-sdk"; import Konva from "konva"; export class WorkspaceToolAction extends WeaveAction { @@ -61,7 +65,8 @@ export class WorkspaceToolAction extends WeaveAction { private addWorkspace() { const stage = this.instance.getStage(); - const selectionPlugin = this.instance.getPlugin("nodesSelection"); + const selectionPlugin = + this.instance.getPlugin("nodesSelection"); if (selectionPlugin) { const tr = selectionPlugin.getTransformer(); tr.hide(); @@ -127,14 +132,14 @@ export class WorkspaceToolAction extends WeaveAction { stage.container().style.cursor = "default"; - const selectionPlugin = this.instance.getPlugin("nodesSelection"); + const selectionPlugin = + this.instance.getPlugin("nodesSelection"); if (selectionPlugin) { - const tr = selectionPlugin.getTransformer(); - tr.show(); const node = stage.findOne(`#${this.workspaceId}`); if (node) { selectionPlugin.setSelectedNodes([node]); } + this.instance.triggerAction("selectionTool"); } this.workspaceId = null; diff --git a/code/components/nodes/pantone/pantone.ts b/code/components/nodes/pantone/pantone.ts index 124e94f..20c5685 100644 --- a/code/components/nodes/pantone/pantone.ts +++ b/code/components/nodes/pantone/pantone.ts @@ -36,8 +36,6 @@ export class PantoneNode extends WeaveNode { }; delete pantoneParams.zIndex; - console.log("pantoneParams", pantoneParams); - const pantone = new Konva.Group({ ...pantoneParams, width: pantoneParams.width, diff --git a/code/components/nodes/workspace/workspace.ts b/code/components/nodes/workspace/workspace.ts index 9209466..f90c383 100644 --- a/code/components/nodes/workspace/workspace.ts +++ b/code/components/nodes/workspace/workspace.ts @@ -5,9 +5,16 @@ import { WeaveStateElement, } from "@inditextech/weavejs-sdk"; import Konva from "konva"; +import { Noto_Sans_Mono } from "next/font/google"; export const WORKSPACE_NODE_TYPE = "workspace"; +const notoSansMono = Noto_Sans_Mono({ + preload: true, + variable: "--font-noto-sans-mono", + subsets: ["latin"], +}); + export class WorkspaceNode extends WeaveNode { protected nodeType = WORKSPACE_NODE_TYPE; @@ -70,7 +77,7 @@ export class WorkspaceNode extends WeaveNode { width: workspaceWidth, height: titleHeight - 10, fontSize: 20, - fontFamily: "NeueHelveticaZara", + fontFamily: notoSansMono.style.fontFamily, align: "left", text: workspaceParams.title, stroke: "black", diff --git a/code/components/room-components/overlay/room-information-overlay.tsx b/code/components/room-components/overlay/room-information-overlay.tsx index 5c29e1a..dfbc8e5 100644 --- a/code/components/room-components/overlay/room-information-overlay.tsx +++ b/code/components/room-components/overlay/room-information-overlay.tsx @@ -62,57 +62,61 @@ export function RoomInformationOverlay() { return (
-
- -
- setMenuOpen(open)}> - -
-
- {room} -
- {menuOpen ? : } -
-
- - - Export to image - - +
+ +
+
+ {/*
*/} + setMenuOpen(open)}> + - - Export to PDF - - - +
+ {room} +
+ {menuOpen ? : } +
+ + - Exit room -
-
-
-
- + + Export to image + + + + Export to PDF + + + + Exit room + + + + {/*
*/} + +
); diff --git a/code/components/room-components/overlay/text-overlay-options.tsx b/code/components/room-components/overlay/text-overlay-options.tsx index 206c770..0cab19f 100644 --- a/code/components/room-components/overlay/text-overlay-options.tsx +++ b/code/components/room-components/overlay/text-overlay-options.tsx @@ -21,19 +21,10 @@ import { InputColor } from "../inputs/input-color"; import withInstanceNode from "../with-instance-node"; import { Weave, WeaveStateElement } from "@inditextech/weavejs-sdk"; import { - Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; -import { motion } from "framer-motion"; - -const motionProps = { - initial: { opacity: 0, height: 0 }, - animate: { opacity: 1, height: "auto" }, - exit: { opacity: 0, height: 0 }, - transition: { duration: 0.8, ease: "easeInOut" }, -}; function TextOverlayOptions({ instance, @@ -43,365 +34,362 @@ function TextOverlayOptions({ node: WeaveStateElement; }) { return ( -
- - - - Typography - - - - { - console.log("NEW FONT", value); - }} - /> - { + +
+ + + Typography + + +
+ +
+ { + console.log("NEW FONT", value); + }} + /> + { + const updatedNode = { + ...node, + props: { + ...node.props, + fontSize: value, + }, + }; + instance.updateNode(updatedNode); + }} + /> +
+
+ Style +
+
+ } + pressed={ + (node.props.fontStyle ?? "normal").indexOf("normal") !== -1 + } + onClick={() => { const updatedNode = { ...node, props: { ...node.props, - fontSize: value, + fontStyle: "normal", }, }; instance.updateNode(updatedNode); }} /> -
-
Style
-
- } - pressed={ - (node.props.fontStyle ?? "normal").indexOf("normal") !== - -1 - } - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - fontStyle: "normal", - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={ - (node.props.fontStyle ?? "normal").indexOf("italic") !== - -1 - } - onClick={() => { - let items = [ - ...(node.props.fontStyle ?? "normal") - .split(" ") - .filter((e: string) => e !== "normal"), - ]; - if ( - (node.props.fontStyle ?? "normal").indexOf("italic") !== - -1 - ) { - items = items.filter((e: string) => e !== "italic"); - } - if ( - (node.props.fontStyle ?? "normal").indexOf("italic") === - -1 - ) { - items = [...items]; - items.push("italic"); - } + } + pressed={ + (node.props.fontStyle ?? "normal").indexOf("italic") !== -1 + } + onClick={() => { + let items = [ + ...(node.props.fontStyle ?? "normal") + .split(" ") + .filter((e: string) => e !== "normal"), + ]; + if ( + (node.props.fontStyle ?? "normal").indexOf("italic") !== -1 + ) { + items = items.filter((e: string) => e !== "italic"); + } + if ( + (node.props.fontStyle ?? "normal").indexOf("italic") === -1 + ) { + items = [...items]; + items.push("italic"); + } - if (items.length === 0) { - items = ["normal"]; - } + if (items.length === 0) { + items = ["normal"]; + } - const updatedNode = { - ...node, - props: { - ...node.props, - fontStyle: items.join(" "), - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={ - (node.props.fontStyle ?? "normal").indexOf("bold") !== -1 - } - onClick={() => { - let items = [ - ...(node.props.fontStyle ?? "normal") - .split(" ") - .filter((e: string) => e !== "normal"), - ]; - if ( - (node.props.fontStyle ?? "normal").indexOf("bold") !== - -1 - ) { - items = items.filter((e: string) => e !== "bold"); - } - if ( - (node.props.fontStyle ?? "normal").indexOf("bold") === - -1 - ) { - items = [...items]; - items.push("bold"); - } + const updatedNode = { + ...node, + props: { + ...node.props, + fontStyle: items.join(" "), + }, + }; + instance.updateNode(updatedNode); + }} + /> + } + pressed={ + (node.props.fontStyle ?? "normal").indexOf("bold") !== -1 + } + onClick={() => { + let items = [ + ...(node.props.fontStyle ?? "normal") + .split(" ") + .filter((e: string) => e !== "normal"), + ]; + if ( + (node.props.fontStyle ?? "normal").indexOf("bold") !== -1 + ) { + items = items.filter((e: string) => e !== "bold"); + } + if ( + (node.props.fontStyle ?? "normal").indexOf("bold") === -1 + ) { + items = [...items]; + items.push("bold"); + } - if (items.length === 0) { - items = ["normal"]; - } + if (items.length === 0) { + items = ["normal"]; + } - const updatedNode = { - ...node, - props: { - ...node.props, - fontStyle: items.join(" "), - }, - }; - instance.updateNode(updatedNode); - }} - /> -
-
-
-
Variant
-
- } - pressed={node.props.fontVariant === "normal"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - fontVariant: "normal", - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={node.props.fontVariant === "small-caps"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - fontVariant: "small-caps", - }, - }; - instance.updateNode(updatedNode); - }} - /> -
-
-
-
Decoration
-
- } - pressed={(node.props.textDecoration ?? "") === ""} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - textDecoration: "", - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={ - (node.props.textDecoration ?? "") === "line-through" - } - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - textDecoration: "line-through", - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={(node.props.textDecoration ?? "") === "underline"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - textDecoration: "underline", - }, - }; - instance.updateNode(updatedNode); - }} - /> -
-
-
-
Alignment
-
- } - pressed={(node.props.align ?? "") === "left"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - align: "left", - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={(node.props.align ?? "") === "center"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - align: "center", - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={(node.props.align ?? "") === "right"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - align: "right", - }, - }; - instance.updateNode(updatedNode); - }} - /> -
-
+ const updatedNode = { + ...node, + props: { + ...node.props, + fontStyle: items.join(" "), + }, + }; + instance.updateNode(updatedNode); + }} + /> +
+
+
+
+ Variant +
+
+ } + pressed={node.props.fontVariant === "normal"} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + fontVariant: "normal", + }, + }; + instance.updateNode(updatedNode); + }} + /> + } + pressed={node.props.fontVariant === "small-caps"} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + fontVariant: "small-caps", + }, + }; + instance.updateNode(updatedNode); + }} + /> +
+
+
+
+ Decoration +
+
+ } + pressed={(node.props.textDecoration ?? "") === ""} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + textDecoration: "", + }, + }; + instance.updateNode(updatedNode); + }} + /> + } + pressed={(node.props.textDecoration ?? "") === "line-through"} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + textDecoration: "line-through", + }, + }; + instance.updateNode(updatedNode); + }} + /> + } + pressed={(node.props.textDecoration ?? "") === "underline"} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + textDecoration: "underline", + }, + }; + instance.updateNode(updatedNode); + }} + /> +
+
+
+
+ Alignment +
+
+ } + pressed={(node.props.align ?? "") === "left"} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + align: "left", + }, + }; + instance.updateNode(updatedNode); + }} + /> + } + pressed={(node.props.align ?? "") === "center"} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + align: "center", + }, + }; + instance.updateNode(updatedNode); + }} + /> + } + pressed={(node.props.align ?? "") === "right"} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + align: "right", + }, + }; + instance.updateNode(updatedNode); + }} + /> +
+
-
-
- Vertical Alignment -
-
- } - pressed={(node.props.verticalAlign ?? "top") === "top"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - verticalAlign: "top", - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={(node.props.verticalAlign ?? "top") === "middle"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - verticalAlign: "middle", - }, - }; - instance.updateNode(updatedNode); - }} - /> - } - pressed={(node.props.verticalAlign ?? "") === "bottom"} - onClick={() => { - const updatedNode = { - ...node, - props: { - ...node.props, - verticalAlign: "bottom", - }, - }; - instance.updateNode(updatedNode); - }} - /> -
-
- { +
+
+ Vertical Alignment +
+
+ } + pressed={(node.props.verticalAlign ?? "top") === "top"} + onClick={() => { + const updatedNode = { + ...node, + props: { + ...node.props, + verticalAlign: "top", + }, + }; + instance.updateNode(updatedNode); + }} + /> + } + pressed={(node.props.verticalAlign ?? "top") === "middle"} + onClick={() => { const updatedNode = { ...node, props: { ...node.props, - lineHeight: value, + verticalAlign: "middle", }, }; instance.updateNode(updatedNode); }} /> - { + } + pressed={(node.props.verticalAlign ?? "") === "bottom"} + onClick={() => { const updatedNode = { ...node, props: { ...node.props, - fill: `#${value}`, + verticalAlign: "bottom", }, }; instance.updateNode(updatedNode); }} /> - - - - -
+
+
+ { + const updatedNode = { + ...node, + props: { + ...node.props, + lineHeight: value, + }, + }; + instance.updateNode(updatedNode); + }} + /> + { + const updatedNode = { + ...node, + props: { + ...node.props, + fill: `#${value}`, + }, + }; + instance.updateNode(updatedNode); + }} + /> +
+ + ); } diff --git a/code/components/room-components/overlay/tools-overlay.tsx b/code/components/room-components/overlay/tools-overlay.tsx index 50befdf..85a1cb4 100644 --- a/code/components/room-components/overlay/tools-overlay.tsx +++ b/code/components/room-components/overlay/tools-overlay.tsx @@ -96,14 +96,14 @@ export function ToolsOverlay() { onClick={() => triggerTool("workspaceTool")} label="Add a frame" /> - - } active={actualAction === "pantoneTool"} onClick={() => triggerTool("pantoneTool")} label="Add a pantone color" /> + + } active={imagesLibraryVisible} diff --git a/code/components/room/room.layout.tsx b/code/components/room/room.layout.tsx index e552301..d524581 100644 --- a/code/components/room/room.layout.tsx +++ b/code/components/room/room.layout.tsx @@ -1,6 +1,5 @@ "use client"; -import { Hourglass } from "lucide-react"; import React from "react"; import { ContextMenuRender } from "@/components/room-components/context-menu"; import { useCollaborationRoom } from "@/store/store"; @@ -11,6 +10,7 @@ import { MultiuseOverlay } from "@/components/room-components/overlay/multiuse-o import { useWeave } from "@inditextech/weavejs-react"; import { WEAVE_INSTANCE_STATUS } from "@inditextech/weavejs-sdk"; import { ZoomHandlerOverlay } from "../room-components/overlay/zoom-handler-overlay"; +import { Logo } from "../utils/logo"; export const RoomLayout = () => { const status = useWeave((state) => state.status); @@ -52,18 +52,22 @@ export const RoomLayout = () => { {uploadingImage && ( -
-
- -
Uploading image
+
+
+ +
+ Uploading image... +
)} {loadingImage && ( -
-
- -
Loading image
+
+
+ +
+ Loading image... +
)} diff --git a/code/components/room/room.tsx b/code/components/room/room.tsx index 0b2787f..58d7cf4 100644 --- a/code/components/room/room.tsx +++ b/code/components/room/room.tsx @@ -2,6 +2,8 @@ import React from "react"; import { useRouter, useParams, useSearchParams } from "next/navigation"; +import { useMutation } from "@tanstack/react-query"; +import { postImage } from "@/api/post-image"; import { Weave, WeaveRectangleToolAction, @@ -65,6 +67,11 @@ const statusMap = { }; export const Room = () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const inputFileRef = React.useRef(null); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const fileUploadFinishRef = React.useRef(null); + const params = useParams<{ roomId: string }>(); const [loadedParams, setLoadedParams] = React.useState(false); const searchParams = useSearchParams(); @@ -108,6 +115,12 @@ export const Room = () => { (state) => state.setLoadingImage ); + const mutationUpload = useMutation({ + mutationFn: async (file: File) => { + return await postImage(room ?? "", file); + }, + }); + React.useEffect(() => { setFetchConnectionUrlError(null); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -237,12 +250,12 @@ export const Room = () => { } fonts={[ { - id: "NotoSansMono", - name: "Noto Sans Mono", + id: "NotoSans", + name: "Noto Sans", }, { - id: "NeueHelveticaZara", - name: "Neue Helvetica Zara", + id: "NotoSansMono", + name: "Noto Sans Mono", }, ]} nodes={[ @@ -264,13 +277,8 @@ export const Room = () => { new WeaveTextToolAction(), new WeaveImageToolAction({ onUploadImage: async (finished: (imageURL: string) => void) => { - setUploadingImage(true); - setTimeout(() => { - setUploadingImage(false); - finished( - "https://lostintokyo.co.uk/content/uploads/sites/3/2017/02/test-image-7MB.jpg" - ); - }, 1000); + fileUploadFinishRef.current = finished; + inputFileRef.current.click(); }, onImageLoadStart: () => { setLoadingImage(true); @@ -441,6 +449,30 @@ export const Room = () => { ), ]} > + { + const file = e.target.files?.[0]; + if (file) { + setUploadingImage(true); + mutationUpload.mutate(file, { + onSuccess: (data) => { + setUploadingImage(false); + const room = data.fileName.split("/")[0]; + const imageId = data.fileName.split("/")[1]; + + fileUploadFinishRef.current( + `${process.env.NEXT_PUBLIC_API_ENDPOINT}/weavejs/rooms/${room}/images/${imageId}` + ); + }, + }); + } + }} + /> )} diff --git a/code/package-lock.json b/code/package-lock.json index 4f86967..2f2ddba 100644 --- a/code/package-lock.json +++ b/code/package-lock.json @@ -11,10 +11,10 @@ "@commitlint/cli": "19.4.0", "@commitlint/config-conventional": "19.2.2", "@hookform/resolvers": "^4.1.3", - "@inditextech/weavejs-react": "^0.4.0", - "@inditextech/weavejs-sdk": "^0.4.0", - "@inditextech/weavejs-store-azure-web-pubsub": "^0.4.0", - "@inditextech/weavejs-store-websockets": "^0.4.0", + "@inditextech/weavejs-react": "^0.5.0", + "@inditextech/weavejs-sdk": "^0.5.0", + "@inditextech/weavejs-store-azure-web-pubsub": "^0.5.0", + "@inditextech/weavejs-store-websockets": "^0.5.0", "@next/env": "^15.2.1", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-avatar": "^1.1.3", @@ -1661,9 +1661,9 @@ } }, "node_modules/@inditextech/weavejs-react": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@inditextech/weavejs-react/-/weavejs-react-0.4.0.tgz", - "integrity": "sha512-4OLum4gxrp1TX3BX0JgSD/VtRTCcfZ7n56dzZwJ/MRZlv8/0zzeTkR441mZaY+vc4FwgXYGB8RRJ7pervM9uYw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@inditextech/weavejs-react/-/weavejs-react-0.5.0.tgz", + "integrity": "sha512-zeNLwXbvjVkKbVao/pXILcKtHAtJFhDA+B/iCIucFF4jGNNVKiK5GGxD1b5Oyc0UsVjtsNK++o70Lg1r4aavGg==", "engines": { "node": "^18.12 || ^20.11 || ^22.11", "npm": ">= 8.19.x" @@ -1677,9 +1677,9 @@ } }, "node_modules/@inditextech/weavejs-sdk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@inditextech/weavejs-sdk/-/weavejs-sdk-0.4.0.tgz", - "integrity": "sha512-dJzrxqg2zar8XLjhjh8JfAqEiWN6xZt/8CSE0SS/qXpxVrdxF0CMJ+hrOSiz6sPbcU3XCdk5vbmKWegDWeydxw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@inditextech/weavejs-sdk/-/weavejs-sdk-0.5.0.tgz", + "integrity": "sha512-gX3XCx+FcArvkH2B+9ZBm/t0Ht+7GMjfqQGA2PSw9ieJw0smaSk0LCcE0s1nWYS3B/uZCdgec+jRsIeTzZuAcA==", "engines": { "node": "^18.12 || ^20.11 || ^22.11", "npm": ">= 8.19.x" @@ -1693,18 +1693,18 @@ } }, "node_modules/@inditextech/weavejs-store-azure-web-pubsub": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@inditextech/weavejs-store-azure-web-pubsub/-/weavejs-store-azure-web-pubsub-0.4.0.tgz", - "integrity": "sha512-Cc8yy7WjsGF3MdXC/ta/Hmxo3zquU5FiAa1zQ7dr8IBKKcd8yP5sPgvG068bdLQXOWW8T69WSRiG9TyGfqIFFQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@inditextech/weavejs-store-azure-web-pubsub/-/weavejs-store-azure-web-pubsub-0.5.0.tgz", + "integrity": "sha512-ENQMVi8Hy496mtO6XYjMFmQ8b5kKgCxLc0151USuHRgzn3lLVe7qY7xrALFFEBNNS0AtjfoTf19WGWyVRrTnMg==", "engines": { "node": "^18.12 || ^20.11 || ^22.11", "npm": ">= 8.19.x" } }, "node_modules/@inditextech/weavejs-store-websockets": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@inditextech/weavejs-store-websockets/-/weavejs-store-websockets-0.4.0.tgz", - "integrity": "sha512-68UhY1qA1VJa0WNOD0ERuTXDobD1MUF1twCnrQK4lXMA8ldeElKpU0P/t21s7J9cfwAWtL6NKRbTyuLKuO/UpA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@inditextech/weavejs-store-websockets/-/weavejs-store-websockets-0.5.0.tgz", + "integrity": "sha512-DeYsqkeHfnnQRdnE9ltWOsgCxAHg/TCAhpqNP/19HHs4GnVfmEQ1rbsfmfnjcsGoVRPKw2yNsoaqhxle8r2/Tw==", "engines": { "node": "^18.12 || ^20.11 || ^22.11", "npm": ">= 8.19.x" @@ -7732,9 +7732,9 @@ } }, "node_modules/konva": { - "version": "9.3.18", - "resolved": "https://registry.npmjs.org/konva/-/konva-9.3.18.tgz", - "integrity": "sha512-ad5h0Y9phUrinBrKXyIISbURRHQO7Rx5cz7mAEEfdVCs45gDqRD8Y0I0nJRk8S6iqEbiRE87CEZu5GVSnU8oow==", + "version": "9.3.19", + "resolved": "https://registry.npmjs.org/konva/-/konva-9.3.19.tgz", + "integrity": "sha512-BJQTPL9ykX8TndeXZSz2ks4px6cb0K+uBBej/qShXKqVM8tVrU30eDSrcCa6ai+rHahvI6wzfZTXHUheICMcUQ==", "funding": [ { "type": "patreon", diff --git a/code/package.json b/code/package.json index ec4c62a..c557f4b 100644 --- a/code/package.json +++ b/code/package.json @@ -28,10 +28,10 @@ "@commitlint/cli": "19.4.0", "@commitlint/config-conventional": "19.2.2", "@hookform/resolvers": "^4.1.3", - "@inditextech/weavejs-react": "^0.4.0", - "@inditextech/weavejs-sdk": "^0.4.0", - "@inditextech/weavejs-store-azure-web-pubsub": "^0.4.0", - "@inditextech/weavejs-store-websockets": "^0.4.0", + "@inditextech/weavejs-react": "^0.5.0", + "@inditextech/weavejs-sdk": "^0.5.0", + "@inditextech/weavejs-store-azure-web-pubsub": "^0.5.0", + "@inditextech/weavejs-store-websockets": "^0.5.0", "@next/env": "^15.2.1", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-avatar": "^1.1.3",