@pulse-editor/react-api 0.1.1-beta.59 → 0.1.1-beta.61

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.
@@ -1,5 +1,5 @@
1
- import { LLMConfig } from "@pulse-editor/shared-utils";
1
+ import { LLMModelConfig } from "@pulse-editor/shared-utils";
2
2
  export default function useAgents(): {
3
- runAgentMethod: (agentName: string, methodName: string, args: Record<string, any>, abortSignal?: AbortSignal, llmConfig?: LLMConfig) => Promise<any>;
3
+ runAgentMethod: (agentName: string, methodName: string, args: Record<string, any>, abortSignal?: AbortSignal, llmConfig?: LLMModelConfig) => Promise<any>;
4
4
  isReady: boolean;
5
5
  };
@@ -1,5 +1,5 @@
1
- import { LLMConfig } from "@pulse-editor/shared-utils";
1
+ import { LLMModelConfig } from "@pulse-editor/shared-utils";
2
2
  export default function useLLM(): {
3
- runLLM: (prompt: string, llmConfig?: LLMConfig) => Promise<string>;
3
+ runLLM: (prompt: string, llmConfig?: LLMModelConfig) => Promise<string>;
4
4
  isReady: boolean;
5
5
  };
@@ -1,5 +1,5 @@
1
- import { STTConfig } from "@pulse-editor/shared-utils";
1
+ import { STTModelConfig } from "@pulse-editor/shared-utils";
2
2
  export default function useSTT(): {
3
- runSTT: (audio: Uint8Array, sttConfig?: STTConfig) => Promise<string>;
3
+ runSTT: (audio: Uint8Array, sttConfig?: STTModelConfig) => Promise<string>;
4
4
  isReady: boolean;
5
5
  };
@@ -1,5 +1,5 @@
1
- import { TTSConfig } from "@pulse-editor/shared-utils";
1
+ import { TTSModelConfig } from "@pulse-editor/shared-utils";
2
2
  export default function useTTS(): {
3
- runTTS: (text: string, ttsConfig?: TTSConfig) => Promise<Uint8Array>;
3
+ runTTS: (text: string, ttsConfig?: TTSModelConfig) => Promise<Uint8Array>;
4
4
  isReady: boolean;
5
5
  };
@@ -0,0 +1,16 @@
1
+ import { FileSystemObject, ListPathOptions } from "@pulse-editor/shared-utils";
2
+ /**
3
+ * Hook for managing file system operations in the editor.
4
+ */
5
+ export default function useFileSystem(): {
6
+ isReady: boolean;
7
+ listPath: (uri: string, options?: ListPathOptions) => Promise<FileSystemObject[]>;
8
+ createFolder: (uri: string) => Promise<void>;
9
+ createFile: (uri: string) => Promise<void>;
10
+ rename: (oldUri: string, newUri: string) => Promise<void>;
11
+ deletePath: (uri: string) => Promise<void>;
12
+ hasPath: (uri: string) => Promise<boolean>;
13
+ copyFiles: (from: string, to: string) => Promise<void>;
14
+ readFile: (uri: string) => Promise<File | undefined>;
15
+ writeFile: (uri: string, content: string) => Promise<void>;
16
+ };
package/dist/main.d.ts CHANGED
@@ -12,6 +12,7 @@ import useSTT from "./hooks/ai-modality/use-stt";
12
12
  import useTTS from "./hooks/ai-modality/use-tts";
13
13
  import useVideoGen from "./hooks/ai-modality/use-video-gen";
14
14
  import usePulseEnv from "./hooks/editor/use-env";
15
+ import useFileSystem from "./hooks/editor/use-file-system";
15
16
  import useOwnedAppView from "./hooks/editor/use-owned-app-view";
16
17
  import useReceiveFile from "./hooks/editor/use-receive-file";
17
18
  import useSnapshotState from "./hooks/editor/use-snapshot-state";
@@ -19,4 +20,4 @@ import useWorkspace from "./hooks/editor/use-workspace";
19
20
  import useTerminal from "./hooks/terminal/use-terminal";
20
21
  import ReceiveFileProvider from "./providers/receive-file-provider";
21
22
  import SnapshotProvider from "./providers/snapshot-provider";
22
- export { ReceiveFileProvider, SnapshotProvider, useAgentTools, useAgents, useFile, useImageGen, useLLM, useLoading, useNotification, useOCR, useOwnedAppView, usePulseEnv, useReceiveFile, useRegisterAction, useSTT, useSnapshotState, useTTS, useTerminal, useTheme, useVideoGen, useWorkspace, };
23
+ export { ReceiveFileProvider, SnapshotProvider, useAgentTools, useAgents, useFile, useFileSystem, useImageGen, useLLM, useLoading, useNotification, useOCR, useOwnedAppView, usePulseEnv, useReceiveFile, useRegisterAction, useSTT, useSnapshotState, useTTS, useTerminal, useTheme, useVideoGen, useWorkspace, };
package/dist/main.js CHANGED
@@ -628,6 +628,67 @@ function usePulseEnv() {
628
628
  };
629
629
  }
630
630
 
631
+ /**
632
+ * Hook for managing file system operations in the editor.
633
+ */
634
+ function useFileSystem() {
635
+ const receiverHandlerMap = new Map([]);
636
+ const { imc, isReady } = useIMC(receiverHandlerMap, "file-system");
637
+ async function listPath(uri, options) {
638
+ const result = (await imc?.sendMessage(IMCMessageTypeEnum.PlatformListPath, {
639
+ uri,
640
+ options,
641
+ })) ?? [];
642
+ return result;
643
+ }
644
+ async function createFolder(uri) {
645
+ await imc?.sendMessage(IMCMessageTypeEnum.PlatformCreateFolder, { uri });
646
+ }
647
+ async function createFile(uri) {
648
+ await imc?.sendMessage(IMCMessageTypeEnum.PlatformCreateFile, { uri });
649
+ }
650
+ async function rename(oldUri, newUri) {
651
+ await imc?.sendMessage(IMCMessageTypeEnum.PlatformRename, {
652
+ oldUri,
653
+ newUri,
654
+ });
655
+ }
656
+ async function deletePath(uri) {
657
+ await imc?.sendMessage(IMCMessageTypeEnum.PlatformDelete, { uri });
658
+ }
659
+ async function hasPath(uri) {
660
+ const exists = (await imc?.sendMessage(IMCMessageTypeEnum.PlatformHasPath, { uri })) ??
661
+ false;
662
+ return !!exists;
663
+ }
664
+ async function copyFiles(from, to) {
665
+ await imc?.sendMessage(IMCMessageTypeEnum.PlatformCopyFiles, { from, to });
666
+ }
667
+ async function readFile(uri) {
668
+ const file = await imc?.sendMessage(IMCMessageTypeEnum.PlatformReadFile, { uri });
669
+ return file;
670
+ }
671
+ async function writeFile(uri, content) {
672
+ const newFile = new File([content], uri);
673
+ await imc?.sendMessage(IMCMessageTypeEnum.PlatformWriteFile, {
674
+ uri,
675
+ file: newFile,
676
+ });
677
+ }
678
+ return {
679
+ isReady,
680
+ listPath,
681
+ createFolder,
682
+ createFile,
683
+ rename,
684
+ deletePath,
685
+ hasPath,
686
+ copyFiles,
687
+ readFile,
688
+ writeFile,
689
+ };
690
+ }
691
+
631
692
  function useOwnedAppView() {
632
693
  const receiverHandlerMap = new Map([]);
633
694
  const { imc, isReady } = useIMC(receiverHandlerMap, "owned-app");
@@ -796,5 +857,5 @@ function useTerminal() {
796
857
  };
797
858
  }
798
859
 
799
- export { ReceiveFileProvider, SnapshotProvider, useAgentTools, useAgents, useFile, useImageGen, useLLM, useLoading, useNotification, useOCR, useOwnedAppView, usePulseEnv, useReceiveFile, useRegisterAction, useSTT, useSnapShotState as useSnapshotState, useTTS, useTerminal, useTheme, useVideoGen, useWorkspace };
860
+ export { ReceiveFileProvider, SnapshotProvider, useAgentTools, useAgents, useFile, useFileSystem, useImageGen, useLLM, useLoading, useNotification, useOCR, useOwnedAppView, usePulseEnv, useReceiveFile, useRegisterAction, useSTT, useSnapShotState as useSnapshotState, useTTS, useTerminal, useTheme, useVideoGen, useWorkspace };
800
861
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../../../node_modules/uuid/dist/stringify.js","../../../node_modules/uuid/dist/rng.js","../../../node_modules/uuid/dist/native.js","../../../node_modules/uuid/dist/v4.js","../src/hooks/imc/use-imc.tsx","../src/hooks/agent/use-agent-tools.ts","../src/hooks/agent/use-agents.ts","../../../node_modules/use-debounce/dist/index.module.js","../src/hooks/editor/use-file.ts","../src/hooks/editor/use-loading.ts","../src/hooks/editor/use-notification.ts","../src/hooks/editor/use-register-action.ts","../src/hooks/editor/use-theme.ts","../src/hooks/ai-modality/use-image-gen.ts","../src/hooks/ai-modality/use-llm.ts","../src/hooks/ai-modality/use-ocr.ts","../src/hooks/ai-modality/use-stt.ts","../src/hooks/ai-modality/use-tts.ts","../src/hooks/ai-modality/use-video-gen.ts","../src/hooks/editor/use-env.ts","../src/hooks/editor/use-owned-app-view.ts","../src/providers/receive-file-provider.tsx","../src/hooks/editor/use-receive-file.ts","../src/providers/snapshot-provider.tsx","../src/hooks/editor/use-snapshot-state.ts","../src/hooks/editor/use-workspace.ts","../src/hooks/terminal/use-terminal.ts"],"sourcesContent":["import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","import {\r\n IMCMessageTypeEnum,\r\n InterModuleCommunication,\r\n ReceiverHandlerMap,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { v4 } from \"uuid\";\r\n\r\nexport default function useIMC(handlerMap: ReceiverHandlerMap, intent: string) {\r\n const [imc, setImc] = useState<InterModuleCommunication | undefined>(\r\n undefined\r\n );\r\n const [isReady, setIsReady] = useState(false);\r\n const [isMounted, setIsMounted] = useState(false);\r\n\r\n const targetWindow = window.parent;\r\n\r\n useEffect(() => {\r\n setIsMounted(true);\r\n\r\n return () => {\r\n setIsMounted(false);\r\n imc?.close();\r\n setImc(undefined);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n async function initIMC() {\r\n if (!isMounted) return;\r\n else if (imc !== undefined) return;\r\n\r\n const newImc = new InterModuleCommunication(intent, v4());\r\n newImc.initThisWindow(window);\r\n newImc.updateReceiverHandlerMap(handlerMap);\r\n await newImc.initOtherWindow(targetWindow);\r\n setImc(newImc);\r\n\r\n await newImc.sendMessage(IMCMessageTypeEnum.AppReady, {\r\n intent,\r\n channelId: newImc.channelId,\r\n });\r\n setIsReady(true);\r\n }\r\n\r\n initIMC();\r\n }, [isMounted, imc]);\r\n\r\n return {\r\n imc,\r\n isReady,\r\n };\r\n}\r\n","import { AgentTool, IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\n/**\r\n * Add or use agent tools in the editor.\r\n * @param moduleName \r\n * @returns \r\n */\r\nexport default function useAgentTools() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc } = useIMC(receiverHandlerMap, \"agent-tools\");\r\n\r\n return { };\r\n}\r\n","import {\r\n Agent,\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n LLMConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useAgents() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"agents\");\r\n\r\n async function runAgentMethod(\r\n agentName: string,\r\n methodName: string,\r\n args: Record<string, any>,\r\n abortSignal?: AbortSignal,\r\n llmConfig?: LLMConfig\r\n ): Promise<any> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(\r\n IMCMessageTypeEnum.EditorRunAgentMethod,\r\n {\r\n agentName,\r\n methodName,\r\n args,\r\n llmConfig,\r\n },\r\n abortSignal\r\n )\r\n .then((response) => {\r\n return response as any;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runAgentMethod,\r\n isReady,\r\n };\r\n}\r\n","import{useRef as r,useEffect as n,useMemo as t,useState as e,useCallback as u}from\"react\";function c(e,u,c,i){var a=this,o=r(null),f=r(0),l=r(0),v=r(null),m=r([]),d=r(),g=r(),p=r(e),w=r(!0);p.current=e;var s=\"undefined\"!=typeof window,x=!u&&0!==u&&s;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");u=+u||0;var h=!!(c=c||{}).leading,y=!(\"trailing\"in c)||!!c.trailing,F=\"maxWait\"in c,A=\"debounceOnServer\"in c&&!!c.debounceOnServer,D=F?Math.max(+c.maxWait||0,u):null;n(function(){return w.current=!0,function(){w.current=!1}},[]);var T=t(function(){var r=function(r){var n=m.current,t=d.current;return m.current=d.current=null,f.current=r,l.current=l.current||r,g.current=p.current.apply(t,n)},n=function(r,n){x&&cancelAnimationFrame(v.current),v.current=x?requestAnimationFrame(r):setTimeout(r,n)},t=function(r){if(!w.current)return!1;var n=r-o.current;return!o.current||n>=u||n<0||F&&r-f.current>=D},e=function(n){return v.current=null,y&&m.current?r(n):(m.current=d.current=null,g.current)},c=function r(){var c=Date.now();if(h&&l.current===f.current&&T(),t(c))return e(c);if(w.current){var i=u-(c-o.current),a=F?Math.min(i,D-(c-f.current)):i;n(r,a)}},T=function(){i&&i({})},W=function(){if(s||A){var e=Date.now(),i=t(e);if(m.current=[].slice.call(arguments),d.current=a,o.current=e,i){if(!v.current&&w.current)return f.current=o.current,n(c,u),h?r(o.current):g.current;if(F)return n(c,u),r(o.current)}return v.current||n(c,u),g.current}};return W.cancel=function(){var r=v.current;r&&(x?cancelAnimationFrame(v.current):clearTimeout(v.current)),f.current=0,m.current=o.current=d.current=v.current=null,r&&i&&i({})},W.isPending=function(){return!!v.current},W.flush=function(){return v.current?e(Date.now()):g.current},W},[h,F,u,D,y,x,s,A,i]);return T}function i(r,n){return r===n}function a(n,t,a){var o=a&&a.equalityFn||i,f=r(n),l=e({})[1],v=c(u(function(r){f.current=r,l({})},[l]),t,a,l),m=r(n);return o(m.current,n)||(v(n),m.current=n),[f.current,v]}function o(r,n,t){var e=void 0===t?{}:t,u=e.leading,i=e.trailing;return c(r,n,{maxWait:n,leading:void 0===u||u,trailing:void 0===i||i})}export{a as useDebounce,c as useDebouncedCallback,o as useThrottledCallback};\n//# sourceMappingURL=index.module.js.map\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { useDebouncedCallback } from \"use-debounce\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\n/**\r\n *\r\n * @param uri The file URI to read/write\r\n * @param debounce Debounce time in ms for write operations\r\n * @returns\r\n */\r\nexport default function useFile(uri: string | undefined, debounce = 0) {\r\n const [file, setFile] = useState<File | undefined>(undefined);\r\n\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >([\r\n [\r\n IMCMessageTypeEnum.PlatformFileUpdate,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n const updatedFile = message.payload as File;\r\n setFile(updatedFile);\r\n },\r\n ],\r\n ]);\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"file\");\r\n\r\n const sendFileDebounced = useDebouncedCallback(\r\n async (newFile: File) => {\r\n if (!isReady || !uri) return;\r\n await imc?.sendMessage(IMCMessageTypeEnum.PlatformWriteFile, {\r\n uri,\r\n file: newFile,\r\n });\r\n },\r\n debounce,\r\n { maxWait: debounce * 2 },\r\n );\r\n\r\n const saveFile = useCallback(\r\n async (fileContent: string) => {\r\n if (!uri || !file) return;\r\n\r\n const newFile = new File([fileContent], file.name, {\r\n type: file.type,\r\n lastModified: Date.now(),\r\n });\r\n setFile(newFile);\r\n\r\n // ✅ This now waits until the debounced write actually finishes\r\n await sendFileDebounced(newFile);\r\n },\r\n [file, uri, sendFileDebounced],\r\n );\r\n\r\n // Read file when uri changes\r\n useEffect(() => {\r\n if (isReady && uri) {\r\n imc\r\n ?.sendMessage(IMCMessageTypeEnum.PlatformReadFile, {\r\n uri,\r\n })\r\n .then((f: File | undefined) => {\r\n setFile(f);\r\n });\r\n }\r\n }, [isReady, uri]);\r\n\r\n return {\r\n file,\r\n saveFile,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useLoading() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<any>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"loading\");\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n if (isReady) {\r\n imc?.sendMessage(IMCMessageTypeEnum.EditorLoadingApp, {\r\n isLoading,\r\n });\r\n }\r\n }, [isLoading]);\r\n\r\n function toggleLoading(isLoading: boolean) {\r\n setIsLoading((prev) => isLoading);\r\n }\r\n\r\n return {\r\n isReady,\r\n toggleLoading,\r\n };\r\n}\r\n","import {\r\n NotificationTypeEnum,\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n} from \"@pulse-editor/shared-utils\";\r\n\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useNotification() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc } = useIMC(receiverHandlerMap, \"notification\");\r\n\r\n function openNotification(text: string, type: NotificationTypeEnum) {\r\n if (!imc) {\r\n throw new Error(\"IMC is not initialized.\");\r\n }\r\n imc.sendMessage(IMCMessageTypeEnum.EditorShowNotification, {\r\n text,\r\n type,\r\n });\r\n }\r\n\r\n return { openNotification };\r\n}\r\n","import {\r\n Action,\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n ReceiverHandler,\r\n TypedVariable,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport { DependencyList, useEffect, useRef, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\n/**\r\n * Register an app action to listen to IMC messages from the core,\r\n * and pass to the action to handle.\r\n *\r\n * @param name Name of the command.\r\n * @param description Description of the command.\r\n * @param parameters Parameters of the command.\r\n * @param returns Return values of the command.\r\n * @param callbackHandler Callback handler function to handle the command.\r\n * @param deps Dependency list to re-register the action when changed.\r\n * @param isExtReady Whether the extension is ready to receive commands.\r\n * Useful for actions that need to wait for some certain app state to be ready.\r\n *\r\n */\r\nexport default function useRegisterAction(\r\n actionInfo: {\r\n name: string;\r\n description: string;\r\n parameters?: Record<string, TypedVariable>;\r\n returns?: Record<string, TypedVariable>;\r\n },\r\n callbackHandler: (args: any) => Promise<any>,\r\n deps: DependencyList,\r\n isExtReady: boolean = true,\r\n) {\r\n const { isReady, imc } = useIMC(getReceiverHandlerMap(), \"register-action\");\r\n\r\n // Queue to hold commands until extension is ready\r\n const commandQueue = useRef<{ args: any; resolve: (v: any) => void }[]>([]);\r\n const isCommandExecuting = useRef(false);\r\n\r\n const [action, setAction] = useState<Action>({\r\n name: actionInfo.name,\r\n description: actionInfo.description,\r\n parameters: actionInfo.parameters ?? {},\r\n returns: actionInfo.returns ?? {},\r\n handler: callbackHandler,\r\n });\r\n\r\n // Flush queued commands when isExtReady becomes true\r\n useEffect(() => {\r\n async function runQueuedCommands() {\r\n const pendingCMDs = [...commandQueue.current];\r\n commandQueue.current = [];\r\n for (const cmd of pendingCMDs) {\r\n const { args, resolve } = cmd;\r\n if (isCommandExecuting.current) {\r\n return;\r\n }\r\n isCommandExecuting.current = true;\r\n const res = await executeAction(args);\r\n isCommandExecuting.current = false;\r\n resolve(res);\r\n }\r\n }\r\n\r\n if (isExtReady && commandQueue.current.length > 0) {\r\n runQueuedCommands();\r\n }\r\n }, [isExtReady]);\r\n\r\n useEffect(() => {\r\n async function updateAction() {\r\n // Register or update action.\r\n // This will only pass signature info to the editor.\r\n // The actual handler is stored in this hook,\r\n // so the execution happens inside the extension app.\r\n await imc?.sendMessage(IMCMessageTypeEnum.EditorRegisterAction, {\r\n name: action.name,\r\n description: action.description,\r\n parameters: action.parameters,\r\n returns: action.returns,\r\n });\r\n\r\n // Update receiver\r\n imc?.updateReceiverHandlerMap(getReceiverHandlerMap());\r\n }\r\n\r\n if (isExtReady) {\r\n updateAction();\r\n }\r\n }, [action, imc, isExtReady]);\r\n\r\n useEffect(() => {\r\n setAction((prev) => ({\r\n ...prev,\r\n name: actionInfo.name,\r\n description: actionInfo.description,\r\n parameters: actionInfo.parameters ?? {},\r\n returns: actionInfo.returns ?? {},\r\n handler: callbackHandler,\r\n }));\r\n }, [...deps]);\r\n\r\n async function executeAction(args: any) {\r\n if (!action.handler) return;\r\n\r\n const res = await action.handler(args);\r\n\r\n return res;\r\n }\r\n\r\n function getReceiverHandlerMap() {\r\n const receiverHandlerMap = new Map<IMCMessageTypeEnum, ReceiverHandler>([\r\n [\r\n IMCMessageTypeEnum.EditorRunAppAction,\r\n async (_senderWindow: Window, message: IMCMessage) => {\r\n const { name: requestedName, args }: { name: string; args: any } =\r\n message.payload;\r\n\r\n if (actionInfo.name !== requestedName) {\r\n throw new Error(\"Message ignored by receiver\");\r\n }\r\n // Validate parameters\r\n const actionParams = actionInfo.parameters ?? {};\r\n\r\n const requiredParamCount = Object.entries(actionParams).filter(\r\n ([, paramInfo]) => !(paramInfo as TypedVariable).optional,\r\n ).length;\r\n\r\n if (Object.keys(args).length < requiredParamCount) {\r\n throw new Error(\r\n `Invalid number of parameters: expected at least${\r\n Object.keys(actionParams).length\r\n }, got ${Object.keys(args).length}`,\r\n );\r\n }\r\n\r\n // Check types\r\n for (const [key, value] of Object.entries(args)) {\r\n if (actionParams[key] === undefined) {\r\n throw new Error(`Invalid parameter: ${key}`);\r\n }\r\n if (\r\n typeof value !== actionParams[key].type &&\r\n // Allow object for \"app-instance\"\r\n (actionParams[key].type !== \"app-instance\" ||\r\n typeof value !== \"object\")\r\n ) {\r\n throw new Error(\r\n `Invalid type for parameter ${key}: expected ${\r\n actionParams[key].type\r\n }, got ${typeof value}. Value received: ${value}`,\r\n );\r\n }\r\n }\r\n\r\n // If extension is ready, execute immediately\r\n if (isExtReady) {\r\n const result = await executeAction(args);\r\n return result;\r\n }\r\n\r\n // Otherwise, queue the command and return when executed\r\n return new Promise((resolve) => {\r\n commandQueue.current.push({ args, resolve });\r\n });\r\n },\r\n ],\r\n ]);\r\n return receiverHandlerMap;\r\n }\r\n\r\n return {\r\n isReady,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useTheme() {\r\n const [theme, setTheme] = useState<string>(\"light\");\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n receiverHandlerMap.set(\r\n IMCMessageTypeEnum.EditorThemeUpdate,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n const theme = message.payload;\r\n setTheme((prev) => theme);\r\n }\r\n );\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"theme\");\r\n\r\n // Upon initial load, request theme from main app\r\n useEffect(() => {\r\n if (isReady) {\r\n imc\r\n ?.sendMessage(IMCMessageTypeEnum.EditorAppRequestTheme)\r\n .then((result) => {\r\n setTheme((prev) => result);\r\n });\r\n }\r\n }, [isReady]);\r\n\r\n return {\r\n theme,\r\n };\r\n}\r\n","import {\r\n ImageModelConfig,\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useImageGen() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"image-gen\");\r\n\r\n /**\r\n *\r\n * @param textPrompt The text prompt to generate the image.\r\n * @param imagePrompt A URL to an image or an image in an ArrayBuffer.\r\n * @param imageModelConfig (optional) The image model config to use.\r\n * @returns The generated image in an ArrayBuffer.\r\n */\r\n async function runImageGen(\r\n textPrompt?: string,\r\n imagePrompt?: string | ArrayBuffer,\r\n // LLM config is optional, if not provided, the default config will be used.\r\n imageModelConfig?: ImageModelConfig\r\n ): Promise<{\r\n arrayBuffer?: ArrayBuffer;\r\n url?: string;\r\n }> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n if (!textPrompt && !imagePrompt) {\r\n throw new Error(\"At least one of textPrompt or imagePrompt is required.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalityImageGen, {\r\n textPrompt,\r\n imagePrompt,\r\n imageModelConfig,\r\n })\r\n .then((response) => {\r\n return response as {\r\n arrayBuffer?: ArrayBuffer;\r\n url?: string;\r\n };\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runImageGen,\r\n isReady,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n LLMConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useLLM() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"llm\");\r\n\r\n async function runLLM(\r\n prompt: string,\r\n // LLM config is optional, if not provided, the default config will be used.\r\n llmConfig?: LLMConfig\r\n ): Promise<string> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalityLLM, {\r\n prompt,\r\n llmConfig,\r\n })\r\n .then((response) => {\r\n return response as string;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runLLM,\r\n isReady,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\n\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useOCR() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc } = useIMC(receiverHandlerMap, \"ocr\");\r\n\r\n /**\r\n * \r\n * @param image The image to be recognized. This is a base64 encoded string.\r\n * @returns \r\n */\r\n async function recognizeText(image: string): Promise<string> {\r\n if (!imc) {\r\n throw new Error(\"IMC is not initialized.\");\r\n }\r\n\r\n // Send the message to the extension\r\n const result = await imc.sendMessage(IMCMessageTypeEnum.ModalityOCR, { image });\r\n\r\n return result.payload.text;\r\n }\r\n\r\n return {\r\n recognizeText,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n STTConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useSTT() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"stt\");\r\n\r\n async function runSTT(\r\n audio: Uint8Array,\r\n // Config is optional, if not provided, the default config will be used.\r\n sttConfig?: STTConfig\r\n ): Promise<string> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalitySTT, {\r\n audio,\r\n sttConfig,\r\n })\r\n .then((response) => {\r\n return response as string;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runSTT,\r\n isReady,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n TTSConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useTTS() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"tts\");\r\n\r\n async function runTTS(\r\n text: string,\r\n // Config is optional, if not provided, the default config will be used.\r\n ttsConfig?: TTSConfig\r\n ): Promise<Uint8Array> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalityTTS, {\r\n text,\r\n ttsConfig,\r\n })\r\n .then((response) => {\r\n return response as Uint8Array;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runTTS,\r\n isReady,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n VideoModelConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useVideoGen() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"video-gen\");\r\n\r\n /**\r\n *\r\n * @param textPrompt The text prompt to generate the video.\r\n * @param imagePrompt A URL to an image or an image in an ArrayBuffer.\r\n * @param videoModelConfig (optional) The video model config to use.\r\n * @returns The generated video in an ArrayBuffer.\r\n */\r\n async function runVideoGen(\r\n duration: number,\r\n textPrompt?: string,\r\n imagePrompt?: string | ArrayBuffer,\r\n // LLM config is optional, if not provided, the default config will be used.\r\n videoModelConfig?: VideoModelConfig\r\n ): Promise<{\r\n url?: string;\r\n arrayBuffer?: ArrayBuffer;\r\n }> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n if (!textPrompt && !imagePrompt) {\r\n throw new Error(\"At least one of textPrompt or imagePrompt is required.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalityVideoGen, {\r\n duration,\r\n textPrompt,\r\n imagePrompt,\r\n videoModelConfig,\r\n })\r\n .then((response) => {\r\n return response as {\r\n url?: string;\r\n arrayBuffer?: ArrayBuffer;\r\n };\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runVideoGen,\r\n isReady,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function usePulseEnv() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"env\");\r\n const [envs, setEnvs] = useState<Record<string, string>>(\r\n // default to process env\r\n process.env as Record<string, string>,\r\n );\r\n\r\n useEffect(() => {\r\n if (isReady) {\r\n imc?.sendMessage(IMCMessageTypeEnum.EditorGetEnv).then((env) => {\r\n // Create or update envs state\r\n setEnvs((prev) => ({\r\n ...prev,\r\n ...env,\r\n }));\r\n });\r\n }\r\n }, [isReady]);\r\n\r\n return {\r\n isReady,\r\n envs,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n ViewModel,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport { useCallback } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useOwnedAppView() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >([]);\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"owned-app\");\r\n\r\n const runAppAction = useCallback(\r\n async (ownedAppViewModel: ViewModel, actionName: string, args: any) => {\r\n if (isReady) {\r\n const appViewId = ownedAppViewModel.viewId;\r\n const preRegisteredActions =\r\n ownedAppViewModel.appConfig.preRegisteredActions || [];\r\n\r\n const action = preRegisteredActions.find((a) => a.name === actionName);\r\n if (!action) {\r\n throw new Error(\r\n `Action ${actionName} not found in owned app ${ownedAppViewModel.appConfig.id}`,\r\n );\r\n }\r\n\r\n const result = await imc?.sendMessage(\r\n IMCMessageTypeEnum.EditorAppUseOwnedApp,\r\n {\r\n viewId: appViewId,\r\n actionName,\r\n args,\r\n },\r\n );\r\n return result;\r\n }\r\n return undefined;\r\n },\r\n [imc, isReady],\r\n );\r\n\r\n return {\r\n runAppAction,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport React, { createContext, ReactNode, useState } from \"react\";\r\nimport useIMC from \"../hooks/imc/use-imc\";\r\n\r\nexport const ReceiveFileContext = createContext<\r\n ReceiveFileContextType | undefined\r\n>(undefined);\r\n\r\nexport type ReceiveFileContextType = {\r\n // Define any state or functions you want to provide here\r\n selectedFileUri: string | undefined;\r\n};\r\n\r\nexport default function ReceiveFileProvider({\r\n children,\r\n}: {\r\n children: ReactNode;\r\n}) {\r\n const [receivedFileUri, setReceivedFileUri] = useState<string | undefined>(\r\n undefined\r\n );\r\n\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<any>\r\n >([\r\n [\r\n IMCMessageTypeEnum.EditorAppReceiveFileUri,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n const { uri } = message.payload;\r\n setReceivedFileUri((prev) => uri);\r\n },\r\n ],\r\n ]);\r\n useIMC(receiverHandlerMap, \"receive-file-provider\");\r\n\r\n return (\r\n <ReceiveFileContext.Provider value={{ selectedFileUri: receivedFileUri }}>\r\n {children}\r\n </ReceiveFileContext.Provider>\r\n );\r\n}\r\n","import { useContext } from \"react\";\r\nimport { ReceiveFileContext } from \"../../providers/receive-file-provider\";\r\n\r\nexport default function useReceiveFile() {\r\n const context = useContext(ReceiveFileContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useReceiveFile must be used within a ReceiveFileProvider\");\r\n }\r\n\r\n return { receivedFileUri: context.selectedFileUri };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport React, {\r\n createContext,\r\n Dispatch,\r\n ReactNode,\r\n SetStateAction,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport useIMC from \"../hooks/imc/use-imc\";\r\n\r\nexport const SnapshotContext = createContext<SnapshotContextType | undefined>(\r\n undefined\r\n);\r\n\r\nexport type SnapshotContextType = {\r\n states: { [key: string]: any };\r\n setStates: Dispatch<SetStateAction<{ [key: string]: any }>>;\r\n};\r\n\r\nexport default function SnapshotProvider({\r\n children,\r\n}: {\r\n children: ReactNode;\r\n}) {\r\n const [states, setStates] = useState<{ [key: string]: any }>({});\r\n \r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<any>\r\n >([\r\n [\r\n IMCMessageTypeEnum.EditorAppStateSnapshotRestore,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n const { states } = message.payload;\r\n\r\n // Update all states in the context\r\n console.log(\"Restoring snapshot states:\", states);\r\n setStates((prev) => ({ ...states }));\r\n },\r\n ],\r\n [\r\n IMCMessageTypeEnum.EditorAppStateSnapshotSave,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n // Return current states in the context\r\n return { states };\r\n },\r\n ],\r\n ]);\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"snapshot-provider\");\r\n\r\n useEffect(() => {\r\n if (isReady) {\r\n imc?.updateReceiverHandlerMap(receiverHandlerMap);\r\n }\r\n }, [isReady, states]);\r\n\r\n return (\r\n <SnapshotContext.Provider value={{ states, setStates }}>\r\n {children}\r\n </SnapshotContext.Provider>\r\n );\r\n}\r\n","import { useContext, useEffect, useRef, useState } from \"react\";\r\nimport { SnapshotContext } from \"../../providers/snapshot-provider\";\r\n\r\nexport default function useSnapShotState<T>(\r\n key: string,\r\n initialValue?: T,\r\n onRestore?: (value: T) => void\r\n) {\r\n const snapshotContext = useContext(SnapshotContext);\r\n if (!snapshotContext) {\r\n throw new Error(\"useSnapShotState must be used within a SnapshotProvider\");\r\n }\r\n\r\n const { states, setStates } = snapshotContext;\r\n const [state, setState] = useState<T>(\r\n states[key] !== undefined ? states[key] : initialValue\r\n );\r\n\r\n const isLocalUpdate = useRef(false);\r\n\r\n const setSnapshotState: React.Dispatch<React.SetStateAction<T>> = (value) => {\r\n setState((prev) => {\r\n const newValue =\r\n typeof value === \"function\" ? (value as (prev: T) => T)(prev) : value;\r\n\r\n isLocalUpdate.current = true; // mark as local\r\n Promise.resolve().then(() => {\r\n setStates((prevStates) => ({\r\n ...prevStates,\r\n [key]: newValue,\r\n }));\r\n });\r\n\r\n return newValue;\r\n });\r\n };\r\n\r\n // Initialize context with initial value\r\n useEffect(() => {\r\n if (states[key] === undefined && initialValue !== undefined) {\r\n setStates((prev) => ({\r\n ...prev,\r\n [key]: initialValue,\r\n }));\r\n }\r\n }, []);\r\n\r\n // Only restore when external changes occur\r\n useEffect(() => {\r\n const contextValue = states[key];\r\n if (contextValue === undefined) return;\r\n\r\n if (isLocalUpdate.current) {\r\n // skip this run because we caused it ourselves\r\n isLocalUpdate.current = false;\r\n return;\r\n }\r\n\r\n if (contextValue !== state) {\r\n console.log(\"Restoring state for key:\", key, contextValue);\r\n setState(contextValue);\r\n onRestore?.(contextValue);\r\n }\r\n }, [states[key]]);\r\n\r\n return [state, setSnapshotState] as const;\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useWorkspace() {\r\n const [workspaceId, setWorkspaceId] = useState<string | undefined>(undefined);\r\n\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"theme\");\r\n\r\n // Upon initial load, request theme from main app\r\n useEffect(() => {\r\n if (isReady) {\r\n imc\r\n ?.sendMessage(IMCMessageTypeEnum.EditorAppRequestWorkspace)\r\n .then((result) => {\r\n const { id }: { id: string } = result;\r\n setWorkspaceId((prev) => id);\r\n });\r\n }\r\n }, [isReady]);\r\n\r\n return {\r\n workspaceId,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport default function useTerminal() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"terminal\");\r\n const [websocketUrl, setWebsocketUrl] = useState<string | undefined>(\r\n undefined\r\n );\r\n const [projectHomePath, setProjectHomePath] = useState<string | undefined>(\r\n undefined\r\n );\r\n\r\n useEffect(() => {\r\n if (isReady) {\r\n imc?.sendMessage(IMCMessageTypeEnum.PlatformCreateTerminal).then((response) => {\r\n const {\r\n websocketUrl,\r\n projectHomePath,\r\n }: {\r\n websocketUrl: string;\r\n projectHomePath: string;\r\n } = response;\r\n\r\n setWebsocketUrl(websocketUrl);\r\n setProjectHomePath(projectHomePath);\r\n });\r\n }\r\n }, [isReady]);\r\n\r\n return {\r\n websocketUrl,\r\n projectHomePath,\r\n };\r\n}\r\n"],"names":["byteToHex","i","push","toString","slice","unsafeStringify","arr","offset","arguments","length","undefined","toLowerCase","getRandomValues","rnds8","Uint8Array","rng","crypto","Error","bind","randomUUID","_v4","options","buf","_ref","_options$random","_options$rng","_options","rnds","random","call","v4","native","c","e","u","a","o","r","f","l","v","m","d","g","p","w","current","s","window","x","TypeError","h","leading","y","trailing","F","A","debounceOnServer","D","Math","max","maxWait","n","T","t","apply","cancelAnimationFrame","requestAnimationFrame","setTimeout","Date","now","min","W","cancel","clearTimeout","isPending","flush","useDebouncedCallback"],"mappings":"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","x_google_ignoreList":[0,1,2,3,7]}
1
+ {"version":3,"file":"main.js","sources":["../../../node_modules/uuid/dist/stringify.js","../../../node_modules/uuid/dist/rng.js","../../../node_modules/uuid/dist/native.js","../../../node_modules/uuid/dist/v4.js","../src/hooks/imc/use-imc.tsx","../src/hooks/agent/use-agent-tools.ts","../src/hooks/agent/use-agents.ts","../../../node_modules/use-debounce/dist/index.module.js","../src/hooks/editor/use-file.ts","../src/hooks/editor/use-loading.ts","../src/hooks/editor/use-notification.ts","../src/hooks/editor/use-register-action.ts","../src/hooks/editor/use-theme.ts","../src/hooks/ai-modality/use-image-gen.ts","../src/hooks/ai-modality/use-llm.ts","../src/hooks/ai-modality/use-ocr.ts","../src/hooks/ai-modality/use-stt.ts","../src/hooks/ai-modality/use-tts.ts","../src/hooks/ai-modality/use-video-gen.ts","../src/hooks/editor/use-env.ts","../src/hooks/editor/use-file-system.ts","../src/hooks/editor/use-owned-app-view.ts","../src/providers/receive-file-provider.tsx","../src/hooks/editor/use-receive-file.ts","../src/providers/snapshot-provider.tsx","../src/hooks/editor/use-snapshot-state.ts","../src/hooks/editor/use-workspace.ts","../src/hooks/terminal/use-terminal.ts"],"sourcesContent":["import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","import {\r\n IMCMessageTypeEnum,\r\n InterModuleCommunication,\r\n ReceiverHandlerMap,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { v4 } from \"uuid\";\r\n\r\nexport default function useIMC(handlerMap: ReceiverHandlerMap, intent: string) {\r\n const [imc, setImc] = useState<InterModuleCommunication | undefined>(\r\n undefined\r\n );\r\n const [isReady, setIsReady] = useState(false);\r\n const [isMounted, setIsMounted] = useState(false);\r\n\r\n const targetWindow = window.parent;\r\n\r\n useEffect(() => {\r\n setIsMounted(true);\r\n\r\n return () => {\r\n setIsMounted(false);\r\n imc?.close();\r\n setImc(undefined);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n async function initIMC() {\r\n if (!isMounted) return;\r\n else if (imc !== undefined) return;\r\n\r\n const newImc = new InterModuleCommunication(intent, v4());\r\n newImc.initThisWindow(window);\r\n newImc.updateReceiverHandlerMap(handlerMap);\r\n await newImc.initOtherWindow(targetWindow);\r\n setImc(newImc);\r\n\r\n await newImc.sendMessage(IMCMessageTypeEnum.AppReady, {\r\n intent,\r\n channelId: newImc.channelId,\r\n });\r\n setIsReady(true);\r\n }\r\n\r\n initIMC();\r\n }, [isMounted, imc]);\r\n\r\n return {\r\n imc,\r\n isReady,\r\n };\r\n}\r\n","import { AgentTool, IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\n/**\r\n * Add or use agent tools in the editor.\r\n * @param moduleName \r\n * @returns \r\n */\r\nexport default function useAgentTools() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc } = useIMC(receiverHandlerMap, \"agent-tools\");\r\n\r\n return { };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n LLMModelConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useAgents() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"agents\");\r\n\r\n async function runAgentMethod(\r\n agentName: string,\r\n methodName: string,\r\n args: Record<string, any>,\r\n abortSignal?: AbortSignal,\r\n llmConfig?: LLMModelConfig,\r\n ): Promise<any> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(\r\n IMCMessageTypeEnum.EditorRunAgentMethod,\r\n {\r\n agentName,\r\n methodName,\r\n args,\r\n llmConfig,\r\n },\r\n abortSignal,\r\n )\r\n .then((response) => {\r\n return response as any;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runAgentMethod,\r\n isReady,\r\n };\r\n}\r\n","import{useRef as r,useEffect as n,useMemo as t,useState as e,useCallback as u}from\"react\";function c(e,u,c,i){var a=this,o=r(null),f=r(0),l=r(0),v=r(null),m=r([]),d=r(),g=r(),p=r(e),w=r(!0);p.current=e;var s=\"undefined\"!=typeof window,x=!u&&0!==u&&s;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");u=+u||0;var h=!!(c=c||{}).leading,y=!(\"trailing\"in c)||!!c.trailing,F=\"maxWait\"in c,A=\"debounceOnServer\"in c&&!!c.debounceOnServer,D=F?Math.max(+c.maxWait||0,u):null;n(function(){return w.current=!0,function(){w.current=!1}},[]);var T=t(function(){var r=function(r){var n=m.current,t=d.current;return m.current=d.current=null,f.current=r,l.current=l.current||r,g.current=p.current.apply(t,n)},n=function(r,n){x&&cancelAnimationFrame(v.current),v.current=x?requestAnimationFrame(r):setTimeout(r,n)},t=function(r){if(!w.current)return!1;var n=r-o.current;return!o.current||n>=u||n<0||F&&r-f.current>=D},e=function(n){return v.current=null,y&&m.current?r(n):(m.current=d.current=null,g.current)},c=function r(){var c=Date.now();if(h&&l.current===f.current&&T(),t(c))return e(c);if(w.current){var i=u-(c-o.current),a=F?Math.min(i,D-(c-f.current)):i;n(r,a)}},T=function(){i&&i({})},W=function(){if(s||A){var e=Date.now(),i=t(e);if(m.current=[].slice.call(arguments),d.current=a,o.current=e,i){if(!v.current&&w.current)return f.current=o.current,n(c,u),h?r(o.current):g.current;if(F)return n(c,u),r(o.current)}return v.current||n(c,u),g.current}};return W.cancel=function(){var r=v.current;r&&(x?cancelAnimationFrame(v.current):clearTimeout(v.current)),f.current=0,m.current=o.current=d.current=v.current=null,r&&i&&i({})},W.isPending=function(){return!!v.current},W.flush=function(){return v.current?e(Date.now()):g.current},W},[h,F,u,D,y,x,s,A,i]);return T}function i(r,n){return r===n}function a(n,t,a){var o=a&&a.equalityFn||i,f=r(n),l=e({})[1],v=c(u(function(r){f.current=r,l({})},[l]),t,a,l),m=r(n);return o(m.current,n)||(v(n),m.current=n),[f.current,v]}function o(r,n,t){var e=void 0===t?{}:t,u=e.leading,i=e.trailing;return c(r,n,{maxWait:n,leading:void 0===u||u,trailing:void 0===i||i})}export{a as useDebounce,c as useDebouncedCallback,o as useThrottledCallback};\n//# sourceMappingURL=index.module.js.map\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { useDebouncedCallback } from \"use-debounce\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\n/**\r\n *\r\n * @param uri The file URI to read/write\r\n * @param debounce Debounce time in ms for write operations\r\n * @returns\r\n */\r\nexport default function useFile(uri: string | undefined, debounce = 0) {\r\n const [file, setFile] = useState<File | undefined>(undefined);\r\n\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >([\r\n [\r\n IMCMessageTypeEnum.PlatformFileUpdate,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n const updatedFile = message.payload as File;\r\n setFile(updatedFile);\r\n },\r\n ],\r\n ]);\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"file\");\r\n\r\n const sendFileDebounced = useDebouncedCallback(\r\n async (newFile: File) => {\r\n if (!isReady || !uri) return;\r\n await imc?.sendMessage(IMCMessageTypeEnum.PlatformWriteFile, {\r\n uri,\r\n file: newFile,\r\n });\r\n },\r\n debounce,\r\n { maxWait: debounce * 2 },\r\n );\r\n\r\n const saveFile = useCallback(\r\n async (fileContent: string) => {\r\n if (!uri || !file) return;\r\n\r\n const newFile = new File([fileContent], file.name, {\r\n type: file.type,\r\n lastModified: Date.now(),\r\n });\r\n setFile(newFile);\r\n\r\n // ✅ This now waits until the debounced write actually finishes\r\n await sendFileDebounced(newFile);\r\n },\r\n [file, uri, sendFileDebounced],\r\n );\r\n\r\n // Read file when uri changes\r\n useEffect(() => {\r\n if (isReady && uri) {\r\n imc\r\n ?.sendMessage(IMCMessageTypeEnum.PlatformReadFile, {\r\n uri,\r\n })\r\n .then((f: File | undefined) => {\r\n setFile(f);\r\n });\r\n }\r\n }, [isReady, uri]);\r\n\r\n return {\r\n file,\r\n saveFile,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useLoading() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<any>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"loading\");\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n if (isReady) {\r\n imc?.sendMessage(IMCMessageTypeEnum.EditorLoadingApp, {\r\n isLoading,\r\n });\r\n }\r\n }, [isLoading]);\r\n\r\n function toggleLoading(isLoading: boolean) {\r\n setIsLoading((prev) => isLoading);\r\n }\r\n\r\n return {\r\n isReady,\r\n toggleLoading,\r\n };\r\n}\r\n","import {\r\n NotificationTypeEnum,\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n} from \"@pulse-editor/shared-utils\";\r\n\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useNotification() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc } = useIMC(receiverHandlerMap, \"notification\");\r\n\r\n function openNotification(text: string, type: NotificationTypeEnum) {\r\n if (!imc) {\r\n throw new Error(\"IMC is not initialized.\");\r\n }\r\n imc.sendMessage(IMCMessageTypeEnum.EditorShowNotification, {\r\n text,\r\n type,\r\n });\r\n }\r\n\r\n return { openNotification };\r\n}\r\n","import {\r\n Action,\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n ReceiverHandler,\r\n TypedVariable,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport { DependencyList, useEffect, useRef, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\n/**\r\n * Register an app action to listen to IMC messages from the core,\r\n * and pass to the action to handle.\r\n *\r\n * @param name Name of the command.\r\n * @param description Description of the command.\r\n * @param parameters Parameters of the command.\r\n * @param returns Return values of the command.\r\n * @param callbackHandler Callback handler function to handle the command.\r\n * @param deps Dependency list to re-register the action when changed.\r\n * @param isExtReady Whether the extension is ready to receive commands.\r\n * Useful for actions that need to wait for some certain app state to be ready.\r\n *\r\n */\r\nexport default function useRegisterAction(\r\n actionInfo: {\r\n name: string;\r\n description: string;\r\n parameters?: Record<string, TypedVariable>;\r\n returns?: Record<string, TypedVariable>;\r\n },\r\n callbackHandler: (args: any) => Promise<any>,\r\n deps: DependencyList,\r\n isExtReady: boolean = true,\r\n) {\r\n const { isReady, imc } = useIMC(getReceiverHandlerMap(), \"register-action\");\r\n\r\n // Queue to hold commands until extension is ready\r\n const commandQueue = useRef<{ args: any; resolve: (v: any) => void }[]>([]);\r\n const isCommandExecuting = useRef(false);\r\n\r\n const [action, setAction] = useState<Action>({\r\n name: actionInfo.name,\r\n description: actionInfo.description,\r\n parameters: actionInfo.parameters ?? {},\r\n returns: actionInfo.returns ?? {},\r\n handler: callbackHandler,\r\n });\r\n\r\n // Flush queued commands when isExtReady becomes true\r\n useEffect(() => {\r\n async function runQueuedCommands() {\r\n const pendingCMDs = [...commandQueue.current];\r\n commandQueue.current = [];\r\n for (const cmd of pendingCMDs) {\r\n const { args, resolve } = cmd;\r\n if (isCommandExecuting.current) {\r\n return;\r\n }\r\n isCommandExecuting.current = true;\r\n const res = await executeAction(args);\r\n isCommandExecuting.current = false;\r\n resolve(res);\r\n }\r\n }\r\n\r\n if (isExtReady && commandQueue.current.length > 0) {\r\n runQueuedCommands();\r\n }\r\n }, [isExtReady]);\r\n\r\n useEffect(() => {\r\n async function updateAction() {\r\n // Register or update action.\r\n // This will only pass signature info to the editor.\r\n // The actual handler is stored in this hook,\r\n // so the execution happens inside the extension app.\r\n await imc?.sendMessage(IMCMessageTypeEnum.EditorRegisterAction, {\r\n name: action.name,\r\n description: action.description,\r\n parameters: action.parameters,\r\n returns: action.returns,\r\n });\r\n\r\n // Update receiver\r\n imc?.updateReceiverHandlerMap(getReceiverHandlerMap());\r\n }\r\n\r\n if (isExtReady) {\r\n updateAction();\r\n }\r\n }, [action, imc, isExtReady]);\r\n\r\n useEffect(() => {\r\n setAction((prev) => ({\r\n ...prev,\r\n name: actionInfo.name,\r\n description: actionInfo.description,\r\n parameters: actionInfo.parameters ?? {},\r\n returns: actionInfo.returns ?? {},\r\n handler: callbackHandler,\r\n }));\r\n }, [...deps]);\r\n\r\n async function executeAction(args: any) {\r\n if (!action.handler) return;\r\n\r\n const res = await action.handler(args);\r\n\r\n return res;\r\n }\r\n\r\n function getReceiverHandlerMap() {\r\n const receiverHandlerMap = new Map<IMCMessageTypeEnum, ReceiverHandler>([\r\n [\r\n IMCMessageTypeEnum.EditorRunAppAction,\r\n async (_senderWindow: Window, message: IMCMessage) => {\r\n const { name: requestedName, args }: { name: string; args: any } =\r\n message.payload;\r\n\r\n if (actionInfo.name !== requestedName) {\r\n throw new Error(\"Message ignored by receiver\");\r\n }\r\n // Validate parameters\r\n const actionParams = actionInfo.parameters ?? {};\r\n\r\n const requiredParamCount = Object.entries(actionParams).filter(\r\n ([, paramInfo]) => !(paramInfo as TypedVariable).optional,\r\n ).length;\r\n\r\n if (Object.keys(args).length < requiredParamCount) {\r\n throw new Error(\r\n `Invalid number of parameters: expected at least${\r\n Object.keys(actionParams).length\r\n }, got ${Object.keys(args).length}`,\r\n );\r\n }\r\n\r\n // Check types\r\n for (const [key, value] of Object.entries(args)) {\r\n if (actionParams[key] === undefined) {\r\n throw new Error(`Invalid parameter: ${key}`);\r\n }\r\n if (\r\n typeof value !== actionParams[key].type &&\r\n // Allow object for \"app-instance\"\r\n (actionParams[key].type !== \"app-instance\" ||\r\n typeof value !== \"object\")\r\n ) {\r\n throw new Error(\r\n `Invalid type for parameter ${key}: expected ${\r\n actionParams[key].type\r\n }, got ${typeof value}. Value received: ${value}`,\r\n );\r\n }\r\n }\r\n\r\n // If extension is ready, execute immediately\r\n if (isExtReady) {\r\n const result = await executeAction(args);\r\n return result;\r\n }\r\n\r\n // Otherwise, queue the command and return when executed\r\n return new Promise((resolve) => {\r\n commandQueue.current.push({ args, resolve });\r\n });\r\n },\r\n ],\r\n ]);\r\n return receiverHandlerMap;\r\n }\r\n\r\n return {\r\n isReady,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useTheme() {\r\n const [theme, setTheme] = useState<string>(\"light\");\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n receiverHandlerMap.set(\r\n IMCMessageTypeEnum.EditorThemeUpdate,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n const theme = message.payload;\r\n setTheme((prev) => theme);\r\n }\r\n );\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"theme\");\r\n\r\n // Upon initial load, request theme from main app\r\n useEffect(() => {\r\n if (isReady) {\r\n imc\r\n ?.sendMessage(IMCMessageTypeEnum.EditorAppRequestTheme)\r\n .then((result) => {\r\n setTheme((prev) => result);\r\n });\r\n }\r\n }, [isReady]);\r\n\r\n return {\r\n theme,\r\n };\r\n}\r\n","import {\r\n ImageModelConfig,\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useImageGen() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"image-gen\");\r\n\r\n /**\r\n *\r\n * @param textPrompt The text prompt to generate the image.\r\n * @param imagePrompt A URL to an image or an image in an ArrayBuffer.\r\n * @param imageModelConfig (optional) The image model config to use.\r\n * @returns The generated image in an ArrayBuffer.\r\n */\r\n async function runImageGen(\r\n textPrompt?: string,\r\n imagePrompt?: string | ArrayBuffer,\r\n // LLM config is optional, if not provided, the default config will be used.\r\n imageModelConfig?: ImageModelConfig\r\n ): Promise<{\r\n arrayBuffer?: ArrayBuffer;\r\n url?: string;\r\n }> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n if (!textPrompt && !imagePrompt) {\r\n throw new Error(\"At least one of textPrompt or imagePrompt is required.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalityImageGen, {\r\n textPrompt,\r\n imagePrompt,\r\n imageModelConfig,\r\n })\r\n .then((response) => {\r\n return response as {\r\n arrayBuffer?: ArrayBuffer;\r\n url?: string;\r\n };\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runImageGen,\r\n isReady,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n LLMModelConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useLLM() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"llm\");\r\n\r\n async function runLLM(\r\n prompt: string,\r\n // LLM config is optional, if not provided, the default config will be used.\r\n llmConfig?: LLMModelConfig\r\n ): Promise<string> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalityLLM, {\r\n prompt,\r\n llmConfig,\r\n })\r\n .then((response) => {\r\n return response as string;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runLLM,\r\n isReady,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\n\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useOCR() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc } = useIMC(receiverHandlerMap, \"ocr\");\r\n\r\n /**\r\n * \r\n * @param image The image to be recognized. This is a base64 encoded string.\r\n * @returns \r\n */\r\n async function recognizeText(image: string): Promise<string> {\r\n if (!imc) {\r\n throw new Error(\"IMC is not initialized.\");\r\n }\r\n\r\n // Send the message to the extension\r\n const result = await imc.sendMessage(IMCMessageTypeEnum.ModalityOCR, { image });\r\n\r\n return result.payload.text;\r\n }\r\n\r\n return {\r\n recognizeText,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n STTModelConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useSTT() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"stt\");\r\n\r\n async function runSTT(\r\n audio: Uint8Array,\r\n // Config is optional, if not provided, the default config will be used.\r\n sttConfig?: STTModelConfig,\r\n ): Promise<string> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalitySTT, {\r\n audio,\r\n sttConfig,\r\n })\r\n .then((response) => {\r\n return response as string;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runSTT,\r\n isReady,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n TTSModelConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useTTS() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"tts\");\r\n\r\n async function runTTS(\r\n text: string,\r\n // Config is optional, if not provided, the default config will be used.\r\n ttsConfig?: TTSModelConfig,\r\n ): Promise<Uint8Array> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalityTTS, {\r\n text,\r\n ttsConfig,\r\n })\r\n .then((response) => {\r\n return response as Uint8Array;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runTTS,\r\n isReady,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n VideoModelConfig,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useVideoGen() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"video-gen\");\r\n\r\n /**\r\n *\r\n * @param textPrompt The text prompt to generate the video.\r\n * @param imagePrompt A URL to an image or an image in an ArrayBuffer.\r\n * @param videoModelConfig (optional) The video model config to use.\r\n * @returns The generated video in an ArrayBuffer.\r\n */\r\n async function runVideoGen(\r\n duration: number,\r\n textPrompt?: string,\r\n imagePrompt?: string | ArrayBuffer,\r\n // LLM config is optional, if not provided, the default config will be used.\r\n videoModelConfig?: VideoModelConfig\r\n ): Promise<{\r\n url?: string;\r\n arrayBuffer?: ArrayBuffer;\r\n }> {\r\n if (!imc) {\r\n throw new Error(\"IMC not initialized.\");\r\n }\r\n\r\n if (!textPrompt && !imagePrompt) {\r\n throw new Error(\"At least one of textPrompt or imagePrompt is required.\");\r\n }\r\n\r\n const result = await imc\r\n .sendMessage(IMCMessageTypeEnum.ModalityVideoGen, {\r\n duration,\r\n textPrompt,\r\n imagePrompt,\r\n videoModelConfig,\r\n })\r\n .then((response) => {\r\n return response as {\r\n url?: string;\r\n arrayBuffer?: ArrayBuffer;\r\n };\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n runVideoGen,\r\n isReady,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function usePulseEnv() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"env\");\r\n const [envs, setEnvs] = useState<Record<string, string>>(\r\n // default to process env\r\n process.env as Record<string, string>,\r\n );\r\n\r\n useEffect(() => {\r\n if (isReady) {\r\n imc?.sendMessage(IMCMessageTypeEnum.EditorGetEnv).then((env) => {\r\n // Create or update envs state\r\n setEnvs((prev) => ({\r\n ...prev,\r\n ...env,\r\n }));\r\n });\r\n }\r\n }, [isReady]);\r\n\r\n return {\r\n isReady,\r\n envs,\r\n };\r\n}\r\n","import {\r\n FileSystemObject,\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n ListPathOptions,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\n/**\r\n * Hook for managing file system operations in the editor.\r\n */\r\n\r\nexport default function useFileSystem() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >([]);\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"file-system\");\r\n\r\n async function listPath(uri: string, options?: ListPathOptions) {\r\n const result: FileSystemObject[] =\r\n (await imc?.sendMessage(IMCMessageTypeEnum.PlatformListPath, {\r\n uri,\r\n options,\r\n })) ?? [];\r\n return result;\r\n }\r\n\r\n async function createFolder(uri: string) {\r\n await imc?.sendMessage(IMCMessageTypeEnum.PlatformCreateFolder, { uri });\r\n }\r\n\r\n async function createFile(uri: string) {\r\n await imc?.sendMessage(IMCMessageTypeEnum.PlatformCreateFile, { uri });\r\n }\r\n\r\n async function rename(oldUri: string, newUri: string) {\r\n await imc?.sendMessage(IMCMessageTypeEnum.PlatformRename, {\r\n oldUri,\r\n newUri,\r\n });\r\n }\r\n\r\n async function deletePath(uri: string) {\r\n await imc?.sendMessage(IMCMessageTypeEnum.PlatformDelete, { uri });\r\n }\r\n\r\n async function hasPath(uri: string) {\r\n const exists: boolean =\r\n (await imc?.sendMessage(IMCMessageTypeEnum.PlatformHasPath, { uri })) ??\r\n false;\r\n return !!exists;\r\n }\r\n\r\n async function copyFiles(from: string, to: string) {\r\n await imc?.sendMessage(IMCMessageTypeEnum.PlatformCopyFiles, { from, to });\r\n }\r\n\r\n async function readFile(uri: string) {\r\n const file: File | undefined = await imc?.sendMessage(\r\n IMCMessageTypeEnum.PlatformReadFile,\r\n { uri },\r\n );\r\n return file;\r\n }\r\n\r\n async function writeFile(uri: string, content: string) {\r\n const newFile: File | undefined = new File([content], uri);\r\n\r\n await imc?.sendMessage(IMCMessageTypeEnum.PlatformWriteFile, {\r\n uri,\r\n file: newFile,\r\n });\r\n }\r\n\r\n return {\r\n isReady,\r\n listPath,\r\n createFolder,\r\n createFile,\r\n rename,\r\n deletePath,\r\n hasPath,\r\n copyFiles,\r\n readFile,\r\n writeFile,\r\n };\r\n}\r\n","import {\r\n IMCMessage,\r\n IMCMessageTypeEnum,\r\n ViewModel,\r\n} from \"@pulse-editor/shared-utils\";\r\nimport { useCallback } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useOwnedAppView() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >([]);\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"owned-app\");\r\n\r\n const runAppAction = useCallback(\r\n async (ownedAppViewModel: ViewModel, actionName: string, args: any) => {\r\n if (isReady) {\r\n const appViewId = ownedAppViewModel.viewId;\r\n const preRegisteredActions =\r\n ownedAppViewModel.appConfig.preRegisteredActions || [];\r\n\r\n const action = preRegisteredActions.find((a) => a.name === actionName);\r\n if (!action) {\r\n throw new Error(\r\n `Action ${actionName} not found in owned app ${ownedAppViewModel.appConfig.id}`,\r\n );\r\n }\r\n\r\n const result = await imc?.sendMessage(\r\n IMCMessageTypeEnum.EditorAppUseOwnedApp,\r\n {\r\n viewId: appViewId,\r\n actionName,\r\n args,\r\n },\r\n );\r\n return result;\r\n }\r\n return undefined;\r\n },\r\n [imc, isReady],\r\n );\r\n\r\n return {\r\n runAppAction,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport React, { createContext, ReactNode, useState } from \"react\";\r\nimport useIMC from \"../hooks/imc/use-imc\";\r\n\r\nexport const ReceiveFileContext = createContext<\r\n ReceiveFileContextType | undefined\r\n>(undefined);\r\n\r\nexport type ReceiveFileContextType = {\r\n // Define any state or functions you want to provide here\r\n selectedFileUri: string | undefined;\r\n};\r\n\r\nexport default function ReceiveFileProvider({\r\n children,\r\n}: {\r\n children: ReactNode;\r\n}) {\r\n const [receivedFileUri, setReceivedFileUri] = useState<string | undefined>(\r\n undefined\r\n );\r\n\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<any>\r\n >([\r\n [\r\n IMCMessageTypeEnum.EditorAppReceiveFileUri,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n const { uri } = message.payload;\r\n setReceivedFileUri((prev) => uri);\r\n },\r\n ],\r\n ]);\r\n useIMC(receiverHandlerMap, \"receive-file-provider\");\r\n\r\n return (\r\n <ReceiveFileContext.Provider value={{ selectedFileUri: receivedFileUri }}>\r\n {children}\r\n </ReceiveFileContext.Provider>\r\n );\r\n}\r\n","import { useContext } from \"react\";\r\nimport { ReceiveFileContext } from \"../../providers/receive-file-provider\";\r\n\r\nexport default function useReceiveFile() {\r\n const context = useContext(ReceiveFileContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useReceiveFile must be used within a ReceiveFileProvider\");\r\n }\r\n\r\n return { receivedFileUri: context.selectedFileUri };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport React, {\r\n createContext,\r\n Dispatch,\r\n ReactNode,\r\n SetStateAction,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport useIMC from \"../hooks/imc/use-imc\";\r\n\r\nexport const SnapshotContext = createContext<SnapshotContextType | undefined>(\r\n undefined\r\n);\r\n\r\nexport type SnapshotContextType = {\r\n states: { [key: string]: any };\r\n setStates: Dispatch<SetStateAction<{ [key: string]: any }>>;\r\n};\r\n\r\nexport default function SnapshotProvider({\r\n children,\r\n}: {\r\n children: ReactNode;\r\n}) {\r\n const [states, setStates] = useState<{ [key: string]: any }>({});\r\n \r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<any>\r\n >([\r\n [\r\n IMCMessageTypeEnum.EditorAppStateSnapshotRestore,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n const { states } = message.payload;\r\n\r\n // Update all states in the context\r\n console.log(\"Restoring snapshot states:\", states);\r\n setStates((prev) => ({ ...states }));\r\n },\r\n ],\r\n [\r\n IMCMessageTypeEnum.EditorAppStateSnapshotSave,\r\n async (senderWindow: Window, message: IMCMessage) => {\r\n // Return current states in the context\r\n return { states };\r\n },\r\n ],\r\n ]);\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"snapshot-provider\");\r\n\r\n useEffect(() => {\r\n if (isReady) {\r\n imc?.updateReceiverHandlerMap(receiverHandlerMap);\r\n }\r\n }, [isReady, states]);\r\n\r\n return (\r\n <SnapshotContext.Provider value={{ states, setStates }}>\r\n {children}\r\n </SnapshotContext.Provider>\r\n );\r\n}\r\n","import { useContext, useEffect, useRef, useState } from \"react\";\r\nimport { SnapshotContext } from \"../../providers/snapshot-provider\";\r\n\r\nexport default function useSnapShotState<T>(\r\n key: string,\r\n initialValue?: T,\r\n onRestore?: (value: T) => void\r\n) {\r\n const snapshotContext = useContext(SnapshotContext);\r\n if (!snapshotContext) {\r\n throw new Error(\"useSnapShotState must be used within a SnapshotProvider\");\r\n }\r\n\r\n const { states, setStates } = snapshotContext;\r\n const [state, setState] = useState<T>(\r\n states[key] !== undefined ? states[key] : initialValue\r\n );\r\n\r\n const isLocalUpdate = useRef(false);\r\n\r\n const setSnapshotState: React.Dispatch<React.SetStateAction<T>> = (value) => {\r\n setState((prev) => {\r\n const newValue =\r\n typeof value === \"function\" ? (value as (prev: T) => T)(prev) : value;\r\n\r\n isLocalUpdate.current = true; // mark as local\r\n Promise.resolve().then(() => {\r\n setStates((prevStates) => ({\r\n ...prevStates,\r\n [key]: newValue,\r\n }));\r\n });\r\n\r\n return newValue;\r\n });\r\n };\r\n\r\n // Initialize context with initial value\r\n useEffect(() => {\r\n if (states[key] === undefined && initialValue !== undefined) {\r\n setStates((prev) => ({\r\n ...prev,\r\n [key]: initialValue,\r\n }));\r\n }\r\n }, []);\r\n\r\n // Only restore when external changes occur\r\n useEffect(() => {\r\n const contextValue = states[key];\r\n if (contextValue === undefined) return;\r\n\r\n if (isLocalUpdate.current) {\r\n // skip this run because we caused it ourselves\r\n isLocalUpdate.current = false;\r\n return;\r\n }\r\n\r\n if (contextValue !== state) {\r\n console.log(\"Restoring state for key:\", key, contextValue);\r\n setState(contextValue);\r\n onRestore?.(contextValue);\r\n }\r\n }, [states[key]]);\r\n\r\n return [state, setSnapshotState] as const;\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useIMC from \"../imc/use-imc\";\r\n\r\nexport default function useWorkspace() {\r\n const [workspaceId, setWorkspaceId] = useState<string | undefined>(undefined);\r\n\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"theme\");\r\n\r\n // Upon initial load, request theme from main app\r\n useEffect(() => {\r\n if (isReady) {\r\n imc\r\n ?.sendMessage(IMCMessageTypeEnum.EditorAppRequestWorkspace)\r\n .then((result) => {\r\n const { id }: { id: string } = result;\r\n setWorkspaceId((prev) => id);\r\n });\r\n }\r\n }, [isReady]);\r\n\r\n return {\r\n workspaceId,\r\n };\r\n}\r\n","import { IMCMessage, IMCMessageTypeEnum } from \"@pulse-editor/shared-utils\";\r\nimport useIMC from \"../imc/use-imc\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport default function useTerminal() {\r\n const receiverHandlerMap = new Map<\r\n IMCMessageTypeEnum,\r\n (senderWindow: Window, message: IMCMessage) => Promise<void>\r\n >();\r\n\r\n const { imc, isReady } = useIMC(receiverHandlerMap, \"terminal\");\r\n const [websocketUrl, setWebsocketUrl] = useState<string | undefined>(\r\n undefined\r\n );\r\n const [projectHomePath, setProjectHomePath] = useState<string | undefined>(\r\n undefined\r\n );\r\n\r\n useEffect(() => {\r\n if (isReady) {\r\n imc?.sendMessage(IMCMessageTypeEnum.PlatformCreateTerminal).then((response) => {\r\n const {\r\n websocketUrl,\r\n projectHomePath,\r\n }: {\r\n websocketUrl: string;\r\n projectHomePath: string;\r\n } = response;\r\n\r\n setWebsocketUrl(websocketUrl);\r\n setProjectHomePath(projectHomePath);\r\n });\r\n }\r\n }, [isReady]);\r\n\r\n return {\r\n websocketUrl,\r\n projectHomePath,\r\n };\r\n}\r\n"],"names":["byteToHex","i","push","toString","slice","unsafeStringify","arr","offset","arguments","length","undefined","toLowerCase","getRandomValues","rnds8","Uint8Array","rng","crypto","Error","bind","randomUUID","_v4","options","buf","_ref","_options$random","_options$rng","_options","rnds","random","call","v4","native","c","e","u","a","o","r","f","l","v","m","d","g","p","w","current","s","window","x","TypeError","h","leading","y","trailing","F","A","debounceOnServer","D","Math","max","maxWait","n","T","t","apply","cancelAnimationFrame","requestAnimationFrame","setTimeout","Date","now","min","W","cancel","clearTimeout","isPending","flush","useDebouncedCallback"],"mappings":";;;AACA,IAAMA,SAAS,GAAG,EAAE;AACpB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,GAAG,EAAE,EAAEA,CAAC,EAAE;AAC1BD,EAAAA,SAAS,CAACE,IAAI,CAAC,CAACD,CAAC,GAAG,KAAK,EAAEE,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD;AACO,SAASC,eAAeA,CAACC,GAAG,EAAc;AAAA,EAAA,IAAZC,MAAM,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC;AAC3C,EAAA,OAAO,CAACR,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC9BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1B,GAAG,GACHP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1B,GAAG,GACHP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1B,GAAG,GACHP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1B,GAAG,GACHP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,EAAE,CAAC,CAAC,GAC3BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,EAAE,CAAC,CAAC,GAC3BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,EAAE,CAAC,CAAC,GAC3BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,EAAE,CAAC,CAAC,GAC3BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,EAAE,CAAC,CAAC,GAC3BP,SAAS,CAACM,GAAG,CAACC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAEI,WAAW,EAAE;AAClD;;AC1BA,IAAIC,eAAe;AACnB,IAAMC,KAAK,GAAG,IAAIC,UAAU,CAAC,EAAE,CAAC;AACjB,SAASC,GAAGA,GAAG;EAC1B,IAAI,CAACH,eAAe,EAAE;IAClB,IAAI,OAAOI,MAAM,KAAK,WAAW,IAAI,CAACA,MAAM,CAACJ,eAAe,EAAE;AAC1D,MAAA,MAAM,IAAIK,KAAK,CAAC,0GAA0G,CAAC;AAC/H,IAAA;IACAL,eAAe,GAAGI,MAAM,CAACJ,eAAe,CAACM,IAAI,CAACF,MAAM,CAAC;AACzD,EAAA;EACA,OAAOJ,eAAe,CAACC,KAAK,CAAC;AACjC;;ACVA,IAAMM,UAAU,GAAG,OAAOH,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACG,UAAU,IAAIH,MAAM,CAACG,UAAU,CAACD,IAAI,CAACF,MAAM,CAAC;AACvG,cAAe;AAAEG,EAAAA,UAAU,EAAVA;AAAW,CAAC;;ACE7B,SAASC,GAAGA,CAACC,OAAO,EAAEC,GAAG,EAAEf,MAAM,EAAE;AAAA,EAAA,IAAAgB,IAAA,EAAAC,eAAA,EAAAC,YAAA,EAAAC,QAAA;AAC/BL,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAAE;AACvB,EAAA,IAAMM,IAAI,GAAA,CAAAJ,IAAA,GAAA,CAAAC,eAAA,GAAGH,OAAO,CAACO,MAAM,MAAA,IAAA,IAAAJ,eAAA,KAAA,MAAA,GAAAA,eAAA,IAAAC,YAAA,GAAI,CAAAC,QAAA,GAAAL,OAAO,EAACN,GAAG,MAAA,IAAA,IAAAU,YAAA,KAAA,MAAA,GAAA,MAAA,GAAXA,YAAA,CAAAI,IAAA,CAAAH,QAAc,CAAC,cAAAH,IAAA,KAAA,MAAA,GAAAA,IAAA,GAAIR,GAAG,EAAE;AACvD,EAAA,IAAIY,IAAI,CAAClB,MAAM,GAAG,EAAE,EAAE;AAClB,IAAA,MAAM,IAAIQ,KAAK,CAAC,mCAAmC,CAAC;AACxD,EAAA;EACAU,IAAI,CAAC,CAAC,CAAC,GAAIA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAI,IAAI;EACjCA,IAAI,CAAC,CAAC,CAAC,GAAIA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAI,IAAI;EAWjC,OAAOtB,eAAe,CAACsB,IAAI,CAAC;AAChC;AACA,SAASG,EAAEA,CAACT,OAAO,EAAEC,GAAG,EAAEf,MAAM,EAAE;EAC9B,IAAIwB,OAAM,CAACZ,UAAU,IAAI,IAAI,IAAI,CAACE,OAAO,EAAE;AACvC,IAAA,OAAOU,OAAM,CAACZ,UAAU,EAAE;AAC9B,EAAA;AACA,EAAA,OAAOC,GAAG,CAACC,OAAoB,CAAC;AACpC;;ACpBc,SAAU,MAAM,CAAC,UAA8B,EAAE,MAAc,EAAA;IAC3E,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAC5B,SAAS,CACV;IACD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEjD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM;IAElC,SAAS,CAAC,MAAK;QACb,YAAY,CAAC,IAAI,CAAC;AAElB,QAAA,OAAO,MAAK;YACV,YAAY,CAAC,KAAK,CAAC;YACnB,GAAG,EAAE,KAAK,EAAE;YACZ,MAAM,CAAC,SAAS,CAAC;AACnB,QAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,SAAS,CAAC,MAAK;AACb,QAAA,eAAe,OAAO,GAAA;AACpB,YAAA,IAAI,CAAC,SAAS;gBAAE;iBACX,IAAI,GAAG,KAAK,SAAS;gBAAE;YAE5B,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;AACzD,YAAA,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;AAC7B,YAAA,MAAM,CAAC,wBAAwB,CAAC,UAAU,CAAC;AAC3C,YAAA,MAAM,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC;AAEd,YAAA,MAAM,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,EAAE;gBACpD,MAAM;gBACN,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,aAAA,CAAC;YACF,UAAU,CAAC,IAAI,CAAC;QAClB;AAEA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAEpB,OAAO;QACL,GAAG;QACH,OAAO;KACR;AACH;;ACjDA;;;;AAIG;AACW,SAAU,aAAa,GAAA;AACnC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;IAEa,MAAM,CAAC,kBAAkB,EAAE,aAAa;AAExD,IAAA,OAAO,EAAI;AACb;;ACVc,SAAU,SAAS,GAAA;AAC/B,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IAE7D,eAAe,cAAc,CAC3B,SAAiB,EACjB,UAAkB,EAClB,IAAyB,EACzB,WAAyB,EACzB,SAA0B,EAAA;QAE1B,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzC;QAEA,MAAM,MAAM,GAAG,MAAM;AAClB,aAAA,WAAW,CACV,kBAAkB,CAAC,oBAAoB,EACvC;YACE,SAAS;YACT,UAAU;YACV,IAAI;YACJ,SAAS;AACV,SAAA,EACD,WAAW;AAEZ,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;AACjB,YAAA,OAAO,QAAe;AACxB,QAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,MAAM;IACf;IAEA,OAAO;QACL,cAAc;QACd,OAAO;KACR;AACH;;ACwEc,SAAUW,EAGtBC,CAAA,EACAC,CAAA,EACAF,CAAA,EACA/B,CAAA,EAAA;AAA8C,EAAA,IAAAkC,CAAA,GAAA,IAAA;IAExCC,CAAA,GAAeC,MAAA,CAAO,IAAA,CAAA;IACtBC,CAAA,GAAiBD,MAAA,CAAO,CAAA,CAAA;IACxBE,CAAA,GAAkBF,MAAA,CAAO,CAAA,CAAA;IACzBG,CAAA,GAAUH,MAAA,CAAO,IAAA,CAAA;IACjBI,CAAA,GAAWJ,MAAA,CAAkB,EAAA,CAAA;AAC7BK,IAAAA,CAAA,GAAWL,MAAA,EAAA;AACXM,IAAAA,CAAA,GAASN,MAAA,EAAA;IACTO,CAAA,GAAUP,MAAA,CAAOJ,CAAA,CAAA;IACjBY,CAAA,GAAUR,MAAA,CAAA,IAAO,CAAA;EAEvBO,CAAA,CAAQE,OAAA,GAAUb,CAAA;EAElB,IAAMc,CAAA,GAAiC,WAAA,IAAA,OAAXC,MAAA;AAEtBC,IAAAA,CAAA,IAAUf,CAAA,IAAiB,CAAA,KAATA,CAAA,IAAca,CAAA;AAEtC,EAAA,IAAoB,UAAA,IAAA,OAATd,CAAA,EACT,MAAA,IAAUiB,SAAA,CAAU,qBAAA,CAAA;EAGtBhB,CAAA,GAAA,CAAQA,CAAA,IAAQ,CAAA;AAGhB,EAAA,IAAMiB,CAAA,GAAA,CAAA,CAAA,CAFNnB,CAAA,GAAUA,CAAA,IAAW,IAEKoB,OAAA;AACpBC,IAAAA,CAAA,KAAW,UAAA,IAAcrB,CAAA,CAAA,IAAA,CAAA,CAAYA,CAAA,CAAQsB,QAAA;IAC7CC,CAAA,GAAS,aAAavB,CAAA;AACtBwB,IAAAA,CAAA,GACJ,kBAAA,IAAsBxB,CAAA,IAAA,CAAA,CAAYA,CAAA,CAAQyB,gBAAA;AACtCC,IAAAA,CAAA,GAAUH,CAAA,GAASI,IAAA,CAAKC,GAAA,CAAA,CAAK5B,CAAA,CAAQ6B,OAAA,IAAW,CAAA,EAAG3B,CAAA,CAAA,GAAQ,IAAA;AAEjE4B,EAAAA,SAAA,CAAU,YAAA;AAER,IAAA,OADAjB,CAAA,CAAQC,OAAA,GAAA,IAAU,EACX,YAAA;MACLD,CAAA,CAAQC,OAAA,GAAA,KACV;IAAA,CACF;EAAA,CAAA,EAAG,EAAA,CAAA;EAYH,IAAMiB,CAAA,GAAYC,OAAA,CAAQ,YAAA;AACxB,IAAA,IAAM3B,CAAA,GAAa,SAAbA,CAAAA,CAAcA,EAAA,EAAA;AAClB,QAAA,IAAMyB,CAAA,GAAOrB,CAAA,CAASK,OAAA;UAChBkB,CAAA,GAAUtB,CAAA,CAASI,OAAA;AAKzB,QAAA,OAJAL,CAAA,CAASK,OAAA,GAAUJ,CAAA,CAASI,OAAA,GAAU,IAAA,EACtCR,CAAA,CAAeQ,OAAA,GAAUT,EAAA,EACzBE,CAAA,CAAgBO,OAAA,GAAUP,CAAA,CAAgBO,OAAA,IAAWT,EAAA,EAE7CM,CAAA,CAAOG,OAAA,GAAUF,CAAA,CAAQE,OAAA,CAAQmB,KAAA,CAAMD,CAAA,EAASF,CAAA,CAC1D;AAAA,MAAA,CAAA;AAEMA,MAAAA,CAAA,GAAa,SAAbA,CAAAA,CAAczB,CAAA,EAAyByB,EAAA,EAAA;QACvCb,CAAA,IAAQiB,oBAAA,CAAqB1B,CAAA,CAAQM,OAAA,CAAA,EACzCN,CAAA,CAAQM,OAAA,GAAUG,CAAA,GACdkB,qBAAA,CAAsB9B,CAAA,CAAA,GACtB+B,UAAA,CAAW/B,CAAA,EAAayB,EAAA,CAC9B;AAAA,MAAA,CAAA;MAEME,CAAA,GAAe,SAAfA,CAAAA,CAAgB3B,CAAA,EAAA;QACpB,IAAA,CAAKQ,CAAA,CAAQC,OAAA,EAAS,OAAA,KAAA;AAEtB,QAAA,IAAMgB,CAAA,GAAoBzB,CAAA,GAAOD,CAAA,CAAaU,OAAA;AAM9C,QAAA,OAAA,CACGV,CAAA,CAAaU,OAAA,IACdgB,CAAA,IAAqB5B,CAAA,IACrB4B,CAAA,GAAoB,CAAA,IACnBP,CAAA,IATyBlB,CAAA,GAAOC,CAAA,CAAeQ,OAAA,IASdY,CAEtC;AAAA,MAAA,CAAA;MAEMzB,CAAA,GAAe,SAAfA,CAAAA,CAAgB6B,CAAA,EAAA;QAKpB,OAJAtB,CAAA,CAAQM,OAAA,GAAU,IAAA,EAIdO,CAAA,IAAYZ,CAAA,CAASK,OAAA,GAChBT,CAAA,CAAWyB,CAAA,CAAA,IAGpBrB,CAAA,CAASK,OAAA,GAAUJ,CAAA,CAASI,OAAA,GAAU,IAAA,EAC/BH,CAAA,CAAOG,OAAA,CAChB;AAAA,MAAA,CAAA;MAEMd,CAAA,GAAe,SAAfK,CAAAA,GAAA;AACJ,QAAA,IAAML,CAAA,GAAOqC,IAAA,CAAKC,GAAA,EAAA;AAMlB,QAAA,IAJInB,CAAA,IAAWZ,CAAA,CAAgBO,OAAA,KAAYR,CAAA,CAAeQ,OAAA,IACxDiB,CAAA,EAAA,EAGEC,CAAA,CAAahC,CAAA,GACf,OAAOC,CAAA,CAAaD,CAAA,CAAA;QAGtB,IAAKa,CAAA,CAAQC,OAAA,EAAb;UAIA,IAEM7C,CAAA,GAAciC,CAAA,IAFMF,CAAA,GAAOI,CAAA,CAAaU,OAAA,CAAA;AAGxCX,YAAAA,CAAA,GAAgBoB,CAAA,GAClBI,IAAA,CAAKY,GAAA,CAAItE,CAAA,EAAayD,CAAA,IAHE1B,CAAA,GAAOM,CAAA,CAAeQ,OAAA,KAI9C7C,CAAA;AAGJ6D,UAAAA,CAAA,CAAWzB,CAAA,EAAcF,CAAA,CAVxB;AAAA,QAAA;AAWH,MAAA,CAAA;MAEM4B,CAAA,GAA6B,SAA7BA,CAAAA,GAA6B;AAInC,MAAA,CAAA;MAEMS,CAAA,GAA0B,SAA1BA,CAAAA,GAA0B;QAC9B,IAAKzB,CAAA,IAAiBS,CAAA,EAAtB;AAGA,UAAA,IAAMvB,CAAA,GAAOoC,IAAA,CAAKC,GAAA,EAAA;YACZrE,CAAA,GAAa+D,CAAA,CAAa/B,CAAA,CAAA;UAMhC,IAJAQ,CAAA,CAASK,OAAA,GAAO,EAAA,CAAA1C,KAAA,CAAAyB,IAAA,CAAArB,SAAA,CAAA,EAChBkC,CAAA,CAASI,OAAA,GAAUX,CAAA,EACnBC,CAAA,CAAaU,OAAA,GAAUb,CAAA,EAEnBhC,CAAA,EAAY;AACd,YAAA,IAAA,CAAKuC,CAAA,CAAQM,OAAA,IAAWD,CAAA,CAAQC,OAAA,EAM9B,OAJAR,CAAA,CAAeQ,OAAA,GAAUV,CAAA,CAAaU,OAAA,EAEtCgB,CAAA,CAAW9B,CAAA,EAAcE,CAAA,GAElBiB,CAAA,GAAUd,CAAA,CAAWD,CAAA,CAAaU,OAAA,CAAA,GAAWH,CAAA,CAAOG,OAAA;AAE7D,YAAA,IAAIS,CAAA,EAGF,OADAO,CAAA,CAAW9B,CAAA,EAAcE,CAAA,CAAA,EAClBG,CAAA,CAAWD,CAAA,CAAaU,OAAA,CAElC;AAAA,UAAA;AAID,UAAA,OAHKN,CAAA,CAAQM,OAAA,IACXgB,CAAA,CAAW9B,CAAA,EAAcE,CAAA,CAAA,EAEpBS,CAAA,CAAOG,OA1Bb;AAAA,QAAA;AA2BH,MAAA,CAAA;IA8BA,OA5BA0B,CAAA,CAAKC,MAAA,GAAS,YAAA;AACZ,MAAA,IAAMpC,CAAA,GAAWG,CAAA,CAAQM,OAAA;AACrBT,MAAAA,CAAA,KACFY,CAAA,GACIiB,oBAAA,CAAqB1B,CAAA,CAAQM,OAAA,CAAA,GAC7B4B,YAAA,CAAalC,CAAA,CAAQM,OAAA,CAAA,CAAA,EAE3BR,CAAA,CAAeQ,OAAA,GAAU,CAAA,EACzBL,CAAA,CAASK,OAAA,GACPV,CAAA,CAAaU,OAAA,GACbJ,CAAA,CAASI,OAAA,GACTN,CAAA,CAAQM,OAAA,GACN,IAMN;IAAA,CAAA,EAEA0B,CAAA,CAAKG,SAAA,GAAY,YAAA;MACf,OAAA,CAAA,CAASnC,CAAA,CAAQM,OACnB;IAAA,CAAA,EAEA0B,CAAA,CAAKI,KAAA,GAAQ,YAAA;AACX,MAAA,OAAQpC,CAAA,CAAQM,OAAA,GAA2Bb,CAAA,CAAaoC,IAAA,CAAKC,GAAA,EAAA,CAAA,GAAnC3B,CAAA,CAAOG,OACnC;AAAA,IAAA,CAAA,EAEO0B,CACT;AAAA,EAAA,CAAA,EAAG,CACDrB,CAAA,EACAI,CAAA,EACArB,CAAA,EACAwB,CAAA,EACAL,CAAA,EACAJ,CAAA,EACAF,CAAA,EACAS,CAAA,EACAvD,CAAA,CAAA,CAAA;AAGF,EAAA,OAAO8D,CACT;AAAA;;ACpUA;;;;;AAKG;AACW,SAAU,OAAO,CAAC,GAAuB,EAAE,QAAQ,GAAG,CAAC,EAAA;IACnE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAmB,SAAS,CAAC;AAE7D,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAGhC;AACA,QAAA;AACE,YAAA,kBAAkB,CAAC,kBAAkB;AACrC,YAAA,OAAO,YAAoB,EAAE,OAAmB,KAAI;AAClD,gBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,OAAe;gBAC3C,OAAO,CAAC,WAAW,CAAC;YACtB,CAAC;AACF,SAAA;AACF,KAAA,CAAC;AAEF,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAE3D,MAAM,iBAAiB,GAAGc,CAAoB,CAC5C,OAAO,OAAa,KAAI;AACtB,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG;YAAE;AACtB,QAAA,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;YAC3D,GAAG;AACH,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;IACJ,CAAC,EACD,QAAQ,EACR,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,EAAE,CAC1B;IAED,MAAM,QAAQ,GAAG,WAAW,CAC1B,OAAO,WAAmB,KAAI;AAC5B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE;AAEnB,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE;YACjD,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;AACzB,SAAA,CAAC;QACF,OAAO,CAAC,OAAO,CAAC;;AAGhB,QAAA,MAAM,iBAAiB,CAAC,OAAO,CAAC;IAClC,CAAC,EACD,CAAC,IAAI,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAC/B;;IAGD,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,OAAO,IAAI,GAAG,EAAE;YAClB;AACE,kBAAE,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;gBACjD,GAAG;aACJ;AACA,iBAAA,IAAI,CAAC,CAAC,CAAmB,KAAI;gBAC5B,OAAO,CAAC,CAAC,CAAC;AACZ,YAAA,CAAC,CAAC;QACN;AACF,IAAA,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAElB,OAAO;QACL,IAAI;QACJ,QAAQ;KACT;AACH;;ACtEc,SAAU,UAAU,GAAA;AAChC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC;IAC9D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAEhD,SAAS,CAAC,MAAK;QACb,IAAI,OAAO,EAAE;AACX,YAAA,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;gBACpD,SAAS;AACV,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAEf,SAAS,aAAa,CAAC,SAAkB,EAAA;QACvC,YAAY,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;IACnC;IAEA,OAAO;QACL,OAAO;QACP,aAAa;KACd;AACH;;ACrBc,SAAU,eAAe,GAAA;AACrC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;IAEH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC;AAE1D,IAAA,SAAS,gBAAgB,CAAC,IAAY,EAAE,IAA0B,EAAA;QAChE,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC5C;AACA,QAAA,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,sBAAsB,EAAE;YACzD,IAAI;YACJ,IAAI;AACL,SAAA,CAAC;IACJ;IAEA,OAAO,EAAE,gBAAgB,EAAE;AAC7B;;ACjBA;;;;;;;;;;;;;AAaG;AACW,SAAU,iBAAiB,CACvC,UAKC,EACD,eAA4C,EAC5C,IAAoB,EACpB,UAAA,GAAsB,IAAI,EAAA;AAE1B,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,CAAC;;AAG3E,IAAA,MAAM,YAAY,GAAG,MAAM,CAA6C,EAAE,CAAC;AAC3E,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC;AAExC,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS;QAC3C,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EAAE,UAAU,CAAC,WAAW;AACnC,QAAA,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,EAAE;AACvC,QAAA,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;AACjC,QAAA,OAAO,EAAE,eAAe;AACzB,KAAA,CAAC;;IAGF,SAAS,CAAC,MAAK;AACb,QAAA,eAAe,iBAAiB,GAAA;YAC9B,MAAM,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC;AAC7C,YAAA,YAAY,CAAC,OAAO,GAAG,EAAE;AACzB,YAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,gBAAA,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG;AAC7B,gBAAA,IAAI,kBAAkB,CAAC,OAAO,EAAE;oBAC9B;gBACF;AACA,gBAAA,kBAAkB,CAAC,OAAO,GAAG,IAAI;AACjC,gBAAA,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;AACrC,gBAAA,kBAAkB,CAAC,OAAO,GAAG,KAAK;gBAClC,OAAO,CAAC,GAAG,CAAC;YACd;QACF;QAEA,IAAI,UAAU,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAA,iBAAiB,EAAE;QACrB;AACF,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,SAAS,CAAC,MAAK;AACb,QAAA,eAAe,YAAY,GAAA;;;;;AAKzB,YAAA,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,oBAAoB,EAAE;gBAC9D,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;AACxB,aAAA,CAAC;;AAGF,YAAA,GAAG,EAAE,wBAAwB,CAAC,qBAAqB,EAAE,CAAC;QACxD;QAEA,IAAI,UAAU,EAAE;AACd,YAAA,YAAY,EAAE;QAChB;IACF,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAE7B,SAAS,CAAC,MAAK;AACb,QAAA,SAAS,CAAC,CAAC,IAAI,MAAM;AACnB,YAAA,GAAG,IAAI;YACP,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,UAAU,CAAC,WAAW;AACnC,YAAA,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,EAAE;AACvC,YAAA,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;AACjC,YAAA,OAAO,EAAE,eAAe;AACzB,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAEb,eAAe,aAAa,CAAC,IAAS,EAAA;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE;QAErB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAEtC,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,SAAS,qBAAqB,GAAA;AAC5B,QAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAsC;AACtE,YAAA;AACE,gBAAA,kBAAkB,CAAC,kBAAkB;AACrC,gBAAA,OAAO,aAAqB,EAAE,OAAmB,KAAI;oBACnD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GACjC,OAAO,CAAC,OAAO;AAEjB,oBAAA,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE;AACrC,wBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;oBAChD;;AAEA,oBAAA,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE;oBAEhD,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAC5D,CAAC,GAAG,SAAS,CAAC,KAAK,CAAE,SAA2B,CAAC,QAAQ,CAC1D,CAAC,MAAM;oBAER,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,kBAAkB,EAAE;wBACjD,MAAM,IAAI,KAAK,CACb,CAAA,+CAAA,EACE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAC5B,CAAA,MAAA,EAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA,CAAE,CACpC;oBACH;;AAGA,oBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,wBAAA,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACnC,4BAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAA,CAAE,CAAC;wBAC9C;wBACA,IACE,OAAO,KAAK,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI;;AAEvC,6BAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,cAAc;AACxC,gCAAA,OAAO,KAAK,KAAK,QAAQ,CAAC,EAC5B;AACA,4BAAA,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,CAAA,WAAA,EAC/B,YAAY,CAAC,GAAG,CAAC,CAAC,IACpB,SAAS,OAAO,KAAK,qBAAqB,KAAK,CAAA,CAAE,CAClD;wBACH;oBACF;;oBAGA,IAAI,UAAU,EAAE;AACd,wBAAA,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;AACxC,wBAAA,OAAO,MAAM;oBACf;;AAGA,oBAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;wBAC7B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9C,oBAAA,CAAC,CAAC;gBACJ,CAAC;AACF,aAAA;AACF,SAAA,CAAC;AACF,QAAA,OAAO,kBAAkB;IAC3B;IAEA,OAAO;QACL,OAAO;KACR;AACH;;AC5Kc,SAAU,QAAQ,GAAA;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,OAAO,CAAC;AACnD,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,kBAAkB,CAAC,GAAG,CACpB,kBAAkB,CAAC,iBAAiB,EACpC,OAAO,YAAoB,EAAE,OAAmB,KAAI;AAClD,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO;QAC7B,QAAQ,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;AAC3B,IAAA,CAAC,CACF;AAED,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC;;IAG5D,SAAS,CAAC,MAAK;QACb,IAAI,OAAO,EAAE;YACX;AACE,kBAAE,WAAW,CAAC,kBAAkB,CAAC,qBAAqB;AACrD,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAI;gBACf,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;AAC5B,YAAA,CAAC,CAAC;QACN;AACF,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEb,OAAO;QACL,KAAK;KACN;AACH;;AC5Bc,SAAU,WAAW,GAAA;AACjC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC;AAEhE;;;;;;AAMG;AACH,IAAA,eAAe,WAAW,CACxB,UAAmB,EACnB,WAAkC;;IAElC,gBAAmC,EAAA;QAKnC,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzC;AAEA,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;QAC3E;QAEA,MAAM,MAAM,GAAG,MAAM;AAClB,aAAA,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;YAChD,UAAU;YACV,WAAW;YACX,gBAAgB;SACjB;AACA,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;AACjB,YAAA,OAAO,QAGN;AACH,QAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,MAAM;IACf;IAEA,OAAO;QACL,WAAW;QACX,OAAO;KACR;AACH;;ACpDc,SAAU,MAAM,GAAA;AAC5B,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAE1D,eAAe,MAAM,CACnB,MAAc;;IAEd,SAA0B,EAAA;QAE1B,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzC;QAEA,MAAM,MAAM,GAAG,MAAM;AAClB,aAAA,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC3C,MAAM;YACN,SAAS;SACV;AACA,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;AACjB,YAAA,OAAO,QAAkB;AAC3B,QAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,MAAM;IACf;IAEA,OAAO;QACL,MAAM;QACN,OAAO;KACR;AACH;;ACpCc,SAAU,MAAM,GAAA;AAC5B,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;IAEH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC;AAEjD;;;;AAIG;IACH,eAAe,aAAa,CAAC,KAAa,EAAA;QACxC,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC5C;;AAGA,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC;AAE/E,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI;IAC5B;IAEA,OAAO;QACL,aAAa;KACd;AACH;;ACxBc,SAAU,MAAM,GAAA;AAC5B,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAE1D,eAAe,MAAM,CACnB,KAAiB;;IAEjB,SAA0B,EAAA;QAE1B,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzC;QAEA,MAAM,MAAM,GAAG,MAAM;AAClB,aAAA,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC3C,KAAK;YACL,SAAS;SACV;AACA,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;AACjB,YAAA,OAAO,QAAkB;AAC3B,QAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,MAAM;IACf;IAEA,OAAO;QACL,MAAM;QACN,OAAO;KACR;AACH;;ACjCc,SAAU,MAAM,GAAA;AAC5B,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAE1D,eAAe,MAAM,CACnB,IAAY;;IAEZ,SAA0B,EAAA;QAE1B,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzC;QAEA,MAAM,MAAM,GAAG,MAAM;AAClB,aAAA,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC3C,IAAI;YACJ,SAAS;SACV;AACA,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;AACjB,YAAA,OAAO,QAAsB;AAC/B,QAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,MAAM;IACf;IAEA,OAAO;QACL,MAAM;QACN,OAAO;KACR;AACH;;ACjCc,SAAU,WAAW,GAAA;AACjC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC;AAEhE;;;;;;AAMG;AACH,IAAA,eAAe,WAAW,CACxB,QAAgB,EAChB,UAAmB,EACnB,WAAkC;;IAElC,gBAAmC,EAAA;QAKnC,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzC;AAEA,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;QAC3E;QAEA,MAAM,MAAM,GAAG,MAAM;AAClB,aAAA,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;YAChD,QAAQ;YACR,UAAU;YACV,WAAW;YACX,gBAAgB;SACjB;AACA,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;AACjB,YAAA,OAAO,QAGN;AACH,QAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,MAAM;IACf;IAEA,OAAO;QACL,WAAW;QACX,OAAO;KACR;AACH;;ACzDc,SAAU,WAAW,GAAA;AACjC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC;AAC1D,IAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ;;IAE9B,OAAO,CAAC,GAA6B,CACtC;IAED,SAAS,CAAC,MAAK;QACb,IAAI,OAAO,EAAE;AACX,YAAA,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;;AAE7D,gBAAA,OAAO,CAAC,CAAC,IAAI,MAAM;AACjB,oBAAA,GAAG,IAAI;AACP,oBAAA,GAAG,GAAG;AACP,iBAAA,CAAC,CAAC;AACL,YAAA,CAAC,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEb,OAAO;QACL,OAAO;QACP,IAAI;KACL;AACH;;ACxBA;;AAEG;AAEW,SAAU,aAAa,GAAA;AACnC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAGhC,EAAE,CAAC;AAEL,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC;AAElE,IAAA,eAAe,QAAQ,CAAC,GAAW,EAAE,OAAyB,EAAA;QAC5D,MAAM,MAAM,GACV,CAAC,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;YAC3D,GAAG;YACH,OAAO;SACR,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,MAAM;IACf;IAEA,eAAe,YAAY,CAAC,GAAW,EAAA;AACrC,QAAA,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC;IAC1E;IAEA,eAAe,UAAU,CAAC,GAAW,EAAA;AACnC,QAAA,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,CAAC;IACxE;AAEA,IAAA,eAAe,MAAM,CAAC,MAAc,EAAE,MAAc,EAAA;AAClD,QAAA,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,cAAc,EAAE;YACxD,MAAM;YACN,MAAM;AACP,SAAA,CAAC;IACJ;IAEA,eAAe,UAAU,CAAC,GAAW,EAAA;AACnC,QAAA,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC;IACpE;IAEA,eAAe,OAAO,CAAC,GAAW,EAAA;AAChC,QAAA,MAAM,MAAM,GACV,CAAC,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC;AACpE,YAAA,KAAK;QACP,OAAO,CAAC,CAAC,MAAM;IACjB;AAEA,IAAA,eAAe,SAAS,CAAC,IAAY,EAAE,EAAU,EAAA;AAC/C,QAAA,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC5E;IAEA,eAAe,QAAQ,CAAC,GAAW,EAAA;AACjC,QAAA,MAAM,IAAI,GAAqB,MAAM,GAAG,EAAE,WAAW,CACnD,kBAAkB,CAAC,gBAAgB,EACnC,EAAE,GAAG,EAAE,CACR;AACD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,eAAe,SAAS,CAAC,GAAW,EAAE,OAAe,EAAA;QACnD,MAAM,OAAO,GAAqB,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;AAE1D,QAAA,MAAM,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;YAC3D,GAAG;AACH,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;IACJ;IAEA,OAAO;QACL,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,UAAU;QACV,MAAM;QACN,UAAU;QACV,OAAO;QACP,SAAS;QACT,QAAQ;QACR,SAAS;KACV;AACH;;AChFc,SAAU,eAAe,GAAA;AACrC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAGhC,EAAE,CAAC;AAEL,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC;AAEhE,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,OAAO,iBAA4B,EAAE,UAAkB,EAAE,IAAS,KAAI;QACpE,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM;YAC1C,MAAM,oBAAoB,GACxB,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,IAAI,EAAE;AAExD,YAAA,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;YACtE,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,MAAM,IAAI,KAAK,CACb,CAAA,OAAA,EAAU,UAAU,CAAA,wBAAA,EAA2B,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAA,CAAE,CAChF;YACH;YAEA,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,WAAW,CACnC,kBAAkB,CAAC,oBAAoB,EACvC;AACE,gBAAA,MAAM,EAAE,SAAS;gBACjB,UAAU;gBACV,IAAI;AACL,aAAA,CACF;AACD,YAAA,OAAO,MAAM;QACf;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,EACD,CAAC,GAAG,EAAE,OAAO,CAAC,CACf;IAED,OAAO;QACL,YAAY;KACb;AACH;;AC5CO,MAAM,kBAAkB,GAAG,aAAa,CAE7C,SAAS,CAAC;AAOE,SAAU,mBAAmB,CAAC,EAC1C,QAAQ,GAGT,EAAA;IACC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACpD,SAAS,CACV;AAED,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAGhC;AACA,QAAA;AACE,YAAA,kBAAkB,CAAC,uBAAuB;AAC1C,YAAA,OAAO,YAAoB,EAAE,OAAmB,KAAI;AAClD,gBAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO;gBAC/B,kBAAkB,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;YACnC,CAAC;AACF,SAAA;AACF,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;AAEnD,IAAA,QACE,KAAA,CAAA,aAAA,CAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,IACrE,QAAQ,CACmB;AAElC;;ACtCc,SAAU,cAAc,GAAA;AACpC,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;IAC7E;AAEA,IAAA,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE;AACrD;;ACAO,MAAM,eAAe,GAAG,aAAa,CAC1C,SAAS,CACV;AAOa,SAAU,gBAAgB,CAAC,EACvC,QAAQ,GAGT,EAAA;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC;AAEhE,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAGhC;AACA,QAAA;AACE,YAAA,kBAAkB,CAAC,6BAA6B;AAChD,YAAA,OAAO,YAAoB,EAAE,OAAmB,KAAI;AAClD,gBAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO;;AAGlC,gBAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC;AACjD,gBAAA,SAAS,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;YACtC,CAAC;AACF,SAAA;AACD,QAAA;AACE,YAAA,kBAAkB,CAAC,0BAA0B;AAC7C,YAAA,OAAO,YAAoB,EAAE,OAAmB,KAAI;;gBAElD,OAAO,EAAE,MAAM,EAAE;YACnB,CAAC;AACF,SAAA;AACF,KAAA,CAAC;AAEF,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IAExE,SAAS,CAAC,MAAK;QACb,IAAI,OAAO,EAAE;AACX,YAAA,GAAG,EAAE,wBAAwB,CAAC,kBAAkB,CAAC;QACnD;AACF,IAAA,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAErB,IAAA,QACE,KAAA,CAAA,aAAA,CAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IACnD,QAAQ,CACgB;AAE/B;;AC5Dc,SAAU,gBAAgB,CACtC,GAAW,EACX,YAAgB,EAChB,SAA8B,EAAA;AAE9B,IAAA,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;IACnD,IAAI,CAAC,eAAe,EAAE;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;IAC5E;AAEA,IAAA,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAChC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CACvD;AAED,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAEnC,IAAA,MAAM,gBAAgB,GAA4C,CAAC,KAAK,KAAI;AAC1E,QAAA,QAAQ,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,MAAM,QAAQ,GACZ,OAAO,KAAK,KAAK,UAAU,GAAI,KAAwB,CAAC,IAAI,CAAC,GAAG,KAAK;AAEvE,YAAA,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC1B,gBAAA,SAAS,CAAC,CAAC,UAAU,MAAM;AACzB,oBAAA,GAAG,UAAU;oBACb,CAAC,GAAG,GAAG,QAAQ;AAChB,iBAAA,CAAC,CAAC;AACL,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;;IAGD,SAAS,CAAC,MAAK;QACb,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;AAC3D,YAAA,SAAS,CAAC,CAAC,IAAI,MAAM;AACnB,gBAAA,GAAG,IAAI;gBACP,CAAC,GAAG,GAAG,YAAY;AACpB,aAAA,CAAC,CAAC;QACL;IACF,CAAC,EAAE,EAAE,CAAC;;IAGN,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC;QAChC,IAAI,YAAY,KAAK,SAAS;YAAE;AAEhC,QAAA,IAAI,aAAa,CAAC,OAAO,EAAE;;AAEzB,YAAA,aAAa,CAAC,OAAO,GAAG,KAAK;YAC7B;QACF;AAEA,QAAA,IAAI,YAAY,KAAK,KAAK,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,GAAG,EAAE,YAAY,CAAC;YAC1D,QAAQ,CAAC,YAAY,CAAC;AACtB,YAAA,SAAS,GAAG,YAAY,CAAC;QAC3B;IACF,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjB,IAAA,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAU;AAC3C;;AC9Dc,SAAU,YAAY,GAAA;IAClC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC;AAE7E,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC;;IAG5D,SAAS,CAAC,MAAK;QACb,IAAI,OAAO,EAAE;YACX;AACE,kBAAE,WAAW,CAAC,kBAAkB,CAAC,yBAAyB;AACzD,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAI;AACf,gBAAA,MAAM,EAAE,EAAE,EAAE,GAAmB,MAAM;gBACrC,cAAc,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;AAC9B,YAAA,CAAC,CAAC;QACN;AACF,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEb,OAAO;QACL,WAAW;KACZ;AACH;;ACzBc,SAAU,WAAW,GAAA;AACjC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B;AAEH,IAAA,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC;IAC/D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAC9C,SAAS,CACV;IACD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACpD,SAAS,CACV;IAED,SAAS,CAAC,MAAK;QACb,IAAI,OAAO,EAAE;AACX,YAAA,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;AAC5E,gBAAA,MAAM,EACJ,YAAY,EACZ,eAAe,GAChB,GAGG,QAAQ;gBAEZ,eAAe,CAAC,YAAY,CAAC;gBAC7B,kBAAkB,CAAC,eAAe,CAAC;AACrC,YAAA,CAAC,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEb,OAAO;QACL,YAAY;QACZ,eAAe;KAChB;AACH;;;;","x_google_ignoreList":[0,1,2,3,7]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pulse-editor/react-api",
3
- "version": "0.1.1-beta.59",
3
+ "version": "0.1.1-beta.61",
4
4
  "main": "dist/main.js",
5
5
  "files": [
6
6
  "dist"
@@ -16,32 +16,32 @@
16
16
  "clean": "rimraf dist"
17
17
  },
18
18
  "devDependencies": {
19
- "@babel/core": "^7.26.10",
20
- "@babel/preset-env": "^7.26.9",
21
- "@eslint/js": "^9.25.0",
22
- "@rollup/plugin-babel": "^6.0.4",
23
- "@rollup/plugin-node-resolve": "^16.0.1",
24
- "@rollup/plugin-typescript": "^12.1.2",
25
- "@types/react": "^19.1.2",
26
- "eslint": "^9.25.0",
19
+ "@babel/core": "^7.28.5",
20
+ "@babel/preset-env": "^7.28.5",
21
+ "@eslint/js": "^9.39.1",
22
+ "@rollup/plugin-babel": "^6.1.0",
23
+ "@rollup/plugin-node-resolve": "^16.0.3",
24
+ "@rollup/plugin-typescript": "^12.3.0",
25
+ "@types/react": "^19.2.7",
26
+ "eslint": "^9.39.1",
27
27
  "eslint-plugin-react": "^7.37.5",
28
- "globals": "^16.0.0",
28
+ "globals": "^16.5.0",
29
29
  "install": "^0.13.0",
30
- "npm": "^11.3.0",
31
- "react": "^19.1.0",
32
- "react-dom": "^19.1.0",
33
- "rimraf": "^3.0.2",
34
- "rollup": "^4.40.0",
30
+ "npm": "^11.6.4",
31
+ "react": "19.2.0",
32
+ "react-dom": "19.2.0",
33
+ "rimraf": "^6.1.2",
34
+ "rollup": "^4.53.3",
35
35
  "rollup-plugin-peer-deps-external": "^2.2.4",
36
- "typescript": "^5.8.3",
37
- "typescript-eslint": "^8.30.1"
36
+ "typescript": "^5.9.3",
37
+ "typescript-eslint": "^8.48.1"
38
38
  },
39
39
  "peerDependencies": {
40
- "@pulse-editor/shared-utils": "0.1.1-beta.59",
41
- "react": "^19.0.0",
42
- "react-dom": "^19.0.0"
40
+ "@pulse-editor/shared-utils": "0.1.1-beta.61",
41
+ "react": "19.2.0",
42
+ "react-dom": "19.2.0"
43
43
  },
44
44
  "dependencies": {
45
45
  "use-debounce": "^10.0.6"
46
46
  }
47
- }
47
+ }