@noya-app/noya-multiplayer-react 0.1.63 → 0.1.64
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/.turbo/turbo-build.log +11 -11
- package/CHANGELOG.md +10 -0
- package/dist/index.bundle.js +18 -18
- package/dist/index.d.mts +33 -10
- package/dist/index.d.ts +33 -10
- package/dist/index.js +1410 -329
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1357 -283
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/NoyaStateContext.tsx +225 -19
- package/src/inspector/StateInspector.tsx +141 -20
- package/src/inspector/StateInspectorTitleLabel.tsx +13 -0
- package/src/inspector/sections/ActivityEventsSection.tsx +136 -0
- package/src/inspector/utils.ts +2 -2
- package/src/noyaApp.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -45,10 +45,10 @@ var require_access = __commonJS({
|
|
|
45
45
|
const accessed = _getPath(node, indexPath, options);
|
|
46
46
|
return accessed[accessed.length - 1];
|
|
47
47
|
}
|
|
48
|
-
let
|
|
49
|
-
while (
|
|
50
|
-
let index =
|
|
51
|
-
const children = options.getChildren(node,
|
|
48
|
+
let path2 = indexPath.slice();
|
|
49
|
+
while (path2.length > 0) {
|
|
50
|
+
let index = path2.shift();
|
|
51
|
+
const children = options.getChildren(node, path2);
|
|
52
52
|
const child = children[index];
|
|
53
53
|
if (!child) {
|
|
54
54
|
return void 0;
|
|
@@ -61,12 +61,12 @@ var require_access = __commonJS({
|
|
|
61
61
|
return _getPath(node, indexPath, options).slice(0, -1);
|
|
62
62
|
}
|
|
63
63
|
function _getPath(node, indexPath, options) {
|
|
64
|
-
let
|
|
64
|
+
let path2 = indexPath.slice();
|
|
65
65
|
let result = [node];
|
|
66
|
-
while (
|
|
67
|
-
let index =
|
|
66
|
+
while (path2.length > 0) {
|
|
67
|
+
let index = path2.shift();
|
|
68
68
|
const context = options.includeTraversalContext ? makeTraversalContext(result) : void 0;
|
|
69
|
-
const children = options.getChildren(node,
|
|
69
|
+
const children = options.getChildren(node, path2, context);
|
|
70
70
|
const child = children[index];
|
|
71
71
|
if (!child) {
|
|
72
72
|
return result;
|
|
@@ -81,20 +81,20 @@ var require_access = __commonJS({
|
|
|
81
81
|
const accessed = accessPath(node, indexPath, options);
|
|
82
82
|
return accessed[accessed.length - 1];
|
|
83
83
|
}
|
|
84
|
-
let
|
|
85
|
-
while (
|
|
86
|
-
let index =
|
|
87
|
-
node = options.getChildren(node,
|
|
84
|
+
let path2 = indexPath.slice();
|
|
85
|
+
while (path2.length > 0) {
|
|
86
|
+
let index = path2.shift();
|
|
87
|
+
node = options.getChildren(node, path2)[index];
|
|
88
88
|
}
|
|
89
89
|
return node;
|
|
90
90
|
}
|
|
91
91
|
function accessPath(node, indexPath, options) {
|
|
92
|
-
let
|
|
92
|
+
let path2 = indexPath.slice();
|
|
93
93
|
let result = [node];
|
|
94
|
-
while (
|
|
95
|
-
let index =
|
|
94
|
+
while (path2.length > 0) {
|
|
95
|
+
let index = path2.shift();
|
|
96
96
|
const context = options.includeTraversalContext ? makeTraversalContext(result) : void 0;
|
|
97
|
-
node = options.getChildren(node,
|
|
97
|
+
node = options.getChildren(node, path2, context)[index];
|
|
98
98
|
result.push(node);
|
|
99
99
|
}
|
|
100
100
|
return result;
|
|
@@ -608,40 +608,40 @@ var require_transformPath = __commonJS({
|
|
|
608
608
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
609
609
|
exports2.transformPath = transformPath;
|
|
610
610
|
var sort_1 = require_sort();
|
|
611
|
-
function commonAncestor(
|
|
612
|
-
const length = Math.min(
|
|
611
|
+
function commonAncestor(path2, otherPath) {
|
|
612
|
+
const length = Math.min(path2.length, otherPath.length);
|
|
613
613
|
for (let i = 0; i < length; i++) {
|
|
614
|
-
if (
|
|
615
|
-
return
|
|
614
|
+
if (path2[i] !== otherPath[i]) {
|
|
615
|
+
return path2.slice(0, i);
|
|
616
616
|
}
|
|
617
617
|
}
|
|
618
|
-
return
|
|
618
|
+
return path2.slice(0, length);
|
|
619
619
|
}
|
|
620
|
-
function transformPath(
|
|
621
|
-
if (otherPath.length >
|
|
622
|
-
return
|
|
620
|
+
function transformPath(path2, operation, otherPath, count = 1) {
|
|
621
|
+
if (otherPath.length > path2.length || (0, sort_1.comparePathsByComponent)(otherPath, path2) > 0) {
|
|
622
|
+
return path2;
|
|
623
623
|
}
|
|
624
624
|
if (otherPath.length === 0 && operation === "remove") {
|
|
625
625
|
return void 0;
|
|
626
626
|
}
|
|
627
|
-
const common = commonAncestor(
|
|
628
|
-
const adjustmentIndex = common.length ===
|
|
629
|
-
const pathValue =
|
|
627
|
+
const common = commonAncestor(path2, otherPath);
|
|
628
|
+
const adjustmentIndex = common.length === path2.length || common.length === otherPath.length ? common.length - 1 : common.length;
|
|
629
|
+
const pathValue = path2[adjustmentIndex];
|
|
630
630
|
const otherPathValue = otherPath[adjustmentIndex];
|
|
631
631
|
if (operation === "insert" && otherPathValue <= pathValue) {
|
|
632
|
-
const newPath = [...
|
|
632
|
+
const newPath = [...path2];
|
|
633
633
|
newPath[adjustmentIndex] += count;
|
|
634
634
|
return newPath;
|
|
635
635
|
} else if (operation === "remove") {
|
|
636
636
|
if (otherPathValue === pathValue) {
|
|
637
637
|
return void 0;
|
|
638
638
|
} else if (otherPathValue < pathValue) {
|
|
639
|
-
const newPath = [...
|
|
639
|
+
const newPath = [...path2];
|
|
640
640
|
newPath[adjustmentIndex] -= count;
|
|
641
641
|
return newPath;
|
|
642
642
|
}
|
|
643
643
|
}
|
|
644
|
-
return
|
|
644
|
+
return path2;
|
|
645
645
|
}
|
|
646
646
|
}
|
|
647
647
|
});
|
|
@@ -807,15 +807,15 @@ var require_operation = __commonJS({
|
|
|
807
807
|
switch (operation.type) {
|
|
808
808
|
case "insert": {
|
|
809
809
|
const otherPath = parentPath.concat(operation.index);
|
|
810
|
-
return transformedPaths.map((
|
|
810
|
+
return transformedPaths.map((path2) => path2 ? (0, transformPath_1.transformPath)(path2, "insert", otherPath, operation.nodes.length) : void 0);
|
|
811
811
|
}
|
|
812
812
|
case "remove": {
|
|
813
813
|
const otherPaths = [...operation.indexes].reverse().map((index) => parentPath.concat(index));
|
|
814
|
-
return transformedPaths.map((
|
|
814
|
+
return transformedPaths.map((path2) => {
|
|
815
815
|
for (const otherPath of otherPaths) {
|
|
816
|
-
|
|
816
|
+
path2 = path2 ? (0, transformPath_1.transformPath)(path2, "remove", otherPath) : void 0;
|
|
817
817
|
}
|
|
818
|
-
return
|
|
818
|
+
return path2;
|
|
819
819
|
});
|
|
820
820
|
}
|
|
821
821
|
case "removeThenInsert": {
|
|
@@ -952,22 +952,22 @@ var require_splice = __commonJS({
|
|
|
952
952
|
return _spliceWithPathTracking(node, options);
|
|
953
953
|
}
|
|
954
954
|
function _spliceWithPathTracking(node, options) {
|
|
955
|
-
const { path, deleteCount = 0, nodes, track } = options;
|
|
956
|
-
if (
|
|
955
|
+
const { path: path2, deleteCount = 0, nodes, track } = options;
|
|
956
|
+
if (path2.length === 0) {
|
|
957
957
|
throw new Error(`Can't splice at the root`);
|
|
958
958
|
}
|
|
959
|
-
const pathsToRemove = getPathsToRemove(
|
|
960
|
-
const operations = (0, operation_1.getInsertionOperations)(
|
|
959
|
+
const pathsToRemove = getPathsToRemove(path2, deleteCount);
|
|
960
|
+
const operations = (0, operation_1.getInsertionOperations)(path2, nodes, (0, operation_1.getRemovalOperations)(pathsToRemove));
|
|
961
961
|
const transformedPaths = track ? (0, operation_1.transformPathsByOperations)(track, operations) : [];
|
|
962
962
|
return {
|
|
963
963
|
node: (0, operation_1.applyOperations)(node, operations, options),
|
|
964
964
|
paths: transformedPaths
|
|
965
965
|
};
|
|
966
966
|
}
|
|
967
|
-
function getPathsToRemove(
|
|
967
|
+
function getPathsToRemove(path2, deleteCount) {
|
|
968
968
|
let pathsToRemove = [];
|
|
969
|
-
let parentPath =
|
|
970
|
-
let index =
|
|
969
|
+
let parentPath = path2.slice(0, -1);
|
|
970
|
+
let index = path2[path2.length - 1];
|
|
971
971
|
for (let i = 0; i < deleteCount; i++) {
|
|
972
972
|
pathsToRemove.push(parentPath.concat(index + i));
|
|
973
973
|
}
|
|
@@ -981,7 +981,7 @@ var require_defineTree = __commonJS({
|
|
|
981
981
|
"../../node_modules/tree-visit/lib/defineTree.js"(exports2) {
|
|
982
982
|
"use strict";
|
|
983
983
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
984
|
-
exports2.defineTree =
|
|
984
|
+
exports2.defineTree = defineTree3;
|
|
985
985
|
var access_1 = require_access();
|
|
986
986
|
var diagram_1 = require_diagram();
|
|
987
987
|
var entries_1 = require_entries();
|
|
@@ -1030,7 +1030,7 @@ var require_defineTree = __commonJS({
|
|
|
1030
1030
|
this._getChildren = this.baseOptions.getChildren;
|
|
1031
1031
|
}
|
|
1032
1032
|
};
|
|
1033
|
-
function
|
|
1033
|
+
function defineTree3(getChildren) {
|
|
1034
1034
|
return new Tree(getChildren, {});
|
|
1035
1035
|
}
|
|
1036
1036
|
}
|
|
@@ -1107,6 +1107,391 @@ var require_lib = __commonJS({
|
|
|
1107
1107
|
}
|
|
1108
1108
|
});
|
|
1109
1109
|
|
|
1110
|
+
// ../../node_modules/imfs/lib/types.js
|
|
1111
|
+
var require_types = __commonJS({
|
|
1112
|
+
"../../node_modules/imfs/lib/types.js"(exports2) {
|
|
1113
|
+
"use strict";
|
|
1114
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1115
|
+
}
|
|
1116
|
+
});
|
|
1117
|
+
|
|
1118
|
+
// ../../node_modules/imfs/lib/node.js
|
|
1119
|
+
var require_node = __commonJS({
|
|
1120
|
+
"../../node_modules/imfs/lib/node.js"(exports2) {
|
|
1121
|
+
"use strict";
|
|
1122
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1123
|
+
exports2.Nodes = void 0;
|
|
1124
|
+
function createFile(data, metadata) {
|
|
1125
|
+
return { type: "file", data, metadata };
|
|
1126
|
+
}
|
|
1127
|
+
function createDirectory(children = {}, metadata) {
|
|
1128
|
+
return { type: "directory", children, metadata };
|
|
1129
|
+
}
|
|
1130
|
+
function isFile(node) {
|
|
1131
|
+
return node.type === "file";
|
|
1132
|
+
}
|
|
1133
|
+
function isDirectory(node) {
|
|
1134
|
+
return node.type === "directory";
|
|
1135
|
+
}
|
|
1136
|
+
function getMetadata(node) {
|
|
1137
|
+
return node.metadata;
|
|
1138
|
+
}
|
|
1139
|
+
function readDirectory(directory) {
|
|
1140
|
+
return Object.keys(directory.children);
|
|
1141
|
+
}
|
|
1142
|
+
function getChild(directory, name) {
|
|
1143
|
+
return directory.children[name];
|
|
1144
|
+
}
|
|
1145
|
+
function hasChild(directory, name) {
|
|
1146
|
+
return name in directory.children;
|
|
1147
|
+
}
|
|
1148
|
+
exports2.Nodes = {
|
|
1149
|
+
createDirectory,
|
|
1150
|
+
createFile,
|
|
1151
|
+
getChild,
|
|
1152
|
+
getMetadata,
|
|
1153
|
+
hasChild,
|
|
1154
|
+
isDirectory,
|
|
1155
|
+
isFile,
|
|
1156
|
+
readDirectory
|
|
1157
|
+
};
|
|
1158
|
+
}
|
|
1159
|
+
});
|
|
1160
|
+
|
|
1161
|
+
// ../../node_modules/imfs/lib/path.js
|
|
1162
|
+
var require_path = __commonJS({
|
|
1163
|
+
"../../node_modules/imfs/lib/path.js"(exports2) {
|
|
1164
|
+
"use strict";
|
|
1165
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1166
|
+
exports2.dirname = exports2.basename = exports2.extname = exports2.join = exports2.normalize = exports2.sep = void 0;
|
|
1167
|
+
exports2.sep = "/";
|
|
1168
|
+
function preserveLeadingAndTrailingSlash(original, updated) {
|
|
1169
|
+
if (original.startsWith("/")) {
|
|
1170
|
+
updated = "/" + updated;
|
|
1171
|
+
}
|
|
1172
|
+
if (updated[updated.length - 1] !== "/" && original.endsWith("/")) {
|
|
1173
|
+
updated = updated + "/";
|
|
1174
|
+
}
|
|
1175
|
+
return updated;
|
|
1176
|
+
}
|
|
1177
|
+
function normalize(filename) {
|
|
1178
|
+
const components = filename.split(exports2.sep).filter((component) => !!component);
|
|
1179
|
+
let i = 0;
|
|
1180
|
+
let length = components.length - 1;
|
|
1181
|
+
while (i < length) {
|
|
1182
|
+
if (components[i] === ".") {
|
|
1183
|
+
components.splice(i, 1);
|
|
1184
|
+
length--;
|
|
1185
|
+
} else if (components[i] === ".." && i !== 0) {
|
|
1186
|
+
components.splice(i - 1, 2);
|
|
1187
|
+
length -= 2;
|
|
1188
|
+
i -= 1;
|
|
1189
|
+
} else if (components[i] === "" && components[i + 1] === "") {
|
|
1190
|
+
components.splice(i, 1);
|
|
1191
|
+
length--;
|
|
1192
|
+
} else {
|
|
1193
|
+
i++;
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
return preserveLeadingAndTrailingSlash(filename, components.join(exports2.sep));
|
|
1197
|
+
}
|
|
1198
|
+
exports2.normalize = normalize;
|
|
1199
|
+
function join(...components) {
|
|
1200
|
+
let result = normalize(components.join(exports2.sep));
|
|
1201
|
+
if (result === "") {
|
|
1202
|
+
result = ".";
|
|
1203
|
+
}
|
|
1204
|
+
return result;
|
|
1205
|
+
}
|
|
1206
|
+
exports2.join = join;
|
|
1207
|
+
function extname(filename) {
|
|
1208
|
+
const index = filename.lastIndexOf(".");
|
|
1209
|
+
return index !== -1 ? filename.slice(index) : filename;
|
|
1210
|
+
}
|
|
1211
|
+
exports2.extname = extname;
|
|
1212
|
+
function basename(filename, extname2) {
|
|
1213
|
+
if (extname2 && filename.endsWith(extname2)) {
|
|
1214
|
+
filename = filename.slice(0, -extname2.length);
|
|
1215
|
+
}
|
|
1216
|
+
let sepIndex = filename.lastIndexOf(exports2.sep);
|
|
1217
|
+
if (sepIndex === filename.length - 1) {
|
|
1218
|
+
filename = filename.slice(0, -1);
|
|
1219
|
+
return filename.length > 1 ? basename(filename) : filename;
|
|
1220
|
+
}
|
|
1221
|
+
return filename.slice(sepIndex + 1);
|
|
1222
|
+
}
|
|
1223
|
+
exports2.basename = basename;
|
|
1224
|
+
function dirname(filename) {
|
|
1225
|
+
let base = basename(filename);
|
|
1226
|
+
let result = filename.slice(0, -(base.length + 1));
|
|
1227
|
+
if (result === "") {
|
|
1228
|
+
if (filename.startsWith(exports2.sep)) {
|
|
1229
|
+
result = exports2.sep;
|
|
1230
|
+
} else {
|
|
1231
|
+
result = ".";
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
return result;
|
|
1235
|
+
}
|
|
1236
|
+
exports2.dirname = dirname;
|
|
1237
|
+
}
|
|
1238
|
+
});
|
|
1239
|
+
|
|
1240
|
+
// ../../node_modules/imfs/lib/entries.js
|
|
1241
|
+
var require_entries2 = __commonJS({
|
|
1242
|
+
"../../node_modules/imfs/lib/entries.js"(exports2) {
|
|
1243
|
+
"use strict";
|
|
1244
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1245
|
+
exports2.Entries = void 0;
|
|
1246
|
+
var node_1 = require_node();
|
|
1247
|
+
var path_1 = require_path();
|
|
1248
|
+
function getEntries(entry) {
|
|
1249
|
+
const [pathname, node] = entry;
|
|
1250
|
+
return node_1.Nodes.isDirectory(node) ? Object.entries(node.children).map(([key, value]) => [
|
|
1251
|
+
(0, path_1.join)(pathname, key),
|
|
1252
|
+
value
|
|
1253
|
+
]) : [];
|
|
1254
|
+
}
|
|
1255
|
+
function createEntry(pathname, node) {
|
|
1256
|
+
return [pathname, node];
|
|
1257
|
+
}
|
|
1258
|
+
exports2.Entries = {
|
|
1259
|
+
createEntry,
|
|
1260
|
+
getEntries
|
|
1261
|
+
};
|
|
1262
|
+
}
|
|
1263
|
+
});
|
|
1264
|
+
|
|
1265
|
+
// ../../node_modules/imfs/lib/volume/paths.js
|
|
1266
|
+
var require_paths = __commonJS({
|
|
1267
|
+
"../../node_modules/imfs/lib/volume/paths.js"(exports2) {
|
|
1268
|
+
"use strict";
|
|
1269
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1270
|
+
exports2.getNewAndParentName = exports2.normalizePathLikeInternal = exports2.getPathComponents = void 0;
|
|
1271
|
+
var path_1 = require_path();
|
|
1272
|
+
function getPathComponents(filepath) {
|
|
1273
|
+
return getPathComponentsNormalized((0, path_1.normalize)(filepath));
|
|
1274
|
+
function getPathComponentsNormalized(filepath2) {
|
|
1275
|
+
if (filepath2.startsWith("..")) {
|
|
1276
|
+
throw new Error(`Invalid path ${filepath2}, can't go up past root.`);
|
|
1277
|
+
}
|
|
1278
|
+
if (filepath2.startsWith(".") || filepath2.startsWith("/")) {
|
|
1279
|
+
return getPathComponentsNormalized(filepath2.slice(1));
|
|
1280
|
+
}
|
|
1281
|
+
if (filepath2 === "")
|
|
1282
|
+
return [];
|
|
1283
|
+
return filepath2.split(path_1.sep).filter((component) => !!component);
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
exports2.getPathComponents = getPathComponents;
|
|
1287
|
+
function normalizePathLikeInternal(pathlike) {
|
|
1288
|
+
return typeof pathlike === "string" ? getPathComponents(pathlike) : pathlike;
|
|
1289
|
+
}
|
|
1290
|
+
exports2.normalizePathLikeInternal = normalizePathLikeInternal;
|
|
1291
|
+
function getNewAndParentName(pathlike) {
|
|
1292
|
+
const parentName = typeof pathlike === "string" ? (0, path_1.dirname)(pathlike) : pathlike.slice(0, -1);
|
|
1293
|
+
const newName = typeof pathlike === "string" ? (0, path_1.basename)(pathlike) : pathlike[pathlike.length - 1];
|
|
1294
|
+
return { parentName, newName };
|
|
1295
|
+
}
|
|
1296
|
+
exports2.getNewAndParentName = getNewAndParentName;
|
|
1297
|
+
}
|
|
1298
|
+
});
|
|
1299
|
+
|
|
1300
|
+
// ../../node_modules/imfs/lib/volume/read.js
|
|
1301
|
+
var require_read = __commonJS({
|
|
1302
|
+
"../../node_modules/imfs/lib/volume/read.js"(exports2) {
|
|
1303
|
+
"use strict";
|
|
1304
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1305
|
+
exports2.getMetadata = exports2.readDirectory = exports2.readFile = exports2.getNode = exports2.getNodeInternal = void 0;
|
|
1306
|
+
var node_1 = require_node();
|
|
1307
|
+
var path_1 = require_path();
|
|
1308
|
+
var paths_1 = require_paths();
|
|
1309
|
+
function getNodeInternal(root, pathlike, options) {
|
|
1310
|
+
const components = (0, paths_1.normalizePathLikeInternal)(pathlike);
|
|
1311
|
+
let i = 0;
|
|
1312
|
+
let current = root;
|
|
1313
|
+
while (i < components.length) {
|
|
1314
|
+
let component = components[i];
|
|
1315
|
+
if (current.type !== "directory") {
|
|
1316
|
+
throw new Error(`File ${(0, path_1.join)(...components.slice(0, i))} is not a directory`);
|
|
1317
|
+
}
|
|
1318
|
+
let node = node_1.Nodes.getChild(current, component);
|
|
1319
|
+
if (!node) {
|
|
1320
|
+
if (options.makeIntermediateDirectoryMetadata) {
|
|
1321
|
+
const child = node_1.Nodes.createDirectory({}, options.makeIntermediateDirectoryMetadata((0, path_1.join)(...components.slice(0, i + 1))));
|
|
1322
|
+
current.children[component] = child;
|
|
1323
|
+
node = child;
|
|
1324
|
+
} else if (options.makeIntermediateDirectories) {
|
|
1325
|
+
const child = node_1.Nodes.createDirectory();
|
|
1326
|
+
current.children[component] = child;
|
|
1327
|
+
node = child;
|
|
1328
|
+
} else {
|
|
1329
|
+
throw new Error(`File ${(0, path_1.join)(...components.slice(0, i + 1))} not found`);
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
current = node;
|
|
1333
|
+
i++;
|
|
1334
|
+
}
|
|
1335
|
+
return current;
|
|
1336
|
+
}
|
|
1337
|
+
exports2.getNodeInternal = getNodeInternal;
|
|
1338
|
+
function getNode(root, pathlike) {
|
|
1339
|
+
return getNodeInternal(root, pathlike, {});
|
|
1340
|
+
}
|
|
1341
|
+
exports2.getNode = getNode;
|
|
1342
|
+
function readFile(root, pathlike) {
|
|
1343
|
+
const components = (0, paths_1.normalizePathLikeInternal)(pathlike);
|
|
1344
|
+
const node = getNode(root, components);
|
|
1345
|
+
if (!node_1.Nodes.isFile(node)) {
|
|
1346
|
+
throw new Error(`Can't read, ${(0, path_1.join)(...components)} not a file`);
|
|
1347
|
+
}
|
|
1348
|
+
return node.data;
|
|
1349
|
+
}
|
|
1350
|
+
exports2.readFile = readFile;
|
|
1351
|
+
function readDirectory(root, pathlike) {
|
|
1352
|
+
const components = (0, paths_1.normalizePathLikeInternal)(pathlike);
|
|
1353
|
+
const node = getNode(root, components);
|
|
1354
|
+
if (!node_1.Nodes.isDirectory(node)) {
|
|
1355
|
+
throw new Error(`Can't read, ${(0, path_1.join)(...components)} not a directory`);
|
|
1356
|
+
}
|
|
1357
|
+
return node_1.Nodes.readDirectory(node);
|
|
1358
|
+
}
|
|
1359
|
+
exports2.readDirectory = readDirectory;
|
|
1360
|
+
function getMetadata(root, pathlike) {
|
|
1361
|
+
const components = (0, paths_1.normalizePathLikeInternal)(pathlike);
|
|
1362
|
+
const node = getNode(root, components);
|
|
1363
|
+
return node.metadata;
|
|
1364
|
+
}
|
|
1365
|
+
exports2.getMetadata = getMetadata;
|
|
1366
|
+
}
|
|
1367
|
+
});
|
|
1368
|
+
|
|
1369
|
+
// ../../node_modules/imfs/lib/volume/write.js
|
|
1370
|
+
var require_write = __commonJS({
|
|
1371
|
+
"../../node_modules/imfs/lib/volume/write.js"(exports2) {
|
|
1372
|
+
"use strict";
|
|
1373
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1374
|
+
exports2.create = exports2.setMetadata = exports2.removeFile = exports2.makeDirectory = exports2.writeFile = exports2.setNode = void 0;
|
|
1375
|
+
var node_1 = require_node();
|
|
1376
|
+
var paths_1 = require_paths();
|
|
1377
|
+
var read_1 = require_read();
|
|
1378
|
+
function setNode(root, pathlike, node, options) {
|
|
1379
|
+
const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);
|
|
1380
|
+
const parent = (0, read_1.getNodeInternal)(root, parentName, options !== null && options !== void 0 ? options : {});
|
|
1381
|
+
if (!node_1.Nodes.isDirectory(parent)) {
|
|
1382
|
+
throw new Error(`Can't create ${newName}, ${parentName} not a directory`);
|
|
1383
|
+
}
|
|
1384
|
+
parent.children[newName] = node;
|
|
1385
|
+
}
|
|
1386
|
+
exports2.setNode = setNode;
|
|
1387
|
+
function writeFile(root, pathlike, data, options) {
|
|
1388
|
+
var _a;
|
|
1389
|
+
setNode(root, pathlike, node_1.Nodes.createFile(data, (_a = options) === null || _a === void 0 ? void 0 : _a.metadata), options);
|
|
1390
|
+
}
|
|
1391
|
+
exports2.writeFile = writeFile;
|
|
1392
|
+
function makeDirectory(root, pathlike, options) {
|
|
1393
|
+
var _a;
|
|
1394
|
+
const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);
|
|
1395
|
+
const parent = (0, read_1.getNodeInternal)(root, parentName, options !== null && options !== void 0 ? options : {});
|
|
1396
|
+
if (!node_1.Nodes.isDirectory(parent)) {
|
|
1397
|
+
throw new Error(`Can't create ${newName}, ${parentName} not a directory`);
|
|
1398
|
+
}
|
|
1399
|
+
const existing = node_1.Nodes.getChild(parent, newName);
|
|
1400
|
+
if (existing && node_1.Nodes.isDirectory(parent.children[newName])) {
|
|
1401
|
+
return;
|
|
1402
|
+
}
|
|
1403
|
+
parent.children[newName] = node_1.Nodes.createDirectory({}, (_a = options) === null || _a === void 0 ? void 0 : _a.metadata);
|
|
1404
|
+
}
|
|
1405
|
+
exports2.makeDirectory = makeDirectory;
|
|
1406
|
+
function removeFile(root, pathlike) {
|
|
1407
|
+
const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);
|
|
1408
|
+
const parent = (0, read_1.getNode)(root, parentName);
|
|
1409
|
+
if (!node_1.Nodes.isDirectory(parent)) {
|
|
1410
|
+
throw new Error(`Can't remove file ${newName}, ${parentName} not a directory`);
|
|
1411
|
+
}
|
|
1412
|
+
delete parent.children[newName];
|
|
1413
|
+
}
|
|
1414
|
+
exports2.removeFile = removeFile;
|
|
1415
|
+
function setMetadata(root, pathlike, metadata) {
|
|
1416
|
+
const node = (0, read_1.getNode)(root, pathlike);
|
|
1417
|
+
node.metadata = metadata;
|
|
1418
|
+
}
|
|
1419
|
+
exports2.setMetadata = setMetadata;
|
|
1420
|
+
function create(options) {
|
|
1421
|
+
return node_1.Nodes.createDirectory({}, options && "metadata" in options ? options.metadata : void 0);
|
|
1422
|
+
}
|
|
1423
|
+
exports2.create = create;
|
|
1424
|
+
}
|
|
1425
|
+
});
|
|
1426
|
+
|
|
1427
|
+
// ../../node_modules/imfs/lib/volume.js
|
|
1428
|
+
var require_volume = __commonJS({
|
|
1429
|
+
"../../node_modules/imfs/lib/volume.js"(exports2) {
|
|
1430
|
+
"use strict";
|
|
1431
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1432
|
+
exports2.Volume = void 0;
|
|
1433
|
+
var paths_1 = require_paths();
|
|
1434
|
+
var read_1 = require_read();
|
|
1435
|
+
var write_1 = require_write();
|
|
1436
|
+
exports2.Volume = {
|
|
1437
|
+
// paths
|
|
1438
|
+
getPathComponents: paths_1.getPathComponents,
|
|
1439
|
+
// read
|
|
1440
|
+
getMetadata: read_1.getMetadata,
|
|
1441
|
+
getNode: read_1.getNode,
|
|
1442
|
+
readDirectory: read_1.readDirectory,
|
|
1443
|
+
readFile: read_1.readFile,
|
|
1444
|
+
// write
|
|
1445
|
+
create: write_1.create,
|
|
1446
|
+
makeDirectory: write_1.makeDirectory,
|
|
1447
|
+
removeFile: write_1.removeFile,
|
|
1448
|
+
setMetadata: write_1.setMetadata,
|
|
1449
|
+
setNode: write_1.setNode,
|
|
1450
|
+
writeFile: write_1.writeFile
|
|
1451
|
+
};
|
|
1452
|
+
}
|
|
1453
|
+
});
|
|
1454
|
+
|
|
1455
|
+
// ../../node_modules/imfs/lib/index.js
|
|
1456
|
+
var require_lib2 = __commonJS({
|
|
1457
|
+
"../../node_modules/imfs/lib/index.js"(exports2) {
|
|
1458
|
+
"use strict";
|
|
1459
|
+
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
|
|
1460
|
+
if (k2 === void 0) k2 = k;
|
|
1461
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() {
|
|
1462
|
+
return m[k];
|
|
1463
|
+
} });
|
|
1464
|
+
} : function(o, m, k, k2) {
|
|
1465
|
+
if (k2 === void 0) k2 = k;
|
|
1466
|
+
o[k2] = m[k];
|
|
1467
|
+
});
|
|
1468
|
+
var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
|
|
1469
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
1470
|
+
} : function(o, v) {
|
|
1471
|
+
o["default"] = v;
|
|
1472
|
+
});
|
|
1473
|
+
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
|
|
1474
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
|
|
1475
|
+
};
|
|
1476
|
+
var __importStar = exports2 && exports2.__importStar || function(mod) {
|
|
1477
|
+
if (mod && mod.__esModule) return mod;
|
|
1478
|
+
var result = {};
|
|
1479
|
+
if (mod != null) {
|
|
1480
|
+
for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
1481
|
+
}
|
|
1482
|
+
__setModuleDefault(result, mod);
|
|
1483
|
+
return result;
|
|
1484
|
+
};
|
|
1485
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
1486
|
+
exports2.path = void 0;
|
|
1487
|
+
__exportStar(require_types(), exports2);
|
|
1488
|
+
__exportStar(require_node(), exports2);
|
|
1489
|
+
__exportStar(require_entries2(), exports2);
|
|
1490
|
+
__exportStar(require_volume(), exports2);
|
|
1491
|
+
exports2.path = __importStar(require_path());
|
|
1492
|
+
}
|
|
1493
|
+
});
|
|
1494
|
+
|
|
1110
1495
|
// src/index.ts
|
|
1111
1496
|
var src_exports = {};
|
|
1112
1497
|
__export(src_exports, {
|
|
@@ -1128,7 +1513,10 @@ __export(src_exports, {
|
|
|
1128
1513
|
importAll: () => importAll,
|
|
1129
1514
|
parseAppDataParameter: () => parseAppDataParameter,
|
|
1130
1515
|
replaceDeep: () => replaceDeep,
|
|
1516
|
+
resourceToMediaItem: () => resourceToMediaItem,
|
|
1131
1517
|
useAIManager: () => useAIManager,
|
|
1518
|
+
useActivityEvents: () => useActivityEvents,
|
|
1519
|
+
useActivityEventsForManager: () => useActivityEventsForManager,
|
|
1132
1520
|
useAnyEphemeralUserData: () => useAnyEphemeralUserData,
|
|
1133
1521
|
useAnyNoyaManager: () => useAnyNoyaManager,
|
|
1134
1522
|
useAnyNoyaStateContext: () => useAnyNoyaStateContext,
|
|
@@ -1137,11 +1525,14 @@ __export(src_exports, {
|
|
|
1137
1525
|
useAssets: () => useAssets,
|
|
1138
1526
|
useCallableAITools: () => useCallableAITools,
|
|
1139
1527
|
useColorScheme: () => useColorScheme,
|
|
1528
|
+
useConnectedUser: () => useConnectedUser,
|
|
1529
|
+
useConnectedUsers: () => useConnectedUsers,
|
|
1140
1530
|
useConnectedUsersManager: () => useConnectedUsersManager,
|
|
1141
1531
|
useCurrentUserId: () => useCurrentUserId,
|
|
1142
1532
|
useIOManager: () => useIOManager,
|
|
1143
1533
|
useInputs: () => useInputs,
|
|
1144
1534
|
useIsInitialized: () => useIsInitialized,
|
|
1535
|
+
useIsProcessing: () => useIsProcessing,
|
|
1145
1536
|
useManagedHistory: () => useManagedHistory,
|
|
1146
1537
|
useManagedState: () => useManagedState,
|
|
1147
1538
|
useMultiplayerState: () => useMultiplayerState,
|
|
@@ -1151,6 +1542,8 @@ __export(src_exports, {
|
|
|
1151
1542
|
usePipelineManager: () => usePipelineManager,
|
|
1152
1543
|
usePublish: () => usePublish,
|
|
1153
1544
|
useRegisterAITool: () => useRegisterAITool,
|
|
1545
|
+
useResourceManager: () => useResourceManager,
|
|
1546
|
+
useResources: () => useResources,
|
|
1154
1547
|
useSecret: () => useSecret,
|
|
1155
1548
|
useSecretManager: () => useSecretManager,
|
|
1156
1549
|
useSecrets: () => useSecrets,
|
|
@@ -1162,12 +1555,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
1162
1555
|
__reExport(src_exports, require("@noya-app/state-manager"), module.exports);
|
|
1163
1556
|
|
|
1164
1557
|
// src/ai.ts
|
|
1165
|
-
var
|
|
1166
|
-
|
|
1167
|
-
// src/NoyaStateContext.tsx
|
|
1168
|
-
var import_observable = require("@noya-app/observable");
|
|
1169
|
-
var import_react_utils3 = require("@noya-app/react-utils");
|
|
1170
|
-
var import_react16 = __toESM(require("react"));
|
|
1558
|
+
var import_react19 = require("react");
|
|
1171
1559
|
|
|
1172
1560
|
// ../../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs
|
|
1173
1561
|
var TransformKind = Symbol.for("TypeBox.Transform");
|
|
@@ -1724,14 +2112,14 @@ function Number2(options = {}) {
|
|
|
1724
2112
|
}
|
|
1725
2113
|
|
|
1726
2114
|
// ../../node_modules/@sinclair/typebox/build/esm/type/string/string.mjs
|
|
1727
|
-
function
|
|
2115
|
+
function String2(options = {}) {
|
|
1728
2116
|
return { ...options, [Kind]: "String", type: "string" };
|
|
1729
2117
|
}
|
|
1730
2118
|
|
|
1731
2119
|
// ../../node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs
|
|
1732
2120
|
function* FromUnion(syntax) {
|
|
1733
2121
|
const trim = syntax.trim().replace(/"|'/g, "");
|
|
1734
|
-
return trim === "boolean" ? yield Boolean() : trim === "number" ? yield Number2() : trim === "bigint" ? yield BigInt2() : trim === "string" ? yield
|
|
2122
|
+
return trim === "boolean" ? yield Boolean() : trim === "number" ? yield Number2() : trim === "bigint" ? yield BigInt2() : trim === "string" ? yield String2() : yield (() => {
|
|
1735
2123
|
const literals = trim.split("|").map((literal) => Literal(literal.trim()));
|
|
1736
2124
|
return literals.length === 0 ? Never() : literals.length === 1 ? literals[0] : UnionEvaluated(literals);
|
|
1737
2125
|
})();
|
|
@@ -2820,7 +3208,7 @@ function FromPromise3(left, right) {
|
|
|
2820
3208
|
return IsStructuralRight(right) ? StructuralRight(left, right) : type_exports.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True : !type_exports.IsPromise(right) ? ExtendsResult.False : IntoBooleanResult(Visit3(left.item, right.item));
|
|
2821
3209
|
}
|
|
2822
3210
|
function RecordKey(schema) {
|
|
2823
|
-
return PatternNumberExact in schema.patternProperties ? Number2() : PatternStringExact in schema.patternProperties ?
|
|
3211
|
+
return PatternNumberExact in schema.patternProperties ? Number2() : PatternStringExact in schema.patternProperties ? String2() : Throw("Unknown record key pattern");
|
|
2824
3212
|
}
|
|
2825
3213
|
function RecordValue(schema) {
|
|
2826
3214
|
return PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] : PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] : Throw("Unable to get record value schema");
|
|
@@ -2840,8 +3228,8 @@ function FromRecord(left, right) {
|
|
|
2840
3228
|
return IsStructuralRight(right) ? StructuralRight(left, right) : type_exports.IsObject(right) ? FromObjectRight(left, right) : !type_exports.IsRecord(right) ? ExtendsResult.False : Visit3(RecordValue(left), RecordValue(right));
|
|
2841
3229
|
}
|
|
2842
3230
|
function FromRegExp(left, right) {
|
|
2843
|
-
const L = type_exports.IsRegExp(left) ?
|
|
2844
|
-
const R = type_exports.IsRegExp(right) ?
|
|
3231
|
+
const L = type_exports.IsRegExp(left) ? String2() : left;
|
|
3232
|
+
const R = type_exports.IsRegExp(right) ? String2() : right;
|
|
2845
3233
|
return Visit3(L, R);
|
|
2846
3234
|
}
|
|
2847
3235
|
function FromStringRight(left, right) {
|
|
@@ -3477,30 +3865,30 @@ var TransformDecodeBuilder = class {
|
|
|
3477
3865
|
constructor(schema) {
|
|
3478
3866
|
this.schema = schema;
|
|
3479
3867
|
}
|
|
3480
|
-
Decode(
|
|
3481
|
-
return new TransformEncodeBuilder(this.schema,
|
|
3868
|
+
Decode(decode2) {
|
|
3869
|
+
return new TransformEncodeBuilder(this.schema, decode2);
|
|
3482
3870
|
}
|
|
3483
3871
|
};
|
|
3484
3872
|
var TransformEncodeBuilder = class {
|
|
3485
3873
|
schema;
|
|
3486
3874
|
decode;
|
|
3487
|
-
constructor(schema,
|
|
3875
|
+
constructor(schema, decode2) {
|
|
3488
3876
|
this.schema = schema;
|
|
3489
|
-
this.decode =
|
|
3877
|
+
this.decode = decode2;
|
|
3490
3878
|
}
|
|
3491
|
-
EncodeTransform(
|
|
3492
|
-
const Encode = (value) => schema[TransformKind].Encode(
|
|
3879
|
+
EncodeTransform(encode2, schema) {
|
|
3880
|
+
const Encode = (value) => schema[TransformKind].Encode(encode2(value));
|
|
3493
3881
|
const Decode = (value) => this.decode(schema[TransformKind].Decode(value));
|
|
3494
3882
|
const Codec = { Encode, Decode };
|
|
3495
3883
|
return { ...schema, [TransformKind]: Codec };
|
|
3496
3884
|
}
|
|
3497
|
-
EncodeSchema(
|
|
3498
|
-
const Codec = { Decode: this.decode, Encode:
|
|
3885
|
+
EncodeSchema(encode2, schema) {
|
|
3886
|
+
const Codec = { Decode: this.decode, Encode: encode2 };
|
|
3499
3887
|
return { ...schema, [TransformKind]: Codec };
|
|
3500
3888
|
}
|
|
3501
|
-
Encode(
|
|
3889
|
+
Encode(encode2) {
|
|
3502
3890
|
const schema = CloneType(this.schema);
|
|
3503
|
-
return IsTransform(schema) ? this.EncodeTransform(
|
|
3891
|
+
return IsTransform(schema) ? this.EncodeTransform(encode2, schema) : this.EncodeSchema(encode2, schema);
|
|
3504
3892
|
}
|
|
3505
3893
|
};
|
|
3506
3894
|
function Transform(schema) {
|
|
@@ -3566,7 +3954,7 @@ __export(type_exports3, {
|
|
|
3566
3954
|
Rest: () => Rest,
|
|
3567
3955
|
ReturnType: () => ReturnType,
|
|
3568
3956
|
Strict: () => Strict,
|
|
3569
|
-
String: () =>
|
|
3957
|
+
String: () => String2,
|
|
3570
3958
|
Symbol: () => Symbol2,
|
|
3571
3959
|
TemplateLiteral: () => TemplateLiteral,
|
|
3572
3960
|
Transform: () => Transform,
|
|
@@ -3593,13 +3981,76 @@ function Void(options = {}) {
|
|
|
3593
3981
|
// ../../node_modules/@sinclair/typebox/build/esm/type/type/index.mjs
|
|
3594
3982
|
var Type = type_exports3;
|
|
3595
3983
|
|
|
3984
|
+
// ../noya-schemas/src/nullable.ts
|
|
3985
|
+
var Nullable = (schema) => Type.Union([Type.Null(), schema]);
|
|
3986
|
+
|
|
3987
|
+
// ../noya-schemas/src/activityEventSchema.ts
|
|
3988
|
+
var userSelectSchema = Type.Object({
|
|
3989
|
+
id: Type.String(),
|
|
3990
|
+
name: Nullable(Type.String()),
|
|
3991
|
+
email: Nullable(Type.String()),
|
|
3992
|
+
image: Nullable(Type.String())
|
|
3993
|
+
});
|
|
3994
|
+
var workspaceSelectSchema = Type.Object({
|
|
3995
|
+
id: Type.String(),
|
|
3996
|
+
name: Type.String()
|
|
3997
|
+
});
|
|
3998
|
+
var fileSelectSchema = Type.Object({
|
|
3999
|
+
id: Type.String(),
|
|
4000
|
+
name: Nullable(Type.String())
|
|
4001
|
+
});
|
|
4002
|
+
var resourceSelectSchema = Type.Object({
|
|
4003
|
+
id: Type.String(),
|
|
4004
|
+
path: Type.String(),
|
|
4005
|
+
type: Type.Union([
|
|
4006
|
+
Type.Literal("asset"),
|
|
4007
|
+
Type.Literal("file"),
|
|
4008
|
+
Type.Literal("fileVersion"),
|
|
4009
|
+
Type.Literal("directory"),
|
|
4010
|
+
Type.Literal("resource")
|
|
4011
|
+
])
|
|
4012
|
+
});
|
|
4013
|
+
var siteSelectSchema = Type.Object({
|
|
4014
|
+
id: Type.String(),
|
|
4015
|
+
subdomain: Nullable(Type.String())
|
|
4016
|
+
});
|
|
4017
|
+
var activityEventSchema = Type.Object({
|
|
4018
|
+
id: Type.String(),
|
|
4019
|
+
createdAt: Type.String(),
|
|
4020
|
+
actorId: Nullable(Type.String()),
|
|
4021
|
+
actor: Type.Optional(userSelectSchema),
|
|
4022
|
+
type: Type.Union([
|
|
4023
|
+
Type.Literal("file"),
|
|
4024
|
+
Type.Literal("resource"),
|
|
4025
|
+
Type.Literal("site"),
|
|
4026
|
+
Type.Literal("snapshot"),
|
|
4027
|
+
Type.Literal("restore")
|
|
4028
|
+
]),
|
|
4029
|
+
workspaceId: Nullable(Type.String()),
|
|
4030
|
+
workspace: Type.Optional(workspaceSelectSchema),
|
|
4031
|
+
fileId: Nullable(Type.String()),
|
|
4032
|
+
file: Type.Optional(fileSelectSchema),
|
|
4033
|
+
fileVersionId: Nullable(Type.String()),
|
|
4034
|
+
resourceId: Nullable(Type.String()),
|
|
4035
|
+
resource: Type.Optional(resourceSelectSchema),
|
|
4036
|
+
siteId: Nullable(Type.String()),
|
|
4037
|
+
site: Type.Optional(siteSelectSchema),
|
|
4038
|
+
previousData: Nullable(Type.Any()),
|
|
4039
|
+
currentData: Nullable(Type.Any()),
|
|
4040
|
+
metadata: Nullable(Type.Any()),
|
|
4041
|
+
userAgent: Nullable(Type.String())
|
|
4042
|
+
});
|
|
4043
|
+
|
|
3596
4044
|
// ../noya-schemas/src/asset.ts
|
|
3597
4045
|
var assetSchema = Type.Object({
|
|
3598
4046
|
id: Type.String(),
|
|
3599
4047
|
url: Type.String(),
|
|
3600
4048
|
createdAt: Type.String(),
|
|
3601
4049
|
size: Type.Number(),
|
|
3602
|
-
contentType: Type.Optional(Type.String())
|
|
4050
|
+
contentType: Type.Optional(Type.String()),
|
|
4051
|
+
width: Type.Union([Type.Null(), Type.Number()]),
|
|
4052
|
+
height: Type.Union([Type.Null(), Type.Number()]),
|
|
4053
|
+
userId: Type.Union([Type.Null(), Type.String()])
|
|
3603
4054
|
});
|
|
3604
4055
|
|
|
3605
4056
|
// ../noya-schemas/src/encode.ts
|
|
@@ -3753,25 +4204,25 @@ var jsonSchema = Type.Recursive(
|
|
|
3753
4204
|
);
|
|
3754
4205
|
|
|
3755
4206
|
// ../noya-schemas/src/input.ts
|
|
3756
|
-
function
|
|
4207
|
+
function Nullable2(type) {
|
|
3757
4208
|
return Type.Union([type, Type.Null()], { default: null });
|
|
3758
4209
|
}
|
|
3759
4210
|
var inputSchemaBase = {
|
|
3760
4211
|
id: Type.String({ format: "uuid", default: "" }),
|
|
3761
4212
|
stableId: Type.String({ format: "uuid", default: "" }),
|
|
3762
4213
|
name: Type.String(),
|
|
3763
|
-
description:
|
|
4214
|
+
description: Nullable2(Type.String()),
|
|
3764
4215
|
required: Type.Boolean({ default: false })
|
|
3765
4216
|
};
|
|
3766
4217
|
var fileInputSchema = Type.Object({
|
|
3767
4218
|
...inputSchemaBase,
|
|
3768
4219
|
kind: Type.Literal("file"),
|
|
3769
|
-
toolId:
|
|
4220
|
+
toolId: Nullable2(Type.String())
|
|
3770
4221
|
});
|
|
3771
4222
|
var dataInputSchema = Type.Object({
|
|
3772
4223
|
...inputSchemaBase,
|
|
3773
4224
|
kind: Type.Literal("data"),
|
|
3774
|
-
schema:
|
|
4225
|
+
schema: Nullable2(jsonSchema)
|
|
3775
4226
|
});
|
|
3776
4227
|
var secretInputSchema = Type.Object({
|
|
3777
4228
|
...inputSchemaBase,
|
|
@@ -3781,7 +4232,7 @@ var secretInputSchema = Type.Object({
|
|
|
3781
4232
|
default: null
|
|
3782
4233
|
})
|
|
3783
4234
|
),
|
|
3784
|
-
authScope: Type.Optional(
|
|
4235
|
+
authScope: Type.Optional(Nullable2(Type.String()))
|
|
3785
4236
|
});
|
|
3786
4237
|
var inputSchema = Type.Union(
|
|
3787
4238
|
[fileInputSchema, dataInputSchema, secretInputSchema],
|
|
@@ -3978,17 +4429,17 @@ var ValueErrorType;
|
|
|
3978
4429
|
// ../../node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs
|
|
3979
4430
|
var Insert = Object2({
|
|
3980
4431
|
type: Literal("insert"),
|
|
3981
|
-
path:
|
|
4432
|
+
path: String2(),
|
|
3982
4433
|
value: Unknown()
|
|
3983
4434
|
});
|
|
3984
4435
|
var Update = Object2({
|
|
3985
4436
|
type: Literal("update"),
|
|
3986
|
-
path:
|
|
4437
|
+
path: String2(),
|
|
3987
4438
|
value: Unknown()
|
|
3988
4439
|
});
|
|
3989
4440
|
var Delete3 = Object2({
|
|
3990
4441
|
type: Literal("delete"),
|
|
3991
|
-
path:
|
|
4442
|
+
path: String2()
|
|
3992
4443
|
});
|
|
3993
4444
|
var Edit = Union([Insert, Update, Delete3]);
|
|
3994
4445
|
|
|
@@ -4015,6 +4466,142 @@ function findAllDefs(schema) {
|
|
|
4015
4466
|
});
|
|
4016
4467
|
}
|
|
4017
4468
|
|
|
4469
|
+
// ../noya-schemas/src/resourceSchema.ts
|
|
4470
|
+
var baseSchemaProperties = {
|
|
4471
|
+
id: Type.String(),
|
|
4472
|
+
stableId: Type.String(),
|
|
4473
|
+
path: Type.String(),
|
|
4474
|
+
createdAt: Type.String(),
|
|
4475
|
+
updatedAt: Type.String(),
|
|
4476
|
+
accessibleByFileId: Nullable(Type.String()),
|
|
4477
|
+
accessibleByFile: Type.Optional(
|
|
4478
|
+
Type.Object({
|
|
4479
|
+
id: Type.String(),
|
|
4480
|
+
name: Type.String(),
|
|
4481
|
+
toolId: Type.String()
|
|
4482
|
+
})
|
|
4483
|
+
),
|
|
4484
|
+
accessibleByFileVersionId: Nullable(Type.String()),
|
|
4485
|
+
url: Type.Optional(Type.String())
|
|
4486
|
+
};
|
|
4487
|
+
var uploadableAssetSchema = Type.Object({
|
|
4488
|
+
content: Type.String(),
|
|
4489
|
+
contentType: Type.String(),
|
|
4490
|
+
encoding: Type.Union([Type.Literal("utf-8"), Type.Literal("base64")])
|
|
4491
|
+
});
|
|
4492
|
+
var assetResourceSchema = Type.Object({
|
|
4493
|
+
...baseSchemaProperties,
|
|
4494
|
+
type: Type.Literal("asset"),
|
|
4495
|
+
assetId: Type.String()
|
|
4496
|
+
});
|
|
4497
|
+
var assetResourceCreateSchema = Type.Object({
|
|
4498
|
+
...baseSchemaProperties,
|
|
4499
|
+
type: Type.Literal("asset"),
|
|
4500
|
+
assetId: Type.Optional(Type.String()),
|
|
4501
|
+
asset: Type.Optional(uploadableAssetSchema)
|
|
4502
|
+
});
|
|
4503
|
+
var fileResourceSchema = Type.Object({
|
|
4504
|
+
...baseSchemaProperties,
|
|
4505
|
+
type: Type.Literal("file"),
|
|
4506
|
+
fileId: Type.String()
|
|
4507
|
+
});
|
|
4508
|
+
var directoryResourceSchema = Type.Object({
|
|
4509
|
+
...baseSchemaProperties,
|
|
4510
|
+
type: Type.Literal("directory")
|
|
4511
|
+
});
|
|
4512
|
+
var nestedResourceSchema = Type.Object({
|
|
4513
|
+
...baseSchemaProperties,
|
|
4514
|
+
type: Type.Literal("resource"),
|
|
4515
|
+
fileId: Type.String(),
|
|
4516
|
+
resourceId: Type.String()
|
|
4517
|
+
});
|
|
4518
|
+
var resourceSchema = Type.Union(
|
|
4519
|
+
[
|
|
4520
|
+
assetResourceSchema,
|
|
4521
|
+
fileResourceSchema,
|
|
4522
|
+
directoryResourceSchema,
|
|
4523
|
+
nestedResourceSchema
|
|
4524
|
+
],
|
|
4525
|
+
{
|
|
4526
|
+
discriminator: "type"
|
|
4527
|
+
}
|
|
4528
|
+
);
|
|
4529
|
+
var resourceCreateSchema = Type.Union(
|
|
4530
|
+
[
|
|
4531
|
+
assetResourceCreateSchema,
|
|
4532
|
+
fileResourceSchema,
|
|
4533
|
+
directoryResourceSchema,
|
|
4534
|
+
nestedResourceSchema
|
|
4535
|
+
],
|
|
4536
|
+
{
|
|
4537
|
+
discriminator: "type"
|
|
4538
|
+
}
|
|
4539
|
+
);
|
|
4540
|
+
var flatResourceSchema = Type.Object({
|
|
4541
|
+
...baseSchemaProperties,
|
|
4542
|
+
type: Type.Union([
|
|
4543
|
+
Type.Literal("asset"),
|
|
4544
|
+
Type.Literal("file"),
|
|
4545
|
+
Type.Literal("directory"),
|
|
4546
|
+
Type.Literal("resource")
|
|
4547
|
+
]),
|
|
4548
|
+
assetId: Nullable(Type.String()),
|
|
4549
|
+
fileId: Nullable(Type.String()),
|
|
4550
|
+
resourceId: Nullable(Type.String())
|
|
4551
|
+
});
|
|
4552
|
+
function diffResourceMaps(resourceMap, newResourceMap, idProperty) {
|
|
4553
|
+
const oldIdToPathMap = new Map(
|
|
4554
|
+
Object.entries(resourceMap).map(([path2, entity]) => [
|
|
4555
|
+
entity[idProperty],
|
|
4556
|
+
path2
|
|
4557
|
+
])
|
|
4558
|
+
);
|
|
4559
|
+
const newIdToPathMap = new Map(
|
|
4560
|
+
Object.entries(newResourceMap).map(([path2, entity]) => [
|
|
4561
|
+
entity[idProperty],
|
|
4562
|
+
path2
|
|
4563
|
+
])
|
|
4564
|
+
);
|
|
4565
|
+
const oldIds = new Set(
|
|
4566
|
+
Object.values(resourceMap).map((entity) => entity[idProperty])
|
|
4567
|
+
);
|
|
4568
|
+
const newIds = new Set(
|
|
4569
|
+
Object.values(newResourceMap).map((entity) => entity[idProperty])
|
|
4570
|
+
);
|
|
4571
|
+
const sameIds = oldIds.intersection(newIds);
|
|
4572
|
+
const addedResources = Object.values(newResourceMap).filter(
|
|
4573
|
+
(entity) => !oldIds.has(entity[idProperty])
|
|
4574
|
+
);
|
|
4575
|
+
const removedResources = Object.values(resourceMap).filter(
|
|
4576
|
+
(entity) => !newIds.has(entity[idProperty])
|
|
4577
|
+
);
|
|
4578
|
+
const modifiedResources = [...sameIds].flatMap((id) => {
|
|
4579
|
+
const oldResource = Object.values(resourceMap).find(
|
|
4580
|
+
(resource) => resource[idProperty] === id
|
|
4581
|
+
);
|
|
4582
|
+
const newResource = Object.values(newResourceMap).find(
|
|
4583
|
+
(resource) => resource[idProperty] === id
|
|
4584
|
+
);
|
|
4585
|
+
if (!oldResource || !newResource) return [];
|
|
4586
|
+
const oldPath = oldIdToPathMap.get(id);
|
|
4587
|
+
const newPath = newIdToPathMap.get(id);
|
|
4588
|
+
const oldAssetId = oldResource.type === "asset" ? oldResource.assetId : void 0;
|
|
4589
|
+
const newAssetId = newResource.type === "asset" ? newResource.assetId : void 0;
|
|
4590
|
+
const changedProperties = {
|
|
4591
|
+
...oldPath !== newPath ? { path: newPath } : {},
|
|
4592
|
+
...oldAssetId !== newAssetId ? { assetId: newAssetId } : {},
|
|
4593
|
+
...newResource.type === "asset" && newResource.asset !== void 0 ? { asset: newResource.asset } : {}
|
|
4594
|
+
};
|
|
4595
|
+
if (Object.keys(changedProperties).length === 0) return [];
|
|
4596
|
+
return [{ id, stableId: newResource.stableId, ...changedProperties }];
|
|
4597
|
+
});
|
|
4598
|
+
return { addedResources, removedResources, modifiedResources };
|
|
4599
|
+
}
|
|
4600
|
+
|
|
4601
|
+
// ../noya-schemas/src/resourceTree.ts
|
|
4602
|
+
var import_imfs = __toESM(require_lib2());
|
|
4603
|
+
var import_tree_visit2 = __toESM(require_lib());
|
|
4604
|
+
|
|
4018
4605
|
// ../noya-schemas/src/index.ts
|
|
4019
4606
|
function validateUUID(value) {
|
|
4020
4607
|
return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(
|
|
@@ -4024,13 +4611,18 @@ function validateUUID(value) {
|
|
|
4024
4611
|
format_exports.Set("color", () => true);
|
|
4025
4612
|
format_exports.Set("uuid", validateUUID);
|
|
4026
4613
|
|
|
4614
|
+
// src/NoyaStateContext.tsx
|
|
4615
|
+
var import_observable = require("@noya-app/observable");
|
|
4616
|
+
var import_react_utils3 = require("@noya-app/react-utils");
|
|
4617
|
+
var import_react18 = __toESM(require("react"));
|
|
4618
|
+
|
|
4027
4619
|
// src/noyaApp.ts
|
|
4028
4620
|
var import_state_manager3 = require("@noya-app/state-manager");
|
|
4029
|
-
var
|
|
4621
|
+
var import_react17 = require("react");
|
|
4030
4622
|
|
|
4031
4623
|
// src/hooks.ts
|
|
4032
4624
|
var import_state_manager2 = require("@noya-app/state-manager");
|
|
4033
|
-
var
|
|
4625
|
+
var import_react16 = require("react");
|
|
4034
4626
|
var import_client2 = require("react-dom/client");
|
|
4035
4627
|
|
|
4036
4628
|
// src/components/ErrorOverlay.tsx
|
|
@@ -4108,14 +4700,122 @@ var ErrorOverlay = React.memo(function ErrorOverlay2({
|
|
|
4108
4700
|
});
|
|
4109
4701
|
|
|
4110
4702
|
// src/inspector/useStateInspector.tsx
|
|
4111
|
-
var
|
|
4703
|
+
var import_react15 = __toESM(require("react"));
|
|
4112
4704
|
var import_client = require("react-dom/client");
|
|
4113
4705
|
var import_react_utils2 = require("@noya-app/react-utils");
|
|
4114
4706
|
|
|
4707
|
+
// ../noya-utils/src/base64.ts
|
|
4708
|
+
function decode(base64String) {
|
|
4709
|
+
const binaryString = atob(base64String);
|
|
4710
|
+
const length = binaryString.length;
|
|
4711
|
+
const bytes = new Uint8Array(length);
|
|
4712
|
+
for (let i = 0; i < length; i++) {
|
|
4713
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
4714
|
+
}
|
|
4715
|
+
return bytes;
|
|
4716
|
+
}
|
|
4717
|
+
function encode(buffer) {
|
|
4718
|
+
const bytes = new Uint8Array(buffer);
|
|
4719
|
+
let binary = "";
|
|
4720
|
+
const length = bytes.byteLength;
|
|
4721
|
+
for (let i = 0; i < length; i++) {
|
|
4722
|
+
binary += String.fromCharCode(bytes[i]);
|
|
4723
|
+
}
|
|
4724
|
+
return globalThis.btoa(binary);
|
|
4725
|
+
}
|
|
4726
|
+
var Base64 = {
|
|
4727
|
+
encode,
|
|
4728
|
+
decode
|
|
4729
|
+
};
|
|
4730
|
+
|
|
4731
|
+
// ../noya-utils/src/invert.ts
|
|
4732
|
+
function invert(record) {
|
|
4733
|
+
return Object.fromEntries(
|
|
4734
|
+
Object.entries(record).map(([type, extension]) => [extension, type])
|
|
4735
|
+
);
|
|
4736
|
+
}
|
|
4737
|
+
|
|
4738
|
+
// ../noya-utils/src/fileType.ts
|
|
4739
|
+
var FILE_TYPE_TO_EXTENSION = {
|
|
4740
|
+
"image/png": "png",
|
|
4741
|
+
"image/jpeg": "jpg",
|
|
4742
|
+
"image/webp": "webp",
|
|
4743
|
+
"image/svg+xml": "svg",
|
|
4744
|
+
"application/pdf": "pdf",
|
|
4745
|
+
"application/zip": "zip",
|
|
4746
|
+
"application/x-7z-compressed": "7z"
|
|
4747
|
+
};
|
|
4748
|
+
var FILE_EXTENSION_TO_TYPE = invert(FILE_TYPE_TO_EXTENSION);
|
|
4749
|
+
|
|
4750
|
+
// ../noya-utils/src/memoizeDeep.ts
|
|
4751
|
+
var TOKEN_OBJECT = Symbol("object");
|
|
4752
|
+
var TOKEN_ARRAY = Symbol("array");
|
|
4753
|
+
var TOKEN_KEY = Symbol("key");
|
|
4754
|
+
var TOKEN_END = Symbol("end");
|
|
4755
|
+
var TOKEN_PRIMITIVE = Symbol("primitive");
|
|
4756
|
+
var TOKEN_ARGSEP = Symbol("argsep");
|
|
4757
|
+
|
|
4758
|
+
// ../../node_modules/uuid/dist/esm-node/rng.js
|
|
4759
|
+
var import_crypto = __toESM(require("crypto"));
|
|
4760
|
+
var rnds8Pool = new Uint8Array(256);
|
|
4761
|
+
var poolPtr = rnds8Pool.length;
|
|
4762
|
+
function rng() {
|
|
4763
|
+
if (poolPtr > rnds8Pool.length - 16) {
|
|
4764
|
+
import_crypto.default.randomFillSync(rnds8Pool);
|
|
4765
|
+
poolPtr = 0;
|
|
4766
|
+
}
|
|
4767
|
+
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
|
4768
|
+
}
|
|
4769
|
+
|
|
4770
|
+
// ../../node_modules/uuid/dist/esm-node/regex.js
|
|
4771
|
+
var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
|
|
4772
|
+
|
|
4773
|
+
// ../../node_modules/uuid/dist/esm-node/validate.js
|
|
4774
|
+
function validate(uuid2) {
|
|
4775
|
+
return typeof uuid2 === "string" && regex_default.test(uuid2);
|
|
4776
|
+
}
|
|
4777
|
+
var validate_default = validate;
|
|
4778
|
+
|
|
4779
|
+
// ../../node_modules/uuid/dist/esm-node/stringify.js
|
|
4780
|
+
var byteToHex = [];
|
|
4781
|
+
for (let i = 0; i < 256; ++i) {
|
|
4782
|
+
byteToHex.push((i + 256).toString(16).substr(1));
|
|
4783
|
+
}
|
|
4784
|
+
function stringify(arr, offset = 0) {
|
|
4785
|
+
const uuid2 = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
|
|
4786
|
+
if (!validate_default(uuid2)) {
|
|
4787
|
+
throw TypeError("Stringified UUID is invalid");
|
|
4788
|
+
}
|
|
4789
|
+
return uuid2;
|
|
4790
|
+
}
|
|
4791
|
+
var stringify_default = stringify;
|
|
4792
|
+
|
|
4793
|
+
// ../../node_modules/uuid/dist/esm-node/v4.js
|
|
4794
|
+
function v4(options, buf, offset) {
|
|
4795
|
+
options = options || {};
|
|
4796
|
+
const rnds = options.random || (options.rng || rng)();
|
|
4797
|
+
rnds[6] = rnds[6] & 15 | 64;
|
|
4798
|
+
rnds[8] = rnds[8] & 63 | 128;
|
|
4799
|
+
if (buf) {
|
|
4800
|
+
offset = offset || 0;
|
|
4801
|
+
for (let i = 0; i < 16; ++i) {
|
|
4802
|
+
buf[offset + i] = rnds[i];
|
|
4803
|
+
}
|
|
4804
|
+
return buf;
|
|
4805
|
+
}
|
|
4806
|
+
return stringify_default(rnds);
|
|
4807
|
+
}
|
|
4808
|
+
var v4_default = v4;
|
|
4809
|
+
|
|
4810
|
+
// ../noya-utils/src/uuid.ts
|
|
4811
|
+
function uuid() {
|
|
4812
|
+
return v4_default();
|
|
4813
|
+
}
|
|
4814
|
+
|
|
4115
4815
|
// src/inspector/StateInspector.tsx
|
|
4116
4816
|
var import_react_utils = require("@noya-app/react-utils");
|
|
4117
|
-
var
|
|
4118
|
-
var
|
|
4817
|
+
var import_react14 = __toESM(require("react"));
|
|
4818
|
+
var import_react_inspector6 = require("react-inspector");
|
|
4119
4819
|
|
|
4120
4820
|
// src/useObservable.ts
|
|
4121
4821
|
var import_react = require("react");
|
|
@@ -4181,54 +4881,61 @@ var getStateInspectorBorderColor = (colorScheme) => {
|
|
|
4181
4881
|
return colorScheme === "light" ? "rgb(223 223 223)" : "rgb(29 29 29)";
|
|
4182
4882
|
};
|
|
4183
4883
|
|
|
4184
|
-
// src/inspector/sections/
|
|
4884
|
+
// src/inspector/sections/ActivityEventsSection.tsx
|
|
4185
4885
|
var import_react7 = __toESM(require("react"));
|
|
4186
|
-
var import_react_inspector3 = require("react-inspector");
|
|
4187
|
-
|
|
4188
|
-
// src/inspector/ObjectRootLabel.tsx
|
|
4189
|
-
var import_react3 = __toESM(require("react"));
|
|
4190
4886
|
var import_react_inspector2 = require("react-inspector");
|
|
4191
|
-
var ObjectRootLabel = ({ name, data, direction }) => {
|
|
4192
|
-
if (typeof name === "string") {
|
|
4193
|
-
return /* @__PURE__ */ import_react3.default.createElement("span", null, /* @__PURE__ */ import_react3.default.createElement(import_react_inspector2.ObjectName, { name }), /* @__PURE__ */ import_react3.default.createElement("span", null, ": "), /* @__PURE__ */ import_react3.default.createElement(import_react_inspector2.ObjectPreview, { data }));
|
|
4194
|
-
}
|
|
4195
|
-
if (direction === "up" || direction === "down") {
|
|
4196
|
-
const arrow = direction === "up" ? "\u2191" : "\u2193";
|
|
4197
|
-
return /* @__PURE__ */ import_react3.default.createElement("span", null, /* @__PURE__ */ import_react3.default.createElement(
|
|
4198
|
-
"span",
|
|
4199
|
-
{
|
|
4200
|
-
style: {
|
|
4201
|
-
background: direction === "up" ? "rgba(0,255,0,0.2)" : "rgba(255,0,0,0.2)",
|
|
4202
|
-
// color: "white",
|
|
4203
|
-
width: 12,
|
|
4204
|
-
height: 12,
|
|
4205
|
-
borderRadius: 2,
|
|
4206
|
-
display: "inline-flex",
|
|
4207
|
-
justifyContent: "center",
|
|
4208
|
-
alignItems: "center",
|
|
4209
|
-
marginRight: 4,
|
|
4210
|
-
lineHeight: "12px"
|
|
4211
|
-
}
|
|
4212
|
-
},
|
|
4213
|
-
arrow
|
|
4214
|
-
), /* @__PURE__ */ import_react3.default.createElement(import_react_inspector2.ObjectPreview, { data }));
|
|
4215
|
-
} else {
|
|
4216
|
-
return /* @__PURE__ */ import_react3.default.createElement(import_react_inspector2.ObjectPreview, { data });
|
|
4217
|
-
}
|
|
4218
|
-
};
|
|
4219
|
-
|
|
4220
|
-
// src/inspector/StateInspectorDisclosureSection.tsx
|
|
4221
|
-
var import_react5 = __toESM(require("react"));
|
|
4222
4887
|
|
|
4223
|
-
// src/inspector/
|
|
4224
|
-
var
|
|
4225
|
-
function
|
|
4226
|
-
|
|
4888
|
+
// src/inspector/StateInspectorButton.tsx
|
|
4889
|
+
var import_react3 = __toESM(require("react"));
|
|
4890
|
+
function StateInspectorButton({
|
|
4891
|
+
children,
|
|
4227
4892
|
onClick,
|
|
4228
|
-
style
|
|
4893
|
+
style,
|
|
4894
|
+
theme,
|
|
4895
|
+
disabled
|
|
4229
4896
|
}) {
|
|
4230
|
-
return /* @__PURE__ */
|
|
4231
|
-
"
|
|
4897
|
+
return /* @__PURE__ */ import_react3.default.createElement(
|
|
4898
|
+
"button",
|
|
4899
|
+
{
|
|
4900
|
+
type: "button",
|
|
4901
|
+
disabled,
|
|
4902
|
+
onClick: (event) => {
|
|
4903
|
+
event.stopPropagation();
|
|
4904
|
+
onClick();
|
|
4905
|
+
},
|
|
4906
|
+
style: {
|
|
4907
|
+
flex: "0",
|
|
4908
|
+
appearance: "none",
|
|
4909
|
+
background: "none",
|
|
4910
|
+
color: theme.BASE_COLOR,
|
|
4911
|
+
opacity: disabled ? 0.25 : 1,
|
|
4912
|
+
border: "none",
|
|
4913
|
+
fontSize: "12px",
|
|
4914
|
+
whiteSpace: "nowrap",
|
|
4915
|
+
display: "inline-flex",
|
|
4916
|
+
alignItems: "center",
|
|
4917
|
+
justifyContent: "center",
|
|
4918
|
+
padding: "0",
|
|
4919
|
+
cursor: "pointer",
|
|
4920
|
+
...style
|
|
4921
|
+
}
|
|
4922
|
+
},
|
|
4923
|
+
children
|
|
4924
|
+
);
|
|
4925
|
+
}
|
|
4926
|
+
|
|
4927
|
+
// src/inspector/StateInspectorDisclosureSection.tsx
|
|
4928
|
+
var import_react5 = __toESM(require("react"));
|
|
4929
|
+
|
|
4930
|
+
// src/inspector/StateInspectorArrow.tsx
|
|
4931
|
+
var import_react4 = __toESM(require("react"));
|
|
4932
|
+
function StateInspectorArrow({
|
|
4933
|
+
expanded,
|
|
4934
|
+
onClick,
|
|
4935
|
+
style
|
|
4936
|
+
}) {
|
|
4937
|
+
return /* @__PURE__ */ import_react4.default.createElement(
|
|
4938
|
+
"span",
|
|
4232
4939
|
{
|
|
4233
4940
|
role: "button",
|
|
4234
4941
|
onClick,
|
|
@@ -4361,6 +5068,139 @@ function StateInspectorRow({
|
|
|
4361
5068
|
);
|
|
4362
5069
|
}
|
|
4363
5070
|
|
|
5071
|
+
// src/inspector/sections/ActivityEventsSection.tsx
|
|
5072
|
+
function isResourceStreamFilter(streamFilter) {
|
|
5073
|
+
return typeof streamFilter === "object" && "resourceId" in streamFilter;
|
|
5074
|
+
}
|
|
5075
|
+
function isResourceActivityEvent(activityEvent) {
|
|
5076
|
+
return typeof activityEvent === "object" && activityEvent !== null && "type" in activityEvent && activityEvent.type === "resource" && "resourceId" in activityEvent && typeof activityEvent.resourceId === "string";
|
|
5077
|
+
}
|
|
5078
|
+
function ActivityEventsSection({
|
|
5079
|
+
showEvents,
|
|
5080
|
+
setShowEvents,
|
|
5081
|
+
colorScheme,
|
|
5082
|
+
activityEventsContainerRef,
|
|
5083
|
+
activityEventsManager
|
|
5084
|
+
}) {
|
|
5085
|
+
const [streamFilter, setStreamFilter] = (0, import_react7.useState)("all");
|
|
5086
|
+
const streamFilterType = isResourceStreamFilter(streamFilter) ? "resource" : "all";
|
|
5087
|
+
const theme = getStateInspectorTheme(colorScheme);
|
|
5088
|
+
const activityEvents = useActivityEventsForManager(
|
|
5089
|
+
showEvents ? streamFilter : void 0,
|
|
5090
|
+
activityEventsManager
|
|
5091
|
+
);
|
|
5092
|
+
return /* @__PURE__ */ import_react7.default.createElement(
|
|
5093
|
+
StateInspectorDisclosureSection,
|
|
5094
|
+
{
|
|
5095
|
+
open: showEvents,
|
|
5096
|
+
setOpen: setShowEvents,
|
|
5097
|
+
title: `Activity Events`,
|
|
5098
|
+
colorScheme
|
|
5099
|
+
},
|
|
5100
|
+
/* @__PURE__ */ import_react7.default.createElement(StateInspectorDisclosureRowInner, { ref: activityEventsContainerRef }, /* @__PURE__ */ import_react7.default.createElement("div", { style: { padding: "4px 12px", display: "flex", gap: "4px" } }, /* @__PURE__ */ import_react7.default.createElement(
|
|
5101
|
+
"select",
|
|
5102
|
+
{
|
|
5103
|
+
name: "streamFilterType",
|
|
5104
|
+
value: streamFilterType,
|
|
5105
|
+
style: { flex: "0 0 auto", height: "19px" },
|
|
5106
|
+
onChange: (e) => {
|
|
5107
|
+
const value = e.target.value;
|
|
5108
|
+
if (value === "all") {
|
|
5109
|
+
setStreamFilter("all");
|
|
5110
|
+
} else {
|
|
5111
|
+
setStreamFilter({ resourceId: "" });
|
|
5112
|
+
}
|
|
5113
|
+
}
|
|
5114
|
+
},
|
|
5115
|
+
/* @__PURE__ */ import_react7.default.createElement("option", { value: "all" }, "All"),
|
|
5116
|
+
/* @__PURE__ */ import_react7.default.createElement("option", { value: "resource" }, "Resource")
|
|
5117
|
+
), isResourceStreamFilter(streamFilter) && /* @__PURE__ */ import_react7.default.createElement(
|
|
5118
|
+
"input",
|
|
5119
|
+
{
|
|
5120
|
+
name: "resourceId",
|
|
5121
|
+
type: "text",
|
|
5122
|
+
placeholder: "Resource ID",
|
|
5123
|
+
value: streamFilter.resourceId,
|
|
5124
|
+
style: {
|
|
5125
|
+
flex: "1 1 auto",
|
|
5126
|
+
height: "19px",
|
|
5127
|
+
padding: "0px 4px",
|
|
5128
|
+
boxSizing: "border-box"
|
|
5129
|
+
},
|
|
5130
|
+
onChange: (e) => setStreamFilter({ ...streamFilter, resourceId: e.target.value })
|
|
5131
|
+
}
|
|
5132
|
+
)), activityEvents?.map((activityEvent, index) => /* @__PURE__ */ import_react7.default.createElement(
|
|
5133
|
+
StateInspectorRow,
|
|
5134
|
+
{
|
|
5135
|
+
key: index,
|
|
5136
|
+
colorScheme,
|
|
5137
|
+
style: {
|
|
5138
|
+
padding: "0px 12px 1px"
|
|
5139
|
+
}
|
|
5140
|
+
},
|
|
5141
|
+
/* @__PURE__ */ import_react7.default.createElement(import_react_inspector2.ObjectInspector, { data: activityEvent, theme }),
|
|
5142
|
+
streamFilterType === "all" && isResourceActivityEvent(activityEvent) && /* @__PURE__ */ import_react7.default.createElement(
|
|
5143
|
+
StateInspectorButton,
|
|
5144
|
+
{
|
|
5145
|
+
theme,
|
|
5146
|
+
onClick: () => {
|
|
5147
|
+
setStreamFilter({ resourceId: activityEvent.resourceId });
|
|
5148
|
+
}
|
|
5149
|
+
},
|
|
5150
|
+
"Watch this resource"
|
|
5151
|
+
)
|
|
5152
|
+
)), !activityEvents && /* @__PURE__ */ import_react7.default.createElement(
|
|
5153
|
+
"div",
|
|
5154
|
+
{
|
|
5155
|
+
style: {
|
|
5156
|
+
padding: "12px",
|
|
5157
|
+
fontSize: "12px",
|
|
5158
|
+
display: "flex",
|
|
5159
|
+
flexDirection: "column",
|
|
5160
|
+
gap: "4px"
|
|
5161
|
+
}
|
|
5162
|
+
},
|
|
5163
|
+
/* @__PURE__ */ import_react7.default.createElement("span", null, "No activity events")
|
|
5164
|
+
))
|
|
5165
|
+
);
|
|
5166
|
+
}
|
|
5167
|
+
|
|
5168
|
+
// src/inspector/sections/EventsSection.tsx
|
|
5169
|
+
var import_react9 = __toESM(require("react"));
|
|
5170
|
+
var import_react_inspector4 = require("react-inspector");
|
|
5171
|
+
|
|
5172
|
+
// src/inspector/ObjectRootLabel.tsx
|
|
5173
|
+
var import_react8 = __toESM(require("react"));
|
|
5174
|
+
var import_react_inspector3 = require("react-inspector");
|
|
5175
|
+
var ObjectRootLabel = ({ name, data, direction }) => {
|
|
5176
|
+
if (typeof name === "string") {
|
|
5177
|
+
return /* @__PURE__ */ import_react8.default.createElement("span", null, /* @__PURE__ */ import_react8.default.createElement(import_react_inspector3.ObjectName, { name }), /* @__PURE__ */ import_react8.default.createElement("span", null, ": "), /* @__PURE__ */ import_react8.default.createElement(import_react_inspector3.ObjectPreview, { data }));
|
|
5178
|
+
}
|
|
5179
|
+
if (direction === "up" || direction === "down") {
|
|
5180
|
+
const arrow = direction === "up" ? "\u2191" : "\u2193";
|
|
5181
|
+
return /* @__PURE__ */ import_react8.default.createElement("span", null, /* @__PURE__ */ import_react8.default.createElement(
|
|
5182
|
+
"span",
|
|
5183
|
+
{
|
|
5184
|
+
style: {
|
|
5185
|
+
background: direction === "up" ? "rgba(0,255,0,0.2)" : "rgba(255,0,0,0.2)",
|
|
5186
|
+
// color: "white",
|
|
5187
|
+
width: 12,
|
|
5188
|
+
height: 12,
|
|
5189
|
+
borderRadius: 2,
|
|
5190
|
+
display: "inline-flex",
|
|
5191
|
+
justifyContent: "center",
|
|
5192
|
+
alignItems: "center",
|
|
5193
|
+
marginRight: 4,
|
|
5194
|
+
lineHeight: "12px"
|
|
5195
|
+
}
|
|
5196
|
+
},
|
|
5197
|
+
arrow
|
|
5198
|
+
), /* @__PURE__ */ import_react8.default.createElement(import_react_inspector3.ObjectPreview, { data }));
|
|
5199
|
+
} else {
|
|
5200
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react_inspector3.ObjectPreview, { data });
|
|
5201
|
+
}
|
|
5202
|
+
};
|
|
5203
|
+
|
|
4364
5204
|
// src/inspector/sections/EventsSection.tsx
|
|
4365
5205
|
function EventsSection({
|
|
4366
5206
|
showEvents,
|
|
@@ -4370,7 +5210,7 @@ function EventsSection({
|
|
|
4370
5210
|
connectionEvents
|
|
4371
5211
|
}) {
|
|
4372
5212
|
const theme = getStateInspectorTheme(colorScheme);
|
|
4373
|
-
return /* @__PURE__ */
|
|
5213
|
+
return /* @__PURE__ */ import_react9.default.createElement(
|
|
4374
5214
|
StateInspectorDisclosureSection,
|
|
4375
5215
|
{
|
|
4376
5216
|
open: showEvents,
|
|
@@ -4378,8 +5218,8 @@ function EventsSection({
|
|
|
4378
5218
|
title: "Events",
|
|
4379
5219
|
colorScheme
|
|
4380
5220
|
},
|
|
4381
|
-
/* @__PURE__ */
|
|
4382
|
-
(event, index) => event.type === "stateChange" ? /* @__PURE__ */
|
|
5221
|
+
/* @__PURE__ */ import_react9.default.createElement(StateInspectorDisclosureRowInner, { ref: eventsContainerRef }, connectionEvents?.map(
|
|
5222
|
+
(event, index) => event.type === "stateChange" ? /* @__PURE__ */ import_react9.default.createElement(StateInspectorRow, { key: index, colorScheme }, "connection:", " ", /* @__PURE__ */ import_react9.default.createElement("span", { style: { fontStyle: "italic" } }, event.state.toLowerCase())) : /* @__PURE__ */ import_react9.default.createElement(
|
|
4383
5223
|
StateInspectorRow,
|
|
4384
5224
|
{
|
|
4385
5225
|
key: index,
|
|
@@ -4389,15 +5229,15 @@ function EventsSection({
|
|
|
4389
5229
|
padding: "0px 12px 1px"
|
|
4390
5230
|
}
|
|
4391
5231
|
},
|
|
4392
|
-
/* @__PURE__ */
|
|
4393
|
-
|
|
5232
|
+
/* @__PURE__ */ import_react9.default.createElement(
|
|
5233
|
+
import_react_inspector4.ObjectInspector,
|
|
4394
5234
|
{
|
|
4395
5235
|
data: event.type === "error" ? event.error : event.message,
|
|
4396
5236
|
theme,
|
|
4397
5237
|
nodeRenderer: ({ depth, name, data, isNonenumerable }) => {
|
|
4398
5238
|
const direction = event.type === "send" ? "up" : "down";
|
|
4399
|
-
return depth === 0 ? /* @__PURE__ */
|
|
4400
|
-
|
|
5239
|
+
return depth === 0 ? /* @__PURE__ */ import_react9.default.createElement(ObjectRootLabel, { direction, data }) : /* @__PURE__ */ import_react9.default.createElement(
|
|
5240
|
+
import_react_inspector4.ObjectLabel,
|
|
4401
5241
|
{
|
|
4402
5242
|
direction,
|
|
4403
5243
|
name,
|
|
@@ -4409,7 +5249,7 @@ function EventsSection({
|
|
|
4409
5249
|
}
|
|
4410
5250
|
)
|
|
4411
5251
|
)
|
|
4412
|
-
), !connectionEvents && /* @__PURE__ */
|
|
5252
|
+
), !connectionEvents && /* @__PURE__ */ import_react9.default.createElement(
|
|
4413
5253
|
"div",
|
|
4414
5254
|
{
|
|
4415
5255
|
style: {
|
|
@@ -4420,53 +5260,14 @@ function EventsSection({
|
|
|
4420
5260
|
gap: "4px"
|
|
4421
5261
|
}
|
|
4422
5262
|
},
|
|
4423
|
-
/* @__PURE__ */
|
|
5263
|
+
/* @__PURE__ */ import_react9.default.createElement("span", null, "No recorded events")
|
|
4424
5264
|
))
|
|
4425
5265
|
);
|
|
4426
5266
|
}
|
|
4427
5267
|
|
|
4428
5268
|
// src/inspector/sections/HistorySection.tsx
|
|
4429
|
-
var
|
|
4430
|
-
var
|
|
4431
|
-
|
|
4432
|
-
// src/inspector/StateInspectorButton.tsx
|
|
4433
|
-
var import_react8 = __toESM(require("react"));
|
|
4434
|
-
function StateInspectorButton({
|
|
4435
|
-
children,
|
|
4436
|
-
onClick,
|
|
4437
|
-
style,
|
|
4438
|
-
theme,
|
|
4439
|
-
disabled
|
|
4440
|
-
}) {
|
|
4441
|
-
return /* @__PURE__ */ import_react8.default.createElement(
|
|
4442
|
-
"button",
|
|
4443
|
-
{
|
|
4444
|
-
type: "button",
|
|
4445
|
-
disabled,
|
|
4446
|
-
onClick: (event) => {
|
|
4447
|
-
event.stopPropagation();
|
|
4448
|
-
onClick();
|
|
4449
|
-
},
|
|
4450
|
-
style: {
|
|
4451
|
-
flex: "0",
|
|
4452
|
-
appearance: "none",
|
|
4453
|
-
background: "none",
|
|
4454
|
-
color: theme.BASE_COLOR,
|
|
4455
|
-
opacity: disabled ? 0.25 : 1,
|
|
4456
|
-
border: "none",
|
|
4457
|
-
fontSize: "12px",
|
|
4458
|
-
whiteSpace: "nowrap",
|
|
4459
|
-
display: "inline-flex",
|
|
4460
|
-
alignItems: "center",
|
|
4461
|
-
justifyContent: "center",
|
|
4462
|
-
padding: "0",
|
|
4463
|
-
cursor: "pointer",
|
|
4464
|
-
...style
|
|
4465
|
-
}
|
|
4466
|
-
},
|
|
4467
|
-
children
|
|
4468
|
-
);
|
|
4469
|
-
}
|
|
5269
|
+
var import_react10 = __toESM(require("react"));
|
|
5270
|
+
var import_react_inspector5 = require("react-inspector");
|
|
4470
5271
|
|
|
4471
5272
|
// src/inspector/utils.ts
|
|
4472
5273
|
function pathToString(extendedPath) {
|
|
@@ -4499,7 +5300,7 @@ function uploadFile() {
|
|
|
4499
5300
|
const reader = new FileReader();
|
|
4500
5301
|
reader.onload = () => {
|
|
4501
5302
|
const buffer = reader.result;
|
|
4502
|
-
const blob = new
|
|
5303
|
+
const blob = new File([buffer], file.name, { type: file.type });
|
|
4503
5304
|
resolve(blob);
|
|
4504
5305
|
};
|
|
4505
5306
|
reader.onerror = () => {
|
|
@@ -4521,15 +5322,15 @@ function HistorySection({
|
|
|
4521
5322
|
historySnapshot,
|
|
4522
5323
|
multiplayerStateManager
|
|
4523
5324
|
}) {
|
|
4524
|
-
const ref = (0,
|
|
5325
|
+
const ref = (0, import_react10.useRef)(null);
|
|
4525
5326
|
const theme = getStateInspectorTheme(colorScheme);
|
|
4526
5327
|
const solidBorderColor = getStateInspectorBorderColor(colorScheme);
|
|
4527
|
-
(0,
|
|
5328
|
+
(0, import_react10.useEffect)(() => {
|
|
4528
5329
|
if (ref.current) {
|
|
4529
5330
|
ref.current.scrollTop = ref.current.scrollHeight;
|
|
4530
5331
|
}
|
|
4531
5332
|
}, [historySnapshot]);
|
|
4532
|
-
(0,
|
|
5333
|
+
(0, import_react10.useEffect)(() => {
|
|
4533
5334
|
if (!ref.current) return;
|
|
4534
5335
|
const historyEntry = ref.current.querySelector(
|
|
4535
5336
|
`#${HISTORY_ELEMENT_PREFIX}${historySnapshot.historyIndex}`
|
|
@@ -4541,14 +5342,14 @@ function HistorySection({
|
|
|
4541
5342
|
});
|
|
4542
5343
|
}
|
|
4543
5344
|
}, [historySnapshot.historyIndex]);
|
|
4544
|
-
return /* @__PURE__ */
|
|
5345
|
+
return /* @__PURE__ */ import_react10.default.createElement(
|
|
4545
5346
|
StateInspectorDisclosureSection,
|
|
4546
5347
|
{
|
|
4547
5348
|
open: showHistory,
|
|
4548
5349
|
setOpen: setShowHistory,
|
|
4549
5350
|
title: "History",
|
|
4550
5351
|
colorScheme,
|
|
4551
|
-
right: /* @__PURE__ */
|
|
5352
|
+
right: /* @__PURE__ */ import_react10.default.createElement(
|
|
4552
5353
|
"span",
|
|
4553
5354
|
{
|
|
4554
5355
|
style: {
|
|
@@ -4556,7 +5357,7 @@ function HistorySection({
|
|
|
4556
5357
|
gap: "4px"
|
|
4557
5358
|
}
|
|
4558
5359
|
},
|
|
4559
|
-
/* @__PURE__ */
|
|
5360
|
+
/* @__PURE__ */ import_react10.default.createElement(
|
|
4560
5361
|
StateInspectorButton,
|
|
4561
5362
|
{
|
|
4562
5363
|
disabled: !historySnapshot.canUndo,
|
|
@@ -4565,7 +5366,7 @@ function HistorySection({
|
|
|
4565
5366
|
multiplayerStateManager.undo();
|
|
4566
5367
|
}
|
|
4567
5368
|
},
|
|
4568
|
-
/* @__PURE__ */
|
|
5369
|
+
/* @__PURE__ */ import_react10.default.createElement("span", { style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react10.default.createElement(
|
|
4569
5370
|
"svg",
|
|
4570
5371
|
{
|
|
4571
5372
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -4573,7 +5374,7 @@ function HistorySection({
|
|
|
4573
5374
|
height: "1em",
|
|
4574
5375
|
viewBox: "0 0 20 20"
|
|
4575
5376
|
},
|
|
4576
|
-
/* @__PURE__ */
|
|
5377
|
+
/* @__PURE__ */ import_react10.default.createElement(
|
|
4577
5378
|
"path",
|
|
4578
5379
|
{
|
|
4579
5380
|
fill: "currentColor",
|
|
@@ -4582,7 +5383,7 @@ function HistorySection({
|
|
|
4582
5383
|
)
|
|
4583
5384
|
))
|
|
4584
5385
|
),
|
|
4585
|
-
/* @__PURE__ */
|
|
5386
|
+
/* @__PURE__ */ import_react10.default.createElement(
|
|
4586
5387
|
StateInspectorButton,
|
|
4587
5388
|
{
|
|
4588
5389
|
disabled: !historySnapshot.canRedo,
|
|
@@ -4591,7 +5392,7 @@ function HistorySection({
|
|
|
4591
5392
|
multiplayerStateManager.redo();
|
|
4592
5393
|
}
|
|
4593
5394
|
},
|
|
4594
|
-
/* @__PURE__ */
|
|
5395
|
+
/* @__PURE__ */ import_react10.default.createElement("span", { style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react10.default.createElement(
|
|
4595
5396
|
"svg",
|
|
4596
5397
|
{
|
|
4597
5398
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -4599,7 +5400,7 @@ function HistorySection({
|
|
|
4599
5400
|
height: "1em",
|
|
4600
5401
|
viewBox: "0 0 20 20"
|
|
4601
5402
|
},
|
|
4602
|
-
/* @__PURE__ */
|
|
5403
|
+
/* @__PURE__ */ import_react10.default.createElement(
|
|
4603
5404
|
"path",
|
|
4604
5405
|
{
|
|
4605
5406
|
fill: "currentColor",
|
|
@@ -4610,7 +5411,7 @@ function HistorySection({
|
|
|
4610
5411
|
)
|
|
4611
5412
|
)
|
|
4612
5413
|
},
|
|
4613
|
-
/* @__PURE__ */
|
|
5414
|
+
/* @__PURE__ */ import_react10.default.createElement(StateInspectorDisclosureRowInner, { ref }, /* @__PURE__ */ import_react10.default.createElement(
|
|
4614
5415
|
"div",
|
|
4615
5416
|
{
|
|
4616
5417
|
id: `${HISTORY_ELEMENT_PREFIX}0`,
|
|
@@ -4624,7 +5425,7 @@ function HistorySection({
|
|
|
4624
5425
|
background: historySnapshot.historyIndex === 0 ? "rgb(59 130 246 / 15%)" : void 0
|
|
4625
5426
|
}
|
|
4626
5427
|
},
|
|
4627
|
-
/* @__PURE__ */
|
|
5428
|
+
/* @__PURE__ */ import_react10.default.createElement(
|
|
4628
5429
|
"span",
|
|
4629
5430
|
{
|
|
4630
5431
|
style: {
|
|
@@ -4639,7 +5440,7 @@ function HistorySection({
|
|
|
4639
5440
|
), historySnapshot.history.map((entry, index) => {
|
|
4640
5441
|
const metadata = entry.metadata;
|
|
4641
5442
|
const { id, name, timestamp, ...rest } = metadata;
|
|
4642
|
-
return /* @__PURE__ */
|
|
5443
|
+
return /* @__PURE__ */ import_react10.default.createElement(
|
|
4643
5444
|
"div",
|
|
4644
5445
|
{
|
|
4645
5446
|
id: `${HISTORY_ELEMENT_PREFIX}${index + 1}`,
|
|
@@ -4650,7 +5451,7 @@ function HistorySection({
|
|
|
4650
5451
|
background: index + 1 === historySnapshot.historyIndex ? "rgb(59 130 246 / 15%)" : void 0
|
|
4651
5452
|
}
|
|
4652
5453
|
},
|
|
4653
|
-
typeof name === "string" && /* @__PURE__ */
|
|
5454
|
+
typeof name === "string" && /* @__PURE__ */ import_react10.default.createElement(
|
|
4654
5455
|
"pre",
|
|
4655
5456
|
{
|
|
4656
5457
|
style: {
|
|
@@ -4661,9 +5462,9 @@ function HistorySection({
|
|
|
4661
5462
|
}
|
|
4662
5463
|
},
|
|
4663
5464
|
entry.metadata.name,
|
|
4664
|
-
Object.keys(rest).length > 0 && /* @__PURE__ */
|
|
5465
|
+
Object.keys(rest).length > 0 && /* @__PURE__ */ import_react10.default.createElement(import_react_inspector5.ObjectInspector, { data: rest, theme })
|
|
4665
5466
|
),
|
|
4666
|
-
entry.redoPatches?.map((patch, j) => /* @__PURE__ */
|
|
5467
|
+
entry.redoPatches?.map((patch, j) => /* @__PURE__ */ import_react10.default.createElement(
|
|
4667
5468
|
"pre",
|
|
4668
5469
|
{
|
|
4669
5470
|
key: j,
|
|
@@ -4674,10 +5475,10 @@ function HistorySection({
|
|
|
4674
5475
|
margin: 0
|
|
4675
5476
|
}
|
|
4676
5477
|
},
|
|
4677
|
-
patch.op === "add" && /* @__PURE__ */
|
|
4678
|
-
patch.op === "replace" && /* @__PURE__ */
|
|
4679
|
-
patch.op === "remove" && /* @__PURE__ */
|
|
4680
|
-
patch.op === "move" && /* @__PURE__ */
|
|
5478
|
+
patch.op === "add" && /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.path)), " = ", /* @__PURE__ */ import_react10.default.createElement(import_react_inspector5.ObjectInspector, { data: patch.value, theme })),
|
|
5479
|
+
patch.op === "replace" && /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.path)), " = ", /* @__PURE__ */ import_react10.default.createElement(import_react_inspector5.ObjectInspector, { data: patch.value, theme })),
|
|
5480
|
+
patch.op === "remove" && /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("span", { style: { color: theme.OBJECT_VALUE_STRING_COLOR } }, "delete", " "), /* @__PURE__ */ import_react10.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.path))),
|
|
5481
|
+
patch.op === "move" && /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.from)), " -> ", /* @__PURE__ */ import_react10.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.path)))
|
|
4681
5482
|
))
|
|
4682
5483
|
);
|
|
4683
5484
|
}))
|
|
@@ -5233,8 +6034,16 @@ function replaceDeep(obj, replacementMap) {
|
|
|
5233
6034
|
}
|
|
5234
6035
|
}
|
|
5235
6036
|
|
|
6037
|
+
// src/inspector/StateInspectorTitleLabel.tsx
|
|
6038
|
+
var import_react11 = __toESM(require("react"));
|
|
6039
|
+
function StateInspectorTitleLabel({
|
|
6040
|
+
children
|
|
6041
|
+
}) {
|
|
6042
|
+
return /* @__PURE__ */ import_react11.default.createElement("span", { style: { display: "flex", alignItems: "center", gap: "4px" } }, children);
|
|
6043
|
+
}
|
|
6044
|
+
|
|
5236
6045
|
// src/inspector/StateInspectorToggleButton.tsx
|
|
5237
|
-
var
|
|
6046
|
+
var import_react12 = __toESM(require("react"));
|
|
5238
6047
|
function StateInspectorToggleButton({
|
|
5239
6048
|
showInspector,
|
|
5240
6049
|
setShowInspector,
|
|
@@ -5242,7 +6051,7 @@ function StateInspectorToggleButton({
|
|
|
5242
6051
|
anchor
|
|
5243
6052
|
}) {
|
|
5244
6053
|
const isRightAnchor = anchor === "right";
|
|
5245
|
-
const rightIcon = /* @__PURE__ */
|
|
6054
|
+
const rightIcon = /* @__PURE__ */ import_react12.default.createElement(
|
|
5246
6055
|
"svg",
|
|
5247
6056
|
{
|
|
5248
6057
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5252,7 +6061,7 @@ function StateInspectorToggleButton({
|
|
|
5252
6061
|
stroke: "currentColor",
|
|
5253
6062
|
className: "size-6"
|
|
5254
6063
|
},
|
|
5255
|
-
/* @__PURE__ */
|
|
6064
|
+
/* @__PURE__ */ import_react12.default.createElement(
|
|
5256
6065
|
"path",
|
|
5257
6066
|
{
|
|
5258
6067
|
strokeLinecap: "round",
|
|
@@ -5261,7 +6070,7 @@ function StateInspectorToggleButton({
|
|
|
5261
6070
|
}
|
|
5262
6071
|
)
|
|
5263
6072
|
);
|
|
5264
|
-
const leftIcon = /* @__PURE__ */
|
|
6073
|
+
const leftIcon = /* @__PURE__ */ import_react12.default.createElement(
|
|
5265
6074
|
"svg",
|
|
5266
6075
|
{
|
|
5267
6076
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5271,7 +6080,7 @@ function StateInspectorToggleButton({
|
|
|
5271
6080
|
stroke: "currentColor",
|
|
5272
6081
|
className: "size-6"
|
|
5273
6082
|
},
|
|
5274
|
-
/* @__PURE__ */
|
|
6083
|
+
/* @__PURE__ */ import_react12.default.createElement(
|
|
5275
6084
|
"path",
|
|
5276
6085
|
{
|
|
5277
6086
|
strokeLinecap: "round",
|
|
@@ -5280,7 +6089,7 @@ function StateInspectorToggleButton({
|
|
|
5280
6089
|
}
|
|
5281
6090
|
)
|
|
5282
6091
|
);
|
|
5283
|
-
return /* @__PURE__ */
|
|
6092
|
+
return /* @__PURE__ */ import_react12.default.createElement(
|
|
5284
6093
|
"span",
|
|
5285
6094
|
{
|
|
5286
6095
|
role: "button",
|
|
@@ -5301,15 +6110,15 @@ function StateInspectorToggleButton({
|
|
|
5301
6110
|
setShowInspector(!showInspector);
|
|
5302
6111
|
}
|
|
5303
6112
|
},
|
|
5304
|
-
showInspector ? "Hide Inspector" : /* @__PURE__ */
|
|
6113
|
+
showInspector ? "Hide Inspector" : /* @__PURE__ */ import_react12.default.createElement("span", { style: { width: "12px", height: "12px" } }, isRightAnchor ? rightIcon : leftIcon)
|
|
5305
6114
|
);
|
|
5306
6115
|
}
|
|
5307
6116
|
|
|
5308
6117
|
// src/inspector/useLocalStorageState.tsx
|
|
5309
|
-
var
|
|
6118
|
+
var import_react13 = __toESM(require("react"));
|
|
5310
6119
|
var localStorage = typeof window !== "undefined" ? window.localStorage : null;
|
|
5311
6120
|
function useLocalStorageState(key, defaultValue) {
|
|
5312
|
-
const [state, setState] =
|
|
6121
|
+
const [state, setState] = import_react13.default.useState(() => {
|
|
5313
6122
|
const value = localStorage?.getItem(key);
|
|
5314
6123
|
let result = defaultValue;
|
|
5315
6124
|
if (value) {
|
|
@@ -5344,16 +6153,19 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5344
6153
|
ephemeralUserDataManager,
|
|
5345
6154
|
connectionEventManager,
|
|
5346
6155
|
taskManager,
|
|
5347
|
-
ioManager
|
|
6156
|
+
ioManager,
|
|
6157
|
+
resourceManager,
|
|
6158
|
+
activityEventsManager
|
|
5348
6159
|
} = noyaManager;
|
|
5349
|
-
const [didMount, setDidMount] =
|
|
6160
|
+
const [didMount, setDidMount] = import_react14.default.useState(false);
|
|
5350
6161
|
const tasks = useObservable(taskManager.tasks$);
|
|
5351
6162
|
const inputs = useObservable(ioManager.inputs$);
|
|
5352
6163
|
const outputTransforms = useObservable(ioManager.outputTransforms$);
|
|
5353
|
-
(0,
|
|
6164
|
+
(0, import_react14.useLayoutEffect)(() => {
|
|
5354
6165
|
setDidMount(true);
|
|
5355
6166
|
}, []);
|
|
5356
|
-
const eventsContainerRef =
|
|
6167
|
+
const eventsContainerRef = import_react14.default.useRef(null);
|
|
6168
|
+
const activityEventsContainerRef = import_react14.default.useRef(null);
|
|
5357
6169
|
const [showInspector, setShowInspector] = useLocalStorageState(
|
|
5358
6170
|
"noya-multiplayer-react-show-inspector",
|
|
5359
6171
|
true
|
|
@@ -5386,6 +6198,10 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5386
6198
|
"noya-multiplayer-react-show-assets",
|
|
5387
6199
|
false
|
|
5388
6200
|
);
|
|
6201
|
+
const [showResources, setShowResources] = useLocalStorageState(
|
|
6202
|
+
"noya-multiplayer-react-show-resources",
|
|
6203
|
+
false
|
|
6204
|
+
);
|
|
5389
6205
|
const [showSecrets, setShowSecrets] = useLocalStorageState(
|
|
5390
6206
|
"noya-multiplayer-react-show-secrets",
|
|
5391
6207
|
false
|
|
@@ -5398,8 +6214,12 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5398
6214
|
"noya-multiplayer-react-show-output-transforms",
|
|
5399
6215
|
false
|
|
5400
6216
|
);
|
|
6217
|
+
const [showActivityEvents, setShowActivityEvents] = useLocalStorageState(
|
|
6218
|
+
"noya-multiplayer-react-show-activity-events",
|
|
6219
|
+
false
|
|
6220
|
+
);
|
|
5401
6221
|
const connectionEvents = useObservable(connectionEventManager.events$);
|
|
5402
|
-
(0,
|
|
6222
|
+
(0, import_react14.useEffect)(() => {
|
|
5403
6223
|
if (eventsContainerRef.current) {
|
|
5404
6224
|
eventsContainerRef.current.scrollTop = eventsContainerRef.current.scrollHeight;
|
|
5405
6225
|
}
|
|
@@ -5410,6 +6230,8 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5410
6230
|
const ephemeral = useObservable(ephemeralUserDataManager.data$);
|
|
5411
6231
|
const historySnapshot = useManagedHistory(multiplayerStateManager.sm);
|
|
5412
6232
|
const assets = useObservable(assetManager.assets$);
|
|
6233
|
+
const resources = useObservable(resourceManager.resources$);
|
|
6234
|
+
const resourcesInitialized = useObservable(resourceManager.isInitialized$);
|
|
5413
6235
|
const assetsInitialized = useObservable(assetManager.isInitialized$);
|
|
5414
6236
|
const secrets = useObservable(secretManager.secrets$);
|
|
5415
6237
|
const secretsInitialized = useObservable(secretManager.isInitialized$);
|
|
@@ -5441,11 +6263,11 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5441
6263
|
zIndex: 9999,
|
|
5442
6264
|
lineHeight: "13px"
|
|
5443
6265
|
};
|
|
5444
|
-
const handleExportAll = (0,
|
|
6266
|
+
const handleExportAll = (0, import_react14.useCallback)(async () => {
|
|
5445
6267
|
const buffer = await exportAll(noyaManager);
|
|
5446
6268
|
(0, import_react_utils.downloadBlob)(new Blob([buffer]), "state.zip");
|
|
5447
6269
|
}, [noyaManager]);
|
|
5448
|
-
const handleImportAll = (0,
|
|
6270
|
+
const handleImportAll = (0, import_react14.useCallback)(async () => {
|
|
5449
6271
|
const file = await uploadFile();
|
|
5450
6272
|
const buffer = await file.arrayBuffer();
|
|
5451
6273
|
importAll(buffer, noyaManager, {
|
|
@@ -5458,7 +6280,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5458
6280
|
}, [noyaManager]);
|
|
5459
6281
|
if (!didMount) return null;
|
|
5460
6282
|
if (!showInspector) {
|
|
5461
|
-
return /* @__PURE__ */
|
|
6283
|
+
return /* @__PURE__ */ import_react14.default.createElement(
|
|
5462
6284
|
"div",
|
|
5463
6285
|
{
|
|
5464
6286
|
...props,
|
|
@@ -5470,7 +6292,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5470
6292
|
},
|
|
5471
6293
|
onClick: () => setShowInspector(true)
|
|
5472
6294
|
},
|
|
5473
|
-
/* @__PURE__ */
|
|
6295
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5474
6296
|
StateInspectorToggleButton,
|
|
5475
6297
|
{
|
|
5476
6298
|
showInspector,
|
|
@@ -5481,7 +6303,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5481
6303
|
)
|
|
5482
6304
|
);
|
|
5483
6305
|
}
|
|
5484
|
-
return /* @__PURE__ */
|
|
6306
|
+
return /* @__PURE__ */ import_react14.default.createElement(
|
|
5485
6307
|
"div",
|
|
5486
6308
|
{
|
|
5487
6309
|
...props,
|
|
@@ -5490,7 +6312,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5490
6312
|
...props.style
|
|
5491
6313
|
}
|
|
5492
6314
|
},
|
|
5493
|
-
/* @__PURE__ */
|
|
6315
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5494
6316
|
StateInspectorDisclosureSection,
|
|
5495
6317
|
{
|
|
5496
6318
|
isFirst: true,
|
|
@@ -5502,7 +6324,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5502
6324
|
flex: "0 0 auto",
|
|
5503
6325
|
maxHeight: "200px"
|
|
5504
6326
|
},
|
|
5505
|
-
right: /* @__PURE__ */
|
|
6327
|
+
right: /* @__PURE__ */ import_react14.default.createElement(
|
|
5506
6328
|
StateInspectorToggleButton,
|
|
5507
6329
|
{
|
|
5508
6330
|
showInspector,
|
|
@@ -5512,14 +6334,14 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5512
6334
|
}
|
|
5513
6335
|
)
|
|
5514
6336
|
},
|
|
5515
|
-
/* @__PURE__ */
|
|
6337
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, { style: { flex: "0 0 auto" } }, connectedUsers?.map((user) => /* @__PURE__ */ import_react14.default.createElement(
|
|
5516
6338
|
StateInspectorRow,
|
|
5517
6339
|
{
|
|
5518
6340
|
key: user.id,
|
|
5519
6341
|
colorScheme,
|
|
5520
6342
|
variant: user.id === userId ? "up" : void 0
|
|
5521
6343
|
},
|
|
5522
|
-
user.image && /* @__PURE__ */
|
|
6344
|
+
user.image && /* @__PURE__ */ import_react14.default.createElement(
|
|
5523
6345
|
"img",
|
|
5524
6346
|
{
|
|
5525
6347
|
src: user.image,
|
|
@@ -5540,7 +6362,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5540
6362
|
" (",
|
|
5541
6363
|
ellipsis(user.id.toString(), 8, "middle"),
|
|
5542
6364
|
")"
|
|
5543
|
-
)), !connectedUsers && /* @__PURE__ */
|
|
6365
|
+
)), !connectedUsers && /* @__PURE__ */ import_react14.default.createElement(
|
|
5544
6366
|
"div",
|
|
5545
6367
|
{
|
|
5546
6368
|
style: {
|
|
@@ -5551,13 +6373,13 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5551
6373
|
gap: "4px"
|
|
5552
6374
|
}
|
|
5553
6375
|
},
|
|
5554
|
-
/* @__PURE__ */
|
|
6376
|
+
/* @__PURE__ */ import_react14.default.createElement("span", null, "No connected users")
|
|
5555
6377
|
))
|
|
5556
6378
|
),
|
|
5557
|
-
/* @__PURE__ */
|
|
6379
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5558
6380
|
StateInspectorDisclosureSection,
|
|
5559
6381
|
{
|
|
5560
|
-
title: /* @__PURE__ */
|
|
6382
|
+
title: /* @__PURE__ */ import_react14.default.createElement(StateInspectorTitleLabel, null, "Data", /* @__PURE__ */ import_react14.default.createElement(
|
|
5561
6383
|
ColoredDot,
|
|
5562
6384
|
{
|
|
5563
6385
|
type: multipeerStateInitialized ? "success" : "error"
|
|
@@ -5566,7 +6388,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5566
6388
|
colorScheme,
|
|
5567
6389
|
setOpen: setShowData,
|
|
5568
6390
|
open: showData,
|
|
5569
|
-
right: /* @__PURE__ */
|
|
6391
|
+
right: /* @__PURE__ */ import_react14.default.createElement(
|
|
5570
6392
|
"span",
|
|
5571
6393
|
{
|
|
5572
6394
|
style: {
|
|
@@ -5574,9 +6396,9 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5574
6396
|
gap: "12px"
|
|
5575
6397
|
}
|
|
5576
6398
|
},
|
|
5577
|
-
/* @__PURE__ */
|
|
5578
|
-
/* @__PURE__ */
|
|
5579
|
-
/* @__PURE__ */
|
|
6399
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorButton, { theme, onClick: handleImportAll }, "Import"),
|
|
6400
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorButton, { theme, onClick: handleExportAll }, "Export"),
|
|
6401
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5580
6402
|
StateInspectorButton,
|
|
5581
6403
|
{
|
|
5582
6404
|
theme,
|
|
@@ -5588,15 +6410,15 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5588
6410
|
)
|
|
5589
6411
|
)
|
|
5590
6412
|
},
|
|
5591
|
-
/* @__PURE__ */
|
|
5592
|
-
|
|
6413
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react14.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react14.default.createElement(
|
|
6414
|
+
import_react_inspector6.ObjectInspector,
|
|
5593
6415
|
{
|
|
5594
6416
|
name: multiplayerStateManager.schema ? "state" : void 0,
|
|
5595
6417
|
data: state,
|
|
5596
6418
|
theme
|
|
5597
6419
|
}
|
|
5598
|
-
)), multiplayerStateManager.schema && /* @__PURE__ */
|
|
5599
|
-
|
|
6420
|
+
)), multiplayerStateManager.schema && /* @__PURE__ */ import_react14.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react14.default.createElement(
|
|
6421
|
+
import_react_inspector6.ObjectInspector,
|
|
5600
6422
|
{
|
|
5601
6423
|
name: "schema",
|
|
5602
6424
|
data: multiplayerStateManager.schema,
|
|
@@ -5604,7 +6426,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5604
6426
|
}
|
|
5605
6427
|
)))
|
|
5606
6428
|
),
|
|
5607
|
-
/* @__PURE__ */
|
|
6429
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5608
6430
|
HistorySection,
|
|
5609
6431
|
{
|
|
5610
6432
|
showHistory,
|
|
@@ -5614,14 +6436,29 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5614
6436
|
multiplayerStateManager
|
|
5615
6437
|
}
|
|
5616
6438
|
),
|
|
5617
|
-
/* @__PURE__ */
|
|
6439
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5618
6440
|
StateInspectorDisclosureSection,
|
|
5619
6441
|
{
|
|
5620
6442
|
open: showAssets,
|
|
5621
6443
|
setOpen: setShowAssets,
|
|
5622
|
-
title: /* @__PURE__ */
|
|
6444
|
+
title: /* @__PURE__ */ import_react14.default.createElement(StateInspectorTitleLabel, null, "Assets (", assets.length, ")", /* @__PURE__ */ import_react14.default.createElement(ColoredDot, { type: assetsInitialized ? "success" : "error" })),
|
|
5623
6445
|
colorScheme,
|
|
5624
|
-
right: /* @__PURE__ */
|
|
6446
|
+
right: /* @__PURE__ */ import_react14.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react14.default.createElement(
|
|
6447
|
+
StateInspectorButton,
|
|
6448
|
+
{
|
|
6449
|
+
theme,
|
|
6450
|
+
onClick: async () => {
|
|
6451
|
+
const ok = confirm(
|
|
6452
|
+
"Are you sure you want to delete all assets?"
|
|
6453
|
+
);
|
|
6454
|
+
if (!ok) return;
|
|
6455
|
+
await Promise.all(
|
|
6456
|
+
assets.map((asset) => assetManager.delete(asset.id))
|
|
6457
|
+
);
|
|
6458
|
+
}
|
|
6459
|
+
},
|
|
6460
|
+
"Delete all"
|
|
6461
|
+
), /* @__PURE__ */ import_react14.default.createElement(
|
|
5625
6462
|
StateInspectorButton,
|
|
5626
6463
|
{
|
|
5627
6464
|
theme,
|
|
@@ -5634,7 +6471,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5634
6471
|
}
|
|
5635
6472
|
},
|
|
5636
6473
|
"Reload"
|
|
5637
|
-
), /* @__PURE__ */
|
|
6474
|
+
), /* @__PURE__ */ import_react14.default.createElement(
|
|
5638
6475
|
StateInspectorButton,
|
|
5639
6476
|
{
|
|
5640
6477
|
theme,
|
|
@@ -5658,7 +6495,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5658
6495
|
"Upload"
|
|
5659
6496
|
))
|
|
5660
6497
|
},
|
|
5661
|
-
/* @__PURE__ */
|
|
6498
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, null, assets.map((asset) => /* @__PURE__ */ import_react14.default.createElement(StateInspectorRow, { key: asset.id, colorScheme }, /* @__PURE__ */ import_react14.default.createElement(import_react_inspector6.ObjectInspector, { name: asset.id, data: asset, theme }), /* @__PURE__ */ import_react14.default.createElement(
|
|
5662
6499
|
StateInspectorButton,
|
|
5663
6500
|
{
|
|
5664
6501
|
theme,
|
|
@@ -5667,14 +6504,98 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5667
6504
|
"Delete"
|
|
5668
6505
|
))))
|
|
5669
6506
|
),
|
|
5670
|
-
/* @__PURE__ */
|
|
6507
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5671
6508
|
StateInspectorDisclosureSection,
|
|
5672
6509
|
{
|
|
5673
|
-
title: /* @__PURE__ */
|
|
6510
|
+
title: /* @__PURE__ */ import_react14.default.createElement(StateInspectorTitleLabel, null, "Resources (", resources.length, ")", /* @__PURE__ */ import_react14.default.createElement(ColoredDot, { type: resourcesInitialized ? "success" : "error" })),
|
|
6511
|
+
colorScheme,
|
|
6512
|
+
open: showResources,
|
|
6513
|
+
setOpen: setShowResources,
|
|
6514
|
+
right: /* @__PURE__ */ import_react14.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react14.default.createElement(
|
|
6515
|
+
StateInspectorButton,
|
|
6516
|
+
{
|
|
6517
|
+
theme,
|
|
6518
|
+
onClick: async () => {
|
|
6519
|
+
const ok = confirm(
|
|
6520
|
+
"Are you sure you want to delete all resources?"
|
|
6521
|
+
);
|
|
6522
|
+
if (!ok) return;
|
|
6523
|
+
await Promise.all(
|
|
6524
|
+
resources.map(
|
|
6525
|
+
(resource) => resourceManager.deleteResource({ id: resource.id })
|
|
6526
|
+
)
|
|
6527
|
+
);
|
|
6528
|
+
}
|
|
6529
|
+
},
|
|
6530
|
+
"Delete all"
|
|
6531
|
+
), /* @__PURE__ */ import_react14.default.createElement(
|
|
6532
|
+
StateInspectorButton,
|
|
6533
|
+
{
|
|
6534
|
+
theme,
|
|
6535
|
+
onClick: async () => {
|
|
6536
|
+
const path2 = prompt("Enter directory path") || uuid();
|
|
6537
|
+
await resourceManager.createResource({
|
|
6538
|
+
type: "directory",
|
|
6539
|
+
path: path2
|
|
6540
|
+
});
|
|
6541
|
+
}
|
|
6542
|
+
},
|
|
6543
|
+
"Create Directory"
|
|
6544
|
+
), /* @__PURE__ */ import_react14.default.createElement(
|
|
6545
|
+
StateInspectorButton,
|
|
6546
|
+
{
|
|
6547
|
+
theme,
|
|
6548
|
+
onClick: async () => {
|
|
6549
|
+
const file = await uploadFile();
|
|
6550
|
+
resourceManager.createResource({
|
|
6551
|
+
type: "asset",
|
|
6552
|
+
path: file.name || uuid(),
|
|
6553
|
+
asset: {
|
|
6554
|
+
content: Base64.encode(await file.arrayBuffer()),
|
|
6555
|
+
contentType: file.type,
|
|
6556
|
+
encoding: "base64"
|
|
6557
|
+
}
|
|
6558
|
+
});
|
|
6559
|
+
}
|
|
6560
|
+
},
|
|
6561
|
+
"Create Asset"
|
|
6562
|
+
))
|
|
6563
|
+
},
|
|
6564
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, null, resources?.map((resource) => /* @__PURE__ */ import_react14.default.createElement(StateInspectorRow, { key: resource.id, colorScheme }, /* @__PURE__ */ import_react14.default.createElement(
|
|
6565
|
+
import_react_inspector6.ObjectInspector,
|
|
6566
|
+
{
|
|
6567
|
+
name: resource.path,
|
|
6568
|
+
data: resource,
|
|
6569
|
+
theme
|
|
6570
|
+
}
|
|
6571
|
+
), /* @__PURE__ */ import_react14.default.createElement("div", { style: { display: "flex", gap: "4px" } }, /* @__PURE__ */ import_react14.default.createElement(
|
|
6572
|
+
StateInspectorButton,
|
|
6573
|
+
{
|
|
6574
|
+
theme,
|
|
6575
|
+
onClick: () => resourceManager.deleteResource({ id: resource.id })
|
|
6576
|
+
},
|
|
6577
|
+
"Delete"
|
|
6578
|
+
), /* @__PURE__ */ import_react14.default.createElement(
|
|
6579
|
+
StateInspectorButton,
|
|
6580
|
+
{
|
|
6581
|
+
theme,
|
|
6582
|
+
onClick: () => {
|
|
6583
|
+
const path2 = prompt("Enter new path", resource.path);
|
|
6584
|
+
if (!path2) return;
|
|
6585
|
+
resourceManager.updateResource({ id: resource.id, path: path2 });
|
|
6586
|
+
}
|
|
6587
|
+
},
|
|
6588
|
+
"Rename"
|
|
6589
|
+
)))))
|
|
6590
|
+
),
|
|
6591
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
6592
|
+
StateInspectorDisclosureSection,
|
|
6593
|
+
{
|
|
6594
|
+
title: /* @__PURE__ */ import_react14.default.createElement(StateInspectorTitleLabel, null, "Secrets", /* @__PURE__ */ import_react14.default.createElement(ColoredDot, { type: secretsInitialized ? "success" : "error" })),
|
|
5674
6595
|
colorScheme,
|
|
5675
6596
|
open: showSecrets,
|
|
5676
6597
|
setOpen: setShowSecrets,
|
|
5677
|
-
right: /* @__PURE__ */
|
|
6598
|
+
right: /* @__PURE__ */ import_react14.default.createElement(
|
|
5678
6599
|
StateInspectorButton,
|
|
5679
6600
|
{
|
|
5680
6601
|
theme,
|
|
@@ -5689,7 +6610,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5689
6610
|
"Create"
|
|
5690
6611
|
)
|
|
5691
6612
|
},
|
|
5692
|
-
/* @__PURE__ */
|
|
6613
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, null, secrets.map((secret) => /* @__PURE__ */ import_react14.default.createElement(StateInspectorRow, { key: secret.id, colorScheme }, /* @__PURE__ */ import_react14.default.createElement(import_react_inspector6.ObjectInspector, { data: secret, theme }), /* @__PURE__ */ import_react14.default.createElement(
|
|
5693
6614
|
StateInspectorButton,
|
|
5694
6615
|
{
|
|
5695
6616
|
theme,
|
|
@@ -5699,15 +6620,15 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5699
6620
|
))))
|
|
5700
6621
|
),
|
|
5701
6622
|
" ",
|
|
5702
|
-
/* @__PURE__ */
|
|
6623
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5703
6624
|
StateInspectorDisclosureSection,
|
|
5704
6625
|
{
|
|
5705
6626
|
open: showInputs,
|
|
5706
6627
|
setOpen: setShowInputs,
|
|
5707
|
-
title: /* @__PURE__ */
|
|
6628
|
+
title: /* @__PURE__ */ import_react14.default.createElement(StateInspectorTitleLabel, null, "Inputs", /* @__PURE__ */ import_react14.default.createElement(ColoredDot, { type: inputsInitialized ? "success" : "error" })),
|
|
5708
6629
|
colorScheme
|
|
5709
6630
|
},
|
|
5710
|
-
/* @__PURE__ */
|
|
6631
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, null, inputs?.map((input) => /* @__PURE__ */ import_react14.default.createElement(StateInspectorRow, { key: input.id, colorScheme }, /* @__PURE__ */ import_react14.default.createElement(import_react_inspector6.ObjectInspector, { data: input, theme }))), !inputs?.length && /* @__PURE__ */ import_react14.default.createElement(
|
|
5711
6632
|
"div",
|
|
5712
6633
|
{
|
|
5713
6634
|
style: {
|
|
@@ -5718,15 +6639,15 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5718
6639
|
gap: "4px"
|
|
5719
6640
|
}
|
|
5720
6641
|
},
|
|
5721
|
-
/* @__PURE__ */
|
|
6642
|
+
/* @__PURE__ */ import_react14.default.createElement("span", null, "No inputs")
|
|
5722
6643
|
))
|
|
5723
6644
|
),
|
|
5724
|
-
/* @__PURE__ */
|
|
6645
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5725
6646
|
StateInspectorDisclosureSection,
|
|
5726
6647
|
{
|
|
5727
6648
|
open: showOutputTransforms,
|
|
5728
6649
|
setOpen: setShowOutputTransforms,
|
|
5729
|
-
title: /* @__PURE__ */
|
|
6650
|
+
title: /* @__PURE__ */ import_react14.default.createElement(StateInspectorTitleLabel, null, "Output Transforms", /* @__PURE__ */ import_react14.default.createElement(
|
|
5730
6651
|
ColoredDot,
|
|
5731
6652
|
{
|
|
5732
6653
|
type: outputTransformsInitialized ? "success" : "error"
|
|
@@ -5734,7 +6655,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5734
6655
|
)),
|
|
5735
6656
|
colorScheme
|
|
5736
6657
|
},
|
|
5737
|
-
/* @__PURE__ */
|
|
6658
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, null, outputTransforms?.map((transform) => /* @__PURE__ */ import_react14.default.createElement(StateInspectorRow, { key: transform.id, colorScheme }, /* @__PURE__ */ import_react14.default.createElement(import_react_inspector6.ObjectInspector, { data: transform, theme }))), !outputTransforms?.length && /* @__PURE__ */ import_react14.default.createElement(
|
|
5738
6659
|
"div",
|
|
5739
6660
|
{
|
|
5740
6661
|
style: {
|
|
@@ -5745,10 +6666,10 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5745
6666
|
gap: "4px"
|
|
5746
6667
|
}
|
|
5747
6668
|
},
|
|
5748
|
-
/* @__PURE__ */
|
|
6669
|
+
/* @__PURE__ */ import_react14.default.createElement("span", null, "No output transforms")
|
|
5749
6670
|
))
|
|
5750
6671
|
),
|
|
5751
|
-
/* @__PURE__ */
|
|
6672
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5752
6673
|
StateInspectorDisclosureSection,
|
|
5753
6674
|
{
|
|
5754
6675
|
title: "Tasks",
|
|
@@ -5756,7 +6677,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5756
6677
|
open: showTasks,
|
|
5757
6678
|
setOpen: setShowTasks
|
|
5758
6679
|
},
|
|
5759
|
-
/* @__PURE__ */
|
|
6680
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, null, tasks?.map((task) => /* @__PURE__ */ import_react14.default.createElement(
|
|
5760
6681
|
StateInspectorRow,
|
|
5761
6682
|
{
|
|
5762
6683
|
key: task.id,
|
|
@@ -5765,8 +6686,8 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5765
6686
|
backgroundColor: task.status === "done" ? "rgba(0,255,0,0.2)" : task.status === "error" ? "rgba(255,0,0,0.2)" : void 0
|
|
5766
6687
|
}
|
|
5767
6688
|
},
|
|
5768
|
-
/* @__PURE__ */
|
|
5769
|
-
|
|
6689
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
6690
|
+
import_react_inspector6.ObjectInspector,
|
|
5770
6691
|
{
|
|
5771
6692
|
name: task.name,
|
|
5772
6693
|
data: task.payload,
|
|
@@ -5775,7 +6696,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5775
6696
|
)
|
|
5776
6697
|
)))
|
|
5777
6698
|
),
|
|
5778
|
-
/* @__PURE__ */
|
|
6699
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5779
6700
|
StateInspectorDisclosureSection,
|
|
5780
6701
|
{
|
|
5781
6702
|
open: showEphemeral,
|
|
@@ -5783,8 +6704,8 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5783
6704
|
title: "Ephemeral User Data",
|
|
5784
6705
|
colorScheme
|
|
5785
6706
|
},
|
|
5786
|
-
/* @__PURE__ */
|
|
5787
|
-
|
|
6707
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, null, Object.entries(ephemeral).map(([key, value]) => /* @__PURE__ */ import_react14.default.createElement(StateInspectorRow, { key, colorScheme }, /* @__PURE__ */ import_react14.default.createElement(
|
|
6708
|
+
import_react_inspector6.ObjectInspector,
|
|
5788
6709
|
{
|
|
5789
6710
|
name: key,
|
|
5790
6711
|
data: value,
|
|
@@ -5793,7 +6714,17 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5793
6714
|
}
|
|
5794
6715
|
))))
|
|
5795
6716
|
),
|
|
5796
|
-
/* @__PURE__ */
|
|
6717
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
6718
|
+
ActivityEventsSection,
|
|
6719
|
+
{
|
|
6720
|
+
colorScheme,
|
|
6721
|
+
activityEventsContainerRef,
|
|
6722
|
+
showEvents: showActivityEvents,
|
|
6723
|
+
setShowEvents: setShowActivityEvents,
|
|
6724
|
+
activityEventsManager
|
|
6725
|
+
}
|
|
6726
|
+
),
|
|
6727
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
5797
6728
|
EventsSection,
|
|
5798
6729
|
{
|
|
5799
6730
|
connectionEvents,
|
|
@@ -5805,9 +6736,6 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
5805
6736
|
)
|
|
5806
6737
|
);
|
|
5807
6738
|
});
|
|
5808
|
-
function TitleLabel({ children }) {
|
|
5809
|
-
return /* @__PURE__ */ import_react12.default.createElement("span", { style: { display: "flex", alignItems: "center", gap: "4px" } }, children);
|
|
5810
|
-
}
|
|
5811
6739
|
|
|
5812
6740
|
// src/inspector/useStateInspector.tsx
|
|
5813
6741
|
function createShadowRootElement() {
|
|
@@ -5824,7 +6752,7 @@ function useStateInspector({
|
|
|
5824
6752
|
colorScheme,
|
|
5825
6753
|
anchor
|
|
5826
6754
|
}) {
|
|
5827
|
-
const [root, setRoot] =
|
|
6755
|
+
const [root, setRoot] = import_react15.default.useState(null);
|
|
5828
6756
|
(0, import_react_utils2.useIsomorphicLayoutEffect)(() => {
|
|
5829
6757
|
if (disabled) return;
|
|
5830
6758
|
const { host, container } = createShadowRootElement();
|
|
@@ -5838,7 +6766,7 @@ function useStateInspector({
|
|
|
5838
6766
|
(0, import_react_utils2.useIsomorphicLayoutEffect)(() => {
|
|
5839
6767
|
if (!root) return;
|
|
5840
6768
|
root.render(
|
|
5841
|
-
/* @__PURE__ */
|
|
6769
|
+
/* @__PURE__ */ import_react15.default.createElement(
|
|
5842
6770
|
StateInspector,
|
|
5843
6771
|
{
|
|
5844
6772
|
colorScheme,
|
|
@@ -5851,23 +6779,23 @@ function useStateInspector({
|
|
|
5851
6779
|
}
|
|
5852
6780
|
|
|
5853
6781
|
// src/hooks.ts
|
|
5854
|
-
function useSyncStateManager(stateManager,
|
|
5855
|
-
const getSnapshot = (0,
|
|
5856
|
-
() => typeof
|
|
5857
|
-
[stateManager,
|
|
6782
|
+
function useSyncStateManager(stateManager, path2) {
|
|
6783
|
+
const getSnapshot = (0, import_react16.useCallback)(
|
|
6784
|
+
() => typeof path2 === "string" ? stateManager.getState(path2) : stateManager.getState(),
|
|
6785
|
+
[stateManager, path2]
|
|
5858
6786
|
);
|
|
5859
|
-
return (0,
|
|
6787
|
+
return (0, import_react16.useSyncExternalStore)(
|
|
5860
6788
|
stateManager.addListener,
|
|
5861
6789
|
getSnapshot,
|
|
5862
6790
|
getSnapshot
|
|
5863
6791
|
);
|
|
5864
6792
|
}
|
|
5865
6793
|
function useManagedState(createInitialState, options) {
|
|
5866
|
-
const [stateManager] = (0,
|
|
6794
|
+
const [stateManager] = (0, import_react16.useState)(
|
|
5867
6795
|
() => new import_state_manager2.StateManager(createInitialState(), options)
|
|
5868
6796
|
);
|
|
5869
6797
|
const state = useSyncStateManager(stateManager);
|
|
5870
|
-
const setState = (0,
|
|
6798
|
+
const setState = (0, import_react16.useCallback)(
|
|
5871
6799
|
(...args) => {
|
|
5872
6800
|
const [metadata, action] = args.length === 1 ? [void 0, args[0]] : args;
|
|
5873
6801
|
if (metadata === void 0) {
|
|
@@ -5903,7 +6831,7 @@ function useManagedState(createInitialState, options) {
|
|
|
5903
6831
|
return [state, setState, stateManager];
|
|
5904
6832
|
}
|
|
5905
6833
|
function useManagedHistory(stateManager) {
|
|
5906
|
-
return (0,
|
|
6834
|
+
return (0, import_react16.useSyncExternalStore)(
|
|
5907
6835
|
stateManager.historyEmittor.addListener,
|
|
5908
6836
|
stateManager.getHistorySnapshot,
|
|
5909
6837
|
stateManager.getHistorySnapshot
|
|
@@ -5915,14 +6843,14 @@ function useMultiplayerState(initialState, options) {
|
|
|
5915
6843
|
inspector,
|
|
5916
6844
|
...rest
|
|
5917
6845
|
} = options ?? {};
|
|
5918
|
-
const [noyaManager] = (0,
|
|
6846
|
+
const [noyaManager] = (0, import_react16.useState)(
|
|
5919
6847
|
() => new import_state_manager2.NoyaManager(initialState, rest)
|
|
5920
6848
|
);
|
|
5921
6849
|
const state = useObservable(
|
|
5922
6850
|
noyaManager.multiplayerStateManager.optimisticState$
|
|
5923
6851
|
);
|
|
5924
6852
|
const assets = useObservable(noyaManager.assetManager.assets$);
|
|
5925
|
-
const extras = (0,
|
|
6853
|
+
const extras = (0, import_react16.useMemo)(() => {
|
|
5926
6854
|
return {
|
|
5927
6855
|
noyaManager,
|
|
5928
6856
|
taskManager: noyaManager.taskManager,
|
|
@@ -5941,8 +6869,8 @@ function useMultiplayerState(initialState, options) {
|
|
|
5941
6869
|
assets
|
|
5942
6870
|
};
|
|
5943
6871
|
}, [noyaManager, assets]);
|
|
5944
|
-
const syncRef = (0,
|
|
5945
|
-
(0,
|
|
6872
|
+
const syncRef = (0, import_react16.useRef)(sync);
|
|
6873
|
+
(0, import_react16.useEffect)(() => {
|
|
5946
6874
|
if (syncRef.current) {
|
|
5947
6875
|
return syncRef.current({ noyaManager });
|
|
5948
6876
|
}
|
|
@@ -5957,13 +6885,13 @@ function useMultiplayerState(initialState, options) {
|
|
|
5957
6885
|
}
|
|
5958
6886
|
function useErrorOverlay(noyaManager) {
|
|
5959
6887
|
const unrecoverableError = useObservable(noyaManager.unrecoverableError);
|
|
5960
|
-
(0,
|
|
6888
|
+
(0, import_react16.useEffect)(() => {
|
|
5961
6889
|
if (!unrecoverableError) return;
|
|
5962
6890
|
const el = document.createElement("div");
|
|
5963
6891
|
el.id = "noya-multiplayer-react-error-overlay";
|
|
5964
6892
|
document.body.appendChild(el);
|
|
5965
6893
|
const root = (0, import_client2.createRoot)(el);
|
|
5966
|
-
root.render((0,
|
|
6894
|
+
root.render((0, import_react16.createElement)(ErrorOverlay, { error: unrecoverableError }));
|
|
5967
6895
|
return () => {
|
|
5968
6896
|
root.unmount();
|
|
5969
6897
|
el.remove();
|
|
@@ -6004,7 +6932,7 @@ function parseAppDataParameter(options) {
|
|
|
6004
6932
|
function getAppData(initialState, schema, options) {
|
|
6005
6933
|
const resolvedInitialState = initialState instanceof Function ? initialState() : initialState;
|
|
6006
6934
|
let appData = parseAppDataParameter(options) ?? createDefaultAppData(resolvedInitialState);
|
|
6007
|
-
if (options?.overrideExistingState) {
|
|
6935
|
+
if (options?.overrideExistingState || appData.initialState === null) {
|
|
6008
6936
|
appData.initialState = resolvedInitialState;
|
|
6009
6937
|
}
|
|
6010
6938
|
appData.initialState = enforceSchema(appData.initialState, schema);
|
|
@@ -6020,12 +6948,12 @@ function useNoyaState(...args) {
|
|
|
6020
6948
|
theme,
|
|
6021
6949
|
viewType
|
|
6022
6950
|
}
|
|
6023
|
-
] = (0,
|
|
6951
|
+
] = (0, import_react17.useState)(() => {
|
|
6024
6952
|
return getAppData(initialState, options?.schema, {
|
|
6025
6953
|
overrideExistingState: options?.overrideExistingState
|
|
6026
6954
|
});
|
|
6027
6955
|
});
|
|
6028
|
-
const sync = (0,
|
|
6956
|
+
const sync = (0, import_react17.useMemo)(() => {
|
|
6029
6957
|
return (0, import_state_manager3.isEmbeddedApp)() ? (0, import_state_manager3.parentFrameSync)({ debug: options?.debug }) : multiplayerUrl ? (0, import_state_manager3.webSocketSync)({
|
|
6030
6958
|
url: multiplayerUrl,
|
|
6031
6959
|
debug: options?.debug
|
|
@@ -6037,16 +6965,16 @@ function useNoyaState(...args) {
|
|
|
6037
6965
|
sync: options?.sync ?? sync
|
|
6038
6966
|
});
|
|
6039
6967
|
const [, , extras] = result;
|
|
6040
|
-
const mergedExtras = (0,
|
|
6968
|
+
const mergedExtras = (0, import_react17.useMemo)(() => {
|
|
6041
6969
|
return { ...extras, theme, viewType };
|
|
6042
6970
|
}, [extras, theme, viewType]);
|
|
6043
6971
|
return [result[0], result[1], mergedExtras];
|
|
6044
6972
|
}
|
|
6045
6973
|
|
|
6046
6974
|
// src/NoyaStateContext.tsx
|
|
6047
|
-
var AnyNoyaStateContext = (0,
|
|
6975
|
+
var AnyNoyaStateContext = (0, import_react18.createContext)(void 0);
|
|
6048
6976
|
function useAnyNoyaStateContext() {
|
|
6049
|
-
const value = (0,
|
|
6977
|
+
const value = (0, import_react18.useContext)(AnyNoyaStateContext);
|
|
6050
6978
|
if (!value) {
|
|
6051
6979
|
throw new Error(
|
|
6052
6980
|
"useNoyaStateContext must be used within a NoyaStateProvider"
|
|
@@ -6072,7 +7000,7 @@ function useAssets() {
|
|
|
6072
7000
|
}
|
|
6073
7001
|
function useAsset(id) {
|
|
6074
7002
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
6075
|
-
const observable = (0,
|
|
7003
|
+
const observable = (0, import_react18.useMemo)(
|
|
6076
7004
|
() => noyaManager.assetManager.assets$.map(
|
|
6077
7005
|
(assets) => assets.find((a) => a.id === id)
|
|
6078
7006
|
),
|
|
@@ -6083,7 +7011,7 @@ function useAsset(id) {
|
|
|
6083
7011
|
function useAssetManager() {
|
|
6084
7012
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
6085
7013
|
const isInitialized = useObservable(noyaManager.assetManager.isInitialized$);
|
|
6086
|
-
return (0,
|
|
7014
|
+
return (0, import_react18.useMemo)(
|
|
6087
7015
|
() => ({
|
|
6088
7016
|
create: noyaManager.assetManager.create,
|
|
6089
7017
|
delete: noyaManager.assetManager.delete,
|
|
@@ -6108,7 +7036,7 @@ function useSecret(name) {
|
|
|
6108
7036
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
6109
7037
|
return useObservable(
|
|
6110
7038
|
noyaManager.secretManager.secrets$,
|
|
6111
|
-
(0,
|
|
7039
|
+
(0, import_react18.useCallback)((secrets) => secrets.find((s) => s.name === name), [name])
|
|
6112
7040
|
);
|
|
6113
7041
|
}
|
|
6114
7042
|
function useInputs() {
|
|
@@ -6126,7 +7054,7 @@ function useIOManager() {
|
|
|
6126
7054
|
function usePublish(callback) {
|
|
6127
7055
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
6128
7056
|
const stableCallback = (0, import_react_utils3.useStableCallback)(callback);
|
|
6129
|
-
(0,
|
|
7057
|
+
(0, import_react18.useEffect)(() => {
|
|
6130
7058
|
noyaManager.publishingManager.setPublishingEnabled(true);
|
|
6131
7059
|
noyaManager.publishingManager.getFilesToPublish = stableCallback;
|
|
6132
7060
|
return () => {
|
|
@@ -6137,7 +7065,7 @@ function usePublish(callback) {
|
|
|
6137
7065
|
}
|
|
6138
7066
|
function useIsInitialized() {
|
|
6139
7067
|
const { noyaManager, viewType } = useAnyNoyaStateContext();
|
|
6140
|
-
const isInitializedObservable = (0,
|
|
7068
|
+
const isInitializedObservable = (0, import_react18.useMemo)(
|
|
6141
7069
|
() => import_observable.Observable.combine(
|
|
6142
7070
|
[
|
|
6143
7071
|
...viewType === "preview" ? [] : [noyaManager.multiplayerStateManager.isInitialized$],
|
|
@@ -6154,18 +7082,156 @@ function usePipelineManager() {
|
|
|
6154
7082
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
6155
7083
|
return noyaManager.pipelineManager;
|
|
6156
7084
|
}
|
|
6157
|
-
var ConnectedUsersContext = (0,
|
|
7085
|
+
var ConnectedUsersContext = (0, import_react18.createContext)(void 0);
|
|
6158
7086
|
function useConnectedUsersManager() {
|
|
6159
|
-
return (0,
|
|
7087
|
+
return (0, import_react18.useContext)(ConnectedUsersContext);
|
|
7088
|
+
}
|
|
7089
|
+
function useConnectedUsers() {
|
|
7090
|
+
const connectedUsersManager = useConnectedUsersManager();
|
|
7091
|
+
return useObservable(connectedUsersManager?.connectedUsers$);
|
|
7092
|
+
}
|
|
7093
|
+
function useConnectedUser(userId) {
|
|
7094
|
+
const connectedUsersManager = useConnectedUsersManager();
|
|
7095
|
+
return useObservable(
|
|
7096
|
+
connectedUsersManager?.connectedUsers$,
|
|
7097
|
+
(0, import_react18.useCallback)(
|
|
7098
|
+
(users) => {
|
|
7099
|
+
return users.find((user) => {
|
|
7100
|
+
const prefix = user.id.slice(0, 8);
|
|
7101
|
+
return userId?.includes(prefix);
|
|
7102
|
+
});
|
|
7103
|
+
},
|
|
7104
|
+
[userId]
|
|
7105
|
+
)
|
|
7106
|
+
);
|
|
6160
7107
|
}
|
|
6161
|
-
var AnyEphemeralUserDataManagerContext = (0,
|
|
7108
|
+
var AnyEphemeralUserDataManagerContext = (0, import_react18.createContext)(void 0);
|
|
6162
7109
|
function useAnyEphemeralUserData() {
|
|
6163
|
-
return (0,
|
|
7110
|
+
return (0, import_react18.useContext)(AnyEphemeralUserDataManagerContext);
|
|
6164
7111
|
}
|
|
6165
7112
|
function useCurrentUserId() {
|
|
6166
7113
|
const connectedUsersManager = useConnectedUsersManager();
|
|
6167
7114
|
return useObservable(connectedUsersManager?.currentUserId$);
|
|
6168
7115
|
}
|
|
7116
|
+
function useIsProcessing() {
|
|
7117
|
+
const { noyaManager } = useAnyNoyaStateContext();
|
|
7118
|
+
return useObservable(noyaManager.isProcessing$);
|
|
7119
|
+
}
|
|
7120
|
+
function useResourceManager() {
|
|
7121
|
+
const { noyaManager } = useAnyNoyaStateContext();
|
|
7122
|
+
return noyaManager.resourceManager;
|
|
7123
|
+
}
|
|
7124
|
+
function resourceToMediaItem(resource) {
|
|
7125
|
+
switch (resource.type) {
|
|
7126
|
+
case "asset":
|
|
7127
|
+
return { kind: "asset", id: resource.id, assetId: resource.assetId };
|
|
7128
|
+
case "file":
|
|
7129
|
+
return { kind: "noyaFile", id: resource.id, fileId: resource.fileId };
|
|
7130
|
+
default:
|
|
7131
|
+
return { kind: "folder", id: resource.id };
|
|
7132
|
+
}
|
|
7133
|
+
}
|
|
7134
|
+
function useResources({
|
|
7135
|
+
shouldDeleteAssets = true
|
|
7136
|
+
} = {}) {
|
|
7137
|
+
const resourceManager = useResourceManager();
|
|
7138
|
+
const assetManager = useAssetManager();
|
|
7139
|
+
const resourceMap = useObservable(
|
|
7140
|
+
resourceManager.optimisticResources$,
|
|
7141
|
+
(0, import_react18.useCallback)((resources) => {
|
|
7142
|
+
return Object.fromEntries(
|
|
7143
|
+
resources.map((resource) => [resource.path, resource])
|
|
7144
|
+
);
|
|
7145
|
+
}, [])
|
|
7146
|
+
);
|
|
7147
|
+
const setResourceMap = (0, import_react18.useCallback)(
|
|
7148
|
+
async (action) => {
|
|
7149
|
+
const newResourceMap = action instanceof Function ? action(resourceMap) : action;
|
|
7150
|
+
const { addedResources, removedResources, modifiedResources } = diffResourceMaps(resourceMap, newResourceMap, "id");
|
|
7151
|
+
if (addedResources.length > 0) {
|
|
7152
|
+
const payload = addedResources.map((resource) => {
|
|
7153
|
+
switch (resource.type) {
|
|
7154
|
+
case "directory":
|
|
7155
|
+
return {
|
|
7156
|
+
path: resource.path,
|
|
7157
|
+
type: "directory"
|
|
7158
|
+
};
|
|
7159
|
+
case "asset":
|
|
7160
|
+
return {
|
|
7161
|
+
path: resource.path,
|
|
7162
|
+
type: "asset",
|
|
7163
|
+
assetId: resource.assetId,
|
|
7164
|
+
asset: resource.asset
|
|
7165
|
+
};
|
|
7166
|
+
case "file":
|
|
7167
|
+
return {
|
|
7168
|
+
path: resource.path,
|
|
7169
|
+
type: "file",
|
|
7170
|
+
fileId: resource.fileId
|
|
7171
|
+
};
|
|
7172
|
+
case "resource":
|
|
7173
|
+
return {
|
|
7174
|
+
path: resource.path,
|
|
7175
|
+
type: "resource",
|
|
7176
|
+
fileId: resource.fileId,
|
|
7177
|
+
resourceId: resource.resourceId
|
|
7178
|
+
};
|
|
7179
|
+
default:
|
|
7180
|
+
throw new Error(
|
|
7181
|
+
`Unknown resource type: ${resource.type}`
|
|
7182
|
+
);
|
|
7183
|
+
}
|
|
7184
|
+
});
|
|
7185
|
+
await resourceManager.createResource(payload);
|
|
7186
|
+
}
|
|
7187
|
+
for (const resource of removedResources) {
|
|
7188
|
+
await resourceManager.deleteResource({ id: resource.id });
|
|
7189
|
+
if (shouldDeleteAssets && resource.type === "asset") {
|
|
7190
|
+
try {
|
|
7191
|
+
await assetManager.delete(resource.assetId);
|
|
7192
|
+
} catch (error) {
|
|
7193
|
+
console.error("Failed to delete asset:", error);
|
|
7194
|
+
}
|
|
7195
|
+
}
|
|
7196
|
+
}
|
|
7197
|
+
await Promise.all(
|
|
7198
|
+
modifiedResources.map(
|
|
7199
|
+
({ id, path: path2, assetId, asset }) => resourceManager.updateResource({
|
|
7200
|
+
id,
|
|
7201
|
+
path: path2,
|
|
7202
|
+
assetId,
|
|
7203
|
+
asset
|
|
7204
|
+
})
|
|
7205
|
+
)
|
|
7206
|
+
);
|
|
7207
|
+
},
|
|
7208
|
+
[resourceMap, resourceManager, shouldDeleteAssets, assetManager]
|
|
7209
|
+
);
|
|
7210
|
+
return [resourceMap, setResourceMap];
|
|
7211
|
+
}
|
|
7212
|
+
var emptyArray = [];
|
|
7213
|
+
function useActivityEvents(streamFilter) {
|
|
7214
|
+
const { noyaManager } = useAnyNoyaStateContext();
|
|
7215
|
+
return useActivityEventsForManager(
|
|
7216
|
+
streamFilter,
|
|
7217
|
+
noyaManager.activityEventsManager
|
|
7218
|
+
);
|
|
7219
|
+
}
|
|
7220
|
+
function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
7221
|
+
const [streamId, setStreamId] = (0, import_react18.useState)(void 0);
|
|
7222
|
+
const stableStreamFilter = (0, import_react_utils3.useJsonMemo)(streamFilter);
|
|
7223
|
+
(0, import_react18.useEffect)(() => {
|
|
7224
|
+
if (!stableStreamFilter) return;
|
|
7225
|
+
const streamId2 = activityEventsManager.subscribe(stableStreamFilter);
|
|
7226
|
+
setStreamId(streamId2);
|
|
7227
|
+
return () => {
|
|
7228
|
+
setStreamId(void 0);
|
|
7229
|
+
activityEventsManager.unsubscribe(streamId2);
|
|
7230
|
+
};
|
|
7231
|
+
}, [activityEventsManager, stableStreamFilter]);
|
|
7232
|
+
const observable = streamId ? activityEventsManager.getStream(streamId) : void 0;
|
|
7233
|
+
return useObservable(observable) ?? emptyArray;
|
|
7234
|
+
}
|
|
6169
7235
|
var FallbackUntilInitialized = ({
|
|
6170
7236
|
children,
|
|
6171
7237
|
fallback
|
|
@@ -6182,6 +7248,24 @@ function createNoyaContext({
|
|
|
6182
7248
|
}) {
|
|
6183
7249
|
const NoyaStateContext = AnyNoyaStateContext;
|
|
6184
7250
|
const EphemeralUserDataManagerContext = AnyEphemeralUserDataManagerContext;
|
|
7251
|
+
function NoyaContextProvider({
|
|
7252
|
+
children,
|
|
7253
|
+
contextValue
|
|
7254
|
+
}) {
|
|
7255
|
+
return /* @__PURE__ */ import_react18.default.createElement(AnyNoyaStateContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react18.default.createElement(
|
|
7256
|
+
ConnectedUsersContext.Provider,
|
|
7257
|
+
{
|
|
7258
|
+
value: contextValue.noyaManager.connectedUsersManager
|
|
7259
|
+
},
|
|
7260
|
+
/* @__PURE__ */ import_react18.default.createElement(
|
|
7261
|
+
EphemeralUserDataManagerContext.Provider,
|
|
7262
|
+
{
|
|
7263
|
+
value: contextValue.noyaManager.ephemeralUserDataManager
|
|
7264
|
+
},
|
|
7265
|
+
children
|
|
7266
|
+
)
|
|
7267
|
+
));
|
|
7268
|
+
}
|
|
6185
7269
|
function NoyaStateProvider({
|
|
6186
7270
|
children,
|
|
6187
7271
|
initialState,
|
|
@@ -6198,7 +7282,7 @@ function createNoyaContext({
|
|
|
6198
7282
|
...options
|
|
6199
7283
|
}
|
|
6200
7284
|
);
|
|
6201
|
-
const contextValue = (0,
|
|
7285
|
+
const contextValue = (0, import_react18.useMemo)(
|
|
6202
7286
|
() => ({
|
|
6203
7287
|
noyaManager,
|
|
6204
7288
|
theme,
|
|
@@ -6206,53 +7290,41 @@ function createNoyaContext({
|
|
|
6206
7290
|
}),
|
|
6207
7291
|
[noyaManager, theme, viewType]
|
|
6208
7292
|
);
|
|
6209
|
-
return /* @__PURE__ */
|
|
6210
|
-
ConnectedUsersContext.Provider,
|
|
6211
|
-
{
|
|
6212
|
-
value: noyaManager.connectedUsersManager
|
|
6213
|
-
},
|
|
6214
|
-
/* @__PURE__ */ import_react16.default.createElement(
|
|
6215
|
-
EphemeralUserDataManagerContext.Provider,
|
|
6216
|
-
{
|
|
6217
|
-
value: noyaManager.ephemeralUserDataManager
|
|
6218
|
-
},
|
|
6219
|
-
options.fallback !== void 0 ? /* @__PURE__ */ import_react16.default.createElement(FallbackUntilInitialized, { fallback: options.fallback }, children) : children
|
|
6220
|
-
)
|
|
6221
|
-
));
|
|
7293
|
+
return /* @__PURE__ */ import_react18.default.createElement(NoyaContextProvider, { contextValue }, options.fallback !== void 0 ? /* @__PURE__ */ import_react18.default.createElement(FallbackUntilInitialized, { fallback: options.fallback }, children) : children);
|
|
6222
7294
|
}
|
|
6223
|
-
function useValue(
|
|
7295
|
+
function useValue(path2, options) {
|
|
6224
7296
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
6225
|
-
let actualPath = typeof
|
|
6226
|
-
const mappedObservable = (0,
|
|
6227
|
-
if (typeof
|
|
6228
|
-
return noyaManager.multiplayerStateManager.optimisticState$.map(
|
|
7297
|
+
let actualPath = typeof path2 === "function" || !path2 ? "" : path2;
|
|
7298
|
+
const mappedObservable = (0, import_react18.useMemo)(() => {
|
|
7299
|
+
if (typeof path2 === "function") {
|
|
7300
|
+
return noyaManager.multiplayerStateManager.optimisticState$.map(path2, {
|
|
6229
7301
|
isEqual: options?.isEqual
|
|
6230
7302
|
});
|
|
6231
7303
|
}
|
|
6232
7304
|
return noyaManager.multiplayerStateManager.optimisticState$;
|
|
6233
|
-
}, [noyaManager,
|
|
7305
|
+
}, [noyaManager, path2, options?.isEqual]);
|
|
6234
7306
|
const value = useObservable(mappedObservable, actualPath);
|
|
6235
7307
|
return value;
|
|
6236
7308
|
}
|
|
6237
|
-
function useSetValue(
|
|
7309
|
+
function useSetValue(path2) {
|
|
6238
7310
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
6239
|
-
const setValue = (0,
|
|
7311
|
+
const setValue = (0, import_react18.useCallback)(
|
|
6240
7312
|
(...args) => {
|
|
6241
7313
|
const [metadata, value] = args.length === 2 ? args : [{}, args[0]];
|
|
6242
7314
|
noyaManager.multiplayerStateManager.setStateAtPath(
|
|
6243
7315
|
metadata,
|
|
6244
|
-
|
|
7316
|
+
path2 ?? "",
|
|
6245
7317
|
value
|
|
6246
7318
|
);
|
|
6247
7319
|
},
|
|
6248
|
-
[noyaManager,
|
|
7320
|
+
[noyaManager, path2]
|
|
6249
7321
|
);
|
|
6250
7322
|
return setValue;
|
|
6251
7323
|
}
|
|
6252
7324
|
function useValueState(...args) {
|
|
6253
|
-
const [selector, options,
|
|
6254
|
-
const value = useValue(selector ??
|
|
6255
|
-
const setValue = useSetValue(
|
|
7325
|
+
const [selector, options, path2] = args.length >= 1 && typeof args[0] === "function" ? [args[0], args[1], void 0] : [void 0, void 0, args[0]];
|
|
7326
|
+
const value = useValue(selector ?? path2 ?? "", options);
|
|
7327
|
+
const setValue = useSetValue(path2 ?? "");
|
|
6256
7328
|
return [value, setValue];
|
|
6257
7329
|
}
|
|
6258
7330
|
function useStateManager() {
|
|
@@ -6260,7 +7332,7 @@ function createNoyaContext({
|
|
|
6260
7332
|
return noyaManager.multiplayerStateManager;
|
|
6261
7333
|
}
|
|
6262
7334
|
function useEphemeralUserDataManager() {
|
|
6263
|
-
const ephemeralUserData = (0,
|
|
7335
|
+
const ephemeralUserData = (0, import_react18.useContext)(EphemeralUserDataManagerContext);
|
|
6264
7336
|
if (!ephemeralUserData) {
|
|
6265
7337
|
throw new Error(
|
|
6266
7338
|
"useEphemeralUserData must be used within a NoyaStateProvider"
|
|
@@ -6277,7 +7349,7 @@ function createNoyaContext({
|
|
|
6277
7349
|
}
|
|
6278
7350
|
function useSetLeftMenuItems(leftMenuItems) {
|
|
6279
7351
|
const { menuManager } = useNoyaManager();
|
|
6280
|
-
(0,
|
|
7352
|
+
(0, import_react18.useEffect)(() => {
|
|
6281
7353
|
if (leftMenuItems) {
|
|
6282
7354
|
menuManager.setLeftMenuItems(leftMenuItems);
|
|
6283
7355
|
}
|
|
@@ -6289,7 +7361,7 @@ function createNoyaContext({
|
|
|
6289
7361
|
}
|
|
6290
7362
|
function useSetRightMenuItems(rightMenuItems) {
|
|
6291
7363
|
const { menuManager } = useNoyaManager();
|
|
6292
|
-
(0,
|
|
7364
|
+
(0, import_react18.useEffect)(() => {
|
|
6293
7365
|
if (rightMenuItems) {
|
|
6294
7366
|
menuManager.setRightMenuItems(rightMenuItems);
|
|
6295
7367
|
}
|
|
@@ -6297,25 +7369,26 @@ function createNoyaContext({
|
|
|
6297
7369
|
}
|
|
6298
7370
|
function useHandleMenuItem(callback) {
|
|
6299
7371
|
const { menuManager } = useNoyaManager();
|
|
6300
|
-
(0,
|
|
7372
|
+
(0, import_react18.useEffect)(() => {
|
|
6301
7373
|
return menuManager.addListener(callback);
|
|
6302
7374
|
}, [menuManager, callback]);
|
|
6303
7375
|
}
|
|
6304
7376
|
function useOnSelectMenuItemCallback() {
|
|
6305
7377
|
const { menuManager } = useNoyaManager();
|
|
6306
|
-
return (0,
|
|
7378
|
+
return (0, import_react18.useCallback)((type) => menuManager.emit(type), [menuManager]);
|
|
6307
7379
|
}
|
|
6308
7380
|
function useMenu(options) {
|
|
6309
7381
|
const { leftMenuItems, rightMenuItems, onSelectMenuItem } = options;
|
|
6310
7382
|
useSetLeftMenuItems(leftMenuItems);
|
|
6311
7383
|
useSetRightMenuItems(rightMenuItems);
|
|
6312
|
-
const noop = (0,
|
|
7384
|
+
const noop = (0, import_react18.useCallback)(() => {
|
|
6313
7385
|
}, []);
|
|
6314
7386
|
useHandleMenuItem(onSelectMenuItem ?? noop);
|
|
6315
7387
|
}
|
|
6316
7388
|
return {
|
|
6317
7389
|
Context: NoyaStateContext,
|
|
6318
7390
|
Provider: NoyaStateProvider,
|
|
7391
|
+
NoyaContextProvider,
|
|
6319
7392
|
useValue,
|
|
6320
7393
|
useSetValue,
|
|
6321
7394
|
useValueState,
|
|
@@ -6335,7 +7408,7 @@ function createNoyaContext({
|
|
|
6335
7408
|
// src/ai.ts
|
|
6336
7409
|
function useRegisterAITool(tool) {
|
|
6337
7410
|
const aiManager = useAIManager();
|
|
6338
|
-
(0,
|
|
7411
|
+
(0, import_react19.useEffect)(() => {
|
|
6339
7412
|
return aiManager.registerTool(tool);
|
|
6340
7413
|
}, [aiManager, tool]);
|
|
6341
7414
|
}
|
|
@@ -6347,7 +7420,7 @@ function useCallableAITools() {
|
|
|
6347
7420
|
// src/components/UserPointersOverlay.tsx
|
|
6348
7421
|
var import_observable2 = require("@noya-app/observable");
|
|
6349
7422
|
var import_react_utils4 = require("@noya-app/react-utils");
|
|
6350
|
-
var
|
|
7423
|
+
var import_react20 = __toESM(require("react"));
|
|
6351
7424
|
function shouldShow(hideAfter, updatedAt) {
|
|
6352
7425
|
return !!updatedAt && Date.now() - updatedAt < hideAfter;
|
|
6353
7426
|
}
|
|
@@ -6357,7 +7430,7 @@ var UserPointerInternal = (0, import_react_utils4.memoGeneric)(function UserPoin
|
|
|
6357
7430
|
hideAfter = 5e3,
|
|
6358
7431
|
renderUserPointer
|
|
6359
7432
|
}) {
|
|
6360
|
-
const observable = (0,
|
|
7433
|
+
const observable = (0, import_react20.useMemo)(() => {
|
|
6361
7434
|
const metadata$ = ephemeralUserDataManager.metadata$.observePath([user.id]).throttle(50);
|
|
6362
7435
|
const data$ = ephemeralUserDataManager.data$.observePath([user.id]).throttle(50);
|
|
6363
7436
|
return import_observable2.Observable.combine([metadata$, data$], ([metadata2, data2]) => {
|
|
@@ -6365,10 +7438,10 @@ var UserPointerInternal = (0, import_react_utils4.memoGeneric)(function UserPoin
|
|
|
6365
7438
|
});
|
|
6366
7439
|
}, [ephemeralUserDataManager, user.id]);
|
|
6367
7440
|
const { metadata, data } = useObservable(observable);
|
|
6368
|
-
const [, setForceUpdate] = (0,
|
|
7441
|
+
const [, setForceUpdate] = (0, import_react20.useState)(0);
|
|
6369
7442
|
const updatedAt = metadata?.updatedAt ?? 0;
|
|
6370
7443
|
const show = shouldShow(hideAfter, updatedAt);
|
|
6371
|
-
(0,
|
|
7444
|
+
(0, import_react20.useEffect)(() => {
|
|
6372
7445
|
if (!show) return;
|
|
6373
7446
|
const timeoutId = setTimeout(() => {
|
|
6374
7447
|
setForceUpdate((prev) => prev + 1);
|
|
@@ -6390,9 +7463,9 @@ var UserPointersOverlay = (0, import_react_utils4.memoGeneric)(function UserPoin
|
|
|
6390
7463
|
}) {
|
|
6391
7464
|
const currentUserId = useObservable(ephemeralUserDataManager.currentUserId$);
|
|
6392
7465
|
const connectedUsers = useObservable(connectedUsersManager.connectedUsers$);
|
|
6393
|
-
return /* @__PURE__ */
|
|
7466
|
+
return /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, connectedUsers.map((user) => {
|
|
6394
7467
|
if (user.id === currentUserId) return null;
|
|
6395
|
-
return /* @__PURE__ */
|
|
7468
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
6396
7469
|
UserPointerInternal,
|
|
6397
7470
|
{
|
|
6398
7471
|
key: user.id,
|
|
@@ -6501,7 +7574,10 @@ var WebSocketConnection = class {
|
|
|
6501
7574
|
importAll,
|
|
6502
7575
|
parseAppDataParameter,
|
|
6503
7576
|
replaceDeep,
|
|
7577
|
+
resourceToMediaItem,
|
|
6504
7578
|
useAIManager,
|
|
7579
|
+
useActivityEvents,
|
|
7580
|
+
useActivityEventsForManager,
|
|
6505
7581
|
useAnyEphemeralUserData,
|
|
6506
7582
|
useAnyNoyaManager,
|
|
6507
7583
|
useAnyNoyaStateContext,
|
|
@@ -6510,11 +7586,14 @@ var WebSocketConnection = class {
|
|
|
6510
7586
|
useAssets,
|
|
6511
7587
|
useCallableAITools,
|
|
6512
7588
|
useColorScheme,
|
|
7589
|
+
useConnectedUser,
|
|
7590
|
+
useConnectedUsers,
|
|
6513
7591
|
useConnectedUsersManager,
|
|
6514
7592
|
useCurrentUserId,
|
|
6515
7593
|
useIOManager,
|
|
6516
7594
|
useInputs,
|
|
6517
7595
|
useIsInitialized,
|
|
7596
|
+
useIsProcessing,
|
|
6518
7597
|
useManagedHistory,
|
|
6519
7598
|
useManagedState,
|
|
6520
7599
|
useMultiplayerState,
|
|
@@ -6524,6 +7603,8 @@ var WebSocketConnection = class {
|
|
|
6524
7603
|
usePipelineManager,
|
|
6525
7604
|
usePublish,
|
|
6526
7605
|
useRegisterAITool,
|
|
7606
|
+
useResourceManager,
|
|
7607
|
+
useResources,
|
|
6527
7608
|
useSecret,
|
|
6528
7609
|
useSecretManager,
|
|
6529
7610
|
useSecrets,
|