@100mslive/hms-whiteboard 0.0.0-alpha.0 → 0.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/ErrorFallback.js +2 -0
- package/dist/ErrorFallback.js.map +1 -0
- package/dist/Whiteboard.d.ts +0 -1
- package/dist/Whiteboard.js +2 -0
- package/dist/Whiteboard.js.map +1 -0
- package/dist/_virtual/index.js +2 -0
- package/dist/_virtual/index.js.map +1 -0
- package/dist/grpc/sessionstore.client.js +2 -0
- package/dist/grpc/sessionstore.client.js.map +1 -0
- package/dist/grpc/sessionstore.js +2 -0
- package/dist/grpc/sessionstore.js.map +1 -0
- package/dist/hooks/StoreClient.js +2 -0
- package/dist/hooks/StoreClient.js.map +1 -0
- package/dist/hooks/default_store.js +2 -0
- package/dist/hooks/default_store.js.map +1 -0
- package/dist/hooks/useCollaboration.js +2 -0
- package/dist/hooks/useCollaboration.js.map +1 -0
- package/dist/hooks/useSessionStore.js +2 -0
- package/dist/hooks/useSessionStore.js.map +1 -0
- package/dist/hooks/useSetEditorPermissions.js +2 -0
- package/dist/hooks/useSetEditorPermissions.js.map +1 -0
- package/dist/index.cjs.js +6 -2266
- package/dist/index.cjs.js.map +1 -7
- package/dist/index.css +3 -2759
- package/dist/index.js +1 -2263
- package/dist/index.js.map +1 -7
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/ArraySet.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/ArraySet.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/Computed.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/Computed.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/EffectScheduler.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/EffectScheduler.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/HistoryBuffer.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/HistoryBuffer.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/capture.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/capture.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/constants.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/constants.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/helpers.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/helpers.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/transactions.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/transactions.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/types.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/types.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/warnings.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/core/warnings.mjs.js.map +1 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/react/useValue.mjs.js +2 -0
- package/dist/node_modules/@tldraw/state/dist-esm/lib/react/useValue.mjs.js.map +1 -0
- package/dist/node_modules/classnames/index.js +7 -0
- package/dist/node_modules/classnames/index.js.map +1 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/package.json +18 -13
- package/dist/index.cjs.css +0 -2767
- package/dist/index.cjs.css.map +0 -7
- package/dist/index.css.map +0 -7
- package/dist/meta.cjs.json +0 -1240
- package/dist/meta.esbuild.json +0 -1242
package/dist/index.cjs.js
CHANGED
|
@@ -1,2267 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
-
var __esm = (fn, res) => function __init() {
|
|
10
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
11
|
-
};
|
|
12
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
13
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
14
|
-
};
|
|
15
|
-
var __export = (target, all) => {
|
|
16
|
-
for (var name in all)
|
|
17
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
18
|
-
};
|
|
19
|
-
var __copyProps = (to, from, except, desc) => {
|
|
20
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
21
|
-
for (let key of __getOwnPropNames(from))
|
|
22
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
23
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
24
|
-
}
|
|
25
|
-
return to;
|
|
26
|
-
};
|
|
27
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
28
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
29
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
30
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
31
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
32
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
33
|
-
mod
|
|
34
|
-
));
|
|
35
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
36
|
-
var __publicField = (obj, key, value) => {
|
|
37
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
38
|
-
return value;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
// <define:process.env>
|
|
42
|
-
var define_process_env_default;
|
|
43
|
-
var init_define_process_env = __esm({
|
|
44
|
-
"<define:process.env>"() {
|
|
45
|
-
define_process_env_default = { NVM_INC: "/Users/ravitheja/.nvm/versions/node/v18.17.0/include/node", npm_package_devDependencies_typedoc_plugin_markdown: "^3.14.0", npm_package_devDependencies_lint_staged: "^12.0.3", NX_CLI_SET: "true", npm_package_devDependencies_react_dom: "^18.1.0", npm_package_scripts_size: "size-limit", npm_package_devDependencies_prettier: "^2.4.1", TERM_PROGRAM: "vscode", npm_package_size_limit_0_limit: "20 KB", npm_package_size_limit_0_path: "packages/hms-video-store/dist/index.cjs.js", npm_package_scripts_prebuilt: "cd packages/roomkit-react && yarn start", NODE: "/Users/ravitheja/.nvm/versions/node/v18.17.0/bin/node", npm_package_scripts_types_build: "tsc -p tsconfig.json", INIT_CWD: "/Users/ravitheja/Documents/web-sdks/packages", NVM_CD_FLAGS: "-q", npm_package_devDependencies_typescript: "^5.2.2", npm_config_version_git_tag: "true", TERM: "xterm-256color", SHELL: "/bin/zsh", npm_package_devDependencies_jest: "26.6.0", npm_package_size_limit_4_limit: "20 KB", npm_package_devDependencies_babel_plugin_istanbul: "^6.1.1", TMPDIR: "/var/folders/_k/lv0n3xdx0n9c5c6nzjvb629r0000gn/T/", npm_package_devDependencies_esbuild: "^0.18.13", npm_package_size_limit_6_limit: "150 KB", npm_package_scripts_store: "cd packages/hms-video-store && yarn start", npm_package_scripts_lint: "eslint -c .eslintrc --no-error-on-unmatched-pattern src --ext .js --ext .jsx --ext .ts --ext .tsx", npm_config_init_license: "MIT", TERM_PROGRAM_VERSION: "1.88.0", npm_package_devDependencies_concurrently: "^6.4.0", npm_package_scripts_ybys: "yarn && yarn build --no-private && yarn storybook", npm_package_scripts_dev: "node ../../scripts/dev", npm_package_scripts_prestart: "rm -rf dist && yarn types:build", ZDOTDIR: "/Users/ravitheja", ORIGINAL_XDG_CURRENT_DESKTOP: "undefined", MallocNanoZone: "0", npm_package_private: "true", npm_config_registry: "https://registry.yarnpkg.com", npm_package_sideEffects: "false", ZSH: "/Users/ravitheja/.oh-my-zsh", npm_package_devDependencies_size_limit: "^5.0.3", npm_package_devDependencies_eslint_plugin_react_refresh: "^0.4.4", npm_package_peerDependencies_react_dom: ">=17.0.2 <19.0.0", npm_package_readmeFilename: "README.md", NVM_DIR: "/Users/ravitheja/.nvm", USER: "ravitheja", npm_package_description: "This monorepo contains all the packages required to integrate 100ms on the web.", npm_package_devDependencies_react: "^18.1.0", npm_package_license: "MIT", npm_package_devDependencies_dotenv: "^14.2.0", npm_package_devDependencies__types_react: "^18.1.0", COMMAND_MODE: "unix2003", npm_package_lint_staged____js_ts_jsx_tsx_: "eslint", npm_package_scripts_build_storybook: "cd packages/roomkit-react && yarn build-storybook", npm_package_devDependencies_postcss_loader: "^6.2.1", npm_package_devDependencies_grpc_tools: "^1.12.4", npm_package_exports___import: "./dist/index.js", npm_package_devDependencies_babel_jest: "^26.6.0", npm_package_devDependencies__babel_core: "^7.8.0", NX_TASK_HASH: "a403272550ac4cbda3aa08c5ff6855d5497f668aba15434c196d105b629731e3", SSH_AUTH_SOCK: "/private/tmp/com.apple.launchd.txCsm7XFQk/Listeners", npm_package_devDependencies_esbuild_plugin_postcss2: "0.1.1", __CF_USER_TEXT_ENCODING: "0x1F5:0x0:0x0", npm_package_devDependencies_postcss: "^8.4.5", npm_package_devDependencies_eslint_plugin_simple_import_sort: "^8.0.0", npm_package_devDependencies_eslint: "^8.53.0", npm_package_devDependencies__types_jest: "^27.0.3", npm_execpath: "/usr/local/Cellar/yarn/1.22.19/libexec/bin/yarn.js", npm_package_size_limit_5_path: "packages/hms-virtual-background/dist/index.js", npm_package_devDependencies_tslib: "^2.2.0", npm_package_devDependencies__typescript_eslint_eslint_plugin: "^5.4.0", npm_package_devDependencies__protobuf_ts_plugin: "^2.9.1", PAGER: "less", npm_package_author_name: "100ms", LSCOLORS: "Gxfxcxdxbxegedabagacad", npm_package_devDependencies_eslint_plugin_prettier: "^4.0.0", npm_package_devDependencies__types_react_dom: "^18.1.0", npm_package_size_limit_1_path: "packages/hms-video-store/dist/index.js", npm_package_devDependencies__typescript_eslint_parser: "^5.4.0", NX_TASK_TARGET_PROJECT: "@100mslive/hms-whiteboard", PATH: "/var/folders/_k/lv0n3xdx0n9c5c6nzjvb629r0000gn/T/yarn--1712636877197-0.25387454825377076:/Users/ravitheja/Documents/web-sdks/packages/hms-whiteboard/node_modules/.bin:/Users/ravitheja/.config/yarn/link/node_modules/.bin:/Users/ravitheja/Documents/web-sdks/node_modules/.bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/libexec/lib/node_modules/npm/bin/node-gyp-bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/lib/node_modules/npm/bin/node-gyp-bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/bin/node_modules/npm/bin/node-gyp-bin:/var/folders/_k/lv0n3xdx0n9c5c6nzjvb629r0000gn/T/yarn--1712636876822-0.6590753932430242:/Users/ravitheja/Documents/web-sdks/packages/hms-whiteboard/node_modules/.bin:/Users/ravitheja/.config/yarn/link/node_modules/.bin:/Users/ravitheja/Documents/web-sdks/node_modules/.bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/libexec/lib/node_modules/npm/bin/node-gyp-bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/lib/node_modules/npm/bin/node-gyp-bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/bin/node_modules/npm/bin/node-gyp-bin:/var/folders/_k/lv0n3xdx0n9c5c6nzjvb629r0000gn/T/yarn--1712636874526-0.9704024289150126:/Users/ravitheja/Documents/web-sdks/node_modules/.bin:/Users/ravitheja/.config/yarn/link/node_modules/.bin:/Users/ravitheja/Documents/web-sdks/node_modules/.bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/libexec/lib/node_modules/npm/bin/node-gyp-bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/lib/node_modules/npm/bin/node-gyp-bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/bin/node_modules/npm/bin/node-gyp-bin:/Users/ravitheja/.nvm/versions/node/v18.17.0/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Applications/Wireshark.app/Contents/MacOS:/Users/ravitheja/.nvm/versions/node/v18.17.0/bin:/Users/ravitheja/.cargo/bin", npm_config_argv: '{"remain":[],"cooked":["run","build"],"original":["build","--no-private"]}', npm_package_scripts_postinstall: "husky install && lerna bootstrap", npm_package_scripts_lint_fix: "yarn lint --fix", npm_package_size_limit_7_path: "packages/react-icons/dist/index.js", npm_package_size_limit_5_limit: "20 KB", npm_package_devDependencies_typedoc: "^0.24.8", npm_package_devDependencies_nx: "^14.5.1", npm_config_workspaces_experimental: "true", _: "/var/folders/_k/lv0n3xdx0n9c5c6nzjvb629r0000gn/T/yarn--1712636877197-0.25387454825377076/node", npm_package_size_limit_4_path: "packages/hms-virtual-background/dist/index.cjs.js", NX_WORKSPACE_ROOT: "/Users/ravitheja/Documents/web-sdks", npm_package_dependencies__tldraw_tldraw: "2.0.0-alpha.19", USER_ZDOTDIR: "/Users/ravitheja", __CFBundleIdentifier: "com.microsoft.VSCode", npm_package_size_limit_7_limit: "100 KB", npm_package_scripts_lerna_publish: "lerna publish from-package --dist-tag $PUBLISH_FLAG --yes --no-verify-access", npm_package_devDependencies_ts_jest: "26.5.6", PWD: "/Users/ravitheja/Documents/web-sdks/packages/hms-whiteboard", npm_package_devDependencies_cypress: "^9.5.2", npm_package_scripts_build_proto: "protoc --ts_out ./src/grpc -I=./proto proto/*proto", npm_package_exports___index_css: "./dist/index.css", npm_package_devDependencies_eslint_plugin_react_hooks: "^4.6.0", npm_lifecycle_event: "build:only", npm_package_scripts_build_only: "rm -rf dist && node ../../scripts/build-webapp", LANG: "en_US.UTF-8", npm_package_name: "@100mslive/hms-whiteboard", npm_package_types: "dist/index.d.ts", npm_package_size_limit_2_limit: "400 KB", npm_package_resolutions_loader_utils: "^2.0.4", npm_package_scripts_controller: "cd packages/hls-controller && yarn start", npm_package_scripts_build: "yarn build:only && yarn types:build", npm_package_scripts_start: 'concurrently "yarn dev" "yarn types"', npm_config_version_commit_hooks: "true", VSCODE_GIT_ASKPASS_EXTRA_ARGS: "", XPC_FLAGS: "0x0", npm_package_devDependencies_eslint_config_react_app: "^7.0.0", npm_config_bin_links: "true", npm_package_engines_node: ">=16", FORCE_COLOR: "true", npm_config_wrap_output: "", npm_package_scripts_cypress_open: "cypress open", npm_package_main: "dist/index.js", XPC_SERVICE_NAME: "0", npm_package_version: "0.0.0-alpha.0", VSCODE_INJECTION: "1", SHLVL: "5", HOME: "/Users/ravitheja", npm_package_devDependencies__size_limit_file: "^5.0.3", npm_package_type: "module", VSCODE_GIT_ASKPASS_MAIN: "/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass-main.js", npm_package_scripts_storybook: "cd packages/roomkit-react && yarn storybook", npm_package_scripts_test: "yarn build --no-private && lerna run test", npm_package_dependencies__protobuf_ts_grpcweb_transport: "^2.9.1", npm_config_save_prefix: "^", npm_config_strict_ssl: "true", npm_package_devDependencies_husky: "^6.0.0", npm_package_devDependencies__commitlint_cli: "^15.0.0", npm_config_version_git_message: "v%s", npm_package_size_limit_3_path: "packages/roomkit-react/dist/index.js", npm_package_devDependencies_ts_node: "^10.4.0", npm_package_dependencies__protobuf_ts_runtime_rpc: "^2.9.1", npm_package_dependencies__protobuf_ts_runtime: "^2.9.1", npm_package_exports___default: "./dist/index.js", LESS: "-R", LOGNAME: "ravitheja", YARN_WRAP_OUTPUT: "false", npm_package_scripts_format: "prettier -w src/**", PREFIX: "/usr/local", npm_lifecycle_script: "rm -rf dist && node ../../scripts/build-webapp", npm_package_exports___require: "./dist/index.cjs.js", VSCODE_GIT_IPC_HANDLE: "/var/folders/_k/lv0n3xdx0n9c5c6nzjvb629r0000gn/T/vscode-git-10419d9aa6.sock", npm_package_size_limit_6_path: "packages/react-icons/dist/index.cjs.js", npm_package_peerDependencies_react: ">=17.0.2 <19.0.0", NVM_BIN: "/Users/ravitheja/.nvm/versions/node/v18.17.0/bin", LERNA_PACKAGE_NAME: "@100mslive/hms-whiteboard", npm_config_version_git_sign: "", npm_config_ignore_scripts: "", npm_config_user_agent: "yarn/1.22.19 npm/? node/v18.17.0 darwin x64", VSCODE_GIT_ASKPASS_NODE: "/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin)", GIT_ASKPASS: "/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass.sh", npm_package_size_limit_2_path: "packages/roomkit-react/dist/index.cjs.js", npm_package_scripts_reactsdk: "cd packages/react-sdk && yarn start", npm_package_devDependencies__types_node: "^20.12.5", npm_package_scripts_types: "tsc -w", npm_package_size_limit_1_limit: "20 KB", npm_package_devDependencies_lerna: "^5.6.2", npm_package_files_0: "dist", npm_package_size_limit_3_limit: "20 KB", npm_config_init_version: "1.0.0", npm_config_ignore_optional: "", npm_package_devDependencies__commitlint_config_conventional: "^15.0.0", npm_package_workspaces_0: "packages/*", COLORTERM: "truecolor", npm_node_execpath: "/Users/ravitheja/.nvm/versions/node/v18.17.0/bin/node", npm_package_workspaces_1: "examples/*", npm_config_version_tag_prefix: "v" };
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
// ../../node_modules/classnames/index.js
|
|
50
|
-
var require_classnames = __commonJS({
|
|
51
|
-
"../../node_modules/classnames/index.js"(exports, module2) {
|
|
52
|
-
init_define_process_env();
|
|
53
|
-
(function() {
|
|
54
|
-
"use strict";
|
|
55
|
-
var hasOwn = {}.hasOwnProperty;
|
|
56
|
-
function classNames2() {
|
|
57
|
-
var classes = "";
|
|
58
|
-
for (var i = 0; i < arguments.length; i++) {
|
|
59
|
-
var arg = arguments[i];
|
|
60
|
-
if (arg) {
|
|
61
|
-
classes = appendClass(classes, parseValue(arg));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return classes;
|
|
65
|
-
}
|
|
66
|
-
function parseValue(arg) {
|
|
67
|
-
if (typeof arg === "string" || typeof arg === "number") {
|
|
68
|
-
return arg;
|
|
69
|
-
}
|
|
70
|
-
if (typeof arg !== "object") {
|
|
71
|
-
return "";
|
|
72
|
-
}
|
|
73
|
-
if (Array.isArray(arg)) {
|
|
74
|
-
return classNames2.apply(null, arg);
|
|
75
|
-
}
|
|
76
|
-
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
|
|
77
|
-
return arg.toString();
|
|
78
|
-
}
|
|
79
|
-
var classes = "";
|
|
80
|
-
for (var key in arg) {
|
|
81
|
-
if (hasOwn.call(arg, key) && arg[key]) {
|
|
82
|
-
classes = appendClass(classes, key);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return classes;
|
|
86
|
-
}
|
|
87
|
-
function appendClass(value, newClass) {
|
|
88
|
-
if (!newClass) {
|
|
89
|
-
return value;
|
|
90
|
-
}
|
|
91
|
-
if (value) {
|
|
92
|
-
return value + " " + newClass;
|
|
93
|
-
}
|
|
94
|
-
return value + newClass;
|
|
95
|
-
}
|
|
96
|
-
if (typeof module2 !== "undefined" && module2.exports) {
|
|
97
|
-
classNames2.default = classNames2;
|
|
98
|
-
module2.exports = classNames2;
|
|
99
|
-
} else if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
|
|
100
|
-
define("classnames", [], function() {
|
|
101
|
-
return classNames2;
|
|
102
|
-
});
|
|
103
|
-
} else {
|
|
104
|
-
window.classNames = classNames2;
|
|
105
|
-
}
|
|
106
|
-
})();
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
// src/index.ts
|
|
111
|
-
var src_exports = {};
|
|
112
|
-
__export(src_exports, {
|
|
113
|
-
Whiteboard: () => Whiteboard
|
|
114
|
-
});
|
|
115
|
-
module.exports = __toCommonJS(src_exports);
|
|
116
|
-
init_define_process_env();
|
|
117
|
-
|
|
118
|
-
// src/Whiteboard.tsx
|
|
119
|
-
init_define_process_env();
|
|
120
|
-
var import_react12 = __toESM(require("react"), 1);
|
|
121
|
-
var import_tldraw3 = require("@tldraw/tldraw");
|
|
122
|
-
|
|
123
|
-
// src/ErrorFallback.tsx
|
|
124
|
-
init_define_process_env();
|
|
125
|
-
var import_react8 = __toESM(require("react"), 1);
|
|
126
|
-
|
|
127
|
-
// ../../node_modules/@tldraw/state/dist-esm/index.mjs
|
|
128
|
-
init_define_process_env();
|
|
129
|
-
|
|
130
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/index.mjs
|
|
131
|
-
init_define_process_env();
|
|
132
|
-
|
|
133
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/Atom.mjs
|
|
134
|
-
init_define_process_env();
|
|
135
|
-
|
|
136
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/ArraySet.mjs
|
|
137
|
-
init_define_process_env();
|
|
138
|
-
var ARRAY_SIZE_THRESHOLD = 8;
|
|
139
|
-
var ArraySet = class {
|
|
140
|
-
constructor() {
|
|
141
|
-
__publicField(this, "arraySize", 0);
|
|
142
|
-
__publicField(this, "array", Array(ARRAY_SIZE_THRESHOLD));
|
|
143
|
-
__publicField(this, "set", null);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Get whether this ArraySet has any elements.
|
|
147
|
-
*
|
|
148
|
-
* @returns True if this ArraySet has any elements, false otherwise.
|
|
149
|
-
*/
|
|
150
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
151
|
-
get isEmpty() {
|
|
152
|
-
if (this.array) {
|
|
153
|
-
return this.arraySize === 0;
|
|
154
|
-
}
|
|
155
|
-
if (this.set) {
|
|
156
|
-
return this.set.size === 0;
|
|
157
|
-
}
|
|
158
|
-
throw new Error("no set or array");
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Add an item to the ArraySet if it is not already present.
|
|
162
|
-
*
|
|
163
|
-
* @param elem - The element to add.
|
|
164
|
-
*/
|
|
165
|
-
add(elem) {
|
|
166
|
-
if (this.array) {
|
|
167
|
-
const idx = this.array.indexOf(elem);
|
|
168
|
-
if (idx !== -1) {
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
if (this.arraySize < ARRAY_SIZE_THRESHOLD) {
|
|
172
|
-
this.array[this.arraySize] = elem;
|
|
173
|
-
this.arraySize++;
|
|
174
|
-
return true;
|
|
175
|
-
} else {
|
|
176
|
-
this.set = new Set(this.array);
|
|
177
|
-
this.array = null;
|
|
178
|
-
this.set.add(elem);
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (this.set) {
|
|
183
|
-
if (this.set.has(elem)) {
|
|
184
|
-
return false;
|
|
185
|
-
}
|
|
186
|
-
this.set.add(elem);
|
|
187
|
-
return true;
|
|
188
|
-
}
|
|
189
|
-
throw new Error("no set or array");
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Remove an item from the ArraySet if it is present.
|
|
193
|
-
*
|
|
194
|
-
* @param elem - The element to remove
|
|
195
|
-
*/
|
|
196
|
-
remove(elem) {
|
|
197
|
-
if (this.array) {
|
|
198
|
-
const idx = this.array.indexOf(elem);
|
|
199
|
-
if (idx === -1) {
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
this.array[idx] = void 0;
|
|
203
|
-
this.arraySize--;
|
|
204
|
-
if (idx !== this.arraySize) {
|
|
205
|
-
this.array[idx] = this.array[this.arraySize];
|
|
206
|
-
this.array[this.arraySize] = void 0;
|
|
207
|
-
}
|
|
208
|
-
return true;
|
|
209
|
-
}
|
|
210
|
-
if (this.set) {
|
|
211
|
-
if (!this.set.has(elem)) {
|
|
212
|
-
return false;
|
|
213
|
-
}
|
|
214
|
-
this.set.delete(elem);
|
|
215
|
-
return true;
|
|
216
|
-
}
|
|
217
|
-
throw new Error("no set or array");
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Run a callback for each element in the ArraySet.
|
|
221
|
-
*
|
|
222
|
-
* @param visitor - The callback to run for each element.
|
|
223
|
-
*/
|
|
224
|
-
visit(visitor) {
|
|
225
|
-
if (this.array) {
|
|
226
|
-
for (let i = 0; i < this.arraySize; i++) {
|
|
227
|
-
const elem = this.array[i];
|
|
228
|
-
if (typeof elem !== "undefined") {
|
|
229
|
-
visitor(elem);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
if (this.set) {
|
|
235
|
-
this.set.forEach(visitor);
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
throw new Error("no set or array");
|
|
239
|
-
}
|
|
240
|
-
};
|
|
241
|
-
|
|
242
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/HistoryBuffer.mjs
|
|
243
|
-
init_define_process_env();
|
|
244
|
-
|
|
245
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/types.mjs
|
|
246
|
-
init_define_process_env();
|
|
247
|
-
var RESET_VALUE = Symbol("RESET_VALUE");
|
|
248
|
-
|
|
249
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/HistoryBuffer.mjs
|
|
250
|
-
var HistoryBuffer = class {
|
|
251
|
-
constructor(capacity) {
|
|
252
|
-
__publicField(this, "index", 0);
|
|
253
|
-
// use a wrap around buffer to store the last N values
|
|
254
|
-
__publicField(this, "buffer");
|
|
255
|
-
this.capacity = capacity;
|
|
256
|
-
this.buffer = new Array(capacity);
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Add a diff to the history buffer.
|
|
260
|
-
*
|
|
261
|
-
* @param lastComputedEpoch - The epoch when the diff was computed.
|
|
262
|
-
* @param currentEpoch - The current epoch.
|
|
263
|
-
* @param diff - The diff to add, or else a reset value.
|
|
264
|
-
*/
|
|
265
|
-
pushEntry(lastComputedEpoch, currentEpoch, diff) {
|
|
266
|
-
if (diff === void 0) {
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
if (diff === RESET_VALUE) {
|
|
270
|
-
this.clear();
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
this.buffer[this.index] = [lastComputedEpoch, currentEpoch, diff];
|
|
274
|
-
this.index = (this.index + 1) % this.capacity;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Clear the history buffer.
|
|
278
|
-
*/
|
|
279
|
-
clear() {
|
|
280
|
-
this.index = 0;
|
|
281
|
-
this.buffer.fill(void 0);
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Get the diffs since the given epoch.
|
|
285
|
-
*
|
|
286
|
-
* @param epoch - The epoch to get diffs since.
|
|
287
|
-
* @returns An array of diffs or a flag to reset the history buffer.
|
|
288
|
-
*/
|
|
289
|
-
getChangesSince(sinceEpoch) {
|
|
290
|
-
const { index, capacity, buffer } = this;
|
|
291
|
-
for (let i = 0; i < capacity; i++) {
|
|
292
|
-
const offset = (index - 1 + capacity - i) % capacity;
|
|
293
|
-
const elem = buffer[offset];
|
|
294
|
-
if (!elem) {
|
|
295
|
-
return RESET_VALUE;
|
|
296
|
-
}
|
|
297
|
-
const [fromEpoch, toEpoch] = elem;
|
|
298
|
-
if (i === 0 && sinceEpoch >= toEpoch) {
|
|
299
|
-
return [];
|
|
300
|
-
}
|
|
301
|
-
if (fromEpoch <= sinceEpoch && sinceEpoch < toEpoch) {
|
|
302
|
-
const len = i + 1;
|
|
303
|
-
const result = new Array(len);
|
|
304
|
-
for (let j = 0; j < len; j++) {
|
|
305
|
-
result[j] = buffer[(offset + j) % capacity][2];
|
|
306
|
-
}
|
|
307
|
-
return result;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
return RESET_VALUE;
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/capture.mjs
|
|
315
|
-
init_define_process_env();
|
|
316
|
-
|
|
317
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/helpers.mjs
|
|
318
|
-
init_define_process_env();
|
|
319
|
-
function isChild(x) {
|
|
320
|
-
return x && typeof x === "object" && "parents" in x;
|
|
321
|
-
}
|
|
322
|
-
function haveParentsChanged(child) {
|
|
323
|
-
for (let i = 0, n = child.parents.length; i < n; i++) {
|
|
324
|
-
child.parents[i].__unsafe__getWithoutCapture();
|
|
325
|
-
if (child.parents[i].lastChangedEpoch !== child.parentEpochs[i]) {
|
|
326
|
-
return true;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
return false;
|
|
330
|
-
}
|
|
331
|
-
var detach = (parent, child) => {
|
|
332
|
-
if (!parent.children.remove(child)) {
|
|
333
|
-
return;
|
|
334
|
-
}
|
|
335
|
-
if (parent.children.isEmpty && isChild(parent)) {
|
|
336
|
-
for (let i = 0, n = parent.parents.length; i < n; i++) {
|
|
337
|
-
detach(parent.parents[i], parent);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
};
|
|
341
|
-
var attach = (parent, child) => {
|
|
342
|
-
if (!parent.children.add(child)) {
|
|
343
|
-
return;
|
|
344
|
-
}
|
|
345
|
-
if (isChild(parent)) {
|
|
346
|
-
for (let i = 0, n = parent.parents.length; i < n; i++) {
|
|
347
|
-
attach(parent.parents[i], parent);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
};
|
|
351
|
-
function equals(a, b) {
|
|
352
|
-
const shallowEquals = a === b || Object.is(a, b) || Boolean(a && b && typeof a.equals === "function" && a.equals(b));
|
|
353
|
-
return shallowEquals;
|
|
354
|
-
}
|
|
355
|
-
var EMPTY_ARRAY = Object.freeze([]);
|
|
356
|
-
|
|
357
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/capture.mjs
|
|
358
|
-
var tldrawStateGlobalKey = Symbol.for("__@tldraw/state__");
|
|
359
|
-
var tldrawStateGlobal = globalThis;
|
|
360
|
-
if (tldrawStateGlobal[tldrawStateGlobalKey]) {
|
|
361
|
-
console.error(
|
|
362
|
-
'Multiple versions of @tldraw/state detected. This will cause unexpected behavior. Please add "resolutions" (yarn/pnpm) or "overrides" (npm) in your package.json to ensure only one version of @tldraw/state is loaded.'
|
|
363
|
-
);
|
|
364
|
-
} else {
|
|
365
|
-
tldrawStateGlobal[tldrawStateGlobalKey] = true;
|
|
366
|
-
}
|
|
367
|
-
var CaptureStackFrame = class {
|
|
368
|
-
constructor(below, child) {
|
|
369
|
-
__publicField(this, "offset", 0);
|
|
370
|
-
__publicField(this, "numNewParents", 0);
|
|
371
|
-
__publicField(this, "maybeRemoved");
|
|
372
|
-
this.below = below;
|
|
373
|
-
this.child = child;
|
|
374
|
-
}
|
|
375
|
-
};
|
|
376
|
-
var stack = null;
|
|
377
|
-
function startCapturingParents(child) {
|
|
378
|
-
stack = new CaptureStackFrame(stack, child);
|
|
379
|
-
}
|
|
380
|
-
function stopCapturingParents() {
|
|
381
|
-
const frame = stack;
|
|
382
|
-
stack = frame.below;
|
|
383
|
-
const didParentsChange = frame.numNewParents > 0 || frame.offset !== frame.child.parents.length;
|
|
384
|
-
if (!didParentsChange) {
|
|
385
|
-
return;
|
|
386
|
-
}
|
|
387
|
-
for (let i = frame.offset; i < frame.child.parents.length; i++) {
|
|
388
|
-
const p = frame.child.parents[i];
|
|
389
|
-
const parentWasRemoved = frame.child.parents.indexOf(p) >= frame.offset;
|
|
390
|
-
if (parentWasRemoved) {
|
|
391
|
-
detach(p, frame.child);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
frame.child.parents.length = frame.offset;
|
|
395
|
-
frame.child.parentEpochs.length = frame.offset;
|
|
396
|
-
if (stack?.maybeRemoved) {
|
|
397
|
-
for (let i = 0; i < stack.maybeRemoved.length; i++) {
|
|
398
|
-
const maybeRemovedParent = stack.maybeRemoved[i];
|
|
399
|
-
if (frame.child.parents.indexOf(maybeRemovedParent) === -1) {
|
|
400
|
-
detach(maybeRemovedParent, frame.child);
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
function maybeCaptureParent(p) {
|
|
406
|
-
if (stack) {
|
|
407
|
-
const idx = stack.child.parents.indexOf(p);
|
|
408
|
-
if (idx < 0) {
|
|
409
|
-
stack.numNewParents++;
|
|
410
|
-
if (stack.child.isActivelyListening) {
|
|
411
|
-
attach(p, stack.child);
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
if (idx < 0 || idx >= stack.offset) {
|
|
415
|
-
if (idx !== stack.offset && idx > 0) {
|
|
416
|
-
const maybeRemovedParent = stack.child.parents[stack.offset];
|
|
417
|
-
if (!stack.maybeRemoved) {
|
|
418
|
-
stack.maybeRemoved = [maybeRemovedParent];
|
|
419
|
-
} else if (stack.maybeRemoved.indexOf(maybeRemovedParent) === -1) {
|
|
420
|
-
stack.maybeRemoved.push(maybeRemovedParent);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
stack.child.parents[stack.offset] = p;
|
|
424
|
-
stack.child.parentEpochs[stack.offset] = p.lastChangedEpoch;
|
|
425
|
-
stack.offset++;
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/transactions.mjs
|
|
431
|
-
init_define_process_env();
|
|
432
|
-
|
|
433
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/constants.mjs
|
|
434
|
-
init_define_process_env();
|
|
435
|
-
var GLOBAL_START_EPOCH = -1;
|
|
436
|
-
|
|
437
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/transactions.mjs
|
|
438
|
-
var globalEpoch = GLOBAL_START_EPOCH + 1;
|
|
439
|
-
|
|
440
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/warnings.mjs
|
|
441
|
-
init_define_process_env();
|
|
442
|
-
var didWarnDotValue = false;
|
|
443
|
-
function logDotValueWarning() {
|
|
444
|
-
if (didWarnDotValue)
|
|
445
|
-
return;
|
|
446
|
-
didWarnDotValue = true;
|
|
447
|
-
console.warn(
|
|
448
|
-
"Using Signal.value is deprecated and will be removed in the near future. Please use Signal.get() instead."
|
|
449
|
-
);
|
|
450
|
-
}
|
|
451
|
-
var didWarnComputedGetter = false;
|
|
452
|
-
function logComputedGetterWarning() {
|
|
453
|
-
if (didWarnComputedGetter)
|
|
454
|
-
return;
|
|
455
|
-
didWarnComputedGetter = true;
|
|
456
|
-
console.warn(
|
|
457
|
-
`Using \`@computed\` as a decorator for getters is deprecated and will be removed in the near future. Please refactor to use \`@computed\` as a decorator for methods.
|
|
458
|
-
|
|
459
|
-
// Before
|
|
460
|
-
@computed
|
|
461
|
-
get foo() {
|
|
462
|
-
return 'foo'
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
// After
|
|
466
|
-
@computed
|
|
467
|
-
getFoo() {
|
|
468
|
-
return 'foo'
|
|
469
|
-
}
|
|
470
|
-
`
|
|
471
|
-
);
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/Computed.mjs
|
|
475
|
-
init_define_process_env();
|
|
476
|
-
var UNINITIALIZED = Symbol("UNINITIALIZED");
|
|
477
|
-
var WithDiff = class {
|
|
478
|
-
constructor(value, diff) {
|
|
479
|
-
this.value = value;
|
|
480
|
-
this.diff = diff;
|
|
481
|
-
}
|
|
482
|
-
};
|
|
483
|
-
var _Computed = class {
|
|
484
|
-
constructor(name, derive, options) {
|
|
485
|
-
__publicField(this, "lastChangedEpoch", GLOBAL_START_EPOCH);
|
|
486
|
-
__publicField(this, "lastTraversedEpoch", GLOBAL_START_EPOCH);
|
|
487
|
-
/**
|
|
488
|
-
* The epoch when the reactor was last checked.
|
|
489
|
-
*/
|
|
490
|
-
__publicField(this, "lastCheckedEpoch", GLOBAL_START_EPOCH);
|
|
491
|
-
__publicField(this, "parents", []);
|
|
492
|
-
__publicField(this, "parentEpochs", []);
|
|
493
|
-
__publicField(this, "children", new ArraySet());
|
|
494
|
-
__publicField(this, "historyBuffer");
|
|
495
|
-
// The last-computed value of this signal.
|
|
496
|
-
__publicField(this, "state", UNINITIALIZED);
|
|
497
|
-
__publicField(this, "computeDiff");
|
|
498
|
-
__publicField(this, "isEqual");
|
|
499
|
-
this.name = name;
|
|
500
|
-
this.derive = derive;
|
|
501
|
-
if (options?.historyLength) {
|
|
502
|
-
this.historyBuffer = new HistoryBuffer(options.historyLength);
|
|
503
|
-
}
|
|
504
|
-
this.computeDiff = options?.computeDiff;
|
|
505
|
-
this.isEqual = options?.isEqual ?? equals;
|
|
506
|
-
}
|
|
507
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
508
|
-
get isActivelyListening() {
|
|
509
|
-
return !this.children.isEmpty;
|
|
510
|
-
}
|
|
511
|
-
__unsafe__getWithoutCapture() {
|
|
512
|
-
const isNew = this.lastChangedEpoch === GLOBAL_START_EPOCH;
|
|
513
|
-
if (!isNew && (this.lastCheckedEpoch === globalEpoch || !haveParentsChanged(this))) {
|
|
514
|
-
this.lastCheckedEpoch = globalEpoch;
|
|
515
|
-
return this.state;
|
|
516
|
-
}
|
|
517
|
-
try {
|
|
518
|
-
startCapturingParents(this);
|
|
519
|
-
const result = this.derive(this.state, this.lastCheckedEpoch);
|
|
520
|
-
const newState = result instanceof WithDiff ? result.value : result;
|
|
521
|
-
if (this.state === UNINITIALIZED || !this.isEqual(newState, this.state)) {
|
|
522
|
-
if (this.historyBuffer && !isNew) {
|
|
523
|
-
const diff = result instanceof WithDiff ? result.diff : void 0;
|
|
524
|
-
this.historyBuffer.pushEntry(
|
|
525
|
-
this.lastChangedEpoch,
|
|
526
|
-
globalEpoch,
|
|
527
|
-
diff ?? this.computeDiff?.(this.state, newState, this.lastCheckedEpoch, globalEpoch) ?? RESET_VALUE
|
|
528
|
-
);
|
|
529
|
-
}
|
|
530
|
-
this.lastChangedEpoch = globalEpoch;
|
|
531
|
-
this.state = newState;
|
|
532
|
-
}
|
|
533
|
-
this.lastCheckedEpoch = globalEpoch;
|
|
534
|
-
return this.state;
|
|
535
|
-
} finally {
|
|
536
|
-
stopCapturingParents();
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
get() {
|
|
540
|
-
const value = this.__unsafe__getWithoutCapture();
|
|
541
|
-
maybeCaptureParent(this);
|
|
542
|
-
return value;
|
|
543
|
-
}
|
|
544
|
-
/**
|
|
545
|
-
* @deprecated Use [[get]] instead.
|
|
546
|
-
*/
|
|
547
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
548
|
-
get value() {
|
|
549
|
-
logDotValueWarning();
|
|
550
|
-
return this.get();
|
|
551
|
-
}
|
|
552
|
-
getDiffSince(epoch) {
|
|
553
|
-
this.get();
|
|
554
|
-
if (epoch >= this.lastChangedEpoch) {
|
|
555
|
-
return EMPTY_ARRAY;
|
|
556
|
-
}
|
|
557
|
-
return this.historyBuffer?.getChangesSince(epoch) ?? RESET_VALUE;
|
|
558
|
-
}
|
|
559
|
-
};
|
|
560
|
-
function computedMethodAnnotation(options = {}, _target, key, descriptor) {
|
|
561
|
-
const originalMethod = descriptor.value;
|
|
562
|
-
const derivationKey = Symbol.for("__@tldraw/state__computed__" + key);
|
|
563
|
-
descriptor.value = function() {
|
|
564
|
-
let d = this[derivationKey];
|
|
565
|
-
if (!d) {
|
|
566
|
-
d = new _Computed(key, originalMethod.bind(this), options);
|
|
567
|
-
Object.defineProperty(this, derivationKey, {
|
|
568
|
-
enumerable: false,
|
|
569
|
-
configurable: false,
|
|
570
|
-
writable: false,
|
|
571
|
-
value: d
|
|
572
|
-
});
|
|
573
|
-
}
|
|
574
|
-
return d.get();
|
|
575
|
-
};
|
|
576
|
-
descriptor.value[isComputedMethodKey] = true;
|
|
577
|
-
return descriptor;
|
|
578
|
-
}
|
|
579
|
-
function computedAnnotation(options = {}, _target, key, descriptor) {
|
|
580
|
-
if (descriptor.get) {
|
|
581
|
-
logComputedGetterWarning();
|
|
582
|
-
return computedGetterAnnotation(options, _target, key, descriptor);
|
|
583
|
-
} else {
|
|
584
|
-
return computedMethodAnnotation(options, _target, key, descriptor);
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
|
-
function computedGetterAnnotation(options = {}, _target, key, descriptor) {
|
|
588
|
-
const originalMethod = descriptor.get;
|
|
589
|
-
const derivationKey = Symbol.for("__@tldraw/state__computed__" + key);
|
|
590
|
-
descriptor.get = function() {
|
|
591
|
-
let d = this[derivationKey];
|
|
592
|
-
if (!d) {
|
|
593
|
-
d = new _Computed(key, originalMethod.bind(this), options);
|
|
594
|
-
Object.defineProperty(this, derivationKey, {
|
|
595
|
-
enumerable: false,
|
|
596
|
-
configurable: false,
|
|
597
|
-
writable: false,
|
|
598
|
-
value: d
|
|
599
|
-
});
|
|
600
|
-
}
|
|
601
|
-
return d.get();
|
|
602
|
-
};
|
|
603
|
-
return descriptor;
|
|
604
|
-
}
|
|
605
|
-
var isComputedMethodKey = "@@__isComputedMethod__@@";
|
|
606
|
-
function computed() {
|
|
607
|
-
if (arguments.length === 1) {
|
|
608
|
-
const options = arguments[0];
|
|
609
|
-
return (target, key, descriptor) => computedAnnotation(options, target, key, descriptor);
|
|
610
|
-
} else if (typeof arguments[0] === "string") {
|
|
611
|
-
return new _Computed(arguments[0], arguments[1], arguments[2]);
|
|
612
|
-
} else {
|
|
613
|
-
return computedAnnotation(void 0, arguments[0], arguments[1], arguments[2]);
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/EffectScheduler.mjs
|
|
618
|
-
init_define_process_env();
|
|
619
|
-
var EffectScheduler = class {
|
|
620
|
-
constructor(name, runEffect, options) {
|
|
621
|
-
__publicField(this, "_isActivelyListening", false);
|
|
622
|
-
/** @internal */
|
|
623
|
-
__publicField(this, "lastTraversedEpoch", GLOBAL_START_EPOCH);
|
|
624
|
-
__publicField(this, "lastReactedEpoch", GLOBAL_START_EPOCH);
|
|
625
|
-
__publicField(this, "_scheduleCount", 0);
|
|
626
|
-
/** @internal */
|
|
627
|
-
__publicField(this, "parentEpochs", []);
|
|
628
|
-
/** @internal */
|
|
629
|
-
__publicField(this, "parents", []);
|
|
630
|
-
__publicField(this, "_scheduleEffect");
|
|
631
|
-
__publicField(this, "maybeExecute", () => {
|
|
632
|
-
if (!this._isActivelyListening)
|
|
633
|
-
return;
|
|
634
|
-
this.execute();
|
|
635
|
-
});
|
|
636
|
-
this.name = name;
|
|
637
|
-
this.runEffect = runEffect;
|
|
638
|
-
this._scheduleEffect = options?.scheduleEffect;
|
|
639
|
-
}
|
|
640
|
-
/**
|
|
641
|
-
* Whether this scheduler is attached and actively listening to its parents.
|
|
642
|
-
* @public
|
|
643
|
-
*/
|
|
644
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
645
|
-
get isActivelyListening() {
|
|
646
|
-
return this._isActivelyListening;
|
|
647
|
-
}
|
|
648
|
-
/**
|
|
649
|
-
* The number of times this effect has been scheduled.
|
|
650
|
-
* @public
|
|
651
|
-
*/
|
|
652
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
653
|
-
get scheduleCount() {
|
|
654
|
-
return this._scheduleCount;
|
|
655
|
-
}
|
|
656
|
-
/** @internal */
|
|
657
|
-
maybeScheduleEffect() {
|
|
658
|
-
if (!this._isActivelyListening)
|
|
659
|
-
return;
|
|
660
|
-
if (this.lastReactedEpoch === globalEpoch)
|
|
661
|
-
return;
|
|
662
|
-
if (this.parents.length && !haveParentsChanged(this)) {
|
|
663
|
-
this.lastReactedEpoch = globalEpoch;
|
|
664
|
-
return;
|
|
665
|
-
}
|
|
666
|
-
this.scheduleEffect();
|
|
667
|
-
}
|
|
668
|
-
/** @internal */
|
|
669
|
-
scheduleEffect() {
|
|
670
|
-
this._scheduleCount++;
|
|
671
|
-
if (this._scheduleEffect) {
|
|
672
|
-
this._scheduleEffect(this.maybeExecute);
|
|
673
|
-
} else {
|
|
674
|
-
this.execute();
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
/**
|
|
678
|
-
* Makes this scheduler become 'actively listening' to its parents.
|
|
679
|
-
* If it has been executed before it will immediately become eligible to receive 'maybeScheduleEffect' calls.
|
|
680
|
-
* If it has not executed before it will need to be manually executed once to become eligible for scheduling, i.e. by calling [[EffectScheduler.execute]].
|
|
681
|
-
* @public
|
|
682
|
-
*/
|
|
683
|
-
attach() {
|
|
684
|
-
this._isActivelyListening = true;
|
|
685
|
-
for (let i = 0, n = this.parents.length; i < n; i++) {
|
|
686
|
-
attach(this.parents[i], this);
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
/**
|
|
690
|
-
* Makes this scheduler stop 'actively listening' to its parents.
|
|
691
|
-
* It will no longer be eligible to receive 'maybeScheduleEffect' calls until [[EffectScheduler.attach]] is called again.
|
|
692
|
-
*/
|
|
693
|
-
detach() {
|
|
694
|
-
this._isActivelyListening = false;
|
|
695
|
-
for (let i = 0, n = this.parents.length; i < n; i++) {
|
|
696
|
-
detach(this.parents[i], this);
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
/**
|
|
700
|
-
* Executes the effect immediately and returns the result.
|
|
701
|
-
* @returns The result of the effect.
|
|
702
|
-
*/
|
|
703
|
-
execute() {
|
|
704
|
-
try {
|
|
705
|
-
startCapturingParents(this);
|
|
706
|
-
const result = this.runEffect(this.lastReactedEpoch);
|
|
707
|
-
this.lastReactedEpoch = globalEpoch;
|
|
708
|
-
return result;
|
|
709
|
-
} finally {
|
|
710
|
-
stopCapturingParents();
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
};
|
|
714
|
-
function react(name, fn, options) {
|
|
715
|
-
const scheduler = new EffectScheduler(name, fn, options);
|
|
716
|
-
scheduler.attach();
|
|
717
|
-
scheduler.scheduleEffect();
|
|
718
|
-
return () => {
|
|
719
|
-
scheduler.detach();
|
|
720
|
-
};
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/core/isSignal.mjs
|
|
724
|
-
init_define_process_env();
|
|
725
|
-
|
|
726
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/index.mjs
|
|
727
|
-
init_define_process_env();
|
|
728
|
-
|
|
729
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/track.mjs
|
|
730
|
-
init_define_process_env();
|
|
731
|
-
var import_react2 = require("react");
|
|
732
|
-
|
|
733
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/useStateTracking.mjs
|
|
734
|
-
init_define_process_env();
|
|
735
|
-
var import_react = __toESM(require("react"), 1);
|
|
736
|
-
|
|
737
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/track.mjs
|
|
738
|
-
var ReactMemoSymbol = Symbol.for("react.memo");
|
|
739
|
-
var ReactForwardRefSymbol = Symbol.for("react.forward_ref");
|
|
740
|
-
|
|
741
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/useAtom.mjs
|
|
742
|
-
init_define_process_env();
|
|
743
|
-
var import_react3 = require("react");
|
|
744
|
-
|
|
745
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/useComputed.mjs
|
|
746
|
-
init_define_process_env();
|
|
747
|
-
var import_react4 = require("react");
|
|
748
|
-
|
|
749
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/useQuickReactor.mjs
|
|
750
|
-
init_define_process_env();
|
|
751
|
-
var import_react5 = require("react");
|
|
752
|
-
|
|
753
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/useReactor.mjs
|
|
754
|
-
init_define_process_env();
|
|
755
|
-
var import_react6 = require("react");
|
|
756
|
-
|
|
757
|
-
// ../../node_modules/@tldraw/state/dist-esm/lib/react/useValue.mjs
|
|
758
|
-
init_define_process_env();
|
|
759
|
-
var import_react7 = require("react");
|
|
760
|
-
function useValue() {
|
|
761
|
-
const args = arguments;
|
|
762
|
-
const deps = args.length === 3 ? args[2] : [args[0]];
|
|
763
|
-
const name = args.length === 3 ? args[0] : `useValue(${args[0].name})`;
|
|
764
|
-
const isInRender = (0, import_react7.useRef)(true);
|
|
765
|
-
isInRender.current = true;
|
|
766
|
-
const $val = (0, import_react7.useMemo)(() => {
|
|
767
|
-
if (args.length === 1) {
|
|
768
|
-
return args[0];
|
|
769
|
-
}
|
|
770
|
-
return computed(name, () => {
|
|
771
|
-
if (isInRender.current) {
|
|
772
|
-
return args[1]();
|
|
773
|
-
} else {
|
|
774
|
-
try {
|
|
775
|
-
return args[1]();
|
|
776
|
-
} catch {
|
|
777
|
-
return {};
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
});
|
|
781
|
-
}, deps);
|
|
782
|
-
try {
|
|
783
|
-
const { subscribe, getSnapshot } = (0, import_react7.useMemo)(() => {
|
|
784
|
-
return {
|
|
785
|
-
subscribe: (listen) => {
|
|
786
|
-
return react(`useValue(${name})`, () => {
|
|
787
|
-
$val.get();
|
|
788
|
-
listen();
|
|
789
|
-
});
|
|
790
|
-
},
|
|
791
|
-
getSnapshot: () => $val.get()
|
|
792
|
-
};
|
|
793
|
-
}, [$val]);
|
|
794
|
-
return (0, import_react7.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
|
|
795
|
-
} finally {
|
|
796
|
-
isInRender.current = false;
|
|
797
|
-
}
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
// src/ErrorFallback.tsx
|
|
801
|
-
var import_tldraw = require("@tldraw/tldraw");
|
|
802
|
-
var import_classnames = __toESM(require_classnames(), 1);
|
|
803
|
-
var DISCORD_URL = "https://discord.gg/pTge2BwDBq";
|
|
804
|
-
var ErrorFallback = ({ error, editor }) => {
|
|
805
|
-
const containerRef = (0, import_react8.useRef)(null);
|
|
806
|
-
const [shouldShowError, setShouldShowError] = (0, import_react8.useState)(define_process_env_default.NODE_ENV !== "production");
|
|
807
|
-
const [didCopy, setDidCopy] = (0, import_react8.useState)(false);
|
|
808
|
-
const [shouldShowResetConfirmation, setShouldShowResetConfirmation] = (0, import_react8.useState)(false);
|
|
809
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
810
|
-
const errorStack = error instanceof Error ? error.stack : null;
|
|
811
|
-
const isDarkModeFromApp = useValue(
|
|
812
|
-
"isDarkMode",
|
|
813
|
-
() => {
|
|
814
|
-
try {
|
|
815
|
-
if (editor) {
|
|
816
|
-
return editor.user.isDarkMode;
|
|
817
|
-
}
|
|
818
|
-
} catch {
|
|
819
|
-
}
|
|
820
|
-
return null;
|
|
821
|
-
},
|
|
822
|
-
[editor]
|
|
823
|
-
);
|
|
824
|
-
const [isDarkMode, setIsDarkMode] = (0, import_react8.useState)(null);
|
|
825
|
-
(0, import_react8.useLayoutEffect)(() => {
|
|
826
|
-
if (isDarkModeFromApp !== null) {
|
|
827
|
-
setIsDarkMode(isDarkModeFromApp);
|
|
828
|
-
}
|
|
829
|
-
let parent = containerRef.current?.parentElement;
|
|
830
|
-
let foundParentThemeClass = false;
|
|
831
|
-
while (parent) {
|
|
832
|
-
if (parent.classList.contains("tl-theme__dark") || parent.classList.contains("tl-theme__light")) {
|
|
833
|
-
foundParentThemeClass = true;
|
|
834
|
-
break;
|
|
835
|
-
}
|
|
836
|
-
parent = parent.parentElement;
|
|
837
|
-
}
|
|
838
|
-
if (foundParentThemeClass) {
|
|
839
|
-
setIsDarkMode(null);
|
|
840
|
-
return;
|
|
841
|
-
}
|
|
842
|
-
setIsDarkMode(window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
843
|
-
}, [isDarkModeFromApp]);
|
|
844
|
-
(0, import_react8.useEffect)(() => {
|
|
845
|
-
if (didCopy) {
|
|
846
|
-
const timeout = setTimeout(() => {
|
|
847
|
-
setDidCopy(false);
|
|
848
|
-
}, 2e3);
|
|
849
|
-
return () => clearTimeout(timeout);
|
|
850
|
-
}
|
|
851
|
-
}, [didCopy]);
|
|
852
|
-
const copyError = () => {
|
|
853
|
-
const textarea = document.createElement("textarea");
|
|
854
|
-
textarea.value = errorStack ?? errorMessage;
|
|
855
|
-
document.body.appendChild(textarea);
|
|
856
|
-
textarea.select();
|
|
857
|
-
document.execCommand("copy");
|
|
858
|
-
textarea.remove();
|
|
859
|
-
setDidCopy(true);
|
|
860
|
-
};
|
|
861
|
-
const refresh = () => {
|
|
862
|
-
(0, import_tldraw.refreshPage)();
|
|
863
|
-
};
|
|
864
|
-
const resetLocalState = async () => {
|
|
865
|
-
(0, import_tldraw.hardResetEditor)();
|
|
866
|
-
};
|
|
867
|
-
return /* @__PURE__ */ import_react8.default.createElement(
|
|
868
|
-
"div",
|
|
869
|
-
{
|
|
870
|
-
ref: containerRef,
|
|
871
|
-
className: (0, import_classnames.default)(
|
|
872
|
-
"tl-container tl-error-boundary",
|
|
873
|
-
// error-boundary is sometimes used outside of the theme
|
|
874
|
-
// container, so we need to provide it with a theme for our
|
|
875
|
-
// styles to work correctly
|
|
876
|
-
isDarkMode === null ? "" : isDarkMode ? "tl-theme__dark" : "tl-theme__light"
|
|
877
|
-
)
|
|
878
|
-
},
|
|
879
|
-
/* @__PURE__ */ import_react8.default.createElement("div", { className: "tl-error-boundary__overlay" }),
|
|
880
|
-
/* @__PURE__ */ import_react8.default.createElement(
|
|
881
|
-
"div",
|
|
882
|
-
{
|
|
883
|
-
className: (0, import_classnames.default)("tl-modal", "tl-error-boundary__content", {
|
|
884
|
-
"tl-error-boundary__content__expanded": shouldShowError && !shouldShowResetConfirmation
|
|
885
|
-
})
|
|
886
|
-
},
|
|
887
|
-
shouldShowResetConfirmation ? /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, /* @__PURE__ */ import_react8.default.createElement("h2", null, "Are you sure?"), /* @__PURE__ */ import_react8.default.createElement("p", null, "Resetting your data will delete your drawing and cannot be undone."), /* @__PURE__ */ import_react8.default.createElement("div", { className: "tl-error-boundary__content__actions" }, /* @__PURE__ */ import_react8.default.createElement("button", { onClick: () => setShouldShowResetConfirmation(false) }, "Cancel"), /* @__PURE__ */ import_react8.default.createElement("button", { className: "tl-error-boundary__reset", onClick: resetLocalState }, "Reset data"))) : /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, /* @__PURE__ */ import_react8.default.createElement("h2", null, "Something's gone wrong."), /* @__PURE__ */ import_react8.default.createElement("p", null, "Sorry, we encountered an error. Please refresh the page to continue. If you keep seeing this error, you can ", /* @__PURE__ */ import_react8.default.createElement("a", { href: DISCORD_URL }, "ask for help on Discord"), "."), shouldShowError && /* @__PURE__ */ import_react8.default.createElement("div", { className: "tl-error-boundary__content__error" }, /* @__PURE__ */ import_react8.default.createElement("pre", null, /* @__PURE__ */ import_react8.default.createElement("code", null, errorStack ?? errorMessage)), /* @__PURE__ */ import_react8.default.createElement("button", { onClick: copyError }, didCopy ? "Copied!" : "Copy")), /* @__PURE__ */ import_react8.default.createElement("div", { className: "tl-error-boundary__content__actions" }, /* @__PURE__ */ import_react8.default.createElement("button", { onClick: () => setShouldShowError(!shouldShowError) }, shouldShowError ? "Hide details" : "Show details"), /* @__PURE__ */ import_react8.default.createElement("div", { className: "tl-error-boundary__content__actions__group" }, /* @__PURE__ */ import_react8.default.createElement("button", { className: "tl-error-boundary__reset", onClick: () => setShouldShowResetConfirmation(true) }, "Reset data"), /* @__PURE__ */ import_react8.default.createElement("button", { className: "tl-error-boundary__refresh", onClick: refresh }, "Refresh Page"))))
|
|
888
|
-
)
|
|
889
|
-
);
|
|
890
|
-
};
|
|
891
|
-
|
|
892
|
-
// src/hooks/useCollaboration.ts
|
|
893
|
-
init_define_process_env();
|
|
894
|
-
var import_react11 = require("react");
|
|
895
|
-
var import_tldraw2 = require("@tldraw/tldraw");
|
|
896
|
-
|
|
897
|
-
// src/hooks/default_store.ts
|
|
898
|
-
init_define_process_env();
|
|
899
|
-
var DEFAULT_STORE = {
|
|
900
|
-
store: {
|
|
901
|
-
"document:document": {
|
|
902
|
-
gridSize: 10,
|
|
903
|
-
name: "",
|
|
904
|
-
meta: {},
|
|
905
|
-
id: "document:document",
|
|
906
|
-
typeName: "document"
|
|
907
|
-
},
|
|
908
|
-
"pointer:pointer": {
|
|
909
|
-
id: "pointer:pointer",
|
|
910
|
-
typeName: "pointer",
|
|
911
|
-
x: 0,
|
|
912
|
-
y: 0,
|
|
913
|
-
lastActivityTimestamp: 0,
|
|
914
|
-
meta: {}
|
|
915
|
-
},
|
|
916
|
-
"page:page": {
|
|
917
|
-
meta: {},
|
|
918
|
-
id: "page:page",
|
|
919
|
-
name: "Page 1",
|
|
920
|
-
index: "a1",
|
|
921
|
-
typeName: "page"
|
|
922
|
-
},
|
|
923
|
-
"camera:page:page": {
|
|
924
|
-
x: 0,
|
|
925
|
-
y: 0,
|
|
926
|
-
z: 1,
|
|
927
|
-
meta: {},
|
|
928
|
-
id: "camera:page:page",
|
|
929
|
-
typeName: "camera"
|
|
930
|
-
},
|
|
931
|
-
"instance_page_state:page:page": {
|
|
932
|
-
editingShapeId: null,
|
|
933
|
-
croppingShapeId: null,
|
|
934
|
-
selectedShapeIds: [],
|
|
935
|
-
hoveredShapeId: null,
|
|
936
|
-
erasingShapeIds: [],
|
|
937
|
-
hintingShapeIds: [],
|
|
938
|
-
focusedGroupId: null,
|
|
939
|
-
meta: {},
|
|
940
|
-
id: "instance_page_state:page:page",
|
|
941
|
-
pageId: "page:page",
|
|
942
|
-
typeName: "instance_page_state"
|
|
943
|
-
},
|
|
944
|
-
"instance:instance": {
|
|
945
|
-
followingUserId: null,
|
|
946
|
-
opacityForNextShape: 1,
|
|
947
|
-
stylesForNextShape: {},
|
|
948
|
-
brush: null,
|
|
949
|
-
scribble: null,
|
|
950
|
-
cursor: {
|
|
951
|
-
type: "default",
|
|
952
|
-
rotation: 0
|
|
953
|
-
},
|
|
954
|
-
isFocusMode: false,
|
|
955
|
-
exportBackground: true,
|
|
956
|
-
isDebugMode: false,
|
|
957
|
-
isToolLocked: false,
|
|
958
|
-
screenBounds: {
|
|
959
|
-
x: 0,
|
|
960
|
-
y: 0,
|
|
961
|
-
w: 720,
|
|
962
|
-
h: 400
|
|
963
|
-
},
|
|
964
|
-
zoomBrush: null,
|
|
965
|
-
isGridMode: false,
|
|
966
|
-
isPenMode: false,
|
|
967
|
-
chatMessage: "",
|
|
968
|
-
isChatting: false,
|
|
969
|
-
highlightedUserIds: [],
|
|
970
|
-
canMoveCamera: true,
|
|
971
|
-
isFocused: true,
|
|
972
|
-
devicePixelRatio: 2,
|
|
973
|
-
isCoarsePointer: false,
|
|
974
|
-
isHoveringCanvas: false,
|
|
975
|
-
openMenus: [],
|
|
976
|
-
isChangingStyle: false,
|
|
977
|
-
isReadonly: false,
|
|
978
|
-
meta: {},
|
|
979
|
-
id: "instance:instance",
|
|
980
|
-
currentPageId: "page:page",
|
|
981
|
-
typeName: "instance"
|
|
982
|
-
}
|
|
983
|
-
},
|
|
984
|
-
schema: {
|
|
985
|
-
schemaVersion: 1,
|
|
986
|
-
storeVersion: 4,
|
|
987
|
-
recordVersions: {
|
|
988
|
-
asset: {
|
|
989
|
-
version: 1,
|
|
990
|
-
subTypeKey: "type",
|
|
991
|
-
subTypeVersions: {
|
|
992
|
-
image: 2,
|
|
993
|
-
video: 2,
|
|
994
|
-
bookmark: 0
|
|
995
|
-
}
|
|
996
|
-
},
|
|
997
|
-
camera: {
|
|
998
|
-
version: 1
|
|
999
|
-
},
|
|
1000
|
-
document: {
|
|
1001
|
-
version: 2
|
|
1002
|
-
},
|
|
1003
|
-
instance: {
|
|
1004
|
-
version: 21
|
|
1005
|
-
},
|
|
1006
|
-
instance_page_state: {
|
|
1007
|
-
version: 5
|
|
1008
|
-
},
|
|
1009
|
-
page: {
|
|
1010
|
-
version: 1
|
|
1011
|
-
},
|
|
1012
|
-
shape: {
|
|
1013
|
-
version: 3,
|
|
1014
|
-
subTypeKey: "type",
|
|
1015
|
-
subTypeVersions: {
|
|
1016
|
-
group: 0,
|
|
1017
|
-
text: 1,
|
|
1018
|
-
bookmark: 1,
|
|
1019
|
-
draw: 1,
|
|
1020
|
-
geo: 7,
|
|
1021
|
-
note: 4,
|
|
1022
|
-
line: 1,
|
|
1023
|
-
frame: 0,
|
|
1024
|
-
arrow: 1,
|
|
1025
|
-
highlight: 0,
|
|
1026
|
-
embed: 4,
|
|
1027
|
-
image: 2,
|
|
1028
|
-
video: 1
|
|
1029
|
-
}
|
|
1030
|
-
},
|
|
1031
|
-
instance_presence: {
|
|
1032
|
-
version: 5
|
|
1033
|
-
},
|
|
1034
|
-
pointer: {
|
|
1035
|
-
version: 1
|
|
1036
|
-
}
|
|
1037
|
-
}
|
|
1038
|
-
}
|
|
1039
|
-
};
|
|
1040
|
-
|
|
1041
|
-
// src/hooks/useSessionStore.ts
|
|
1042
|
-
init_define_process_env();
|
|
1043
|
-
var import_react9 = require("react");
|
|
1044
|
-
|
|
1045
|
-
// src/hooks/StoreClient.ts
|
|
1046
|
-
init_define_process_env();
|
|
1047
|
-
var import_grpcweb_transport = require("@protobuf-ts/grpcweb-transport");
|
|
1048
|
-
|
|
1049
|
-
// src/grpc/sessionstore.ts
|
|
1050
|
-
init_define_process_env();
|
|
1051
|
-
var import_runtime_rpc = require("@protobuf-ts/runtime-rpc");
|
|
1052
|
-
var import_runtime8 = require("@protobuf-ts/runtime");
|
|
1053
|
-
var import_runtime9 = require("@protobuf-ts/runtime");
|
|
1054
|
-
var import_runtime10 = require("@protobuf-ts/runtime");
|
|
1055
|
-
var import_runtime11 = require("@protobuf-ts/runtime");
|
|
1056
|
-
var Value_Type = /* @__PURE__ */ ((Value_Type2) => {
|
|
1057
|
-
Value_Type2[Value_Type2["NONE"] = 0] = "NONE";
|
|
1058
|
-
Value_Type2[Value_Type2["BYTES"] = 1] = "BYTES";
|
|
1059
|
-
Value_Type2[Value_Type2["STRING"] = 2] = "STRING";
|
|
1060
|
-
Value_Type2[Value_Type2["INTEGER"] = 3] = "INTEGER";
|
|
1061
|
-
Value_Type2[Value_Type2["FLOAT"] = 4] = "FLOAT";
|
|
1062
|
-
return Value_Type2;
|
|
1063
|
-
})(Value_Type || {});
|
|
1064
|
-
var HelloRequest$Type = class extends import_runtime11.MessageType {
|
|
1065
|
-
constructor() {
|
|
1066
|
-
super("sessionstorepb.HelloRequest", [{
|
|
1067
|
-
no: 1,
|
|
1068
|
-
name: "name",
|
|
1069
|
-
kind: "scalar",
|
|
1070
|
-
T: 9
|
|
1071
|
-
/*ScalarType.STRING*/
|
|
1072
|
-
}]);
|
|
1073
|
-
}
|
|
1074
|
-
create(value) {
|
|
1075
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1076
|
-
message.name = "";
|
|
1077
|
-
if (value !== void 0)
|
|
1078
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1079
|
-
return message;
|
|
1080
|
-
}
|
|
1081
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1082
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1083
|
-
while (reader.pos < end) {
|
|
1084
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1085
|
-
switch (fieldNo) {
|
|
1086
|
-
case /* string name */
|
|
1087
|
-
1:
|
|
1088
|
-
message.name = reader.string();
|
|
1089
|
-
break;
|
|
1090
|
-
default:
|
|
1091
|
-
let u = options.readUnknownField;
|
|
1092
|
-
if (u === "throw")
|
|
1093
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1094
|
-
let d = reader.skip(wireType);
|
|
1095
|
-
if (u !== false)
|
|
1096
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
|
-
return message;
|
|
1100
|
-
}
|
|
1101
|
-
internalBinaryWrite(message, writer, options) {
|
|
1102
|
-
if (message.name !== "")
|
|
1103
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.name);
|
|
1104
|
-
let u = options.writeUnknownFields;
|
|
1105
|
-
if (u !== false)
|
|
1106
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1107
|
-
return writer;
|
|
1108
|
-
}
|
|
1109
|
-
};
|
|
1110
|
-
var HelloRequest = new HelloRequest$Type();
|
|
1111
|
-
var HelloResponse$Type = class extends import_runtime11.MessageType {
|
|
1112
|
-
constructor() {
|
|
1113
|
-
super("sessionstorepb.HelloResponse", [{
|
|
1114
|
-
no: 1,
|
|
1115
|
-
name: "response",
|
|
1116
|
-
kind: "scalar",
|
|
1117
|
-
T: 9
|
|
1118
|
-
/*ScalarType.STRING*/
|
|
1119
|
-
}]);
|
|
1120
|
-
}
|
|
1121
|
-
create(value) {
|
|
1122
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1123
|
-
message.response = "";
|
|
1124
|
-
if (value !== void 0)
|
|
1125
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1126
|
-
return message;
|
|
1127
|
-
}
|
|
1128
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1129
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1130
|
-
while (reader.pos < end) {
|
|
1131
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1132
|
-
switch (fieldNo) {
|
|
1133
|
-
case /* string response */
|
|
1134
|
-
1:
|
|
1135
|
-
message.response = reader.string();
|
|
1136
|
-
break;
|
|
1137
|
-
default:
|
|
1138
|
-
let u = options.readUnknownField;
|
|
1139
|
-
if (u === "throw")
|
|
1140
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1141
|
-
let d = reader.skip(wireType);
|
|
1142
|
-
if (u !== false)
|
|
1143
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1144
|
-
}
|
|
1145
|
-
}
|
|
1146
|
-
return message;
|
|
1147
|
-
}
|
|
1148
|
-
internalBinaryWrite(message, writer, options) {
|
|
1149
|
-
if (message.response !== "")
|
|
1150
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.response);
|
|
1151
|
-
let u = options.writeUnknownFields;
|
|
1152
|
-
if (u !== false)
|
|
1153
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1154
|
-
return writer;
|
|
1155
|
-
}
|
|
1156
|
-
};
|
|
1157
|
-
var HelloResponse = new HelloResponse$Type();
|
|
1158
|
-
var SubscribeRequest$Type = class extends import_runtime11.MessageType {
|
|
1159
|
-
constructor() {
|
|
1160
|
-
super("sessionstorepb.SubscribeRequest", [
|
|
1161
|
-
{
|
|
1162
|
-
no: 1,
|
|
1163
|
-
name: "name",
|
|
1164
|
-
kind: "scalar",
|
|
1165
|
-
T: 9
|
|
1166
|
-
/*ScalarType.STRING*/
|
|
1167
|
-
},
|
|
1168
|
-
{
|
|
1169
|
-
no: 2,
|
|
1170
|
-
name: "offset",
|
|
1171
|
-
kind: "scalar",
|
|
1172
|
-
T: 3,
|
|
1173
|
-
L: 0
|
|
1174
|
-
/*LongType.BIGINT*/
|
|
1175
|
-
}
|
|
1176
|
-
]);
|
|
1177
|
-
}
|
|
1178
|
-
create(value) {
|
|
1179
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1180
|
-
message.name = "";
|
|
1181
|
-
message.offset = 0n;
|
|
1182
|
-
if (value !== void 0)
|
|
1183
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1184
|
-
return message;
|
|
1185
|
-
}
|
|
1186
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1187
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1188
|
-
while (reader.pos < end) {
|
|
1189
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1190
|
-
switch (fieldNo) {
|
|
1191
|
-
case /* string name */
|
|
1192
|
-
1:
|
|
1193
|
-
message.name = reader.string();
|
|
1194
|
-
break;
|
|
1195
|
-
case /* int64 offset */
|
|
1196
|
-
2:
|
|
1197
|
-
message.offset = reader.int64().toBigInt();
|
|
1198
|
-
break;
|
|
1199
|
-
default:
|
|
1200
|
-
let u = options.readUnknownField;
|
|
1201
|
-
if (u === "throw")
|
|
1202
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1203
|
-
let d = reader.skip(wireType);
|
|
1204
|
-
if (u !== false)
|
|
1205
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1206
|
-
}
|
|
1207
|
-
}
|
|
1208
|
-
return message;
|
|
1209
|
-
}
|
|
1210
|
-
internalBinaryWrite(message, writer, options) {
|
|
1211
|
-
if (message.name !== "")
|
|
1212
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.name);
|
|
1213
|
-
if (message.offset !== 0n)
|
|
1214
|
-
writer.tag(2, import_runtime8.WireType.Varint).int64(message.offset);
|
|
1215
|
-
let u = options.writeUnknownFields;
|
|
1216
|
-
if (u !== false)
|
|
1217
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1218
|
-
return writer;
|
|
1219
|
-
}
|
|
1220
|
-
};
|
|
1221
|
-
var SubscribeRequest = new SubscribeRequest$Type();
|
|
1222
|
-
var Event$Type = class extends import_runtime11.MessageType {
|
|
1223
|
-
constructor() {
|
|
1224
|
-
super("sessionstorepb.Event", [
|
|
1225
|
-
{
|
|
1226
|
-
no: 1,
|
|
1227
|
-
name: "message",
|
|
1228
|
-
kind: "scalar",
|
|
1229
|
-
T: 9
|
|
1230
|
-
/*ScalarType.STRING*/
|
|
1231
|
-
},
|
|
1232
|
-
{
|
|
1233
|
-
no: 2,
|
|
1234
|
-
name: "sequence",
|
|
1235
|
-
kind: "scalar",
|
|
1236
|
-
T: 3,
|
|
1237
|
-
L: 0
|
|
1238
|
-
/*LongType.BIGINT*/
|
|
1239
|
-
}
|
|
1240
|
-
]);
|
|
1241
|
-
}
|
|
1242
|
-
create(value) {
|
|
1243
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1244
|
-
message.message = "";
|
|
1245
|
-
message.sequence = 0n;
|
|
1246
|
-
if (value !== void 0)
|
|
1247
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1248
|
-
return message;
|
|
1249
|
-
}
|
|
1250
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1251
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1252
|
-
while (reader.pos < end) {
|
|
1253
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1254
|
-
switch (fieldNo) {
|
|
1255
|
-
case /* string message */
|
|
1256
|
-
1:
|
|
1257
|
-
message.message = reader.string();
|
|
1258
|
-
break;
|
|
1259
|
-
case /* int64 sequence */
|
|
1260
|
-
2:
|
|
1261
|
-
message.sequence = reader.int64().toBigInt();
|
|
1262
|
-
break;
|
|
1263
|
-
default:
|
|
1264
|
-
let u = options.readUnknownField;
|
|
1265
|
-
if (u === "throw")
|
|
1266
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1267
|
-
let d = reader.skip(wireType);
|
|
1268
|
-
if (u !== false)
|
|
1269
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1270
|
-
}
|
|
1271
|
-
}
|
|
1272
|
-
return message;
|
|
1273
|
-
}
|
|
1274
|
-
internalBinaryWrite(message, writer, options) {
|
|
1275
|
-
if (message.message !== "")
|
|
1276
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.message);
|
|
1277
|
-
if (message.sequence !== 0n)
|
|
1278
|
-
writer.tag(2, import_runtime8.WireType.Varint).int64(message.sequence);
|
|
1279
|
-
let u = options.writeUnknownFields;
|
|
1280
|
-
if (u !== false)
|
|
1281
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1282
|
-
return writer;
|
|
1283
|
-
}
|
|
1284
|
-
};
|
|
1285
|
-
var Event = new Event$Type();
|
|
1286
|
-
var Value$Type = class extends import_runtime11.MessageType {
|
|
1287
|
-
constructor() {
|
|
1288
|
-
super("sessionstorepb.Value", [
|
|
1289
|
-
{ no: 1, name: "type", kind: "enum", T: () => ["sessionstorepb.Value.Type", Value_Type] },
|
|
1290
|
-
{
|
|
1291
|
-
no: 2,
|
|
1292
|
-
name: "number",
|
|
1293
|
-
kind: "scalar",
|
|
1294
|
-
oneof: "data",
|
|
1295
|
-
T: 3,
|
|
1296
|
-
L: 0
|
|
1297
|
-
/*LongType.BIGINT*/
|
|
1298
|
-
},
|
|
1299
|
-
{
|
|
1300
|
-
no: 3,
|
|
1301
|
-
name: "float",
|
|
1302
|
-
kind: "scalar",
|
|
1303
|
-
oneof: "data",
|
|
1304
|
-
T: 2
|
|
1305
|
-
/*ScalarType.FLOAT*/
|
|
1306
|
-
},
|
|
1307
|
-
{
|
|
1308
|
-
no: 4,
|
|
1309
|
-
name: "str",
|
|
1310
|
-
kind: "scalar",
|
|
1311
|
-
oneof: "data",
|
|
1312
|
-
T: 9
|
|
1313
|
-
/*ScalarType.STRING*/
|
|
1314
|
-
},
|
|
1315
|
-
{
|
|
1316
|
-
no: 5,
|
|
1317
|
-
name: "raw_bytes",
|
|
1318
|
-
kind: "scalar",
|
|
1319
|
-
oneof: "data",
|
|
1320
|
-
T: 12
|
|
1321
|
-
/*ScalarType.BYTES*/
|
|
1322
|
-
}
|
|
1323
|
-
]);
|
|
1324
|
-
}
|
|
1325
|
-
create(value) {
|
|
1326
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1327
|
-
message.type = 0;
|
|
1328
|
-
message.data = { oneofKind: void 0 };
|
|
1329
|
-
if (value !== void 0)
|
|
1330
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1331
|
-
return message;
|
|
1332
|
-
}
|
|
1333
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1334
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1335
|
-
while (reader.pos < end) {
|
|
1336
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1337
|
-
switch (fieldNo) {
|
|
1338
|
-
case /* sessionstorepb.Value.Type type */
|
|
1339
|
-
1:
|
|
1340
|
-
message.type = reader.int32();
|
|
1341
|
-
break;
|
|
1342
|
-
case /* int64 number */
|
|
1343
|
-
2:
|
|
1344
|
-
message.data = {
|
|
1345
|
-
oneofKind: "number",
|
|
1346
|
-
number: reader.int64().toBigInt()
|
|
1347
|
-
};
|
|
1348
|
-
break;
|
|
1349
|
-
case /* float float */
|
|
1350
|
-
3:
|
|
1351
|
-
message.data = {
|
|
1352
|
-
oneofKind: "float",
|
|
1353
|
-
float: reader.float()
|
|
1354
|
-
};
|
|
1355
|
-
break;
|
|
1356
|
-
case /* string str */
|
|
1357
|
-
4:
|
|
1358
|
-
message.data = {
|
|
1359
|
-
oneofKind: "str",
|
|
1360
|
-
str: reader.string()
|
|
1361
|
-
};
|
|
1362
|
-
break;
|
|
1363
|
-
case /* bytes raw_bytes */
|
|
1364
|
-
5:
|
|
1365
|
-
message.data = {
|
|
1366
|
-
oneofKind: "rawBytes",
|
|
1367
|
-
rawBytes: reader.bytes()
|
|
1368
|
-
};
|
|
1369
|
-
break;
|
|
1370
|
-
default:
|
|
1371
|
-
let u = options.readUnknownField;
|
|
1372
|
-
if (u === "throw")
|
|
1373
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1374
|
-
let d = reader.skip(wireType);
|
|
1375
|
-
if (u !== false)
|
|
1376
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1377
|
-
}
|
|
1378
|
-
}
|
|
1379
|
-
return message;
|
|
1380
|
-
}
|
|
1381
|
-
internalBinaryWrite(message, writer, options) {
|
|
1382
|
-
if (message.type !== 0)
|
|
1383
|
-
writer.tag(1, import_runtime8.WireType.Varint).int32(message.type);
|
|
1384
|
-
if (message.data.oneofKind === "number")
|
|
1385
|
-
writer.tag(2, import_runtime8.WireType.Varint).int64(message.data.number);
|
|
1386
|
-
if (message.data.oneofKind === "float")
|
|
1387
|
-
writer.tag(3, import_runtime8.WireType.Bit32).float(message.data.float);
|
|
1388
|
-
if (message.data.oneofKind === "str")
|
|
1389
|
-
writer.tag(4, import_runtime8.WireType.LengthDelimited).string(message.data.str);
|
|
1390
|
-
if (message.data.oneofKind === "rawBytes")
|
|
1391
|
-
writer.tag(5, import_runtime8.WireType.LengthDelimited).bytes(message.data.rawBytes);
|
|
1392
|
-
let u = options.writeUnknownFields;
|
|
1393
|
-
if (u !== false)
|
|
1394
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1395
|
-
return writer;
|
|
1396
|
-
}
|
|
1397
|
-
};
|
|
1398
|
-
var Value = new Value$Type();
|
|
1399
|
-
var GetRequest$Type = class extends import_runtime11.MessageType {
|
|
1400
|
-
constructor() {
|
|
1401
|
-
super("sessionstorepb.GetRequest", [{
|
|
1402
|
-
no: 1,
|
|
1403
|
-
name: "key",
|
|
1404
|
-
kind: "scalar",
|
|
1405
|
-
T: 9
|
|
1406
|
-
/*ScalarType.STRING*/
|
|
1407
|
-
}]);
|
|
1408
|
-
}
|
|
1409
|
-
create(value) {
|
|
1410
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1411
|
-
message.key = "";
|
|
1412
|
-
if (value !== void 0)
|
|
1413
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1414
|
-
return message;
|
|
1415
|
-
}
|
|
1416
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1417
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1418
|
-
while (reader.pos < end) {
|
|
1419
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1420
|
-
switch (fieldNo) {
|
|
1421
|
-
case /* string key */
|
|
1422
|
-
1:
|
|
1423
|
-
message.key = reader.string();
|
|
1424
|
-
break;
|
|
1425
|
-
default:
|
|
1426
|
-
let u = options.readUnknownField;
|
|
1427
|
-
if (u === "throw")
|
|
1428
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1429
|
-
let d = reader.skip(wireType);
|
|
1430
|
-
if (u !== false)
|
|
1431
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
return message;
|
|
1435
|
-
}
|
|
1436
|
-
internalBinaryWrite(message, writer, options) {
|
|
1437
|
-
if (message.key !== "")
|
|
1438
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.key);
|
|
1439
|
-
let u = options.writeUnknownFields;
|
|
1440
|
-
if (u !== false)
|
|
1441
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1442
|
-
return writer;
|
|
1443
|
-
}
|
|
1444
|
-
};
|
|
1445
|
-
var GetRequest = new GetRequest$Type();
|
|
1446
|
-
var GetResponse$Type = class extends import_runtime11.MessageType {
|
|
1447
|
-
constructor() {
|
|
1448
|
-
super("sessionstorepb.GetResponse", [
|
|
1449
|
-
{
|
|
1450
|
-
no: 1,
|
|
1451
|
-
name: "key",
|
|
1452
|
-
kind: "scalar",
|
|
1453
|
-
T: 9
|
|
1454
|
-
/*ScalarType.STRING*/
|
|
1455
|
-
},
|
|
1456
|
-
{
|
|
1457
|
-
no: 2,
|
|
1458
|
-
name: "namespace",
|
|
1459
|
-
kind: "scalar",
|
|
1460
|
-
T: 9
|
|
1461
|
-
/*ScalarType.STRING*/
|
|
1462
|
-
},
|
|
1463
|
-
{ no: 3, name: "value", kind: "message", T: () => Value }
|
|
1464
|
-
]);
|
|
1465
|
-
}
|
|
1466
|
-
create(value) {
|
|
1467
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1468
|
-
message.key = "";
|
|
1469
|
-
message.namespace = "";
|
|
1470
|
-
if (value !== void 0)
|
|
1471
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1472
|
-
return message;
|
|
1473
|
-
}
|
|
1474
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1475
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1476
|
-
while (reader.pos < end) {
|
|
1477
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1478
|
-
switch (fieldNo) {
|
|
1479
|
-
case /* string key */
|
|
1480
|
-
1:
|
|
1481
|
-
message.key = reader.string();
|
|
1482
|
-
break;
|
|
1483
|
-
case /* string namespace */
|
|
1484
|
-
2:
|
|
1485
|
-
message.namespace = reader.string();
|
|
1486
|
-
break;
|
|
1487
|
-
case /* sessionstorepb.Value value */
|
|
1488
|
-
3:
|
|
1489
|
-
message.value = Value.internalBinaryRead(reader, reader.uint32(), options, message.value);
|
|
1490
|
-
break;
|
|
1491
|
-
default:
|
|
1492
|
-
let u = options.readUnknownField;
|
|
1493
|
-
if (u === "throw")
|
|
1494
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1495
|
-
let d = reader.skip(wireType);
|
|
1496
|
-
if (u !== false)
|
|
1497
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1498
|
-
}
|
|
1499
|
-
}
|
|
1500
|
-
return message;
|
|
1501
|
-
}
|
|
1502
|
-
internalBinaryWrite(message, writer, options) {
|
|
1503
|
-
if (message.key !== "")
|
|
1504
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.key);
|
|
1505
|
-
if (message.namespace !== "")
|
|
1506
|
-
writer.tag(2, import_runtime8.WireType.LengthDelimited).string(message.namespace);
|
|
1507
|
-
if (message.value)
|
|
1508
|
-
Value.internalBinaryWrite(message.value, writer.tag(3, import_runtime8.WireType.LengthDelimited).fork(), options).join();
|
|
1509
|
-
let u = options.writeUnknownFields;
|
|
1510
|
-
if (u !== false)
|
|
1511
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1512
|
-
return writer;
|
|
1513
|
-
}
|
|
1514
|
-
};
|
|
1515
|
-
var GetResponse = new GetResponse$Type();
|
|
1516
|
-
var DeleteRequest$Type = class extends import_runtime11.MessageType {
|
|
1517
|
-
constructor() {
|
|
1518
|
-
super("sessionstorepb.DeleteRequest", [{
|
|
1519
|
-
no: 1,
|
|
1520
|
-
name: "key",
|
|
1521
|
-
kind: "scalar",
|
|
1522
|
-
T: 9
|
|
1523
|
-
/*ScalarType.STRING*/
|
|
1524
|
-
}]);
|
|
1525
|
-
}
|
|
1526
|
-
create(value) {
|
|
1527
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1528
|
-
message.key = "";
|
|
1529
|
-
if (value !== void 0)
|
|
1530
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1531
|
-
return message;
|
|
1532
|
-
}
|
|
1533
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1534
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1535
|
-
while (reader.pos < end) {
|
|
1536
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1537
|
-
switch (fieldNo) {
|
|
1538
|
-
case /* string key */
|
|
1539
|
-
1:
|
|
1540
|
-
message.key = reader.string();
|
|
1541
|
-
break;
|
|
1542
|
-
default:
|
|
1543
|
-
let u = options.readUnknownField;
|
|
1544
|
-
if (u === "throw")
|
|
1545
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1546
|
-
let d = reader.skip(wireType);
|
|
1547
|
-
if (u !== false)
|
|
1548
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1549
|
-
}
|
|
1550
|
-
}
|
|
1551
|
-
return message;
|
|
1552
|
-
}
|
|
1553
|
-
internalBinaryWrite(message, writer, options) {
|
|
1554
|
-
if (message.key !== "")
|
|
1555
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.key);
|
|
1556
|
-
let u = options.writeUnknownFields;
|
|
1557
|
-
if (u !== false)
|
|
1558
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1559
|
-
return writer;
|
|
1560
|
-
}
|
|
1561
|
-
};
|
|
1562
|
-
var DeleteRequest = new DeleteRequest$Type();
|
|
1563
|
-
var DeleteResponse$Type = class extends import_runtime11.MessageType {
|
|
1564
|
-
constructor() {
|
|
1565
|
-
super("sessionstorepb.DeleteResponse", []);
|
|
1566
|
-
}
|
|
1567
|
-
create(value) {
|
|
1568
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1569
|
-
if (value !== void 0)
|
|
1570
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1571
|
-
return message;
|
|
1572
|
-
}
|
|
1573
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1574
|
-
return target ?? this.create();
|
|
1575
|
-
}
|
|
1576
|
-
internalBinaryWrite(message, writer, options) {
|
|
1577
|
-
let u = options.writeUnknownFields;
|
|
1578
|
-
if (u !== false)
|
|
1579
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1580
|
-
return writer;
|
|
1581
|
-
}
|
|
1582
|
-
};
|
|
1583
|
-
var DeleteResponse = new DeleteResponse$Type();
|
|
1584
|
-
var SetRequest$Type = class extends import_runtime11.MessageType {
|
|
1585
|
-
constructor() {
|
|
1586
|
-
super("sessionstorepb.SetRequest", [
|
|
1587
|
-
{
|
|
1588
|
-
no: 1,
|
|
1589
|
-
name: "key",
|
|
1590
|
-
kind: "scalar",
|
|
1591
|
-
T: 9
|
|
1592
|
-
/*ScalarType.STRING*/
|
|
1593
|
-
},
|
|
1594
|
-
{ no: 3, name: "value", kind: "message", T: () => Value }
|
|
1595
|
-
]);
|
|
1596
|
-
}
|
|
1597
|
-
create(value) {
|
|
1598
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1599
|
-
message.key = "";
|
|
1600
|
-
if (value !== void 0)
|
|
1601
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1602
|
-
return message;
|
|
1603
|
-
}
|
|
1604
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1605
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1606
|
-
while (reader.pos < end) {
|
|
1607
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1608
|
-
switch (fieldNo) {
|
|
1609
|
-
case /* string key */
|
|
1610
|
-
1:
|
|
1611
|
-
message.key = reader.string();
|
|
1612
|
-
break;
|
|
1613
|
-
case /* sessionstorepb.Value value */
|
|
1614
|
-
3:
|
|
1615
|
-
message.value = Value.internalBinaryRead(reader, reader.uint32(), options, message.value);
|
|
1616
|
-
break;
|
|
1617
|
-
default:
|
|
1618
|
-
let u = options.readUnknownField;
|
|
1619
|
-
if (u === "throw")
|
|
1620
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1621
|
-
let d = reader.skip(wireType);
|
|
1622
|
-
if (u !== false)
|
|
1623
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1624
|
-
}
|
|
1625
|
-
}
|
|
1626
|
-
return message;
|
|
1627
|
-
}
|
|
1628
|
-
internalBinaryWrite(message, writer, options) {
|
|
1629
|
-
if (message.key !== "")
|
|
1630
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.key);
|
|
1631
|
-
if (message.value)
|
|
1632
|
-
Value.internalBinaryWrite(message.value, writer.tag(3, import_runtime8.WireType.LengthDelimited).fork(), options).join();
|
|
1633
|
-
let u = options.writeUnknownFields;
|
|
1634
|
-
if (u !== false)
|
|
1635
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1636
|
-
return writer;
|
|
1637
|
-
}
|
|
1638
|
-
};
|
|
1639
|
-
var SetRequest = new SetRequest$Type();
|
|
1640
|
-
var SetResponse$Type = class extends import_runtime11.MessageType {
|
|
1641
|
-
constructor() {
|
|
1642
|
-
super("sessionstorepb.SetResponse", []);
|
|
1643
|
-
}
|
|
1644
|
-
create(value) {
|
|
1645
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1646
|
-
if (value !== void 0)
|
|
1647
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1648
|
-
return message;
|
|
1649
|
-
}
|
|
1650
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1651
|
-
return target ?? this.create();
|
|
1652
|
-
}
|
|
1653
|
-
internalBinaryWrite(message, writer, options) {
|
|
1654
|
-
let u = options.writeUnknownFields;
|
|
1655
|
-
if (u !== false)
|
|
1656
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1657
|
-
return writer;
|
|
1658
|
-
}
|
|
1659
|
-
};
|
|
1660
|
-
var SetResponse = new SetResponse$Type();
|
|
1661
|
-
var ChangeStream$Type = class extends import_runtime11.MessageType {
|
|
1662
|
-
constructor() {
|
|
1663
|
-
super("sessionstorepb.ChangeStream", [
|
|
1664
|
-
{
|
|
1665
|
-
no: 1,
|
|
1666
|
-
name: "change_id",
|
|
1667
|
-
kind: "scalar",
|
|
1668
|
-
T: 9
|
|
1669
|
-
/*ScalarType.STRING*/
|
|
1670
|
-
},
|
|
1671
|
-
{
|
|
1672
|
-
no: 2,
|
|
1673
|
-
name: "key",
|
|
1674
|
-
kind: "scalar",
|
|
1675
|
-
T: 9
|
|
1676
|
-
/*ScalarType.STRING*/
|
|
1677
|
-
},
|
|
1678
|
-
{
|
|
1679
|
-
no: 3,
|
|
1680
|
-
name: "namespace",
|
|
1681
|
-
kind: "scalar",
|
|
1682
|
-
T: 9
|
|
1683
|
-
/*ScalarType.STRING*/
|
|
1684
|
-
},
|
|
1685
|
-
{ no: 4, name: "value", kind: "message", T: () => Value },
|
|
1686
|
-
{
|
|
1687
|
-
no: 5,
|
|
1688
|
-
name: "from_id",
|
|
1689
|
-
kind: "scalar",
|
|
1690
|
-
T: 9
|
|
1691
|
-
/*ScalarType.STRING*/
|
|
1692
|
-
}
|
|
1693
|
-
]);
|
|
1694
|
-
}
|
|
1695
|
-
create(value) {
|
|
1696
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1697
|
-
message.changeId = "";
|
|
1698
|
-
message.key = "";
|
|
1699
|
-
message.namespace = "";
|
|
1700
|
-
message.fromId = "";
|
|
1701
|
-
if (value !== void 0)
|
|
1702
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1703
|
-
return message;
|
|
1704
|
-
}
|
|
1705
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1706
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1707
|
-
while (reader.pos < end) {
|
|
1708
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1709
|
-
switch (fieldNo) {
|
|
1710
|
-
case /* string change_id */
|
|
1711
|
-
1:
|
|
1712
|
-
message.changeId = reader.string();
|
|
1713
|
-
break;
|
|
1714
|
-
case /* string key */
|
|
1715
|
-
2:
|
|
1716
|
-
message.key = reader.string();
|
|
1717
|
-
break;
|
|
1718
|
-
case /* string namespace */
|
|
1719
|
-
3:
|
|
1720
|
-
message.namespace = reader.string();
|
|
1721
|
-
break;
|
|
1722
|
-
case /* sessionstorepb.Value value */
|
|
1723
|
-
4:
|
|
1724
|
-
message.value = Value.internalBinaryRead(reader, reader.uint32(), options, message.value);
|
|
1725
|
-
break;
|
|
1726
|
-
case /* string from_id */
|
|
1727
|
-
5:
|
|
1728
|
-
message.fromId = reader.string();
|
|
1729
|
-
break;
|
|
1730
|
-
default:
|
|
1731
|
-
let u = options.readUnknownField;
|
|
1732
|
-
if (u === "throw")
|
|
1733
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1734
|
-
let d = reader.skip(wireType);
|
|
1735
|
-
if (u !== false)
|
|
1736
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1737
|
-
}
|
|
1738
|
-
}
|
|
1739
|
-
return message;
|
|
1740
|
-
}
|
|
1741
|
-
internalBinaryWrite(message, writer, options) {
|
|
1742
|
-
if (message.changeId !== "")
|
|
1743
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.changeId);
|
|
1744
|
-
if (message.key !== "")
|
|
1745
|
-
writer.tag(2, import_runtime8.WireType.LengthDelimited).string(message.key);
|
|
1746
|
-
if (message.namespace !== "")
|
|
1747
|
-
writer.tag(3, import_runtime8.WireType.LengthDelimited).string(message.namespace);
|
|
1748
|
-
if (message.value)
|
|
1749
|
-
Value.internalBinaryWrite(message.value, writer.tag(4, import_runtime8.WireType.LengthDelimited).fork(), options).join();
|
|
1750
|
-
if (message.fromId !== "")
|
|
1751
|
-
writer.tag(5, import_runtime8.WireType.LengthDelimited).string(message.fromId);
|
|
1752
|
-
let u = options.writeUnknownFields;
|
|
1753
|
-
if (u !== false)
|
|
1754
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1755
|
-
return writer;
|
|
1756
|
-
}
|
|
1757
|
-
};
|
|
1758
|
-
var ChangeStream = new ChangeStream$Type();
|
|
1759
|
-
var Select$Type = class extends import_runtime11.MessageType {
|
|
1760
|
-
constructor() {
|
|
1761
|
-
super("sessionstorepb.Select", [
|
|
1762
|
-
{
|
|
1763
|
-
no: 1,
|
|
1764
|
-
name: "all",
|
|
1765
|
-
kind: "scalar",
|
|
1766
|
-
oneof: "match",
|
|
1767
|
-
T: 9
|
|
1768
|
-
/*ScalarType.STRING*/
|
|
1769
|
-
},
|
|
1770
|
-
{
|
|
1771
|
-
no: 2,
|
|
1772
|
-
name: "key",
|
|
1773
|
-
kind: "scalar",
|
|
1774
|
-
oneof: "match",
|
|
1775
|
-
T: 9
|
|
1776
|
-
/*ScalarType.STRING*/
|
|
1777
|
-
},
|
|
1778
|
-
{
|
|
1779
|
-
no: 3,
|
|
1780
|
-
name: "prefix",
|
|
1781
|
-
kind: "scalar",
|
|
1782
|
-
oneof: "match",
|
|
1783
|
-
T: 9
|
|
1784
|
-
/*ScalarType.STRING*/
|
|
1785
|
-
},
|
|
1786
|
-
{
|
|
1787
|
-
no: 4,
|
|
1788
|
-
name: "suffix",
|
|
1789
|
-
kind: "scalar",
|
|
1790
|
-
oneof: "match",
|
|
1791
|
-
T: 9
|
|
1792
|
-
/*ScalarType.STRING*/
|
|
1793
|
-
}
|
|
1794
|
-
]);
|
|
1795
|
-
}
|
|
1796
|
-
create(value) {
|
|
1797
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1798
|
-
message.match = { oneofKind: void 0 };
|
|
1799
|
-
if (value !== void 0)
|
|
1800
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1801
|
-
return message;
|
|
1802
|
-
}
|
|
1803
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1804
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1805
|
-
while (reader.pos < end) {
|
|
1806
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1807
|
-
switch (fieldNo) {
|
|
1808
|
-
case /* string all */
|
|
1809
|
-
1:
|
|
1810
|
-
message.match = {
|
|
1811
|
-
oneofKind: "all",
|
|
1812
|
-
all: reader.string()
|
|
1813
|
-
};
|
|
1814
|
-
break;
|
|
1815
|
-
case /* string key */
|
|
1816
|
-
2:
|
|
1817
|
-
message.match = {
|
|
1818
|
-
oneofKind: "key",
|
|
1819
|
-
key: reader.string()
|
|
1820
|
-
};
|
|
1821
|
-
break;
|
|
1822
|
-
case /* string prefix */
|
|
1823
|
-
3:
|
|
1824
|
-
message.match = {
|
|
1825
|
-
oneofKind: "prefix",
|
|
1826
|
-
prefix: reader.string()
|
|
1827
|
-
};
|
|
1828
|
-
break;
|
|
1829
|
-
case /* string suffix */
|
|
1830
|
-
4:
|
|
1831
|
-
message.match = {
|
|
1832
|
-
oneofKind: "suffix",
|
|
1833
|
-
suffix: reader.string()
|
|
1834
|
-
};
|
|
1835
|
-
break;
|
|
1836
|
-
default:
|
|
1837
|
-
let u = options.readUnknownField;
|
|
1838
|
-
if (u === "throw")
|
|
1839
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1840
|
-
let d = reader.skip(wireType);
|
|
1841
|
-
if (u !== false)
|
|
1842
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1843
|
-
}
|
|
1844
|
-
}
|
|
1845
|
-
return message;
|
|
1846
|
-
}
|
|
1847
|
-
internalBinaryWrite(message, writer, options) {
|
|
1848
|
-
if (message.match.oneofKind === "all")
|
|
1849
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.match.all);
|
|
1850
|
-
if (message.match.oneofKind === "key")
|
|
1851
|
-
writer.tag(2, import_runtime8.WireType.LengthDelimited).string(message.match.key);
|
|
1852
|
-
if (message.match.oneofKind === "prefix")
|
|
1853
|
-
writer.tag(3, import_runtime8.WireType.LengthDelimited).string(message.match.prefix);
|
|
1854
|
-
if (message.match.oneofKind === "suffix")
|
|
1855
|
-
writer.tag(4, import_runtime8.WireType.LengthDelimited).string(message.match.suffix);
|
|
1856
|
-
let u = options.writeUnknownFields;
|
|
1857
|
-
if (u !== false)
|
|
1858
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1859
|
-
return writer;
|
|
1860
|
-
}
|
|
1861
|
-
};
|
|
1862
|
-
var Select = new Select$Type();
|
|
1863
|
-
var OpenRequest$Type = class extends import_runtime11.MessageType {
|
|
1864
|
-
constructor() {
|
|
1865
|
-
super("sessionstorepb.OpenRequest", [
|
|
1866
|
-
{
|
|
1867
|
-
no: 1,
|
|
1868
|
-
name: "change_id",
|
|
1869
|
-
kind: "scalar",
|
|
1870
|
-
T: 9
|
|
1871
|
-
/*ScalarType.STRING*/
|
|
1872
|
-
},
|
|
1873
|
-
{ no: 3, name: "select", kind: "message", repeat: 1, T: () => Select }
|
|
1874
|
-
]);
|
|
1875
|
-
}
|
|
1876
|
-
create(value) {
|
|
1877
|
-
const message = globalThis.Object.create(this.messagePrototype);
|
|
1878
|
-
message.changeId = "";
|
|
1879
|
-
message.select = [];
|
|
1880
|
-
if (value !== void 0)
|
|
1881
|
-
(0, import_runtime10.reflectionMergePartial)(this, message, value);
|
|
1882
|
-
return message;
|
|
1883
|
-
}
|
|
1884
|
-
internalBinaryRead(reader, length, options, target) {
|
|
1885
|
-
let message = target ?? this.create(), end = reader.pos + length;
|
|
1886
|
-
while (reader.pos < end) {
|
|
1887
|
-
let [fieldNo, wireType] = reader.tag();
|
|
1888
|
-
switch (fieldNo) {
|
|
1889
|
-
case /* string change_id */
|
|
1890
|
-
1:
|
|
1891
|
-
message.changeId = reader.string();
|
|
1892
|
-
break;
|
|
1893
|
-
case /* repeated sessionstorepb.Select select */
|
|
1894
|
-
3:
|
|
1895
|
-
message.select.push(Select.internalBinaryRead(reader, reader.uint32(), options));
|
|
1896
|
-
break;
|
|
1897
|
-
default:
|
|
1898
|
-
let u = options.readUnknownField;
|
|
1899
|
-
if (u === "throw")
|
|
1900
|
-
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
1901
|
-
let d = reader.skip(wireType);
|
|
1902
|
-
if (u !== false)
|
|
1903
|
-
(u === true ? import_runtime9.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
1904
|
-
}
|
|
1905
|
-
}
|
|
1906
|
-
return message;
|
|
1907
|
-
}
|
|
1908
|
-
internalBinaryWrite(message, writer, options) {
|
|
1909
|
-
if (message.changeId !== "")
|
|
1910
|
-
writer.tag(1, import_runtime8.WireType.LengthDelimited).string(message.changeId);
|
|
1911
|
-
for (let i = 0; i < message.select.length; i++)
|
|
1912
|
-
Select.internalBinaryWrite(message.select[i], writer.tag(3, import_runtime8.WireType.LengthDelimited).fork(), options).join();
|
|
1913
|
-
let u = options.writeUnknownFields;
|
|
1914
|
-
if (u !== false)
|
|
1915
|
-
(u == true ? import_runtime9.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
1916
|
-
return writer;
|
|
1917
|
-
}
|
|
1918
|
-
};
|
|
1919
|
-
var OpenRequest = new OpenRequest$Type();
|
|
1920
|
-
var Api = new import_runtime_rpc.ServiceType("sessionstorepb.Api", [
|
|
1921
|
-
{ name: "Hello", options: {}, I: HelloRequest, O: HelloResponse },
|
|
1922
|
-
{ name: "Subscribe", serverStreaming: true, options: {}, I: SubscribeRequest, O: Event }
|
|
1923
|
-
]);
|
|
1924
|
-
var Store = new import_runtime_rpc.ServiceType("sessionstorepb.Store", [
|
|
1925
|
-
{ name: "open", serverStreaming: true, options: {}, I: OpenRequest, O: ChangeStream },
|
|
1926
|
-
{ name: "get", options: {}, I: GetRequest, O: GetResponse },
|
|
1927
|
-
{ name: "set", options: {}, I: SetRequest, O: SetResponse },
|
|
1928
|
-
{ name: "delete", options: {}, I: DeleteRequest, O: DeleteResponse }
|
|
1929
|
-
]);
|
|
1930
|
-
|
|
1931
|
-
// src/grpc/sessionstore.client.ts
|
|
1932
|
-
init_define_process_env();
|
|
1933
|
-
var import_runtime_rpc2 = require("@protobuf-ts/runtime-rpc");
|
|
1934
|
-
var StoreClient = class {
|
|
1935
|
-
constructor(_transport) {
|
|
1936
|
-
this._transport = _transport;
|
|
1937
|
-
__publicField(this, "typeName", Store.typeName);
|
|
1938
|
-
__publicField(this, "methods", Store.methods);
|
|
1939
|
-
__publicField(this, "options", Store.options);
|
|
1940
|
-
}
|
|
1941
|
-
/**
|
|
1942
|
-
* open - start listening to updates in keys with provided match patterns
|
|
1943
|
-
* provide change_id as last received ID to resume updates
|
|
1944
|
-
*
|
|
1945
|
-
* @generated from protobuf rpc: open(sessionstorepb.OpenRequest) returns (stream sessionstorepb.ChangeStream);
|
|
1946
|
-
*/
|
|
1947
|
-
open(input, options) {
|
|
1948
|
-
const method = this.methods[0], opt = this._transport.mergeOptions(options);
|
|
1949
|
-
return (0, import_runtime_rpc2.stackIntercept)("serverStreaming", this._transport, method, opt, input);
|
|
1950
|
-
}
|
|
1951
|
-
/**
|
|
1952
|
-
* get last stored value in given key
|
|
1953
|
-
*
|
|
1954
|
-
* @generated from protobuf rpc: get(sessionstorepb.GetRequest) returns (sessionstorepb.GetResponse);
|
|
1955
|
-
*/
|
|
1956
|
-
get(input, options) {
|
|
1957
|
-
const method = this.methods[1], opt = this._transport.mergeOptions(options);
|
|
1958
|
-
return (0, import_runtime_rpc2.stackIntercept)("unary", this._transport, method, opt, input);
|
|
1959
|
-
}
|
|
1960
|
-
/**
|
|
1961
|
-
* set key value
|
|
1962
|
-
*
|
|
1963
|
-
* @generated from protobuf rpc: set(sessionstorepb.SetRequest) returns (sessionstorepb.SetResponse);
|
|
1964
|
-
*/
|
|
1965
|
-
set(input, options) {
|
|
1966
|
-
const method = this.methods[2], opt = this._transport.mergeOptions(options);
|
|
1967
|
-
return (0, import_runtime_rpc2.stackIntercept)("unary", this._transport, method, opt, input);
|
|
1968
|
-
}
|
|
1969
|
-
/**
|
|
1970
|
-
* delete key from store
|
|
1971
|
-
*
|
|
1972
|
-
* @generated from protobuf rpc: delete(sessionstorepb.DeleteRequest) returns (sessionstorepb.DeleteResponse);
|
|
1973
|
-
*/
|
|
1974
|
-
delete(input, options) {
|
|
1975
|
-
const method = this.methods[3], opt = this._transport.mergeOptions(options);
|
|
1976
|
-
return (0, import_runtime_rpc2.stackIntercept)("unary", this._transport, method, opt, input);
|
|
1977
|
-
}
|
|
1978
|
-
};
|
|
1979
|
-
|
|
1980
|
-
// src/hooks/StoreClient.ts
|
|
1981
|
-
var SessionStore = class {
|
|
1982
|
-
constructor(endpoint, token) {
|
|
1983
|
-
__publicField(this, "storeClient");
|
|
1984
|
-
const transport = new import_grpcweb_transport.GrpcWebFetchTransport({
|
|
1985
|
-
baseUrl: endpoint,
|
|
1986
|
-
meta: { Authorization: `Bearer ${token}` }
|
|
1987
|
-
});
|
|
1988
|
-
this.storeClient = new StoreClient(transport);
|
|
1989
|
-
}
|
|
1990
|
-
open({ handleChange, handleError }) {
|
|
1991
|
-
const call = this.storeClient.open({
|
|
1992
|
-
changeId: "",
|
|
1993
|
-
select: []
|
|
1994
|
-
});
|
|
1995
|
-
call.responses.onMessage((message) => {
|
|
1996
|
-
if (message.value) {
|
|
1997
|
-
if (message.value?.data.oneofKind === "str") {
|
|
1998
|
-
const record = JSON.parse(message.value.data.str);
|
|
1999
|
-
handleChange(message.key, record);
|
|
2000
|
-
}
|
|
2001
|
-
} else {
|
|
2002
|
-
handleChange(message.key);
|
|
2003
|
-
}
|
|
2004
|
-
});
|
|
2005
|
-
call.responses.onError((error) => {
|
|
2006
|
-
handleError(error);
|
|
2007
|
-
});
|
|
2008
|
-
call.status.then((status) => {
|
|
2009
|
-
console.log("SessionStoreClient open", status);
|
|
2010
|
-
});
|
|
2011
|
-
}
|
|
2012
|
-
set(key, value) {
|
|
2013
|
-
const valueStr = value ? JSON.stringify(value) : void 0;
|
|
2014
|
-
return this.storeClient.set({
|
|
2015
|
-
key,
|
|
2016
|
-
value: valueStr ? {
|
|
2017
|
-
data: { str: valueStr, oneofKind: "str" },
|
|
2018
|
-
type: 2 /* STRING */
|
|
2019
|
-
} : {
|
|
2020
|
-
data: { oneofKind: void 0 },
|
|
2021
|
-
type: 0 /* NONE */
|
|
2022
|
-
}
|
|
2023
|
-
});
|
|
2024
|
-
}
|
|
2025
|
-
async get(key) {
|
|
2026
|
-
const { response } = await this.storeClient.get({ key });
|
|
2027
|
-
if (response.value?.data.oneofKind === "str") {
|
|
2028
|
-
return JSON.parse(response.value.data.str);
|
|
2029
|
-
}
|
|
2030
|
-
}
|
|
2031
|
-
delete(key) {
|
|
2032
|
-
return this.storeClient.delete({ key });
|
|
2033
|
-
}
|
|
2034
|
-
};
|
|
2035
|
-
|
|
2036
|
-
// src/utils.ts
|
|
2037
|
-
init_define_process_env();
|
|
2038
|
-
function decodeJWT(token) {
|
|
2039
|
-
if (!token || token.length === 0) {
|
|
2040
|
-
throw Error("Token cannot be an empty string or undefined or null");
|
|
2041
|
-
}
|
|
2042
|
-
const parts = token.split(".");
|
|
2043
|
-
if (parts.length !== 3) {
|
|
2044
|
-
throw Error(`Expected 3 '.' separate fields - header, payload and signature respectively`);
|
|
2045
|
-
}
|
|
2046
|
-
const payloadStr = atob(parts[1]);
|
|
2047
|
-
try {
|
|
2048
|
-
return JSON.parse(payloadStr);
|
|
2049
|
-
} catch (err) {
|
|
2050
|
-
throw Error(`couldn't parse to json - ${err.message}`);
|
|
2051
|
-
}
|
|
2052
|
-
}
|
|
2053
|
-
var CURRENT_PAGE_KEY = "currentPage";
|
|
2054
|
-
var SHAPES_THROTTLE_TIME = 11;
|
|
2055
|
-
var PAGES_DEBOUNCE_TIME = 200;
|
|
2056
|
-
|
|
2057
|
-
// src/hooks/useSessionStore.ts
|
|
2058
|
-
var useSessionStore = ({
|
|
2059
|
-
token,
|
|
2060
|
-
endpoint,
|
|
2061
|
-
handleError
|
|
2062
|
-
}) => {
|
|
2063
|
-
const sessionStore = (0, import_react9.useMemo)(() => {
|
|
2064
|
-
try {
|
|
2065
|
-
decodeJWT(token);
|
|
2066
|
-
} catch (err) {
|
|
2067
|
-
return handleError(err);
|
|
2068
|
-
}
|
|
2069
|
-
if (!endpoint || !token) {
|
|
2070
|
-
return handleError(new Error("Missing GRPC endpoint or token"));
|
|
2071
|
-
}
|
|
2072
|
-
const sessionStore2 = new SessionStore(endpoint, token);
|
|
2073
|
-
window.sessionStore = sessionStore2;
|
|
2074
|
-
return sessionStore2;
|
|
2075
|
-
}, [endpoint, token, handleError]);
|
|
2076
|
-
return sessionStore;
|
|
2077
|
-
};
|
|
2078
|
-
|
|
2079
|
-
// src/hooks/useSetEditorPermissions.tsx
|
|
2080
|
-
init_define_process_env();
|
|
2081
|
-
var import_react10 = require("react");
|
|
2082
|
-
var useSetEditorPermissions = ({
|
|
2083
|
-
token,
|
|
2084
|
-
editor,
|
|
2085
|
-
zoomToContent = false,
|
|
2086
|
-
handleError
|
|
2087
|
-
}) => {
|
|
2088
|
-
const { permissions } = (0, import_react10.useMemo)(() => {
|
|
2089
|
-
try {
|
|
2090
|
-
return decodeJWT(token);
|
|
2091
|
-
} catch (err) {
|
|
2092
|
-
handleError(err);
|
|
2093
|
-
return {};
|
|
2094
|
-
}
|
|
2095
|
-
}, [token, handleError]);
|
|
2096
|
-
(0, import_react10.useEffect)(() => {
|
|
2097
|
-
editor?.updateInstanceState({ canMoveCamera: !!zoomToContent });
|
|
2098
|
-
if (!permissions) {
|
|
2099
|
-
return;
|
|
2100
|
-
}
|
|
2101
|
-
const isReadonly = !permissions.includes("write");
|
|
2102
|
-
editor?.updateInstanceState({ isReadonly });
|
|
2103
|
-
if (isReadonly) {
|
|
2104
|
-
editor?.setCurrentTool("hand");
|
|
2105
|
-
}
|
|
2106
|
-
}, [permissions, zoomToContent, editor]);
|
|
2107
|
-
};
|
|
2108
|
-
|
|
2109
|
-
// src/hooks/useCollaboration.ts
|
|
2110
|
-
function useCollaboration({
|
|
2111
|
-
endpoint,
|
|
2112
|
-
token,
|
|
2113
|
-
editor,
|
|
2114
|
-
shapeUtils = [],
|
|
2115
|
-
zoomToContent = false
|
|
2116
|
-
}) {
|
|
2117
|
-
const [store] = (0, import_react11.useState)(() => {
|
|
2118
|
-
const store2 = (0, import_tldraw2.createTLStore)({
|
|
2119
|
-
shapeUtils: [...import_tldraw2.defaultShapeUtils, ...shapeUtils]
|
|
2120
|
-
});
|
|
2121
|
-
store2.loadSnapshot(DEFAULT_STORE);
|
|
2122
|
-
return store2;
|
|
2123
|
-
});
|
|
2124
|
-
const [currentPage, setCurrentPage] = (0, import_react11.useState)(editor?.getCurrentPage());
|
|
2125
|
-
const [storeWithStatus, setStoreWithStatus] = (0, import_react11.useState)({
|
|
2126
|
-
status: "loading"
|
|
2127
|
-
});
|
|
2128
|
-
const handleError = (0, import_react11.useCallback)((error) => {
|
|
2129
|
-
setStoreWithStatus({
|
|
2130
|
-
status: "error",
|
|
2131
|
-
error
|
|
2132
|
-
});
|
|
2133
|
-
}, []);
|
|
2134
|
-
const sessionStore = useSessionStore({ token, endpoint, handleError });
|
|
2135
|
-
useSetEditorPermissions({ token, editor, zoomToContent, handleError });
|
|
2136
|
-
(0, import_react11.useEffect)(() => {
|
|
2137
|
-
if (!currentPage?.id || !editor || editor.getCurrentPageId() === currentPage.id) {
|
|
2138
|
-
return;
|
|
2139
|
-
}
|
|
2140
|
-
if (!editor.getPages()?.find((page) => page.id === currentPage.id)) {
|
|
2141
|
-
editor.createPage(currentPage);
|
|
2142
|
-
}
|
|
2143
|
-
editor?.setCurrentPage(currentPage);
|
|
2144
|
-
}, [currentPage, editor]);
|
|
2145
|
-
(0, import_react11.useEffect)(() => {
|
|
2146
|
-
if (!sessionStore)
|
|
2147
|
-
return;
|
|
2148
|
-
setStoreWithStatus({ status: "loading" });
|
|
2149
|
-
const unsubs = [];
|
|
2150
|
-
const handleChange = (key, value) => {
|
|
2151
|
-
store.mergeRemoteChanges(() => {
|
|
2152
|
-
if (!value) {
|
|
2153
|
-
return store.remove([key]);
|
|
2154
|
-
}
|
|
2155
|
-
if (key === CURRENT_PAGE_KEY) {
|
|
2156
|
-
setCurrentPage(value);
|
|
2157
|
-
} else {
|
|
2158
|
-
store.put([value]);
|
|
2159
|
-
}
|
|
2160
|
-
});
|
|
2161
|
-
};
|
|
2162
|
-
sessionStore.open({
|
|
2163
|
-
handleChange,
|
|
2164
|
-
handleError
|
|
2165
|
-
});
|
|
2166
|
-
unsubs.push(
|
|
2167
|
-
store.listen(
|
|
2168
|
-
(0, import_tldraw2.throttle)(function syncStoreChangesToYjsDoc({ changes }) {
|
|
2169
|
-
Object.values(changes.added).forEach((record) => {
|
|
2170
|
-
sessionStore.set(record.id, record);
|
|
2171
|
-
});
|
|
2172
|
-
Object.values(changes.updated).forEach(([, record]) => {
|
|
2173
|
-
sessionStore.set(record.id, record);
|
|
2174
|
-
});
|
|
2175
|
-
Object.values(changes.removed).forEach((record) => {
|
|
2176
|
-
sessionStore.delete(record.id);
|
|
2177
|
-
});
|
|
2178
|
-
}, SHAPES_THROTTLE_TIME),
|
|
2179
|
-
{ source: "user", scope: "document" }
|
|
2180
|
-
// only sync user's document changes
|
|
2181
|
-
)
|
|
2182
|
-
);
|
|
2183
|
-
setStoreWithStatus({
|
|
2184
|
-
store,
|
|
2185
|
-
status: "synced-remote",
|
|
2186
|
-
connectionStatus: "online"
|
|
2187
|
-
});
|
|
2188
|
-
return () => {
|
|
2189
|
-
unsubs.forEach((fn) => fn());
|
|
2190
|
-
unsubs.length = 0;
|
|
2191
|
-
};
|
|
2192
|
-
}, [store, sessionStore, handleError]);
|
|
2193
|
-
(0, import_react11.useEffect)(() => {
|
|
2194
|
-
if (!editor || !sessionStore)
|
|
2195
|
-
return;
|
|
2196
|
-
const unsubs = [];
|
|
2197
|
-
unsubs.push(
|
|
2198
|
-
store.listen(
|
|
2199
|
-
(0, import_tldraw2.debounce)(({ changes }) => {
|
|
2200
|
-
Object.keys(changes.updated).forEach((key) => {
|
|
2201
|
-
if (!key.includes("instance")) {
|
|
2202
|
-
return;
|
|
2203
|
-
}
|
|
2204
|
-
const newPage = editor?.getCurrentPage();
|
|
2205
|
-
if (newPage?.id !== currentPage?.id) {
|
|
2206
|
-
sessionStore?.set(CURRENT_PAGE_KEY, newPage);
|
|
2207
|
-
setCurrentPage(newPage);
|
|
2208
|
-
}
|
|
2209
|
-
});
|
|
2210
|
-
}, PAGES_DEBOUNCE_TIME),
|
|
2211
|
-
{ source: "user", scope: "session" }
|
|
2212
|
-
)
|
|
2213
|
-
);
|
|
2214
|
-
return () => {
|
|
2215
|
-
unsubs.forEach((fn) => fn());
|
|
2216
|
-
unsubs.length = 0;
|
|
2217
|
-
};
|
|
2218
|
-
}, [currentPage, editor, sessionStore, store]);
|
|
2219
|
-
(0, import_react11.useEffect)(() => {
|
|
2220
|
-
if (!editor || !editor.getInstanceState()?.isReadonly || !zoomToContent)
|
|
2221
|
-
return;
|
|
2222
|
-
store.listen(
|
|
2223
|
-
() => {
|
|
2224
|
-
editor.zoomToFit();
|
|
2225
|
-
},
|
|
2226
|
-
{ source: "remote", scope: "document" }
|
|
2227
|
-
);
|
|
2228
|
-
}, [editor, store, zoomToContent]);
|
|
2229
|
-
return storeWithStatus;
|
|
2230
|
-
}
|
|
2231
|
-
|
|
2232
|
-
// src/Whiteboard.tsx
|
|
2233
|
-
function Whiteboard({ onMount, endpoint, token, zoomToContent, transparentCanvas }) {
|
|
2234
|
-
const [editor, setEditor] = (0, import_react12.useState)();
|
|
2235
|
-
const store = useCollaboration({
|
|
2236
|
-
endpoint,
|
|
2237
|
-
token,
|
|
2238
|
-
editor,
|
|
2239
|
-
zoomToContent
|
|
2240
|
-
});
|
|
2241
|
-
const handleMount = (editor2) => {
|
|
2242
|
-
setEditor(editor2);
|
|
2243
|
-
window.editor = editor2;
|
|
2244
|
-
onMount?.({ store: store.store, editor: editor2 });
|
|
2245
|
-
};
|
|
2246
|
-
return /* @__PURE__ */ import_react12.default.createElement(
|
|
2247
|
-
import_tldraw3.Tldraw,
|
|
2248
|
-
{
|
|
2249
|
-
className: transparentCanvas ? "transparent-canvas" : "",
|
|
2250
|
-
autoFocus: true,
|
|
2251
|
-
store,
|
|
2252
|
-
onMount: handleMount,
|
|
2253
|
-
components: { ErrorFallback },
|
|
2254
|
-
hideUi: editor?.getInstanceState()?.isReadonly
|
|
2255
|
-
}
|
|
2256
|
-
);
|
|
2257
|
-
}
|
|
2258
|
-
/*! Bundled license information:
|
|
2259
|
-
|
|
2260
|
-
classnames/index.js:
|
|
2261
|
-
(*!
|
|
2262
|
-
Copyright (c) 2018 Jed Watson.
|
|
2263
|
-
Licensed under the MIT License (MIT), see
|
|
2264
|
-
http://jedwatson.github.io/classnames
|
|
2265
|
-
*)
|
|
2266
|
-
*/
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@tldraw/tldraw"),n=require("@protobuf-ts/grpcweb-transport"),r=require("@protobuf-ts/runtime-rpc"),a=require("@protobuf-ts/runtime");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=s(e);class o{arraySize=0;array=Array(8);set=null;get isEmpty(){if(this.array)return 0===this.arraySize;if(this.set)return 0===this.set.size;throw new Error("no set or array")}add(e){if(this.array){return-1===this.array.indexOf(e)&&(this.arraySize<8?(this.array[this.arraySize]=e,this.arraySize++,!0):(this.set=new Set(this.array),this.array=null,this.set.add(e),!0))}if(this.set)return!this.set.has(e)&&(this.set.add(e),!0);throw new Error("no set or array")}remove(e){if(this.array){const t=this.array.indexOf(e);return-1!==t&&(this.array[t]=void 0,this.arraySize--,t!==this.arraySize&&(this.array[t]=this.array[this.arraySize],this.array[this.arraySize]=void 0),!0)}if(this.set)return!!this.set.has(e)&&(this.set.delete(e),!0);throw new Error("no set or array")}visit(e){if(this.array)for(let t=0;t<this.arraySize;t++){const n=this.array[t];void 0!==n&&e(n)}else{if(!this.set)throw new Error("no set or array");this.set.forEach(e)}}}const l=Symbol("RESET_VALUE");class c{constructor(e){this.capacity=e,this.buffer=new Array(e)}index=0;buffer;pushEntry(e,t,n){void 0!==n&&(n!==l?(this.buffer[this.index]=[e,t,n],this.index=(this.index+1)%this.capacity):this.clear())}clear(){this.index=0,this.buffer.fill(void 0)}getChangesSince(e){const{index:t,capacity:n,buffer:r}=this;for(let a=0;a<n;a++){const s=(t-1+n-a)%n,i=r[s];if(!i)return l;const[o,c]=i;if(0===a&&e>=c)return[];if(o<=e&&e<c){const e=a+1,t=new Array(e);for(let a=0;a<e;a++)t[a]=r[(s+a)%n][2];return t}}return l}}function d(e){return e&&"object"==typeof e&&"parents"in e}function h(e){for(let t=0,n=e.parents.length;t<n;t++)if(e.parents[t].__unsafe__getWithoutCapture(),e.parents[t].lastChangedEpoch!==e.parentEpochs[t])return!0;return!1}const u=(e,t)=>{if(e.children.remove(t)&&e.children.isEmpty&&d(e))for(let t=0,n=e.parents.length;t<n;t++)u(e.parents[t],e)},p=(e,t)=>{if(e.children.add(t)&&d(e))for(let t=0,n=e.parents.length;t<n;t++)p(e.parents[t],e)};function f(e,t){return e===t||Object.is(e,t)||Boolean(e&&t&&"function"==typeof e.equals&&e.equals(t))}const g=Object.freeze([]),m=Symbol.for("__@tldraw/state__"),y=globalThis;y[m]?console.error('Multiple versions of @tldraw/state detected. This will cause unexpected behavior. Please add "resolutions" (yarn/pnpm) or "overrides" (npm) in your package.json to ensure only one version of @tldraw/state is loaded.'):y[m]=!0;class w{constructor(e,t){this.below=e,this.child=t}offset=0;numNewParents=0;maybeRemoved}let k=null;function b(e){k=new w(k,e)}function v(){const e=k;k=e.below;if(e.numNewParents>0||e.offset!==e.child.parents.length){for(let t=e.offset;t<e.child.parents.length;t++){const n=e.child.parents[t];e.child.parents.indexOf(n)>=e.offset&&u(n,e.child)}if(e.child.parents.length=e.offset,e.child.parentEpochs.length=e.offset,k?.maybeRemoved)for(let t=0;t<k.maybeRemoved.length;t++){const n=k.maybeRemoved[t];-1===e.child.parents.indexOf(n)&&u(n,e.child)}}}const E=-1;let T=!1;let _=!1;const S=Symbol("UNINITIALIZED");class N{constructor(e,t){this.value=e,this.diff=t}}class U{constructor(e,t,n){this.name=e,this.derive=t,n?.historyLength&&(this.historyBuffer=new c(n.historyLength)),this.computeDiff=n?.computeDiff,this.isEqual=n?.isEqual??f}lastChangedEpoch=E;lastTraversedEpoch=E;lastCheckedEpoch=E;parents=[];parentEpochs=[];children=new o;get isActivelyListening(){return!this.children.isEmpty}historyBuffer;state=S;computeDiff;isEqual;__unsafe__getWithoutCapture(){const e=this.lastChangedEpoch===E;if(!(e||0!==this.lastCheckedEpoch&&h(this)))return this.lastCheckedEpoch=0,this.state;try{b(this);const t=this.derive(this.state,this.lastCheckedEpoch),n=t instanceof N?t.value:t;if(this.state===S||!this.isEqual(n,this.state)){if(this.historyBuffer&&!e){const e=t instanceof N?t.diff:void 0;this.historyBuffer.pushEntry(this.lastChangedEpoch,0,e??this.computeDiff?.(this.state,n,this.lastCheckedEpoch,0)??l)}this.lastChangedEpoch=0,this.state=n}return this.lastCheckedEpoch=0,this.state}finally{v()}}get(){const e=this.__unsafe__getWithoutCapture();return function(e){if(k){const t=k.child.parents.indexOf(e);if(t<0&&(k.numNewParents++,k.child.isActivelyListening&&p(e,k.child)),t<0||t>=k.offset){if(t!==k.offset&&t>0){const e=k.child.parents[k.offset];k.maybeRemoved?-1===k.maybeRemoved.indexOf(e)&&k.maybeRemoved.push(e):k.maybeRemoved=[e]}k.child.parents[k.offset]=e,k.child.parentEpochs[k.offset]=e.lastChangedEpoch,k.offset++}}}(this),e}get value(){return T||(T=!0,console.warn("Using Signal.value is deprecated and will be removed in the near future. Please use Signal.get() instead.")),this.get()}getDiffSince(e){return this.get(),e>=this.lastChangedEpoch?g:this.historyBuffer?.getChangesSince(e)??l}}function R(e={},t,n,r){return r.get?(_||(_=!0,console.warn("Using `@computed` as a decorator for getters is deprecated and will be removed in the near future. Please refactor to use `@computed` as a decorator for methods.\n\n// Before\n@computed\nget foo() {\n\treturn 'foo'\n}\n\n// After\n@computed\ngetFoo() {\n\treturn 'foo'\n}\n")),function(e={},t,n,r){const a=r.get,s=Symbol.for("__@tldraw/state__computed__"+n);return r.get=function(){let t=this[s];return t||(t=new U(n,a.bind(this),e),Object.defineProperty(this,s,{enumerable:!1,configurable:!1,writable:!1,value:t})),t.get()},r}(e,0,n,r)):function(e={},t,n,r){const a=r.value,s=Symbol.for("__@tldraw/state__computed__"+n);return r.value=function(){let t=this[s];return t||(t=new U(n,a.bind(this),e),Object.defineProperty(this,s,{enumerable:!1,configurable:!1,writable:!1,value:t})),t.get()},r.value[W]=!0,r}(e,0,n,r)}const W="@@__isComputedMethod__@@";class F{constructor(e,t,n){this.name=e,this.runEffect=t,this._scheduleEffect=n?.scheduleEffect}_isActivelyListening=!1;get isActivelyListening(){return this._isActivelyListening}lastTraversedEpoch=E;lastReactedEpoch=E;_scheduleCount=0;get scheduleCount(){return this._scheduleCount}parentEpochs=[];parents=[];_scheduleEffect;maybeScheduleEffect(){this._isActivelyListening&&0!==this.lastReactedEpoch&&(!this.parents.length||h(this)?this.scheduleEffect():this.lastReactedEpoch=0)}scheduleEffect(){this._scheduleCount++,this._scheduleEffect?this._scheduleEffect(this.maybeExecute):this.execute()}maybeExecute=()=>{this._isActivelyListening&&this.execute()};attach(){this._isActivelyListening=!0;for(let e=0,t=this.parents.length;e<t;e++)p(this.parents[e],this)}detach(){this._isActivelyListening=!1;for(let e=0,t=this.parents.length;e<t;e++)u(this.parents[e],this)}execute(){try{b(this);const e=this.runEffect(this.lastReactedEpoch);return this.lastReactedEpoch=0,e}finally{v()}}}function C(){const t=arguments,n=3===t.length?t[2]:[t[0]],r=3===t.length?t[0]:`useValue(${t[0].name})`,a=e.useRef(!0);a.current=!0;const s=e.useMemo((()=>1===t.length?t[0]:function(){if(1===arguments.length){const e=arguments[0];return(t,n,r)=>R(e,0,n,r)}return"string"==typeof arguments[0]?new U(arguments[0],arguments[1],arguments[2]):R(void 0,0,arguments[1],arguments[2])}(r,(()=>{if(a.current)return t[1]();try{return t[1]()}catch{return{}}}))),n);try{const{subscribe:t,getSnapshot:n}=e.useMemo((()=>({subscribe:e=>function(e,t,n){const r=new F(e,t,n);return r.attach(),r.scheduleEffect(),()=>{r.detach()}}(`useValue(${r})`,(()=>{s.get(),e()})),getSnapshot:()=>s.get()})),[s]);return e.useSyncExternalStore(t,n,n)}finally{a.current=!1}}var x,B={exports:{}};
|
|
2
|
+
/*!
|
|
3
|
+
Copyright (c) 2018 Jed Watson.
|
|
4
|
+
Licensed under the MIT License (MIT), see
|
|
5
|
+
http://jedwatson.github.io/classnames
|
|
6
|
+
*/x=B,function(){var e={}.hasOwnProperty;function t(){for(var e="",t=0;t<arguments.length;t++){var a=arguments[t];a&&(e=r(e,n(a)))}return e}function n(n){if("string"==typeof n||"number"==typeof n)return n;if("object"!=typeof n)return"";if(Array.isArray(n))return t.apply(null,n);if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]"))return n.toString();var a="";for(var s in n)e.call(n,s)&&n[s]&&(a=r(a,s));return a}function r(e,t){return t?e?e+" "+t:e+t:e}x.exports?(t.default=t,x.exports=t):window.classNames=t}();var P=B.exports;const O=({error:n,editor:r})=>{const a=e.useRef(null),[s,o]=e.useState("production"!==process.env.NODE_ENV),[l,c]=e.useState(!1),[d,h]=e.useState(!1),u=n instanceof Error?n.message:String(n),p=n instanceof Error?n.stack:null,f=C("isDarkMode",(()=>{try{if(r)return r.user.isDarkMode}catch{}return null}),[r]),[g,m]=e.useState(null);e.useLayoutEffect((()=>{null!==f&&m(f);let e=a.current?.parentElement,t=!1;for(;e;){if(e.classList.contains("tl-theme__dark")||e.classList.contains("tl-theme__light")){t=!0;break}e=e.parentElement}m(t?null:window.matchMedia("(prefers-color-scheme: dark)").matches)}),[f]),e.useEffect((()=>{if(l){const e=setTimeout((()=>{c(!1)}),2e3);return()=>clearTimeout(e)}}),[l]);return i.default.createElement("div",{ref:a,className:P("tl-container tl-error-boundary",null===g?"":g?"tl-theme__dark":"tl-theme__light")},i.default.createElement("div",{className:"tl-error-boundary__overlay"}),i.default.createElement("div",{className:P("tl-modal","tl-error-boundary__content",{"tl-error-boundary__content__expanded":s&&!d})},d?i.default.createElement(i.default.Fragment,null,i.default.createElement("h2",null,"Are you sure?"),i.default.createElement("p",null,"Resetting your data will delete your drawing and cannot be undone."),i.default.createElement("div",{className:"tl-error-boundary__content__actions"},i.default.createElement("button",{onClick:()=>h(!1)},"Cancel"),i.default.createElement("button",{className:"tl-error-boundary__reset",onClick:async()=>{t.hardResetEditor()}},"Reset data"))):i.default.createElement(i.default.Fragment,null,i.default.createElement("h2",null,"Something's gone wrong."),i.default.createElement("p",null,"Sorry, we encountered an error. Please refresh the page to continue. If you keep seeing this error, you can ",i.default.createElement("a",{href:"https://discord.gg/pTge2BwDBq"},"ask for help on Discord"),"."),s&&i.default.createElement("div",{className:"tl-error-boundary__content__error"},i.default.createElement("pre",null,i.default.createElement("code",null,p??u)),i.default.createElement("button",{onClick:()=>{const e=document.createElement("textarea");e.value=p??u,document.body.appendChild(e),e.select(),document.execCommand("copy"),e.remove(),c(!0)}},l?"Copied!":"Copy")),i.default.createElement("div",{className:"tl-error-boundary__content__actions"},i.default.createElement("button",{onClick:()=>o(!s)},s?"Hide details":"Show details"),i.default.createElement("div",{className:"tl-error-boundary__content__actions__group"},i.default.createElement("button",{className:"tl-error-boundary__reset",onClick:()=>h(!0)},"Reset data"),i.default.createElement("button",{className:"tl-error-boundary__refresh",onClick:()=>{t.refreshPage()}},"Refresh Page"))))))},I={store:{"document:document":{gridSize:10,name:"",meta:{},id:"document:document",typeName:"document"},"pointer:pointer":{id:"pointer:pointer",typeName:"pointer",x:0,y:0,lastActivityTimestamp:0,meta:{}},"page:page":{meta:{},id:"page:page",name:"Page 1",index:"a1",typeName:"page"},"camera:page:page":{x:0,y:0,z:1,meta:{},id:"camera:page:page",typeName:"camera"},"instance_page_state:page:page":{editingShapeId:null,croppingShapeId:null,selectedShapeIds:[],hoveredShapeId:null,erasingShapeIds:[],hintingShapeIds:[],focusedGroupId:null,meta:{},id:"instance_page_state:page:page",pageId:"page:page",typeName:"instance_page_state"},"instance:instance":{followingUserId:null,opacityForNextShape:1,stylesForNextShape:{},brush:null,scribble:null,cursor:{type:"default",rotation:0},isFocusMode:!1,exportBackground:!0,isDebugMode:!1,isToolLocked:!1,screenBounds:{x:0,y:0,w:720,h:400},zoomBrush:null,isGridMode:!1,isPenMode:!1,chatMessage:"",isChatting:!1,highlightedUserIds:[],canMoveCamera:!0,isFocused:!0,devicePixelRatio:2,isCoarsePointer:!1,isHoveringCanvas:!1,openMenus:[],isChangingStyle:!1,isReadonly:!1,meta:{},id:"instance:instance",currentPageId:"page:page",typeName:"instance"}},schema:{schemaVersion:1,storeVersion:4,recordVersions:{asset:{version:1,subTypeKey:"type",subTypeVersions:{image:2,video:2,bookmark:0}},camera:{version:1},document:{version:2},instance:{version:21},instance_page_state:{version:5},page:{version:1},shape:{version:3,subTypeKey:"type",subTypeVersions:{group:0,text:1,bookmark:1,draw:1,geo:7,note:4,line:1,frame:0,arrow:1,highlight:0,embed:4,image:2,video:1}},instance_presence:{version:5},pointer:{version:1}}}};var M,L;(L=M||(M={}))[L.NONE=0]="NONE",L[L.BYTES=1]="BYTES",L[L.STRING=2]="STRING",L[L.INTEGER=3]="INTEGER",L[L.FLOAT=4]="FLOAT";class $ extends a.MessageType{constructor(){super("sessionstorepb.HelloRequest",[{no:1,name:"name",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.name="",void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();if(1===t)s.name=e.string();else{let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.name&&t.tag(1,a.WireType.LengthDelimited).string(e.name);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const j=new $;class D extends a.MessageType{constructor(){super("sessionstorepb.HelloResponse",[{no:1,name:"response",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.response="",void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();if(1===t)s.response=e.string();else{let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.response&&t.tag(1,a.WireType.LengthDelimited).string(e.response);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const H=new D;class K extends a.MessageType{constructor(){super("sessionstorepb.SubscribeRequest",[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"offset",kind:"scalar",T:3,L:0}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.name="",t.offset=0n,void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();switch(t){case 1:s.name=e.string();break;case 2:s.offset=e.int64().toBigInt();break;default:let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.name&&t.tag(1,a.WireType.LengthDelimited).string(e.name),0n!==e.offset&&t.tag(2,a.WireType.Varint).int64(e.offset);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const q=new K;class A extends a.MessageType{constructor(){super("sessionstorepb.Event",[{no:1,name:"message",kind:"scalar",T:9},{no:2,name:"sequence",kind:"scalar",T:3,L:0}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.message="",t.sequence=0n,void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();switch(t){case 1:s.message=e.string();break;case 2:s.sequence=e.int64().toBigInt();break;default:let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.message&&t.tag(1,a.WireType.LengthDelimited).string(e.message),0n!==e.sequence&&t.tag(2,a.WireType.Varint).int64(e.sequence);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const z=new A;class V extends a.MessageType{constructor(){super("sessionstorepb.Value",[{no:1,name:"type",kind:"enum",T:()=>["sessionstorepb.Value.Type",M]},{no:2,name:"number",kind:"scalar",oneof:"data",T:3,L:0},{no:3,name:"float",kind:"scalar",oneof:"data",T:2},{no:4,name:"str",kind:"scalar",oneof:"data",T:9},{no:5,name:"raw_bytes",kind:"scalar",oneof:"data",T:12}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type=0,t.data={oneofKind:void 0},void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();switch(t){case 1:s.type=e.int32();break;case 2:s.data={oneofKind:"number",number:e.int64().toBigInt()};break;case 3:s.data={oneofKind:"float",float:e.float()};break;case 4:s.data={oneofKind:"str",str:e.string()};break;case 5:s.data={oneofKind:"rawBytes",rawBytes:e.bytes()};break;default:let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){0!==e.type&&t.tag(1,a.WireType.Varint).int32(e.type),"number"===e.data.oneofKind&&t.tag(2,a.WireType.Varint).int64(e.data.number),"float"===e.data.oneofKind&&t.tag(3,a.WireType.Bit32).float(e.data.float),"str"===e.data.oneofKind&&t.tag(4,a.WireType.LengthDelimited).string(e.data.str),"rawBytes"===e.data.oneofKind&&t.tag(5,a.WireType.LengthDelimited).bytes(e.data.rawBytes);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const G=new V;class J extends a.MessageType{constructor(){super("sessionstorepb.GetRequest",[{no:1,name:"key",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.key="",void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();if(1===t)s.key=e.string();else{let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.key&&t.tag(1,a.WireType.LengthDelimited).string(e.key);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const Y=new J;class Z extends a.MessageType{constructor(){super("sessionstorepb.GetResponse",[{no:1,name:"key",kind:"scalar",T:9},{no:2,name:"namespace",kind:"scalar",T:9},{no:3,name:"value",kind:"message",T:()=>G}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.key="",t.namespace="",void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();switch(t){case 1:s.key=e.string();break;case 2:s.namespace=e.string();break;case 3:s.value=G.internalBinaryRead(e,e.uint32(),n,s.value);break;default:let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.key&&t.tag(1,a.WireType.LengthDelimited).string(e.key),""!==e.namespace&&t.tag(2,a.WireType.LengthDelimited).string(e.namespace),e.value&&G.internalBinaryWrite(e.value,t.tag(3,a.WireType.LengthDelimited).fork(),n).join();let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const Q=new Z;class X extends a.MessageType{constructor(){super("sessionstorepb.DeleteRequest",[{no:1,name:"key",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.key="",void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();if(1===t)s.key=e.string();else{let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.key&&t.tag(1,a.WireType.LengthDelimited).string(e.key);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const ee=new X;class te extends a.MessageType{constructor(){super("sessionstorepb.DeleteResponse",[])}create(e){const t=globalThis.Object.create(this.messagePrototype);return void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){return r??this.create()}internalBinaryWrite(e,t,n){let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const ne=new te;class re extends a.MessageType{constructor(){super("sessionstorepb.SetRequest",[{no:1,name:"key",kind:"scalar",T:9},{no:3,name:"value",kind:"message",T:()=>G}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.key="",void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();switch(t){case 1:s.key=e.string();break;case 3:s.value=G.internalBinaryRead(e,e.uint32(),n,s.value);break;default:let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.key&&t.tag(1,a.WireType.LengthDelimited).string(e.key),e.value&&G.internalBinaryWrite(e.value,t.tag(3,a.WireType.LengthDelimited).fork(),n).join();let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const ae=new re;class se extends a.MessageType{constructor(){super("sessionstorepb.SetResponse",[])}create(e){const t=globalThis.Object.create(this.messagePrototype);return void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){return r??this.create()}internalBinaryWrite(e,t,n){let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const ie=new se;class oe extends a.MessageType{constructor(){super("sessionstorepb.ChangeStream",[{no:1,name:"change_id",kind:"scalar",T:9},{no:2,name:"key",kind:"scalar",T:9},{no:3,name:"namespace",kind:"scalar",T:9},{no:4,name:"value",kind:"message",T:()=>G},{no:5,name:"from_id",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.changeId="",t.key="",t.namespace="",t.fromId="",void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();switch(t){case 1:s.changeId=e.string();break;case 2:s.key=e.string();break;case 3:s.namespace=e.string();break;case 4:s.value=G.internalBinaryRead(e,e.uint32(),n,s.value);break;case 5:s.fromId=e.string();break;default:let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.changeId&&t.tag(1,a.WireType.LengthDelimited).string(e.changeId),""!==e.key&&t.tag(2,a.WireType.LengthDelimited).string(e.key),""!==e.namespace&&t.tag(3,a.WireType.LengthDelimited).string(e.namespace),e.value&&G.internalBinaryWrite(e.value,t.tag(4,a.WireType.LengthDelimited).fork(),n).join(),""!==e.fromId&&t.tag(5,a.WireType.LengthDelimited).string(e.fromId);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const le=new oe;class ce extends a.MessageType{constructor(){super("sessionstorepb.Select",[{no:1,name:"all",kind:"scalar",oneof:"match",T:9},{no:2,name:"key",kind:"scalar",oneof:"match",T:9},{no:3,name:"prefix",kind:"scalar",oneof:"match",T:9},{no:4,name:"suffix",kind:"scalar",oneof:"match",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.match={oneofKind:void 0},void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();switch(t){case 1:s.match={oneofKind:"all",all:e.string()};break;case 2:s.match={oneofKind:"key",key:e.string()};break;case 3:s.match={oneofKind:"prefix",prefix:e.string()};break;case 4:s.match={oneofKind:"suffix",suffix:e.string()};break;default:let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){"all"===e.match.oneofKind&&t.tag(1,a.WireType.LengthDelimited).string(e.match.all),"key"===e.match.oneofKind&&t.tag(2,a.WireType.LengthDelimited).string(e.match.key),"prefix"===e.match.oneofKind&&t.tag(3,a.WireType.LengthDelimited).string(e.match.prefix),"suffix"===e.match.oneofKind&&t.tag(4,a.WireType.LengthDelimited).string(e.match.suffix);let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const de=new ce;class he extends a.MessageType{constructor(){super("sessionstorepb.OpenRequest",[{no:1,name:"change_id",kind:"scalar",T:9},{no:3,name:"select",kind:"message",repeat:1,T:()=>de}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.changeId="",t.select=[],void 0!==e&&a.reflectionMergePartial(this,t,e),t}internalBinaryRead(e,t,n,r){let s=r??this.create(),i=e.pos+t;for(;e.pos<i;){let[t,r]=e.tag();switch(t){case 1:s.changeId=e.string();break;case 3:s.select.push(de.internalBinaryRead(e,e.uint32(),n));break;default:let i=n.readUnknownField;if("throw"===i)throw new globalThis.Error(`Unknown field ${t} (wire type ${r}) for ${this.typeName}`);let o=e.skip(r);!1!==i&&(!0===i?a.UnknownFieldHandler.onRead:i)(this.typeName,s,t,r,o)}}return s}internalBinaryWrite(e,t,n){""!==e.changeId&&t.tag(1,a.WireType.LengthDelimited).string(e.changeId);for(let r=0;r<e.select.length;r++)de.internalBinaryWrite(e.select[r],t.tag(3,a.WireType.LengthDelimited).fork(),n).join();let r=n.writeUnknownFields;return!1!==r&&(1==r?a.UnknownFieldHandler.onWrite:r)(this.typeName,e,t),t}}const ue=new he;new r.ServiceType("sessionstorepb.Api",[{name:"Hello",options:{},I:j,O:H},{name:"Subscribe",serverStreaming:!0,options:{},I:q,O:z}]);const pe=new r.ServiceType("sessionstorepb.Store",[{name:"open",serverStreaming:!0,options:{},I:ue,O:le},{name:"get",options:{},I:Y,O:Q},{name:"set",options:{},I:ae,O:ie},{name:"delete",options:{},I:ee,O:ne}]);class fe{constructor(e){Object.defineProperty(this,"_transport",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"typeName",{enumerable:!0,configurable:!0,writable:!0,value:pe.typeName}),Object.defineProperty(this,"methods",{enumerable:!0,configurable:!0,writable:!0,value:pe.methods}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:pe.options})}open(e,t){const n=this.methods[0],a=this._transport.mergeOptions(t);return r.stackIntercept("serverStreaming",this._transport,n,a,e)}get(e,t){const n=this.methods[1],a=this._transport.mergeOptions(t);return r.stackIntercept("unary",this._transport,n,a,e)}set(e,t){const n=this.methods[2],a=this._transport.mergeOptions(t);return r.stackIntercept("unary",this._transport,n,a,e)}delete(e,t){const n=this.methods[3],a=this._transport.mergeOptions(t);return r.stackIntercept("unary",this._transport,n,a,e)}}class ge{constructor(e,t){Object.defineProperty(this,"storeClient",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const r=new n.GrpcWebFetchTransport({baseUrl:e,meta:{Authorization:`Bearer ${t}`}});this.storeClient=new fe(r)}open({handleChange:e,handleError:t}){const n=this.storeClient.open({changeId:"",select:[]});n.responses.onMessage((t=>{if(t.value){if("str"===t.value?.data.oneofKind){const n=JSON.parse(t.value.data.str);e(t.key,n)}}else e(t.key)})),n.responses.onError((e=>{t(e)})),n.status.then((e=>{console.log("SessionStoreClient open",e)}))}set(e,t){const n=t?JSON.stringify(t):void 0;return this.storeClient.set({key:e,value:n?{data:{str:n,oneofKind:"str"},type:M.STRING}:{data:{oneofKind:void 0},type:M.NONE}})}async get(e){const{response:t}=await this.storeClient.get({key:e});if("str"===t.value?.data.oneofKind)return JSON.parse(t.value.data.str)}delete(e){return this.storeClient.delete({key:e})}}function me(e){if(!e||0===e.length)throw Error("Token cannot be an empty string or undefined or null");const t=e.split(".");if(3!==t.length)throw Error("Expected 3 '.' separate fields - header, payload and signature respectively");const n=atob(t[1]);try{return JSON.parse(n)}catch(e){throw Error(`couldn't parse to json - ${e.message}`)}}const ye="currentPage",we=11,ke=200,be=({token:t,endpoint:n,handleError:r})=>e.useMemo((()=>{try{me(t)}catch(e){return r(e)}if(!n||!t)return r(new Error("Missing GRPC endpoint or token"));const e=new ge(n,t);return window.sessionStore=e,e}),[n,t,r]),ve=({token:t,editor:n,zoomToContent:r=!1,handleError:a})=>{const{permissions:s}=e.useMemo((()=>{try{return me(t)}catch(e){return a(e),{}}}),[t,a]);e.useEffect((()=>{if(n?.updateInstanceState({canMoveCamera:!!r}),!s)return;const e=!s.includes("write");n?.updateInstanceState({isReadonly:e}),e&&n?.setCurrentTool("hand")}),[s,r,n])};exports.Whiteboard=function({onMount:n,endpoint:r,token:a,zoomToContent:s,transparentCanvas:o}){const[l,c]=e.useState(),d=function({endpoint:n,token:r,editor:a,shapeUtils:s=[],zoomToContent:i=!1}){const[o]=e.useState((()=>{const e=t.createTLStore({shapeUtils:[...t.defaultShapeUtils,...s]});return e.loadSnapshot(I),e})),[l,c]=e.useState(a?.getCurrentPage()),[d,h]=e.useState({status:"loading"}),u=e.useCallback((e=>{h({status:"error",error:e})}),[]),p=be({token:r,endpoint:n,handleError:u});return ve({token:r,editor:a,zoomToContent:i,handleError:u}),e.useEffect((()=>{l?.id&&a&&a.getCurrentPageId()!==l.id&&(a.getPages()?.find((e=>e.id===l.id))||a.createPage(l),a?.setCurrentPage(l))}),[l,a]),e.useEffect((()=>{if(!p)return;h({status:"loading"});const e=[];return p.open({handleChange:(e,t)=>{o.mergeRemoteChanges((()=>{if(!t)return o.remove([e]);e===ye?c(t):o.put([t])}))},handleError:u}),e.push(o.listen(t.throttle((function({changes:e}){Object.values(e.added).forEach((e=>{p.set(e.id,e)})),Object.values(e.updated).forEach((([,e])=>{p.set(e.id,e)})),Object.values(e.removed).forEach((e=>{p.delete(e.id)}))}),we),{source:"user",scope:"document"})),h({store:o,status:"synced-remote",connectionStatus:"online"}),()=>{e.forEach((e=>e())),e.length=0}}),[o,p,u]),e.useEffect((()=>{if(!a||!p)return;const e=[];return e.push(o.listen(t.debounce((({changes:e})=>{Object.keys(e.updated).forEach((e=>{if(!e.includes("instance"))return;const t=a?.getCurrentPage();t?.id!==l?.id&&(p?.set(ye,t),c(t))}))}),ke),{source:"user",scope:"session"})),()=>{e.forEach((e=>e())),e.length=0}}),[l,a,p,o]),e.useEffect((()=>{a&&a.getInstanceState()?.isReadonly&&i&&o.listen((()=>{a.zoomToFit()}),{source:"remote",scope:"document"})}),[a,o,i]),d}({endpoint:r,token:a,editor:l,zoomToContent:s});return i.default.createElement(t.Tldraw,{className:o?"transparent-canvas":"",autoFocus:!0,store:d,onMount:e=>{c(e),window.editor=e,n?.({store:d.store,editor:e})},components:{ErrorFallback:O},hideUi:l?.getInstanceState()?.isReadonly})};
|
|
2267
7
|
//# sourceMappingURL=index.cjs.js.map
|