@noya-app/noya-api-client-react 0.1.45 → 0.1.47
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 +9 -9
- package/CHANGELOG.md +15 -0
- package/dist/index.d.mts +30 -54
- package/dist/index.d.ts +30 -54
- package/dist/index.js +854 -483
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +785 -408
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/react/hooks.ts +40 -105
package/dist/index.js
CHANGED
|
@@ -2268,11 +2268,6 @@ __export(src_exports, {
|
|
|
2268
2268
|
useActivityEventsList: () => useActivityEventsList,
|
|
2269
2269
|
useFileList: () => useFileList,
|
|
2270
2270
|
useFileListItem: () => useFileListItem,
|
|
2271
|
-
useGeneratedComponentDescription: () => useGeneratedComponentDescription,
|
|
2272
|
-
useGeneratedComponentDescriptions: () => useGeneratedComponentDescriptions,
|
|
2273
|
-
useGeneratedComponentNames: () => useGeneratedComponentNames,
|
|
2274
|
-
useGeneratedPageComponentNames: () => useGeneratedPageComponentNames,
|
|
2275
|
-
useGeneratedPageNames: () => useGeneratedPageNames,
|
|
2276
2271
|
useIsBeta: () => useIsBeta,
|
|
2277
2272
|
useMetadata: () => useMetadata,
|
|
2278
2273
|
useNetworkRequests: () => useNetworkRequests,
|
|
@@ -2297,6 +2292,7 @@ __export(src_exports, {
|
|
|
2297
2292
|
useNoyaUserData: () => useNoyaUserData,
|
|
2298
2293
|
useNoyaWorkspaceBilling: () => useNoyaWorkspaceBilling,
|
|
2299
2294
|
useNoyaWorkspaceInvitations: () => useNoyaWorkspaceInvitations,
|
|
2295
|
+
useNoyaWorkspaceMembers: () => useNoyaWorkspaceMembers,
|
|
2300
2296
|
useNoyaWorkspaces: () => useNoyaWorkspaces,
|
|
2301
2297
|
useOptionalNoyaClient: () => useOptionalNoyaClient,
|
|
2302
2298
|
useOptionalNoyaCreators: () => useOptionalNoyaCreators,
|
|
@@ -2304,8 +2300,6 @@ __export(src_exports, {
|
|
|
2304
2300
|
useOptionalNoyaTags: () => useOptionalNoyaTags,
|
|
2305
2301
|
useOptionalNoyaTools: () => useOptionalNoyaTools,
|
|
2306
2302
|
useOptionalNoyaUserData: () => useOptionalNoyaUserData,
|
|
2307
|
-
useRandomIcons: () => useRandomIcons,
|
|
2308
|
-
useRandomImages: () => useRandomImages,
|
|
2309
2303
|
useResourcesList: () => useResourcesList,
|
|
2310
2304
|
useTable: () => useTable,
|
|
2311
2305
|
useUser: () => useUser
|
|
@@ -2341,8 +2335,6 @@ function useNoyaClientOrFallback() {
|
|
|
2341
2335
|
|
|
2342
2336
|
// src/react/hooks.ts
|
|
2343
2337
|
var import_react2 = require("@legendapp/state/react");
|
|
2344
|
-
var import_noya_api2 = require("@noya-app/noya-api");
|
|
2345
|
-
var import_noya_utils = require("@noya-app/noya-utils");
|
|
2346
2338
|
var import_observable_react = require("@noya-app/observable-react");
|
|
2347
2339
|
var import_react3 = require("react");
|
|
2348
2340
|
function useNoyaTools(initial) {
|
|
@@ -2474,87 +2466,11 @@ function useMetadata(key) {
|
|
|
2474
2466
|
const metadataItem = metadata.find((item) => item.key === key);
|
|
2475
2467
|
return metadataItem?.value;
|
|
2476
2468
|
}
|
|
2477
|
-
function useGeneratedComponentNames(name) {
|
|
2478
|
-
const key = name.trim().toLowerCase();
|
|
2479
|
-
const { generatedNames$, loadingNames$ } = useNoyaClientOrFallback();
|
|
2480
|
-
const result = (0, import_react2.useSelector)(
|
|
2481
|
-
() => generatedNames$[key].get()
|
|
2482
|
-
);
|
|
2483
|
-
const loading = (0, import_react2.useSelector)(() => loadingNames$[key].get());
|
|
2484
|
-
return (0, import_react3.useMemo)(() => ({ names: result ?? [], loading }), [loading, result]);
|
|
2485
|
-
}
|
|
2486
|
-
function useGeneratedComponentDescriptions() {
|
|
2487
|
-
const { generatedDescriptions$, loadingDescriptions$ } = useNoyaClientOrFallback();
|
|
2488
|
-
const descriptions = (0, import_react2.useSelector)(generatedDescriptions$);
|
|
2489
|
-
const loading = (0, import_react2.useSelector)(loadingDescriptions$);
|
|
2490
|
-
return (0, import_react3.useMemo)(() => ({ descriptions, loading }), [loading, descriptions]);
|
|
2491
|
-
}
|
|
2492
|
-
function useGeneratedComponentDescription(name) {
|
|
2493
|
-
const key = name.trim().toLowerCase();
|
|
2494
|
-
const { generatedDescriptions$, loadingDescriptions$ } = useNoyaClientOrFallback();
|
|
2495
|
-
const description = (0, import_react2.useSelector)(
|
|
2496
|
-
() => generatedDescriptions$[key].get()
|
|
2497
|
-
);
|
|
2498
|
-
const loading = (0, import_react2.useSelector)(() => loadingDescriptions$[key].get());
|
|
2499
|
-
return (0, import_react3.useMemo)(() => ({ description, loading }), [loading, description]);
|
|
2500
|
-
}
|
|
2501
|
-
function useRandomImages() {
|
|
2502
|
-
const { randomImages$, loadingRandomImages$ } = useNoyaClientOrFallback();
|
|
2503
|
-
const images = (0, import_react2.useSelector)(randomImages$);
|
|
2504
|
-
const loading = (0, import_react2.useSelector)(loadingRandomImages$);
|
|
2505
|
-
return (0, import_react3.useMemo)(() => ({ images, loading }), [loading, images]);
|
|
2506
|
-
}
|
|
2507
|
-
function useRandomIcons() {
|
|
2508
|
-
const { randomIcons$, loadingRandomIcons$ } = useNoyaClientOrFallback();
|
|
2509
|
-
const icons = (0, import_react2.useSelector)(randomIcons$);
|
|
2510
|
-
const loading = (0, import_react2.useSelector)(loadingRandomIcons$);
|
|
2511
|
-
return (0, import_react3.useMemo)(() => ({ icons, loading }), [loading, icons]);
|
|
2512
|
-
}
|
|
2513
2469
|
function useNetworkRequests() {
|
|
2514
2470
|
const { requests$ } = useNoyaClientOrFallback();
|
|
2515
2471
|
const requests = (0, import_react2.useSelector)(requests$);
|
|
2516
2472
|
return requests;
|
|
2517
2473
|
}
|
|
2518
|
-
function useGeneratedPageNames() {
|
|
2519
|
-
const { generatedPageNames$ } = useNoyaClientOrFallback();
|
|
2520
|
-
const names = (0, import_react2.useSelector)(generatedPageNames$);
|
|
2521
|
-
const namesWithDefaultsAndTypes = (0, import_react3.useMemo)(() => {
|
|
2522
|
-
const rangeArray = (0, import_noya_utils.range)(0, import_noya_api2.GENERATED_PAGE_NAME_COUNT);
|
|
2523
|
-
const withDefaults = rangeArray.map((index) => {
|
|
2524
|
-
const name = names[index];
|
|
2525
|
-
return name ?? { name: `Page ${index + 1}`, loading: true, key: "" };
|
|
2526
|
-
});
|
|
2527
|
-
return withDefaults.map(
|
|
2528
|
-
(name, index) => ({
|
|
2529
|
-
...name,
|
|
2530
|
-
index,
|
|
2531
|
-
type: "suggestion"
|
|
2532
|
-
})
|
|
2533
|
-
);
|
|
2534
|
-
}, [names]);
|
|
2535
|
-
return namesWithDefaultsAndTypes.slice(0, 3);
|
|
2536
|
-
}
|
|
2537
|
-
function useGeneratedPageComponentNames() {
|
|
2538
|
-
const { generatedPageComponentNames$: generatedComponentNames$ } = useNoyaClientOrFallback();
|
|
2539
|
-
const names = (0, import_react2.useSelector)(
|
|
2540
|
-
generatedComponentNames$
|
|
2541
|
-
);
|
|
2542
|
-
const namesWithDefaultsAndTypes = (0, import_react3.useMemo)(() => {
|
|
2543
|
-
const rangeArray = (0, import_noya_utils.range)(0, import_noya_api2.GENERATED_PAGE_NAME_COUNT);
|
|
2544
|
-
const withDefaults = rangeArray.map((index) => {
|
|
2545
|
-
const name = names[index];
|
|
2546
|
-
return name ?? { name: `Component ${index + 1}`, loading: true, key: "" };
|
|
2547
|
-
});
|
|
2548
|
-
return withDefaults.map(
|
|
2549
|
-
(name, index) => ({
|
|
2550
|
-
...name,
|
|
2551
|
-
index,
|
|
2552
|
-
type: "suggestion"
|
|
2553
|
-
})
|
|
2554
|
-
);
|
|
2555
|
-
}, [names]);
|
|
2556
|
-
return namesWithDefaultsAndTypes.slice(0, 3);
|
|
2557
|
-
}
|
|
2558
2474
|
function useNoyaSites() {
|
|
2559
2475
|
const sites = (0, import_react2.useSelector)(useNoyaClientOrFallback().sites$);
|
|
2560
2476
|
return sites;
|
|
@@ -2587,6 +2503,24 @@ function useNoyaWorkspaces() {
|
|
|
2587
2503
|
}, [client, fetchWorkspaces]);
|
|
2588
2504
|
return workspaces;
|
|
2589
2505
|
}
|
|
2506
|
+
function useNoyaWorkspaceMembers(workspaceId) {
|
|
2507
|
+
const { workspaces, loading } = useNoyaWorkspaces();
|
|
2508
|
+
return (0, import_react3.useMemo)(() => {
|
|
2509
|
+
const workspace = workspaces.find((w) => w.id === workspaceId);
|
|
2510
|
+
const members = workspace?.members.map((m) => ({
|
|
2511
|
+
userId: m.userId,
|
|
2512
|
+
name: m.user.name,
|
|
2513
|
+
email: m.user.email,
|
|
2514
|
+
image: m.user.image,
|
|
2515
|
+
role: m.role
|
|
2516
|
+
})) ?? [];
|
|
2517
|
+
const membersById = /* @__PURE__ */ new Map();
|
|
2518
|
+
for (const member of members) {
|
|
2519
|
+
membersById.set(member.userId, member);
|
|
2520
|
+
}
|
|
2521
|
+
return { members, membersById, loading };
|
|
2522
|
+
}, [workspaces, workspaceId, loading]);
|
|
2523
|
+
}
|
|
2590
2524
|
function useNoyaMultiplayerRoomToken(fileId) {
|
|
2591
2525
|
const client = useNoyaClientOrFallback();
|
|
2592
2526
|
const multiplayerRoomToken = (0, import_observable_react.useObservable)(
|
|
@@ -3425,15 +3359,15 @@ function Or(pattern) {
|
|
|
3425
3359
|
if (IsCloseParen(pattern, index))
|
|
3426
3360
|
count -= 1;
|
|
3427
3361
|
if (IsSeparator(pattern, index) && count === 0) {
|
|
3428
|
-
const
|
|
3429
|
-
if (
|
|
3430
|
-
expressions.push(TemplateLiteralParse(
|
|
3362
|
+
const range2 = pattern.slice(start, index);
|
|
3363
|
+
if (range2.length > 0)
|
|
3364
|
+
expressions.push(TemplateLiteralParse(range2));
|
|
3431
3365
|
start = index + 1;
|
|
3432
3366
|
}
|
|
3433
3367
|
}
|
|
3434
|
-
const
|
|
3435
|
-
if (
|
|
3436
|
-
expressions.push(TemplateLiteralParse(
|
|
3368
|
+
const range = pattern.slice(start);
|
|
3369
|
+
if (range.length > 0)
|
|
3370
|
+
expressions.push(TemplateLiteralParse(range));
|
|
3437
3371
|
if (expressions.length === 0)
|
|
3438
3372
|
return { type: "const", const: "" };
|
|
3439
3373
|
if (expressions.length === 1)
|
|
@@ -3466,14 +3400,14 @@ function And(pattern) {
|
|
|
3466
3400
|
for (let index = 0; index < pattern.length; index++) {
|
|
3467
3401
|
if (IsOpenParen(pattern, index)) {
|
|
3468
3402
|
const [start, end] = Group(pattern, index);
|
|
3469
|
-
const
|
|
3470
|
-
expressions.push(TemplateLiteralParse(
|
|
3403
|
+
const range = pattern.slice(start, end + 1);
|
|
3404
|
+
expressions.push(TemplateLiteralParse(range));
|
|
3471
3405
|
index = end;
|
|
3472
3406
|
} else {
|
|
3473
3407
|
const [start, end] = Range(pattern, index);
|
|
3474
|
-
const
|
|
3475
|
-
if (
|
|
3476
|
-
expressions.push(TemplateLiteralParse(
|
|
3408
|
+
const range = pattern.slice(start, end);
|
|
3409
|
+
if (range.length > 0)
|
|
3410
|
+
expressions.push(TemplateLiteralParse(range));
|
|
3477
3411
|
index = end - 1;
|
|
3478
3412
|
}
|
|
3479
3413
|
}
|
|
@@ -5303,24 +5237,12 @@ var Emitter = class {
|
|
|
5303
5237
|
};
|
|
5304
5238
|
|
|
5305
5239
|
// ../state-manager/src/AIManager.ts
|
|
5306
|
-
var
|
|
5240
|
+
var import_noya_utils = require("@noya-app/noya-utils");
|
|
5307
5241
|
var import_observable2 = require("@noya-app/observable");
|
|
5308
5242
|
|
|
5309
5243
|
// ../state-manager/src/AssetManager.ts
|
|
5310
|
-
var
|
|
5244
|
+
var import_noya_utils2 = require("@noya-app/noya-utils");
|
|
5311
5245
|
var import_observable3 = require("@noya-app/observable");
|
|
5312
|
-
var _toNoyaAsset = (0, import_noya_utils3.memoize)(
|
|
5313
|
-
(asset) => ({
|
|
5314
|
-
id: asset.stableId,
|
|
5315
|
-
url: asset.url,
|
|
5316
|
-
createdAt: asset.createdAt,
|
|
5317
|
-
size: asset.size,
|
|
5318
|
-
contentType: asset.contentType,
|
|
5319
|
-
width: asset.width ?? null,
|
|
5320
|
-
height: asset.height ?? null,
|
|
5321
|
-
userId: asset.userId ?? null
|
|
5322
|
-
})
|
|
5323
|
-
);
|
|
5324
5246
|
|
|
5325
5247
|
// ../noya-schemas/src/nullable.ts
|
|
5326
5248
|
var Nullable = (schema) => Type.Union([Type.Null(), schema]);
|
|
@@ -5383,6 +5305,10 @@ var activityEventSchema = Type.Object({
|
|
|
5383
5305
|
});
|
|
5384
5306
|
|
|
5385
5307
|
// ../noya-schemas/src/asset.ts
|
|
5308
|
+
var assetModeSchema = Type.Union([
|
|
5309
|
+
Type.Literal("immutable"),
|
|
5310
|
+
Type.Literal("mutable")
|
|
5311
|
+
]);
|
|
5386
5312
|
var assetSchema = Type.Object({
|
|
5387
5313
|
id: Type.String(),
|
|
5388
5314
|
stableId: Type.String(),
|
|
@@ -5392,7 +5318,9 @@ var assetSchema = Type.Object({
|
|
|
5392
5318
|
contentType: Type.Optional(Type.String()),
|
|
5393
5319
|
width: Type.Union([Type.Null(), Type.Number()]),
|
|
5394
5320
|
height: Type.Union([Type.Null(), Type.Number()]),
|
|
5395
|
-
userId: Type.Union([Type.Null(), Type.String()])
|
|
5321
|
+
userId: Type.Union([Type.Null(), Type.String()]),
|
|
5322
|
+
mode: Type.Optional(assetModeSchema),
|
|
5323
|
+
version: Type.Optional(Type.Number())
|
|
5396
5324
|
});
|
|
5397
5325
|
|
|
5398
5326
|
// ../noya-schemas/src/encode.ts
|
|
@@ -7307,12 +7235,19 @@ function applyExtendedPatch(obj, patches) {
|
|
|
7307
7235
|
var import_fast_diff = __toESM(require_diff());
|
|
7308
7236
|
|
|
7309
7237
|
// ../state-manager/src/EvalManager.ts
|
|
7310
|
-
var
|
|
7238
|
+
var import_noya_utils3 = require("@noya-app/noya-utils");
|
|
7311
7239
|
|
|
7312
7240
|
// ../state-manager/src/FilePropertyManager.ts
|
|
7313
|
-
var
|
|
7241
|
+
var import_noya_utils4 = require("@noya-app/noya-utils");
|
|
7314
7242
|
var import_observable5 = require("@noya-app/observable");
|
|
7315
7243
|
|
|
7244
|
+
// ../state-manager/src/multiplayer.ts
|
|
7245
|
+
var import_noya_utils7 = require("@noya-app/noya-utils");
|
|
7246
|
+
var import_observable8 = require("@noya-app/observable");
|
|
7247
|
+
|
|
7248
|
+
// ../state-manager/src/LogManager.ts
|
|
7249
|
+
var import_observable6 = require("@noya-app/observable");
|
|
7250
|
+
|
|
7316
7251
|
// ../state-manager/src/historyEntries.ts
|
|
7317
7252
|
var HistoryEntries;
|
|
7318
7253
|
((HistoryEntries2) => {
|
|
@@ -7399,119 +7334,6 @@ var HistoryEntries;
|
|
|
7399
7334
|
HistoryEntries2.pathsEqual = pathsEqual;
|
|
7400
7335
|
})(HistoryEntries || (HistoryEntries = {}));
|
|
7401
7336
|
|
|
7402
|
-
// ../state-manager/src/IOManager.ts
|
|
7403
|
-
var import_observable6 = require("@noya-app/observable");
|
|
7404
|
-
|
|
7405
|
-
// ../state-manager/src/jwt.ts
|
|
7406
|
-
function base64UrlEncode(str) {
|
|
7407
|
-
return btoa(str).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
7408
|
-
}
|
|
7409
|
-
function base64UrlDecode(str) {
|
|
7410
|
-
str = str.replace(/-/g, "+").replace(/_/g, "/");
|
|
7411
|
-
switch (str.length % 4) {
|
|
7412
|
-
case 2:
|
|
7413
|
-
str += "==";
|
|
7414
|
-
break;
|
|
7415
|
-
case 3:
|
|
7416
|
-
str += "=";
|
|
7417
|
-
break;
|
|
7418
|
-
}
|
|
7419
|
-
return atob(str);
|
|
7420
|
-
}
|
|
7421
|
-
var HEADER = {
|
|
7422
|
-
alg: "HS256",
|
|
7423
|
-
typ: "JWT"
|
|
7424
|
-
};
|
|
7425
|
-
var JWT_ERROR = {
|
|
7426
|
-
INVALID_JWT_FORMAT: "Invalid JWT format"
|
|
7427
|
-
// INVALID_SIGNATURE: "Invalid signature",
|
|
7428
|
-
};
|
|
7429
|
-
async function createJwt({
|
|
7430
|
-
payload,
|
|
7431
|
-
secret,
|
|
7432
|
-
header
|
|
7433
|
-
}) {
|
|
7434
|
-
const encoder = new TextEncoder();
|
|
7435
|
-
const encodedHeader = base64UrlEncode(
|
|
7436
|
-
JSON.stringify({ ...HEADER, ...header })
|
|
7437
|
-
);
|
|
7438
|
-
const encodedPayload = base64UrlEncode(JSON.stringify(payload));
|
|
7439
|
-
const dataToSign = `${encodedHeader}.${encodedPayload}`;
|
|
7440
|
-
const key = await crypto.subtle.importKey(
|
|
7441
|
-
"raw",
|
|
7442
|
-
encoder.encode(secret),
|
|
7443
|
-
{ name: "HMAC", hash: "SHA-256" },
|
|
7444
|
-
false,
|
|
7445
|
-
["sign"]
|
|
7446
|
-
);
|
|
7447
|
-
const signature = await crypto.subtle.sign(
|
|
7448
|
-
"HMAC",
|
|
7449
|
-
key,
|
|
7450
|
-
encoder.encode(dataToSign)
|
|
7451
|
-
);
|
|
7452
|
-
const encodedSignature = base64UrlEncode(
|
|
7453
|
-
String.fromCharCode(...new Uint8Array(signature))
|
|
7454
|
-
);
|
|
7455
|
-
return `${dataToSign}.${encodedSignature}`;
|
|
7456
|
-
}
|
|
7457
|
-
async function decodeJwt({
|
|
7458
|
-
token,
|
|
7459
|
-
secret
|
|
7460
|
-
}) {
|
|
7461
|
-
if (typeof token !== "string") {
|
|
7462
|
-
throw new Error(JWT_ERROR.INVALID_JWT_FORMAT);
|
|
7463
|
-
}
|
|
7464
|
-
const [encodedHeader, encodedPayload, encodedSignature] = token.split(".");
|
|
7465
|
-
if (!encodedHeader || !encodedPayload || !encodedSignature) {
|
|
7466
|
-
throw new Error(JWT_ERROR.INVALID_JWT_FORMAT);
|
|
7467
|
-
}
|
|
7468
|
-
const headerJson = base64UrlDecode(encodedHeader);
|
|
7469
|
-
const payloadJson = base64UrlDecode(encodedPayload);
|
|
7470
|
-
const header = JSON.parse(headerJson);
|
|
7471
|
-
const payload = JSON.parse(payloadJson);
|
|
7472
|
-
const dataToVerify = `${encodedHeader}.${encodedPayload}`;
|
|
7473
|
-
const encoder = new TextEncoder();
|
|
7474
|
-
if (secret !== void 0) {
|
|
7475
|
-
const key = await crypto.subtle.importKey(
|
|
7476
|
-
"raw",
|
|
7477
|
-
encoder.encode(secret),
|
|
7478
|
-
{ name: "HMAC", hash: "SHA-256" },
|
|
7479
|
-
false,
|
|
7480
|
-
["verify"]
|
|
7481
|
-
);
|
|
7482
|
-
const binarySignature = base64UrlDecode(encodedSignature);
|
|
7483
|
-
const signature = new Uint8Array(
|
|
7484
|
-
[...binarySignature].map((char) => char.charCodeAt(0))
|
|
7485
|
-
);
|
|
7486
|
-
const valid = await crypto.subtle.verify(
|
|
7487
|
-
"HMAC",
|
|
7488
|
-
key,
|
|
7489
|
-
signature,
|
|
7490
|
-
encoder.encode(dataToVerify)
|
|
7491
|
-
);
|
|
7492
|
-
return { header, payload, valid };
|
|
7493
|
-
}
|
|
7494
|
-
return { header, payload, valid: false };
|
|
7495
|
-
}
|
|
7496
|
-
var jwt;
|
|
7497
|
-
((jwt2) => {
|
|
7498
|
-
jwt2.encode = createJwt;
|
|
7499
|
-
jwt2.decode = decodeJwt;
|
|
7500
|
-
jwt2.ERROR = JWT_ERROR;
|
|
7501
|
-
jwt2.DEFAULT_HEADER = HEADER;
|
|
7502
|
-
})(jwt || (jwt = {}));
|
|
7503
|
-
|
|
7504
|
-
// ../state-manager/src/LogManager.ts
|
|
7505
|
-
var import_observable7 = require("@noya-app/observable");
|
|
7506
|
-
|
|
7507
|
-
// ../state-manager/src/MenuManager.ts
|
|
7508
|
-
var import_noya_utils6 = require("@noya-app/noya-utils");
|
|
7509
|
-
var import_observable8 = require("@noya-app/observable");
|
|
7510
|
-
|
|
7511
|
-
// ../state-manager/src/multiplayer.ts
|
|
7512
|
-
var import_noya_utils9 = require("@noya-app/noya-utils");
|
|
7513
|
-
var import_observable10 = require("@noya-app/observable");
|
|
7514
|
-
|
|
7515
7337
|
// ../../node_modules/@marcbachmann/cel-js/lib/errors.js
|
|
7516
7338
|
var ParseError = class extends Error {
|
|
7517
7339
|
#wasConstructedWithAst = false;
|
|
@@ -10488,7 +10310,7 @@ var globalEnvironment = new Environment({
|
|
|
10488
10310
|
});
|
|
10489
10311
|
|
|
10490
10312
|
// ../state-manager/src/multiplayerPolicies.ts
|
|
10491
|
-
var
|
|
10313
|
+
var import_noya_utils5 = require("@noya-app/noya-utils");
|
|
10492
10314
|
var celEnvironment = new Environment({
|
|
10493
10315
|
unlistedVariablesAreDyn: true
|
|
10494
10316
|
});
|
|
@@ -10523,61 +10345,170 @@ celEnvironment.registerFunction("random(): double", () => Math.random()).registe
|
|
|
10523
10345
|
const nowValue = typeof nowVariable?.value === "number" ? nowVariable.value : typeof nowVariable?.value === "string" ? Number(nowVariable.value) : Date.now();
|
|
10524
10346
|
return new Date(nowValue).toISOString();
|
|
10525
10347
|
}
|
|
10526
|
-
).registerFunction("uuid(): string", () => (0,
|
|
10348
|
+
).registerFunction("uuid(): string", () => (0, import_noya_utils5.uuid)());
|
|
10527
10349
|
var READ_DENIED = Symbol("readDenied");
|
|
10528
10350
|
|
|
10529
10351
|
// ../state-manager/src/serverScripts.ts
|
|
10530
|
-
var
|
|
10352
|
+
var import_noya_utils6 = require("@noya-app/noya-utils");
|
|
10531
10353
|
|
|
10532
10354
|
// ../state-manager/src/stateManager.ts
|
|
10533
|
-
var
|
|
10355
|
+
var import_observable7 = require("@noya-app/observable");
|
|
10534
10356
|
|
|
10535
10357
|
// ../state-manager/src/multiplayer.ts
|
|
10536
|
-
var createHash = (value, options) => (0,
|
|
10358
|
+
var createHash = (value, options) => (0, import_noya_utils7.hash)(value, { ...options, ignoreUndefinedProperties: true });
|
|
10537
10359
|
|
|
10538
|
-
// ../state-manager/src/
|
|
10539
|
-
var
|
|
10540
|
-
var import_observable22 = require("@noya-app/observable");
|
|
10360
|
+
// ../state-manager/src/GitManager.ts
|
|
10361
|
+
var import_observable9 = require("@noya-app/observable");
|
|
10541
10362
|
|
|
10542
|
-
// ../
|
|
10543
|
-
var
|
|
10363
|
+
// ../state-manager/src/IOManager.ts
|
|
10364
|
+
var import_observable10 = require("@noya-app/observable");
|
|
10544
10365
|
|
|
10545
|
-
// ../
|
|
10546
|
-
|
|
10547
|
-
|
|
10548
|
-
|
|
10549
|
-
|
|
10550
|
-
|
|
10551
|
-
|
|
10552
|
-
|
|
10553
|
-
|
|
10554
|
-
|
|
10555
|
-
|
|
10556
|
-
|
|
10557
|
-
|
|
10558
|
-
location: Type.Union([Type.Literal("state"), Type.Literal("url")]),
|
|
10559
|
-
value: Type.String()
|
|
10560
|
-
}),
|
|
10561
|
-
Type.Object({
|
|
10562
|
-
id: Type.String({ format: "uuid", default: "" }),
|
|
10563
|
-
type: Type.Literal("jsonPointer"),
|
|
10564
|
-
value: Type.String()
|
|
10565
|
-
})
|
|
10566
|
-
],
|
|
10567
|
-
{
|
|
10568
|
-
discriminator: "type"
|
|
10366
|
+
// ../state-manager/src/jwt.ts
|
|
10367
|
+
function base64UrlEncode(str) {
|
|
10368
|
+
return btoa(str).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
10369
|
+
}
|
|
10370
|
+
function base64UrlDecode(str) {
|
|
10371
|
+
str = str.replace(/-/g, "+").replace(/_/g, "/");
|
|
10372
|
+
switch (str.length % 4) {
|
|
10373
|
+
case 2:
|
|
10374
|
+
str += "==";
|
|
10375
|
+
break;
|
|
10376
|
+
case 3:
|
|
10377
|
+
str += "=";
|
|
10378
|
+
break;
|
|
10569
10379
|
}
|
|
10570
|
-
);
|
|
10571
|
-
|
|
10572
|
-
|
|
10573
|
-
|
|
10380
|
+
return atob(str);
|
|
10381
|
+
}
|
|
10382
|
+
var HEADER = {
|
|
10383
|
+
alg: "HS256",
|
|
10384
|
+
typ: "JWT"
|
|
10574
10385
|
};
|
|
10575
|
-
var
|
|
10576
|
-
|
|
10577
|
-
|
|
10578
|
-
|
|
10386
|
+
var JWT_ERROR = {
|
|
10387
|
+
INVALID_JWT_FORMAT: "Invalid JWT format"
|
|
10388
|
+
// INVALID_SIGNATURE: "Invalid signature",
|
|
10389
|
+
};
|
|
10390
|
+
async function createJwt({
|
|
10391
|
+
payload,
|
|
10392
|
+
secret,
|
|
10393
|
+
header
|
|
10394
|
+
}) {
|
|
10395
|
+
const encoder = new TextEncoder();
|
|
10396
|
+
const encodedHeader = base64UrlEncode(
|
|
10397
|
+
JSON.stringify({ ...HEADER, ...header })
|
|
10398
|
+
);
|
|
10399
|
+
const encodedPayload = base64UrlEncode(JSON.stringify(payload));
|
|
10400
|
+
const dataToSign = `${encodedHeader}.${encodedPayload}`;
|
|
10401
|
+
const key = await crypto.subtle.importKey(
|
|
10402
|
+
"raw",
|
|
10403
|
+
encoder.encode(secret),
|
|
10404
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
10405
|
+
false,
|
|
10406
|
+
["sign"]
|
|
10407
|
+
);
|
|
10408
|
+
const signature = await crypto.subtle.sign(
|
|
10409
|
+
"HMAC",
|
|
10410
|
+
key,
|
|
10411
|
+
encoder.encode(dataToSign)
|
|
10412
|
+
);
|
|
10413
|
+
const encodedSignature = base64UrlEncode(
|
|
10414
|
+
String.fromCharCode(...new Uint8Array(signature))
|
|
10415
|
+
);
|
|
10416
|
+
return `${dataToSign}.${encodedSignature}`;
|
|
10417
|
+
}
|
|
10418
|
+
async function decodeJwt({
|
|
10419
|
+
token,
|
|
10420
|
+
secret
|
|
10421
|
+
}) {
|
|
10422
|
+
if (typeof token !== "string") {
|
|
10423
|
+
throw new Error(JWT_ERROR.INVALID_JWT_FORMAT);
|
|
10579
10424
|
}
|
|
10580
|
-
);
|
|
10425
|
+
const [encodedHeader, encodedPayload, encodedSignature] = token.split(".");
|
|
10426
|
+
if (!encodedHeader || !encodedPayload || !encodedSignature) {
|
|
10427
|
+
throw new Error(JWT_ERROR.INVALID_JWT_FORMAT);
|
|
10428
|
+
}
|
|
10429
|
+
const headerJson = base64UrlDecode(encodedHeader);
|
|
10430
|
+
const payloadJson = base64UrlDecode(encodedPayload);
|
|
10431
|
+
const header = JSON.parse(headerJson);
|
|
10432
|
+
const payload = JSON.parse(payloadJson);
|
|
10433
|
+
const dataToVerify = `${encodedHeader}.${encodedPayload}`;
|
|
10434
|
+
const encoder = new TextEncoder();
|
|
10435
|
+
if (secret !== void 0) {
|
|
10436
|
+
const key = await crypto.subtle.importKey(
|
|
10437
|
+
"raw",
|
|
10438
|
+
encoder.encode(secret),
|
|
10439
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
10440
|
+
false,
|
|
10441
|
+
["verify"]
|
|
10442
|
+
);
|
|
10443
|
+
const binarySignature = base64UrlDecode(encodedSignature);
|
|
10444
|
+
const signature = new Uint8Array(
|
|
10445
|
+
[...binarySignature].map((char) => char.charCodeAt(0))
|
|
10446
|
+
);
|
|
10447
|
+
const valid = await crypto.subtle.verify(
|
|
10448
|
+
"HMAC",
|
|
10449
|
+
key,
|
|
10450
|
+
signature,
|
|
10451
|
+
encoder.encode(dataToVerify)
|
|
10452
|
+
);
|
|
10453
|
+
return { header, payload, valid };
|
|
10454
|
+
}
|
|
10455
|
+
return { header, payload, valid: false };
|
|
10456
|
+
}
|
|
10457
|
+
var jwt;
|
|
10458
|
+
((jwt2) => {
|
|
10459
|
+
jwt2.encode = createJwt;
|
|
10460
|
+
jwt2.decode = decodeJwt;
|
|
10461
|
+
jwt2.ERROR = JWT_ERROR;
|
|
10462
|
+
jwt2.DEFAULT_HEADER = HEADER;
|
|
10463
|
+
})(jwt || (jwt = {}));
|
|
10464
|
+
|
|
10465
|
+
// ../state-manager/src/MenuManager.ts
|
|
10466
|
+
var import_noya_utils8 = require("@noya-app/noya-utils");
|
|
10467
|
+
var import_observable11 = require("@noya-app/observable");
|
|
10468
|
+
|
|
10469
|
+
// ../state-manager/src/NoyaManager.ts
|
|
10470
|
+
var import_noya_utils18 = require("@noya-app/noya-utils");
|
|
10471
|
+
var import_observable23 = require("@noya-app/observable");
|
|
10472
|
+
|
|
10473
|
+
// ../noya-pipeline/src/graphToTasks.ts
|
|
10474
|
+
var import_observable12 = require("@noya-app/observable");
|
|
10475
|
+
|
|
10476
|
+
// ../noya-pipeline/src/state.ts
|
|
10477
|
+
var import_noya_utils9 = require("@noya-app/noya-utils");
|
|
10478
|
+
var rectSchema = Type.Object({
|
|
10479
|
+
x: Type.Number(),
|
|
10480
|
+
y: Type.Number(),
|
|
10481
|
+
width: Type.Number(),
|
|
10482
|
+
height: Type.Number()
|
|
10483
|
+
});
|
|
10484
|
+
var transformSchema = Type.Union(
|
|
10485
|
+
[
|
|
10486
|
+
Type.Object({
|
|
10487
|
+
id: Type.String({ format: "uuid", default: "" }),
|
|
10488
|
+
type: Type.Literal("script"),
|
|
10489
|
+
location: Type.Union([Type.Literal("state"), Type.Literal("url")]),
|
|
10490
|
+
value: Type.String()
|
|
10491
|
+
}),
|
|
10492
|
+
Type.Object({
|
|
10493
|
+
id: Type.String({ format: "uuid", default: "" }),
|
|
10494
|
+
type: Type.Literal("jsonPointer"),
|
|
10495
|
+
value: Type.String()
|
|
10496
|
+
})
|
|
10497
|
+
],
|
|
10498
|
+
{
|
|
10499
|
+
discriminator: "type"
|
|
10500
|
+
}
|
|
10501
|
+
);
|
|
10502
|
+
var baseBlockProperties = {
|
|
10503
|
+
id: Type.String({ format: "uuid", default: "" }),
|
|
10504
|
+
name: Type.String()
|
|
10505
|
+
};
|
|
10506
|
+
var preferredFileSourceSchema = Type.Union(
|
|
10507
|
+
[Type.Literal("fileVersion"), Type.Literal("file")],
|
|
10508
|
+
{
|
|
10509
|
+
default: "fileVersion"
|
|
10510
|
+
}
|
|
10511
|
+
);
|
|
10581
10512
|
var fileBlockSchema = Type.Object({
|
|
10582
10513
|
...baseBlockProperties,
|
|
10583
10514
|
type: Type.Literal("file"),
|
|
@@ -10642,41 +10573,41 @@ var pipelineSchema = Type.Object(
|
|
|
10642
10573
|
);
|
|
10643
10574
|
|
|
10644
10575
|
// ../state-manager/src/PipelineManager.ts
|
|
10645
|
-
var
|
|
10576
|
+
var import_observable13 = require("@noya-app/observable");
|
|
10646
10577
|
|
|
10647
10578
|
// ../state-manager/src/PublishingManager.ts
|
|
10648
|
-
var
|
|
10579
|
+
var import_observable14 = require("@noya-app/observable");
|
|
10649
10580
|
|
|
10650
10581
|
// ../state-manager/src/ResourceManager.ts
|
|
10651
|
-
var
|
|
10652
|
-
var
|
|
10582
|
+
var import_noya_utils10 = require("@noya-app/noya-utils");
|
|
10583
|
+
var import_observable15 = require("@noya-app/observable");
|
|
10653
10584
|
|
|
10654
10585
|
// ../state-manager/src/SandboxManager.ts
|
|
10655
|
-
var
|
|
10586
|
+
var import_observable16 = require("@noya-app/observable");
|
|
10656
10587
|
|
|
10657
10588
|
// ../state-manager/src/rpcManager.ts
|
|
10658
|
-
var
|
|
10659
|
-
var
|
|
10589
|
+
var import_noya_utils11 = require("@noya-app/noya-utils");
|
|
10590
|
+
var import_observable17 = require("@noya-app/observable");
|
|
10660
10591
|
|
|
10661
10592
|
// ../state-manager/src/SecretManager.ts
|
|
10662
|
-
var
|
|
10593
|
+
var import_observable18 = require("@noya-app/observable");
|
|
10663
10594
|
|
|
10664
10595
|
// ../state-manager/src/TaskManager.ts
|
|
10665
|
-
var
|
|
10596
|
+
var import_observable19 = require("@noya-app/observable");
|
|
10666
10597
|
|
|
10667
10598
|
// ../state-manager/src/TranscriptionManager.ts
|
|
10668
|
-
var
|
|
10669
|
-
var
|
|
10599
|
+
var import_noya_utils12 = require("@noya-app/noya-utils");
|
|
10600
|
+
var import_observable20 = require("@noya-app/observable");
|
|
10670
10601
|
|
|
10671
10602
|
// ../state-manager/src/UserManager.ts
|
|
10672
|
-
var
|
|
10603
|
+
var import_observable22 = require("@noya-app/observable");
|
|
10673
10604
|
|
|
10674
10605
|
// ../state-manager/src/sync/clientId.ts
|
|
10675
|
-
var
|
|
10676
|
-
var
|
|
10606
|
+
var import_noya_utils14 = require("@noya-app/noya-utils");
|
|
10607
|
+
var import_observable21 = require("@noya-app/observable");
|
|
10677
10608
|
|
|
10678
10609
|
// ../state-manager/src/sync/defaultNames.ts
|
|
10679
|
-
var
|
|
10610
|
+
var import_noya_utils13 = require("@noya-app/noya-utils");
|
|
10680
10611
|
var animals = [
|
|
10681
10612
|
"cat",
|
|
10682
10613
|
"dog",
|
|
@@ -10728,7 +10659,7 @@ function getClientImageUrl(animal) {
|
|
|
10728
10659
|
}
|
|
10729
10660
|
function randomClientIdentity() {
|
|
10730
10661
|
const animal = randomElement(animals);
|
|
10731
|
-
const name = `${(0,
|
|
10662
|
+
const name = `${(0, import_noya_utils13.upperFirst)(randomElement(adjectives))} ${(0, import_noya_utils13.upperFirst)(animal)}`;
|
|
10732
10663
|
return {
|
|
10733
10664
|
name,
|
|
10734
10665
|
animal,
|
|
@@ -10746,9 +10677,9 @@ function getClientAnimalFromName(name) {
|
|
|
10746
10677
|
var CLIENT_ID_STORAGE_KEY = "noya-client-id";
|
|
10747
10678
|
var CLIENT_NAME_STORAGE_KEY = "noya-client-name";
|
|
10748
10679
|
var CLIENT_IMAGE_STORAGE_KEY = "noya-client-image";
|
|
10749
|
-
var clientId$ = new
|
|
10750
|
-
var clientName$ = new
|
|
10751
|
-
var clientImage$ = new
|
|
10680
|
+
var clientId$ = new import_observable21.Observable(void 0);
|
|
10681
|
+
var clientName$ = new import_observable21.Observable(void 0);
|
|
10682
|
+
var clientImage$ = new import_observable21.Observable(void 0);
|
|
10752
10683
|
var safeGetItem = (key) => {
|
|
10753
10684
|
try {
|
|
10754
10685
|
return typeof localStorage !== "undefined" ? localStorage.getItem(key) : null;
|
|
@@ -10769,7 +10700,7 @@ if (typeof window !== "undefined") {
|
|
|
10769
10700
|
if (storedClientId) {
|
|
10770
10701
|
clientId$.set(storedClientId);
|
|
10771
10702
|
} else {
|
|
10772
|
-
const newClientId = (0,
|
|
10703
|
+
const newClientId = (0, import_noya_utils14.uuid)();
|
|
10773
10704
|
safeSetItem(CLIENT_ID_STORAGE_KEY, newClientId);
|
|
10774
10705
|
clientId$.set(newClientId);
|
|
10775
10706
|
}
|
|
@@ -10792,13 +10723,13 @@ if (typeof window !== "undefined") {
|
|
|
10792
10723
|
}
|
|
10793
10724
|
|
|
10794
10725
|
// ../state-manager/src/sync/syncUtils.ts
|
|
10795
|
-
var
|
|
10726
|
+
var import_noya_utils15 = require("@noya-app/noya-utils");
|
|
10796
10727
|
|
|
10797
10728
|
// ../state-manager/src/sync/localRpcHelpers.ts
|
|
10798
|
-
var
|
|
10729
|
+
var import_noya_utils16 = require("@noya-app/noya-utils");
|
|
10799
10730
|
|
|
10800
10731
|
// ../state-manager/src/sync/localStorageSync.ts
|
|
10801
|
-
var
|
|
10732
|
+
var import_noya_utils17 = require("@noya-app/noya-utils");
|
|
10802
10733
|
|
|
10803
10734
|
// ../noya-keymap/src/hooks.ts
|
|
10804
10735
|
var import_react4 = require("react");
|
|
@@ -10921,10 +10852,10 @@ var createMutatorParametersSchema = Type.Object({
|
|
|
10921
10852
|
});
|
|
10922
10853
|
|
|
10923
10854
|
// ../noya-multiplayer-react/src/ai.ts
|
|
10924
|
-
var
|
|
10855
|
+
var import_react63 = require("react");
|
|
10925
10856
|
|
|
10926
10857
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
10927
|
-
var
|
|
10858
|
+
var import_observable24 = require("@noya-app/observable");
|
|
10928
10859
|
|
|
10929
10860
|
// ../noya-react-utils/src/components/AutoSizer.tsx
|
|
10930
10861
|
var React2 = __toESM(require("react"));
|
|
@@ -11106,7 +11037,7 @@ var FileDropTarget = memoGeneric(function FileDropTarget2({ children, onDropFile
|
|
|
11106
11037
|
var import_react8 = require("react");
|
|
11107
11038
|
|
|
11108
11039
|
// ../noya-react-utils/src/hooks/useDeepArray.ts
|
|
11109
|
-
var
|
|
11040
|
+
var import_noya_utils19 = require("@noya-app/noya-utils");
|
|
11110
11041
|
var import_react9 = require("react");
|
|
11111
11042
|
function useJsonMemo(value) {
|
|
11112
11043
|
const stringified = (0, import_react9.useMemo)(
|
|
@@ -11121,7 +11052,7 @@ function useJsonMemo(value) {
|
|
|
11121
11052
|
}
|
|
11122
11053
|
|
|
11123
11054
|
// ../noya-react-utils/src/hooks/useDeepState.ts
|
|
11124
|
-
var
|
|
11055
|
+
var import_noya_utils20 = require("@noya-app/noya-utils");
|
|
11125
11056
|
var import_react10 = require("react");
|
|
11126
11057
|
|
|
11127
11058
|
// ../noya-react-utils/src/hooks/useFetch.ts
|
|
@@ -11152,7 +11083,7 @@ var import_react17 = require("react");
|
|
|
11152
11083
|
var import_react18 = require("react");
|
|
11153
11084
|
|
|
11154
11085
|
// ../noya-react-utils/src/hooks/useShallowArray.ts
|
|
11155
|
-
var
|
|
11086
|
+
var import_noya_utils21 = require("@noya-app/noya-utils");
|
|
11156
11087
|
var import_react19 = require("react");
|
|
11157
11088
|
|
|
11158
11089
|
// ../noya-react-utils/src/hooks/useStableCallback.ts
|
|
@@ -11162,7 +11093,7 @@ var import_react20 = require("react");
|
|
|
11162
11093
|
var import_react21 = require("react");
|
|
11163
11094
|
|
|
11164
11095
|
// ../noya-react-utils/src/hooks/useUrlHashParameters.ts
|
|
11165
|
-
var
|
|
11096
|
+
var import_noya_utils22 = require("@noya-app/noya-utils");
|
|
11166
11097
|
var import_react22 = require("react");
|
|
11167
11098
|
|
|
11168
11099
|
// ../noya-react-utils/src/hooks/useWindowSize.ts
|
|
@@ -11225,13 +11156,13 @@ function downloadBlob(...params) {
|
|
|
11225
11156
|
}
|
|
11226
11157
|
|
|
11227
11158
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
11228
|
-
var
|
|
11159
|
+
var import_react62 = __toESM(require("react"));
|
|
11229
11160
|
|
|
11230
11161
|
// ../noya-multiplayer-react/src/noyaApp.ts
|
|
11231
|
-
var
|
|
11162
|
+
var import_react60 = require("react");
|
|
11232
11163
|
|
|
11233
11164
|
// ../noya-multiplayer-react/src/hooks.ts
|
|
11234
|
-
var
|
|
11165
|
+
var import_react59 = require("react");
|
|
11235
11166
|
var import_client2 = require("react-dom/client");
|
|
11236
11167
|
|
|
11237
11168
|
// ../noya-multiplayer-react/src/components/ErrorOverlay.tsx
|
|
@@ -11309,12 +11240,12 @@ var ErrorOverlay = React6.memo(function ErrorOverlay2({
|
|
|
11309
11240
|
});
|
|
11310
11241
|
|
|
11311
11242
|
// ../noya-multiplayer-react/src/inspector/useStateInspector.tsx
|
|
11312
|
-
var
|
|
11243
|
+
var import_react58 = __toESM(require("react"));
|
|
11313
11244
|
var import_client = require("react-dom/client");
|
|
11314
11245
|
|
|
11315
11246
|
// ../noya-multiplayer-react/src/inspector/StateInspector.tsx
|
|
11316
|
-
var
|
|
11317
|
-
var
|
|
11247
|
+
var import_noya_utils23 = require("@noya-app/noya-utils");
|
|
11248
|
+
var import_react57 = __toESM(require("react"));
|
|
11318
11249
|
|
|
11319
11250
|
// ../../node_modules/react-inspector/dist/index.mjs
|
|
11320
11251
|
var import_react24 = __toESM(require("react"), 1);
|
|
@@ -12962,8 +12893,424 @@ function EventsSection({
|
|
|
12962
12893
|
);
|
|
12963
12894
|
}
|
|
12964
12895
|
|
|
12965
|
-
// ../noya-multiplayer-react/src/inspector/sections/
|
|
12896
|
+
// ../noya-multiplayer-react/src/inspector/sections/GitSection.tsx
|
|
12897
|
+
var import_react51 = __toESM(require("react"));
|
|
12898
|
+
|
|
12899
|
+
// ../noya-multiplayer-react/src/inspector/StateInspectorTitleLabel.tsx
|
|
12966
12900
|
var import_react50 = __toESM(require("react"));
|
|
12901
|
+
function StateInspectorTitleLabel({
|
|
12902
|
+
children
|
|
12903
|
+
}) {
|
|
12904
|
+
return /* @__PURE__ */ import_react50.default.createElement("span", { style: { display: "flex", alignItems: "center", gap: "4px" } }, children);
|
|
12905
|
+
}
|
|
12906
|
+
|
|
12907
|
+
// ../noya-multiplayer-react/src/inspector/sections/GitSection.tsx
|
|
12908
|
+
function GitSection({
|
|
12909
|
+
showGit,
|
|
12910
|
+
setShowGit,
|
|
12911
|
+
colorScheme,
|
|
12912
|
+
gitManager
|
|
12913
|
+
}) {
|
|
12914
|
+
const theme3 = getStateInspectorTheme(colorScheme);
|
|
12915
|
+
const repos = useObservable2(gitManager.repos$);
|
|
12916
|
+
const isInitialized = useObservable2(gitManager.isInitialized$);
|
|
12917
|
+
const repoFiles = useObservable2(gitManager.repoFiles$);
|
|
12918
|
+
const [focusedRepoId, setFocusedRepoId] = (0, import_react51.useState)(null);
|
|
12919
|
+
const [editingFile, setEditingFile] = (0, import_react51.useState)(null);
|
|
12920
|
+
const editHandleRef = (0, import_react51.useRef)(null);
|
|
12921
|
+
const [editContent, setEditContent] = (0, import_react51.useState)("");
|
|
12922
|
+
const [isEditInitialized, setIsEditInitialized] = (0, import_react51.useState)(false);
|
|
12923
|
+
const focusedRepo = focusedRepoId ? repos.find((r) => r.id === focusedRepoId) : null;
|
|
12924
|
+
const focusedRepoFilesState = focusedRepoId ? repoFiles[focusedRepoId] : null;
|
|
12925
|
+
const handleFocusRepo = async (repoId) => {
|
|
12926
|
+
if (editHandleRef.current) {
|
|
12927
|
+
editHandleRef.current.close();
|
|
12928
|
+
editHandleRef.current = null;
|
|
12929
|
+
setEditingFile(null);
|
|
12930
|
+
setEditContent("");
|
|
12931
|
+
setIsEditInitialized(false);
|
|
12932
|
+
}
|
|
12933
|
+
setFocusedRepoId(repoId);
|
|
12934
|
+
if (repoId && !repoFiles[repoId]) {
|
|
12935
|
+
await gitManager.fetchRepoFiles(repoId);
|
|
12936
|
+
}
|
|
12937
|
+
};
|
|
12938
|
+
const handleEditFile = (filePath) => {
|
|
12939
|
+
if (!focusedRepoId || !focusedRepoFilesState) return;
|
|
12940
|
+
if (editHandleRef.current) {
|
|
12941
|
+
editHandleRef.current.close();
|
|
12942
|
+
}
|
|
12943
|
+
const handle = gitManager.openEditingHandle(
|
|
12944
|
+
focusedRepoId,
|
|
12945
|
+
filePath,
|
|
12946
|
+
focusedRepoFilesState.ref
|
|
12947
|
+
);
|
|
12948
|
+
editHandleRef.current = handle;
|
|
12949
|
+
setEditingFile(filePath);
|
|
12950
|
+
setIsEditInitialized(false);
|
|
12951
|
+
setEditContent("");
|
|
12952
|
+
};
|
|
12953
|
+
const handleCloseEdit = () => {
|
|
12954
|
+
if (editHandleRef.current) {
|
|
12955
|
+
editHandleRef.current.close();
|
|
12956
|
+
editHandleRef.current = null;
|
|
12957
|
+
}
|
|
12958
|
+
setEditingFile(null);
|
|
12959
|
+
setEditContent("");
|
|
12960
|
+
setIsEditInitialized(false);
|
|
12961
|
+
};
|
|
12962
|
+
(0, import_react51.useEffect)(() => {
|
|
12963
|
+
const handle = editHandleRef.current;
|
|
12964
|
+
if (!handle) return;
|
|
12965
|
+
const unsubContent = handle.content$.subscribe((content) => {
|
|
12966
|
+
setEditContent(content);
|
|
12967
|
+
});
|
|
12968
|
+
const unsubInitialized = handle.isInitialized$.subscribe((initialized) => {
|
|
12969
|
+
setIsEditInitialized(initialized);
|
|
12970
|
+
});
|
|
12971
|
+
return () => {
|
|
12972
|
+
unsubContent();
|
|
12973
|
+
unsubInitialized();
|
|
12974
|
+
};
|
|
12975
|
+
}, [editingFile]);
|
|
12976
|
+
const handleContentChange = (newContent) => {
|
|
12977
|
+
const handle = editHandleRef.current;
|
|
12978
|
+
if (!handle) return;
|
|
12979
|
+
handle.setState(newContent);
|
|
12980
|
+
};
|
|
12981
|
+
const handleBranchChange = async (ref) => {
|
|
12982
|
+
if (focusedRepoId) {
|
|
12983
|
+
await gitManager.fetchRepoFiles(focusedRepoId, ref);
|
|
12984
|
+
}
|
|
12985
|
+
};
|
|
12986
|
+
const handleAddFile = async () => {
|
|
12987
|
+
if (!focusedRepoId || !focusedRepoFilesState) return;
|
|
12988
|
+
const path2 = prompt("Enter file path (e.g., src/index.ts):");
|
|
12989
|
+
if (!path2) return;
|
|
12990
|
+
try {
|
|
12991
|
+
await gitManager.patchFiles(
|
|
12992
|
+
focusedRepoId,
|
|
12993
|
+
{ create: [{ path: path2, content: "" }] },
|
|
12994
|
+
focusedRepoFilesState.ref
|
|
12995
|
+
);
|
|
12996
|
+
} catch (error) {
|
|
12997
|
+
alert(`Failed to create file: ${error}`);
|
|
12998
|
+
}
|
|
12999
|
+
};
|
|
13000
|
+
const handleRenameFile = async (oldPath) => {
|
|
13001
|
+
if (!focusedRepoId || !focusedRepoFilesState) return;
|
|
13002
|
+
const newPath = prompt(`Rename "${oldPath}" to:`, oldPath);
|
|
13003
|
+
if (!newPath || newPath === oldPath) return;
|
|
13004
|
+
try {
|
|
13005
|
+
await gitManager.patchFiles(
|
|
13006
|
+
focusedRepoId,
|
|
13007
|
+
{ rename: [{ oldPath, newPath }] },
|
|
13008
|
+
focusedRepoFilesState.ref
|
|
13009
|
+
);
|
|
13010
|
+
} catch (error) {
|
|
13011
|
+
alert(`Failed to rename file: ${error}`);
|
|
13012
|
+
}
|
|
13013
|
+
};
|
|
13014
|
+
const handleDeleteFile = async (path2) => {
|
|
13015
|
+
if (!focusedRepoId || !focusedRepoFilesState) return;
|
|
13016
|
+
const confirmed = confirm(`Delete "${path2}"?`);
|
|
13017
|
+
if (!confirmed) return;
|
|
13018
|
+
try {
|
|
13019
|
+
await gitManager.patchFiles(
|
|
13020
|
+
focusedRepoId,
|
|
13021
|
+
{ delete: [{ path: path2 }] },
|
|
13022
|
+
focusedRepoFilesState.ref
|
|
13023
|
+
);
|
|
13024
|
+
if (editingFile === path2) {
|
|
13025
|
+
handleCloseEdit();
|
|
13026
|
+
}
|
|
13027
|
+
} catch (error) {
|
|
13028
|
+
alert(`Failed to delete file: ${error}`);
|
|
13029
|
+
}
|
|
13030
|
+
};
|
|
13031
|
+
return /* @__PURE__ */ import_react51.default.createElement(
|
|
13032
|
+
StateInspectorDisclosureSection,
|
|
13033
|
+
{
|
|
13034
|
+
open: showGit,
|
|
13035
|
+
setOpen: setShowGit,
|
|
13036
|
+
title: /* @__PURE__ */ import_react51.default.createElement(StateInspectorTitleLabel, null, "Git Repos (", repos.length, ")", /* @__PURE__ */ import_react51.default.createElement(ColoredDot, { type: isInitialized ? "success" : "error" })),
|
|
13037
|
+
colorScheme,
|
|
13038
|
+
right: /* @__PURE__ */ import_react51.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react51.default.createElement(
|
|
13039
|
+
StateInspectorButton,
|
|
13040
|
+
{
|
|
13041
|
+
theme: theme3,
|
|
13042
|
+
onClick: async () => {
|
|
13043
|
+
try {
|
|
13044
|
+
await gitManager.initRepo();
|
|
13045
|
+
} catch (error) {
|
|
13046
|
+
console.error("[GitSection] Failed to create repo:", error);
|
|
13047
|
+
}
|
|
13048
|
+
}
|
|
13049
|
+
},
|
|
13050
|
+
"Init Repo"
|
|
13051
|
+
))
|
|
13052
|
+
},
|
|
13053
|
+
/* @__PURE__ */ import_react51.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react51.default.createElement("div", { style: { padding: "4px 12px", display: "flex", gap: "4px" } }, /* @__PURE__ */ import_react51.default.createElement(
|
|
13054
|
+
"select",
|
|
13055
|
+
{
|
|
13056
|
+
name: "repoSelector",
|
|
13057
|
+
value: focusedRepoId ?? "",
|
|
13058
|
+
style: { flex: "1 1 auto", height: "19px", minWidth: 0 },
|
|
13059
|
+
onChange: (e) => {
|
|
13060
|
+
const value = e.target.value;
|
|
13061
|
+
handleFocusRepo(value || null);
|
|
13062
|
+
}
|
|
13063
|
+
},
|
|
13064
|
+
/* @__PURE__ */ import_react51.default.createElement("option", { value: "" }, "Select a repo..."),
|
|
13065
|
+
repos.map((repo) => /* @__PURE__ */ import_react51.default.createElement("option", { key: repo.id, value: repo.id }, repo.id))
|
|
13066
|
+
), focusedRepoId && /* @__PURE__ */ import_react51.default.createElement(
|
|
13067
|
+
StateInspectorButton,
|
|
13068
|
+
{
|
|
13069
|
+
theme: theme3,
|
|
13070
|
+
onClick: () => gitManager.fetchRepoFiles(focusedRepoId)
|
|
13071
|
+
},
|
|
13072
|
+
"Refresh"
|
|
13073
|
+
), /* @__PURE__ */ import_react51.default.createElement(
|
|
13074
|
+
"label",
|
|
13075
|
+
{
|
|
13076
|
+
style: {
|
|
13077
|
+
display: "flex",
|
|
13078
|
+
alignItems: "center",
|
|
13079
|
+
gap: "4px",
|
|
13080
|
+
fontSize: "11px",
|
|
13081
|
+
whiteSpace: "nowrap"
|
|
13082
|
+
}
|
|
13083
|
+
},
|
|
13084
|
+
"[Include Content = ",
|
|
13085
|
+
gitManager.includeContent ? "true" : "false",
|
|
13086
|
+
"]"
|
|
13087
|
+
)), focusedRepo && focusedRepoFilesState && /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, /* @__PURE__ */ import_react51.default.createElement(
|
|
13088
|
+
"div",
|
|
13089
|
+
{
|
|
13090
|
+
style: {
|
|
13091
|
+
padding: "4px 12px",
|
|
13092
|
+
display: "flex",
|
|
13093
|
+
gap: "8px",
|
|
13094
|
+
alignItems: "center",
|
|
13095
|
+
fontSize: "12px"
|
|
13096
|
+
}
|
|
13097
|
+
},
|
|
13098
|
+
/* @__PURE__ */ import_react51.default.createElement("span", { style: { color: theme3.BASE_COLOR } }, "Branch:"),
|
|
13099
|
+
focusedRepoFilesState.branches.length > 0 ? /* @__PURE__ */ import_react51.default.createElement(
|
|
13100
|
+
"select",
|
|
13101
|
+
{
|
|
13102
|
+
value: focusedRepoFilesState.ref,
|
|
13103
|
+
style: { flex: "1 1 auto", height: "19px" },
|
|
13104
|
+
onChange: (e) => handleBranchChange(e.target.value)
|
|
13105
|
+
},
|
|
13106
|
+
focusedRepoFilesState.branches.map((branch) => /* @__PURE__ */ import_react51.default.createElement("option", { key: branch.name, value: branch.name }, branch.name))
|
|
13107
|
+
) : /* @__PURE__ */ import_react51.default.createElement("span", { style: { opacity: 0.6, fontStyle: "italic" } }, focusedRepoFilesState.ref || "No branches"),
|
|
13108
|
+
focusedRepoFilesState.oid && /* @__PURE__ */ import_react51.default.createElement(
|
|
13109
|
+
"span",
|
|
13110
|
+
{
|
|
13111
|
+
style: {
|
|
13112
|
+
fontFamily: "monospace",
|
|
13113
|
+
fontSize: "10px",
|
|
13114
|
+
opacity: 0.6
|
|
13115
|
+
},
|
|
13116
|
+
title: focusedRepoFilesState.oid
|
|
13117
|
+
},
|
|
13118
|
+
focusedRepoFilesState.oid.slice(0, 7),
|
|
13119
|
+
focusedRepoFilesState.fetchState === "refreshing" && "\u2026"
|
|
13120
|
+
),
|
|
13121
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13122
|
+
StateInspectorButton,
|
|
13123
|
+
{
|
|
13124
|
+
theme: theme3,
|
|
13125
|
+
onClick: handleAddFile,
|
|
13126
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13127
|
+
},
|
|
13128
|
+
"+ Add File"
|
|
13129
|
+
)
|
|
13130
|
+
), focusedRepoFilesState.fetchState === "loading" && /* @__PURE__ */ import_react51.default.createElement(
|
|
13131
|
+
"div",
|
|
13132
|
+
{
|
|
13133
|
+
style: {
|
|
13134
|
+
padding: "12px",
|
|
13135
|
+
fontSize: "12px"
|
|
13136
|
+
}
|
|
13137
|
+
},
|
|
13138
|
+
"Loading files..."
|
|
13139
|
+
), focusedRepoFilesState.error && /* @__PURE__ */ import_react51.default.createElement(
|
|
13140
|
+
"div",
|
|
13141
|
+
{
|
|
13142
|
+
style: {
|
|
13143
|
+
padding: "12px",
|
|
13144
|
+
fontSize: "12px",
|
|
13145
|
+
color: "#f44"
|
|
13146
|
+
}
|
|
13147
|
+
},
|
|
13148
|
+
"Error: ",
|
|
13149
|
+
focusedRepoFilesState.error
|
|
13150
|
+
), focusedRepoFilesState.fetchState !== "loading" && !focusedRepoFilesState.error && focusedRepoFilesState.files.length === 0 && /* @__PURE__ */ import_react51.default.createElement(
|
|
13151
|
+
"div",
|
|
13152
|
+
{
|
|
13153
|
+
style: {
|
|
13154
|
+
padding: "12px",
|
|
13155
|
+
fontSize: "12px"
|
|
13156
|
+
}
|
|
13157
|
+
},
|
|
13158
|
+
"No files (empty repo)"
|
|
13159
|
+
), !editingFile && focusedRepoFilesState.files.map((file, index) => {
|
|
13160
|
+
const fileInfo = focusedRepoFilesState.fileContents?.find(
|
|
13161
|
+
(f) => f.path === file
|
|
13162
|
+
);
|
|
13163
|
+
let preview = "";
|
|
13164
|
+
if (fileInfo) {
|
|
13165
|
+
try {
|
|
13166
|
+
const decoded = atob(fileInfo.content);
|
|
13167
|
+
preview = decoded.slice(0, 40).replace(/\n/g, " ").replace(/\s+/g, " ");
|
|
13168
|
+
if (decoded.length > 40) preview += "\u2026";
|
|
13169
|
+
} catch {
|
|
13170
|
+
}
|
|
13171
|
+
}
|
|
13172
|
+
return /* @__PURE__ */ import_react51.default.createElement(
|
|
13173
|
+
"div",
|
|
13174
|
+
{
|
|
13175
|
+
key: index,
|
|
13176
|
+
style: {
|
|
13177
|
+
padding: "2px 12px",
|
|
13178
|
+
display: "flex",
|
|
13179
|
+
justifyContent: "space-between",
|
|
13180
|
+
alignItems: "center",
|
|
13181
|
+
gap: "8px",
|
|
13182
|
+
borderBottom: `1px solid ${colorScheme === "light" ? "rgb(223 223 223)" : "rgb(29 29 29)"}`
|
|
13183
|
+
}
|
|
13184
|
+
},
|
|
13185
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13186
|
+
"span",
|
|
13187
|
+
{
|
|
13188
|
+
style: {
|
|
13189
|
+
fontFamily: "monospace",
|
|
13190
|
+
fontSize: "11px",
|
|
13191
|
+
overflow: "hidden",
|
|
13192
|
+
textOverflow: "ellipsis",
|
|
13193
|
+
whiteSpace: "nowrap",
|
|
13194
|
+
minWidth: 0,
|
|
13195
|
+
display: "flex",
|
|
13196
|
+
gap: "8px"
|
|
13197
|
+
},
|
|
13198
|
+
title: file
|
|
13199
|
+
},
|
|
13200
|
+
/* @__PURE__ */ import_react51.default.createElement("span", null, file),
|
|
13201
|
+
preview && /* @__PURE__ */ import_react51.default.createElement("span", { style: { opacity: 0.5 } }, preview)
|
|
13202
|
+
),
|
|
13203
|
+
/* @__PURE__ */ import_react51.default.createElement("span", { style: { display: "flex", gap: "4px", flexShrink: 0 } }, /* @__PURE__ */ import_react51.default.createElement(
|
|
13204
|
+
StateInspectorButton,
|
|
13205
|
+
{
|
|
13206
|
+
theme: theme3,
|
|
13207
|
+
onClick: () => handleEditFile(file),
|
|
13208
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13209
|
+
},
|
|
13210
|
+
"Edit"
|
|
13211
|
+
), /* @__PURE__ */ import_react51.default.createElement(
|
|
13212
|
+
StateInspectorButton,
|
|
13213
|
+
{
|
|
13214
|
+
theme: theme3,
|
|
13215
|
+
onClick: () => handleRenameFile(file),
|
|
13216
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13217
|
+
},
|
|
13218
|
+
"Rename"
|
|
13219
|
+
), /* @__PURE__ */ import_react51.default.createElement(
|
|
13220
|
+
StateInspectorButton,
|
|
13221
|
+
{
|
|
13222
|
+
theme: theme3,
|
|
13223
|
+
onClick: () => handleDeleteFile(file),
|
|
13224
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13225
|
+
},
|
|
13226
|
+
"Delete"
|
|
13227
|
+
))
|
|
13228
|
+
);
|
|
13229
|
+
}), editingFile && /* @__PURE__ */ import_react51.default.createElement(
|
|
13230
|
+
"div",
|
|
13231
|
+
{
|
|
13232
|
+
style: {
|
|
13233
|
+
padding: "8px 12px",
|
|
13234
|
+
borderTop: `1px solid ${theme3.DIVIDER_COLOR}`,
|
|
13235
|
+
flex: "1 1 auto",
|
|
13236
|
+
display: "flex",
|
|
13237
|
+
flexDirection: "column",
|
|
13238
|
+
minHeight: 0
|
|
13239
|
+
}
|
|
13240
|
+
},
|
|
13241
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13242
|
+
"div",
|
|
13243
|
+
{
|
|
13244
|
+
style: {
|
|
13245
|
+
display: "flex",
|
|
13246
|
+
justifyContent: "space-between",
|
|
13247
|
+
alignItems: "center",
|
|
13248
|
+
marginBottom: "8px",
|
|
13249
|
+
flexShrink: 0
|
|
13250
|
+
}
|
|
13251
|
+
},
|
|
13252
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13253
|
+
"span",
|
|
13254
|
+
{
|
|
13255
|
+
style: {
|
|
13256
|
+
fontFamily: "monospace",
|
|
13257
|
+
fontSize: "11px",
|
|
13258
|
+
fontWeight: "bold"
|
|
13259
|
+
}
|
|
13260
|
+
},
|
|
13261
|
+
editingFile,
|
|
13262
|
+
!isEditInitialized && /* @__PURE__ */ import_react51.default.createElement("span", { style: { opacity: 0.5, marginLeft: "8px" } }, "Loading...")
|
|
13263
|
+
),
|
|
13264
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13265
|
+
StateInspectorButton,
|
|
13266
|
+
{
|
|
13267
|
+
theme: theme3,
|
|
13268
|
+
onClick: handleCloseEdit,
|
|
13269
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13270
|
+
},
|
|
13271
|
+
"Close"
|
|
13272
|
+
)
|
|
13273
|
+
),
|
|
13274
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13275
|
+
"textarea",
|
|
13276
|
+
{
|
|
13277
|
+
value: editContent,
|
|
13278
|
+
onChange: (e) => handleContentChange(e.target.value),
|
|
13279
|
+
disabled: !isEditInitialized,
|
|
13280
|
+
style: {
|
|
13281
|
+
width: "100%",
|
|
13282
|
+
flex: "1 1 auto",
|
|
13283
|
+
minHeight: "100px",
|
|
13284
|
+
fontFamily: "monospace",
|
|
13285
|
+
fontSize: "11px",
|
|
13286
|
+
padding: "8px",
|
|
13287
|
+
border: `1px solid ${theme3.DIVIDER_COLOR}`,
|
|
13288
|
+
borderRadius: "4px",
|
|
13289
|
+
backgroundColor: theme3.ROW_BACKGROUND,
|
|
13290
|
+
color: theme3.BASE_COLOR,
|
|
13291
|
+
resize: "none",
|
|
13292
|
+
boxSizing: "border-box"
|
|
13293
|
+
}
|
|
13294
|
+
}
|
|
13295
|
+
)
|
|
13296
|
+
)), repos.length === 0 && /* @__PURE__ */ import_react51.default.createElement(
|
|
13297
|
+
"div",
|
|
13298
|
+
{
|
|
13299
|
+
style: {
|
|
13300
|
+
padding: "12px",
|
|
13301
|
+
fontSize: "12px",
|
|
13302
|
+
display: "flex",
|
|
13303
|
+
flexDirection: "column",
|
|
13304
|
+
gap: "4px"
|
|
13305
|
+
}
|
|
13306
|
+
},
|
|
13307
|
+
/* @__PURE__ */ import_react51.default.createElement("span", null, "No git repos")
|
|
13308
|
+
))
|
|
13309
|
+
);
|
|
13310
|
+
}
|
|
13311
|
+
|
|
13312
|
+
// ../noya-multiplayer-react/src/inspector/sections/HistorySection.tsx
|
|
13313
|
+
var import_react52 = __toESM(require("react"));
|
|
12967
13314
|
|
|
12968
13315
|
// ../noya-multiplayer-react/src/inspector/utils.ts
|
|
12969
13316
|
function pathToString(extendedPath) {
|
|
@@ -13018,15 +13365,15 @@ function HistorySection({
|
|
|
13018
13365
|
historySnapshot,
|
|
13019
13366
|
multiplayerStateManager
|
|
13020
13367
|
}) {
|
|
13021
|
-
const ref = (0,
|
|
13368
|
+
const ref = (0, import_react52.useRef)(null);
|
|
13022
13369
|
const theme3 = getStateInspectorTheme(colorScheme);
|
|
13023
13370
|
const solidBorderColor = getStateInspectorBorderColor(colorScheme);
|
|
13024
|
-
(0,
|
|
13371
|
+
(0, import_react52.useEffect)(() => {
|
|
13025
13372
|
if (ref.current) {
|
|
13026
13373
|
ref.current.scrollTop = ref.current.scrollHeight;
|
|
13027
13374
|
}
|
|
13028
13375
|
}, [historySnapshot]);
|
|
13029
|
-
(0,
|
|
13376
|
+
(0, import_react52.useEffect)(() => {
|
|
13030
13377
|
if (!ref.current) return;
|
|
13031
13378
|
const historyEntry = ref.current.querySelector(
|
|
13032
13379
|
`#${HISTORY_ELEMENT_PREFIX}${historySnapshot.historyIndex}`
|
|
@@ -13038,14 +13385,14 @@ function HistorySection({
|
|
|
13038
13385
|
});
|
|
13039
13386
|
}
|
|
13040
13387
|
}, [historySnapshot.historyIndex]);
|
|
13041
|
-
return /* @__PURE__ */
|
|
13388
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
13042
13389
|
StateInspectorDisclosureSection,
|
|
13043
13390
|
{
|
|
13044
13391
|
open: showHistory,
|
|
13045
13392
|
setOpen: setShowHistory,
|
|
13046
13393
|
title: "History",
|
|
13047
13394
|
colorScheme,
|
|
13048
|
-
right: /* @__PURE__ */
|
|
13395
|
+
right: /* @__PURE__ */ import_react52.default.createElement(
|
|
13049
13396
|
"span",
|
|
13050
13397
|
{
|
|
13051
13398
|
style: {
|
|
@@ -13053,7 +13400,7 @@ function HistorySection({
|
|
|
13053
13400
|
gap: "4px"
|
|
13054
13401
|
}
|
|
13055
13402
|
},
|
|
13056
|
-
/* @__PURE__ */
|
|
13403
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13057
13404
|
StateInspectorButton,
|
|
13058
13405
|
{
|
|
13059
13406
|
disabled: !historySnapshot.canUndo,
|
|
@@ -13062,7 +13409,7 @@ function HistorySection({
|
|
|
13062
13409
|
multiplayerStateManager.undo();
|
|
13063
13410
|
}
|
|
13064
13411
|
},
|
|
13065
|
-
/* @__PURE__ */
|
|
13412
|
+
/* @__PURE__ */ import_react52.default.createElement("span", { style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13066
13413
|
"svg",
|
|
13067
13414
|
{
|
|
13068
13415
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13070,7 +13417,7 @@ function HistorySection({
|
|
|
13070
13417
|
height: "1em",
|
|
13071
13418
|
viewBox: "0 0 20 20"
|
|
13072
13419
|
},
|
|
13073
|
-
/* @__PURE__ */
|
|
13420
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13074
13421
|
"path",
|
|
13075
13422
|
{
|
|
13076
13423
|
fill: "currentColor",
|
|
@@ -13079,7 +13426,7 @@ function HistorySection({
|
|
|
13079
13426
|
)
|
|
13080
13427
|
))
|
|
13081
13428
|
),
|
|
13082
|
-
/* @__PURE__ */
|
|
13429
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13083
13430
|
StateInspectorButton,
|
|
13084
13431
|
{
|
|
13085
13432
|
disabled: !historySnapshot.canRedo,
|
|
@@ -13088,7 +13435,7 @@ function HistorySection({
|
|
|
13088
13435
|
multiplayerStateManager.redo();
|
|
13089
13436
|
}
|
|
13090
13437
|
},
|
|
13091
|
-
/* @__PURE__ */
|
|
13438
|
+
/* @__PURE__ */ import_react52.default.createElement("span", { style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13092
13439
|
"svg",
|
|
13093
13440
|
{
|
|
13094
13441
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13096,7 +13443,7 @@ function HistorySection({
|
|
|
13096
13443
|
height: "1em",
|
|
13097
13444
|
viewBox: "0 0 20 20"
|
|
13098
13445
|
},
|
|
13099
|
-
/* @__PURE__ */
|
|
13446
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13100
13447
|
"path",
|
|
13101
13448
|
{
|
|
13102
13449
|
fill: "currentColor",
|
|
@@ -13107,7 +13454,7 @@ function HistorySection({
|
|
|
13107
13454
|
)
|
|
13108
13455
|
)
|
|
13109
13456
|
},
|
|
13110
|
-
/* @__PURE__ */
|
|
13457
|
+
/* @__PURE__ */ import_react52.default.createElement(StateInspectorDisclosureRowInner, { ref }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13111
13458
|
"div",
|
|
13112
13459
|
{
|
|
13113
13460
|
id: `${HISTORY_ELEMENT_PREFIX}0`,
|
|
@@ -13121,7 +13468,7 @@ function HistorySection({
|
|
|
13121
13468
|
background: historySnapshot.historyIndex === 0 ? "rgb(59 130 246 / 15%)" : void 0
|
|
13122
13469
|
}
|
|
13123
13470
|
},
|
|
13124
|
-
/* @__PURE__ */
|
|
13471
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13125
13472
|
"span",
|
|
13126
13473
|
{
|
|
13127
13474
|
style: {
|
|
@@ -13136,7 +13483,7 @@ function HistorySection({
|
|
|
13136
13483
|
), historySnapshot.history.map((entry, index) => {
|
|
13137
13484
|
const metadata = entry.metadata;
|
|
13138
13485
|
const { id, name, timestamp, ...rest } = metadata;
|
|
13139
|
-
return /* @__PURE__ */
|
|
13486
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
13140
13487
|
"div",
|
|
13141
13488
|
{
|
|
13142
13489
|
id: `${HISTORY_ELEMENT_PREFIX}${index + 1}`,
|
|
@@ -13147,7 +13494,7 @@ function HistorySection({
|
|
|
13147
13494
|
background: index + 1 === historySnapshot.historyIndex ? "rgb(59 130 246 / 15%)" : void 0
|
|
13148
13495
|
}
|
|
13149
13496
|
},
|
|
13150
|
-
typeof name === "string" && /* @__PURE__ */
|
|
13497
|
+
typeof name === "string" && /* @__PURE__ */ import_react52.default.createElement(
|
|
13151
13498
|
"pre",
|
|
13152
13499
|
{
|
|
13153
13500
|
style: {
|
|
@@ -13158,9 +13505,9 @@ function HistorySection({
|
|
|
13158
13505
|
}
|
|
13159
13506
|
},
|
|
13160
13507
|
entry.metadata.name,
|
|
13161
|
-
Object.keys(rest).length > 0 && /* @__PURE__ */
|
|
13508
|
+
Object.keys(rest).length > 0 && /* @__PURE__ */ import_react52.default.createElement(themedObjectInspector, { data: rest, theme: theme3 })
|
|
13162
13509
|
),
|
|
13163
|
-
entry.redoPatches?.map((patch, j) => /* @__PURE__ */
|
|
13510
|
+
entry.redoPatches?.map((patch, j) => /* @__PURE__ */ import_react52.default.createElement(
|
|
13164
13511
|
"pre",
|
|
13165
13512
|
{
|
|
13166
13513
|
key: j,
|
|
@@ -13171,10 +13518,10 @@ function HistorySection({
|
|
|
13171
13518
|
margin: 0
|
|
13172
13519
|
}
|
|
13173
13520
|
},
|
|
13174
|
-
patch.op === "add" && /* @__PURE__ */
|
|
13175
|
-
patch.op === "replace" && /* @__PURE__ */
|
|
13176
|
-
patch.op === "remove" && /* @__PURE__ */
|
|
13177
|
-
patch.op === "move" && /* @__PURE__ */
|
|
13521
|
+
patch.op === "add" && /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, /* @__PURE__ */ import_react52.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.path)), " = ", /* @__PURE__ */ import_react52.default.createElement(themedObjectInspector, { data: patch.value, theme: theme3 })),
|
|
13522
|
+
patch.op === "replace" && /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, /* @__PURE__ */ import_react52.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.path)), " = ", /* @__PURE__ */ import_react52.default.createElement(themedObjectInspector, { data: patch.value, theme: theme3 })),
|
|
13523
|
+
patch.op === "remove" && /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, /* @__PURE__ */ import_react52.default.createElement("span", { style: { color: theme3.OBJECT_VALUE_STRING_COLOR } }, "delete", " "), /* @__PURE__ */ import_react52.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.path))),
|
|
13524
|
+
patch.op === "move" && /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, /* @__PURE__ */ import_react52.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.from)), " -> ", /* @__PURE__ */ import_react52.default.createElement("span", { style: { fontStyle: "italic" } }, pathToString(patch.path)))
|
|
13178
13525
|
))
|
|
13179
13526
|
);
|
|
13180
13527
|
}))
|
|
@@ -13182,7 +13529,7 @@ function HistorySection({
|
|
|
13182
13529
|
}
|
|
13183
13530
|
|
|
13184
13531
|
// ../noya-multiplayer-react/src/inspector/sections/ServerScriptLogsSection.tsx
|
|
13185
|
-
var
|
|
13532
|
+
var import_react53 = __toESM(require("react"));
|
|
13186
13533
|
var levelColors = {
|
|
13187
13534
|
error: "#f87171",
|
|
13188
13535
|
warn: "#facc15",
|
|
@@ -13202,16 +13549,16 @@ function ServerScriptLogsSection({
|
|
|
13202
13549
|
title = "Server Script Logs"
|
|
13203
13550
|
}) {
|
|
13204
13551
|
const theme3 = getStateInspectorTheme(colorScheme);
|
|
13205
|
-
return /* @__PURE__ */
|
|
13552
|
+
return /* @__PURE__ */ import_react53.default.createElement(
|
|
13206
13553
|
StateInspectorDisclosureSection,
|
|
13207
13554
|
{
|
|
13208
13555
|
open: showLogs,
|
|
13209
13556
|
setOpen: setShowLogs,
|
|
13210
13557
|
title,
|
|
13211
13558
|
colorScheme,
|
|
13212
|
-
right: /* @__PURE__ */
|
|
13559
|
+
right: /* @__PURE__ */ import_react53.default.createElement(StateInspectorButton, { theme: theme3, onClick: onTogglePaused }, paused ? "Resume" : "Pause")
|
|
13213
13560
|
},
|
|
13214
|
-
/* @__PURE__ */
|
|
13561
|
+
/* @__PURE__ */ import_react53.default.createElement(StateInspectorDisclosureRowInner, { ref: containerRef }, paused && /* @__PURE__ */ import_react53.default.createElement(
|
|
13215
13562
|
"div",
|
|
13216
13563
|
{
|
|
13217
13564
|
style: {
|
|
@@ -13221,7 +13568,7 @@ function ServerScriptLogsSection({
|
|
|
13221
13568
|
}
|
|
13222
13569
|
},
|
|
13223
13570
|
"Log streaming paused"
|
|
13224
|
-
), logs.map((log) => /* @__PURE__ */
|
|
13571
|
+
), logs.map((log) => /* @__PURE__ */ import_react53.default.createElement(StateInspectorRow, { key: log.id, colorScheme }, /* @__PURE__ */ import_react53.default.createElement(
|
|
13225
13572
|
"div",
|
|
13226
13573
|
{
|
|
13227
13574
|
style: {
|
|
@@ -13234,9 +13581,9 @@ function ServerScriptLogsSection({
|
|
|
13234
13581
|
textTransform: "uppercase"
|
|
13235
13582
|
}
|
|
13236
13583
|
},
|
|
13237
|
-
/* @__PURE__ */
|
|
13238
|
-
/* @__PURE__ */
|
|
13239
|
-
(log.origin || log.target || log.mode) && /* @__PURE__ */
|
|
13584
|
+
/* @__PURE__ */ import_react53.default.createElement("span", null, formatTimestamp(log.timestamp)),
|
|
13585
|
+
/* @__PURE__ */ import_react53.default.createElement("span", { style: { color: levelColors[log.level] } }, log.level),
|
|
13586
|
+
(log.origin || log.target || log.mode) && /* @__PURE__ */ import_react53.default.createElement(
|
|
13240
13587
|
"span",
|
|
13241
13588
|
{
|
|
13242
13589
|
style: {
|
|
@@ -13248,7 +13595,7 @@ function ServerScriptLogsSection({
|
|
|
13248
13595
|
},
|
|
13249
13596
|
[log.origin ?? log.target, log.mode].filter(Boolean).join(" / ")
|
|
13250
13597
|
),
|
|
13251
|
-
/* @__PURE__ */
|
|
13598
|
+
/* @__PURE__ */ import_react53.default.createElement(
|
|
13252
13599
|
"span",
|
|
13253
13600
|
{
|
|
13254
13601
|
style: {
|
|
@@ -13259,7 +13606,7 @@ function ServerScriptLogsSection({
|
|
|
13259
13606
|
},
|
|
13260
13607
|
log.scriptId
|
|
13261
13608
|
)
|
|
13262
|
-
), /* @__PURE__ */
|
|
13609
|
+
), /* @__PURE__ */ import_react53.default.createElement(
|
|
13263
13610
|
"div",
|
|
13264
13611
|
{
|
|
13265
13612
|
style: {
|
|
@@ -13268,15 +13615,15 @@ function ServerScriptLogsSection({
|
|
|
13268
13615
|
gap: "4px"
|
|
13269
13616
|
}
|
|
13270
13617
|
},
|
|
13271
|
-
log.values.length > 0 ? log.values.map((value, index) => /* @__PURE__ */
|
|
13618
|
+
log.values.length > 0 ? log.values.map((value, index) => /* @__PURE__ */ import_react53.default.createElement(
|
|
13272
13619
|
themedObjectInspector,
|
|
13273
13620
|
{
|
|
13274
13621
|
key: index,
|
|
13275
13622
|
data: value,
|
|
13276
13623
|
theme: theme3
|
|
13277
13624
|
}
|
|
13278
|
-
)) : /* @__PURE__ */
|
|
13279
|
-
))), !logs?.length && /* @__PURE__ */
|
|
13625
|
+
)) : /* @__PURE__ */ import_react53.default.createElement("span", { style: { fontSize: "11px", opacity: 0.7 } }, "No data")
|
|
13626
|
+
))), !logs?.length && /* @__PURE__ */ import_react53.default.createElement(
|
|
13280
13627
|
"div",
|
|
13281
13628
|
{
|
|
13282
13629
|
style: {
|
|
@@ -13287,7 +13634,7 @@ function ServerScriptLogsSection({
|
|
|
13287
13634
|
gap: "4px"
|
|
13288
13635
|
}
|
|
13289
13636
|
},
|
|
13290
|
-
/* @__PURE__ */
|
|
13637
|
+
/* @__PURE__ */ import_react53.default.createElement("span", null, "No logs received")
|
|
13291
13638
|
))
|
|
13292
13639
|
);
|
|
13293
13640
|
}
|
|
@@ -13815,16 +14162,8 @@ function decodeAll(buffer) {
|
|
|
13815
14162
|
return { state, schema, assets, assetMap };
|
|
13816
14163
|
}
|
|
13817
14164
|
|
|
13818
|
-
// ../noya-multiplayer-react/src/inspector/StateInspectorTitleLabel.tsx
|
|
13819
|
-
var import_react52 = __toESM(require("react"));
|
|
13820
|
-
function StateInspectorTitleLabel({
|
|
13821
|
-
children
|
|
13822
|
-
}) {
|
|
13823
|
-
return /* @__PURE__ */ import_react52.default.createElement("span", { style: { display: "flex", alignItems: "center", gap: "4px" } }, children);
|
|
13824
|
-
}
|
|
13825
|
-
|
|
13826
14165
|
// ../noya-multiplayer-react/src/inspector/StateInspectorToggleButton.tsx
|
|
13827
|
-
var
|
|
14166
|
+
var import_react54 = __toESM(require("react"));
|
|
13828
14167
|
function StateInspectorToggleButton({
|
|
13829
14168
|
showInspector,
|
|
13830
14169
|
setShowInspector,
|
|
@@ -13832,7 +14171,7 @@ function StateInspectorToggleButton({
|
|
|
13832
14171
|
anchor
|
|
13833
14172
|
}) {
|
|
13834
14173
|
const isRightAnchor = anchor === "right";
|
|
13835
|
-
const rightIcon = /* @__PURE__ */
|
|
14174
|
+
const rightIcon = /* @__PURE__ */ import_react54.default.createElement(
|
|
13836
14175
|
"svg",
|
|
13837
14176
|
{
|
|
13838
14177
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13842,7 +14181,7 @@ function StateInspectorToggleButton({
|
|
|
13842
14181
|
stroke: "currentColor",
|
|
13843
14182
|
className: "size-6"
|
|
13844
14183
|
},
|
|
13845
|
-
/* @__PURE__ */
|
|
14184
|
+
/* @__PURE__ */ import_react54.default.createElement(
|
|
13846
14185
|
"path",
|
|
13847
14186
|
{
|
|
13848
14187
|
strokeLinecap: "round",
|
|
@@ -13851,7 +14190,7 @@ function StateInspectorToggleButton({
|
|
|
13851
14190
|
}
|
|
13852
14191
|
)
|
|
13853
14192
|
);
|
|
13854
|
-
const leftIcon = /* @__PURE__ */
|
|
14193
|
+
const leftIcon = /* @__PURE__ */ import_react54.default.createElement(
|
|
13855
14194
|
"svg",
|
|
13856
14195
|
{
|
|
13857
14196
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13861,7 +14200,7 @@ function StateInspectorToggleButton({
|
|
|
13861
14200
|
stroke: "currentColor",
|
|
13862
14201
|
className: "size-6"
|
|
13863
14202
|
},
|
|
13864
|
-
/* @__PURE__ */
|
|
14203
|
+
/* @__PURE__ */ import_react54.default.createElement(
|
|
13865
14204
|
"path",
|
|
13866
14205
|
{
|
|
13867
14206
|
strokeLinecap: "round",
|
|
@@ -13870,7 +14209,7 @@ function StateInspectorToggleButton({
|
|
|
13870
14209
|
}
|
|
13871
14210
|
)
|
|
13872
14211
|
);
|
|
13873
|
-
return /* @__PURE__ */
|
|
14212
|
+
return /* @__PURE__ */ import_react54.default.createElement(
|
|
13874
14213
|
"span",
|
|
13875
14214
|
{
|
|
13876
14215
|
role: "button",
|
|
@@ -13891,15 +14230,15 @@ function StateInspectorToggleButton({
|
|
|
13891
14230
|
setShowInspector(!showInspector);
|
|
13892
14231
|
}
|
|
13893
14232
|
},
|
|
13894
|
-
showInspector ? "Hide Inspector" : /* @__PURE__ */
|
|
14233
|
+
showInspector ? "Hide Inspector" : /* @__PURE__ */ import_react54.default.createElement("span", { style: { width: "12px", height: "12px" } }, isRightAnchor ? rightIcon : leftIcon)
|
|
13895
14234
|
);
|
|
13896
14235
|
}
|
|
13897
14236
|
|
|
13898
14237
|
// ../noya-multiplayer-react/src/inspector/useLocalStorageState.tsx
|
|
13899
|
-
var
|
|
14238
|
+
var import_react55 = __toESM(require("react"));
|
|
13900
14239
|
var localStorage2 = typeof window !== "undefined" ? window.localStorage : null;
|
|
13901
14240
|
function useLocalStorageState(key, defaultValue) {
|
|
13902
|
-
const [state, setState] =
|
|
14241
|
+
const [state, setState] = import_react55.default.useState(() => {
|
|
13903
14242
|
const value = localStorage2?.getItem(key);
|
|
13904
14243
|
let result = defaultValue;
|
|
13905
14244
|
if (value) {
|
|
@@ -13919,11 +14258,11 @@ function useLocalStorageState(key, defaultValue) {
|
|
|
13919
14258
|
}
|
|
13920
14259
|
|
|
13921
14260
|
// ../noya-multiplayer-react/src/inspector/usePausedStream.ts
|
|
13922
|
-
var
|
|
14261
|
+
var import_react56 = __toESM(require("react"));
|
|
13923
14262
|
function usePausedStream(items) {
|
|
13924
|
-
const [paused, setPaused] =
|
|
13925
|
-
const [visibleItems, setVisibleItems] =
|
|
13926
|
-
const togglePaused =
|
|
14263
|
+
const [paused, setPaused] = import_react56.default.useState(false);
|
|
14264
|
+
const [visibleItems, setVisibleItems] = import_react56.default.useState(items ?? []);
|
|
14265
|
+
const togglePaused = import_react56.default.useCallback(() => {
|
|
13927
14266
|
setPaused((value) => {
|
|
13928
14267
|
if (!value) {
|
|
13929
14268
|
setVisibleItems(items ?? []);
|
|
@@ -13931,7 +14270,7 @@ function usePausedStream(items) {
|
|
|
13931
14270
|
return !value;
|
|
13932
14271
|
});
|
|
13933
14272
|
}, [items]);
|
|
13934
|
-
|
|
14273
|
+
import_react56.default.useEffect(() => {
|
|
13935
14274
|
if (paused) return;
|
|
13936
14275
|
setVisibleItems(items ?? []);
|
|
13937
14276
|
}, [items, paused]);
|
|
@@ -13963,19 +14302,20 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
13963
14302
|
ioManager,
|
|
13964
14303
|
resourceManager,
|
|
13965
14304
|
activityEventsManager,
|
|
13966
|
-
logManager
|
|
14305
|
+
logManager,
|
|
14306
|
+
gitManager
|
|
13967
14307
|
} = noyaManager;
|
|
13968
|
-
const [didMount, setDidMount] =
|
|
14308
|
+
const [didMount, setDidMount] = import_react57.default.useState(false);
|
|
13969
14309
|
const tasks = useObservable2(taskManager.tasks$);
|
|
13970
14310
|
const inputs = useObservable2(ioManager.inputs$);
|
|
13971
14311
|
const outputTransforms = useObservable2(ioManager.outputTransforms$);
|
|
13972
|
-
(0,
|
|
14312
|
+
(0, import_react57.useLayoutEffect)(() => {
|
|
13973
14313
|
setDidMount(true);
|
|
13974
14314
|
}, []);
|
|
13975
|
-
const eventsContainerRef =
|
|
13976
|
-
const activityEventsContainerRef =
|
|
13977
|
-
const serverLogsContainerRef =
|
|
13978
|
-
const serverSimulationLogsContainerRef =
|
|
14315
|
+
const eventsContainerRef = import_react57.default.useRef(null);
|
|
14316
|
+
const activityEventsContainerRef = import_react57.default.useRef(null);
|
|
14317
|
+
const serverLogsContainerRef = import_react57.default.useRef(null);
|
|
14318
|
+
const serverSimulationLogsContainerRef = import_react57.default.useRef(null);
|
|
13979
14319
|
const [showInspector, setShowInspector] = useLocalStorageState(
|
|
13980
14320
|
"noya-multiplayer-react-show-inspector",
|
|
13981
14321
|
true
|
|
@@ -14040,6 +14380,10 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14040
14380
|
"noya-multiplayer-react-show-server-simulation-logs",
|
|
14041
14381
|
false
|
|
14042
14382
|
);
|
|
14383
|
+
const [showGit, setShowGit] = useLocalStorageState(
|
|
14384
|
+
"noya-multiplayer-react-show-git",
|
|
14385
|
+
false
|
|
14386
|
+
);
|
|
14043
14387
|
const [showSimulation, setShowSimulation] = useLocalStorageState(
|
|
14044
14388
|
"noya-multiplayer-react-show-simulation",
|
|
14045
14389
|
false
|
|
@@ -14050,7 +14394,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14050
14394
|
paused: connectionEventsPaused,
|
|
14051
14395
|
togglePaused: toggleConnectionEventsPaused
|
|
14052
14396
|
} = usePausedStream(connectionEvents);
|
|
14053
|
-
(0,
|
|
14397
|
+
(0, import_react57.useEffect)(() => {
|
|
14054
14398
|
if (eventsContainerRef.current) {
|
|
14055
14399
|
eventsContainerRef.current.scrollTop = eventsContainerRef.current.scrollHeight;
|
|
14056
14400
|
}
|
|
@@ -14069,13 +14413,13 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14069
14413
|
paused: serverSimulationLogsPaused,
|
|
14070
14414
|
togglePaused: toggleServerSimulationLogsPaused
|
|
14071
14415
|
} = usePausedStream(serverSimulationLogs);
|
|
14072
|
-
(0,
|
|
14416
|
+
(0, import_react57.useEffect)(() => {
|
|
14073
14417
|
if (!showServerLogs) return;
|
|
14074
14418
|
if (serverLogsContainerRef.current) {
|
|
14075
14419
|
serverLogsContainerRef.current.scrollTop = serverLogsContainerRef.current.scrollHeight;
|
|
14076
14420
|
}
|
|
14077
14421
|
}, [showServerLogs, visibleServerLogs]);
|
|
14078
|
-
(0,
|
|
14422
|
+
(0, import_react57.useEffect)(() => {
|
|
14079
14423
|
if (!showServerSimulationLogs) return;
|
|
14080
14424
|
if (serverSimulationLogsContainerRef.current) {
|
|
14081
14425
|
serverSimulationLogsContainerRef.current.scrollTop = serverSimulationLogsContainerRef.current.scrollHeight;
|
|
@@ -14122,11 +14466,11 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14122
14466
|
zIndex: 9999,
|
|
14123
14467
|
lineHeight: "13px"
|
|
14124
14468
|
};
|
|
14125
|
-
const handleExportAll = (0,
|
|
14469
|
+
const handleExportAll = (0, import_react57.useCallback)(async () => {
|
|
14126
14470
|
const buffer = await exportAll(noyaManager);
|
|
14127
14471
|
downloadBlob(new Blob([buffer]), "state.zip");
|
|
14128
14472
|
}, [noyaManager]);
|
|
14129
|
-
const handleImportAll = (0,
|
|
14473
|
+
const handleImportAll = (0, import_react57.useCallback)(async () => {
|
|
14130
14474
|
const file = await uploadFile();
|
|
14131
14475
|
const buffer = await file.arrayBuffer();
|
|
14132
14476
|
importAll(buffer, noyaManager, {
|
|
@@ -14139,7 +14483,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14139
14483
|
}, [noyaManager]);
|
|
14140
14484
|
if (!didMount) return null;
|
|
14141
14485
|
if (!showInspector) {
|
|
14142
|
-
return /* @__PURE__ */
|
|
14486
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
14143
14487
|
"div",
|
|
14144
14488
|
{
|
|
14145
14489
|
...props,
|
|
@@ -14151,7 +14495,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14151
14495
|
},
|
|
14152
14496
|
onClick: () => setShowInspector(true)
|
|
14153
14497
|
},
|
|
14154
|
-
/* @__PURE__ */
|
|
14498
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14155
14499
|
StateInspectorToggleButton,
|
|
14156
14500
|
{
|
|
14157
14501
|
showInspector,
|
|
@@ -14162,7 +14506,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14162
14506
|
)
|
|
14163
14507
|
);
|
|
14164
14508
|
}
|
|
14165
|
-
return /* @__PURE__ */
|
|
14509
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
14166
14510
|
"div",
|
|
14167
14511
|
{
|
|
14168
14512
|
...props,
|
|
@@ -14171,7 +14515,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14171
14515
|
...props.style
|
|
14172
14516
|
}
|
|
14173
14517
|
},
|
|
14174
|
-
/* @__PURE__ */
|
|
14518
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14175
14519
|
StateInspectorDisclosureSection,
|
|
14176
14520
|
{
|
|
14177
14521
|
isFirst: true,
|
|
@@ -14184,14 +14528,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14184
14528
|
maxHeight: "50%",
|
|
14185
14529
|
overflowY: "auto"
|
|
14186
14530
|
},
|
|
14187
|
-
right: /* @__PURE__ */
|
|
14531
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14188
14532
|
StateInspectorButton,
|
|
14189
14533
|
{
|
|
14190
14534
|
theme: theme3,
|
|
14191
14535
|
onClick: () => setShowUserDetails(!showUserDetails)
|
|
14192
14536
|
},
|
|
14193
14537
|
"Toggle details"
|
|
14194
|
-
), /* @__PURE__ */
|
|
14538
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14195
14539
|
StateInspectorToggleButton,
|
|
14196
14540
|
{
|
|
14197
14541
|
showInspector,
|
|
@@ -14201,8 +14545,8 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14201
14545
|
}
|
|
14202
14546
|
))
|
|
14203
14547
|
},
|
|
14204
|
-
/* @__PURE__ */
|
|
14205
|
-
return /* @__PURE__ */
|
|
14548
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, { style: { flex: "0 0 auto" } }, connectedUsers?.filter((user) => showUserDetails || !user.inactive).map((user, index, array) => {
|
|
14549
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
14206
14550
|
StateInspectorRow,
|
|
14207
14551
|
{
|
|
14208
14552
|
key: user.connectionId,
|
|
@@ -14213,7 +14557,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14213
14557
|
opacity: user.inactive ? 0.5 : 1
|
|
14214
14558
|
}
|
|
14215
14559
|
},
|
|
14216
|
-
user.image && /* @__PURE__ */
|
|
14560
|
+
user.image && /* @__PURE__ */ import_react57.default.createElement(
|
|
14217
14561
|
"img",
|
|
14218
14562
|
{
|
|
14219
14563
|
src: user.image,
|
|
@@ -14230,9 +14574,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14230
14574
|
}
|
|
14231
14575
|
}
|
|
14232
14576
|
),
|
|
14233
|
-
showUserDetails ? /* @__PURE__ */
|
|
14577
|
+
showUserDetails ? /* @__PURE__ */ import_react57.default.createElement(themedObjectInspector, { data: user, theme: theme3 }) : user.name
|
|
14234
14578
|
);
|
|
14235
|
-
}), !connectedUsers && /* @__PURE__ */
|
|
14579
|
+
}), !connectedUsers && /* @__PURE__ */ import_react57.default.createElement(
|
|
14236
14580
|
"div",
|
|
14237
14581
|
{
|
|
14238
14582
|
style: {
|
|
@@ -14243,13 +14587,13 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14243
14587
|
gap: "4px"
|
|
14244
14588
|
}
|
|
14245
14589
|
},
|
|
14246
|
-
/* @__PURE__ */
|
|
14590
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No connected users")
|
|
14247
14591
|
))
|
|
14248
14592
|
),
|
|
14249
|
-
/* @__PURE__ */
|
|
14593
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14250
14594
|
StateInspectorDisclosureSection,
|
|
14251
14595
|
{
|
|
14252
|
-
title: /* @__PURE__ */
|
|
14596
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Data", /* @__PURE__ */ import_react57.default.createElement(
|
|
14253
14597
|
ColoredDot,
|
|
14254
14598
|
{
|
|
14255
14599
|
type: multipeerStateInitialized ? "success" : "error"
|
|
@@ -14258,7 +14602,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14258
14602
|
colorScheme,
|
|
14259
14603
|
setOpen: setShowData,
|
|
14260
14604
|
open: showData,
|
|
14261
|
-
right: /* @__PURE__ */
|
|
14605
|
+
right: /* @__PURE__ */ import_react57.default.createElement(
|
|
14262
14606
|
"span",
|
|
14263
14607
|
{
|
|
14264
14608
|
style: {
|
|
@@ -14266,9 +14610,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14266
14610
|
gap: "12px"
|
|
14267
14611
|
}
|
|
14268
14612
|
},
|
|
14269
|
-
/* @__PURE__ */
|
|
14270
|
-
/* @__PURE__ */
|
|
14271
|
-
/* @__PURE__ */
|
|
14613
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorButton, { theme: theme3, onClick: handleImportAll }, "Import"),
|
|
14614
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorButton, { theme: theme3, onClick: handleExportAll }, "Export"),
|
|
14615
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14272
14616
|
StateInspectorButton,
|
|
14273
14617
|
{
|
|
14274
14618
|
theme: theme3,
|
|
@@ -14280,14 +14624,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14280
14624
|
)
|
|
14281
14625
|
)
|
|
14282
14626
|
},
|
|
14283
|
-
/* @__PURE__ */
|
|
14627
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14284
14628
|
themedObjectInspector,
|
|
14285
14629
|
{
|
|
14286
14630
|
name: multiplayerStateManager.schema ? "state" : void 0,
|
|
14287
14631
|
data: state,
|
|
14288
14632
|
theme: theme3
|
|
14289
14633
|
}
|
|
14290
|
-
)), multiplayerStateManager.schema && /* @__PURE__ */
|
|
14634
|
+
)), multiplayerStateManager.schema && /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14291
14635
|
themedObjectInspector,
|
|
14292
14636
|
{
|
|
14293
14637
|
name: "schema",
|
|
@@ -14296,7 +14640,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14296
14640
|
}
|
|
14297
14641
|
)))
|
|
14298
14642
|
),
|
|
14299
|
-
/* @__PURE__ */
|
|
14643
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14300
14644
|
HistorySection,
|
|
14301
14645
|
{
|
|
14302
14646
|
showHistory,
|
|
@@ -14306,14 +14650,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14306
14650
|
multiplayerStateManager
|
|
14307
14651
|
}
|
|
14308
14652
|
),
|
|
14309
|
-
/* @__PURE__ */
|
|
14653
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14310
14654
|
StateInspectorDisclosureSection,
|
|
14311
14655
|
{
|
|
14312
14656
|
open: showAssets,
|
|
14313
14657
|
setOpen: setShowAssets,
|
|
14314
|
-
title: /* @__PURE__ */
|
|
14658
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Assets (", assets.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: assetsInitialized ? "success" : "error" })),
|
|
14315
14659
|
colorScheme,
|
|
14316
|
-
right: /* @__PURE__ */
|
|
14660
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14317
14661
|
StateInspectorButton,
|
|
14318
14662
|
{
|
|
14319
14663
|
theme: theme3,
|
|
@@ -14328,7 +14672,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14328
14672
|
}
|
|
14329
14673
|
},
|
|
14330
14674
|
"Delete all"
|
|
14331
|
-
), /* @__PURE__ */
|
|
14675
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14332
14676
|
StateInspectorButton,
|
|
14333
14677
|
{
|
|
14334
14678
|
theme: theme3,
|
|
@@ -14341,54 +14685,69 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14341
14685
|
}
|
|
14342
14686
|
},
|
|
14343
14687
|
"Reload"
|
|
14344
|
-
), /* @__PURE__ */
|
|
14688
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14345
14689
|
StateInspectorButton,
|
|
14346
14690
|
{
|
|
14347
14691
|
theme: theme3,
|
|
14348
|
-
onClick: () => {
|
|
14349
|
-
const
|
|
14350
|
-
|
|
14351
|
-
input.onchange = () => {
|
|
14352
|
-
const file = input.files?.[0];
|
|
14353
|
-
if (file) {
|
|
14354
|
-
const reader = new FileReader();
|
|
14355
|
-
reader.onload = () => {
|
|
14356
|
-
const buffer = reader.result;
|
|
14357
|
-
assetManager.create(new Uint8Array(buffer));
|
|
14358
|
-
};
|
|
14359
|
-
reader.readAsArrayBuffer(file);
|
|
14360
|
-
}
|
|
14361
|
-
};
|
|
14362
|
-
input.click();
|
|
14692
|
+
onClick: async () => {
|
|
14693
|
+
const file = await uploadFile();
|
|
14694
|
+
assetManager.create(file);
|
|
14363
14695
|
}
|
|
14364
14696
|
},
|
|
14365
14697
|
"Upload"
|
|
14698
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14699
|
+
StateInspectorButton,
|
|
14700
|
+
{
|
|
14701
|
+
theme: theme3,
|
|
14702
|
+
onClick: async () => {
|
|
14703
|
+
const file = await uploadFile();
|
|
14704
|
+
assetManager.create({
|
|
14705
|
+
data: new Uint8Array(await file.arrayBuffer()),
|
|
14706
|
+
contentType: file.type,
|
|
14707
|
+
mode: "mutable"
|
|
14708
|
+
});
|
|
14709
|
+
}
|
|
14710
|
+
},
|
|
14711
|
+
"Upload Mutable"
|
|
14366
14712
|
))
|
|
14367
14713
|
},
|
|
14368
|
-
/* @__PURE__ */
|
|
14714
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, assets.map((asset) => /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { key: asset.id, colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14369
14715
|
themedObjectInspector,
|
|
14370
14716
|
{
|
|
14371
14717
|
name: asset.id,
|
|
14372
14718
|
data: truncateAsset(asset),
|
|
14373
14719
|
theme: theme3
|
|
14374
14720
|
}
|
|
14375
|
-
), /* @__PURE__ */
|
|
14721
|
+
), /* @__PURE__ */ import_react57.default.createElement("div", { style: { display: "flex", gap: "4px" } }, asset.mode === "mutable" && /* @__PURE__ */ import_react57.default.createElement(
|
|
14722
|
+
StateInspectorButton,
|
|
14723
|
+
{
|
|
14724
|
+
theme: theme3,
|
|
14725
|
+
onClick: async () => {
|
|
14726
|
+
const file = await uploadFile();
|
|
14727
|
+
assetManager.update(asset.id, {
|
|
14728
|
+
data: new Uint8Array(await file.arrayBuffer()),
|
|
14729
|
+
contentType: file.type
|
|
14730
|
+
});
|
|
14731
|
+
}
|
|
14732
|
+
},
|
|
14733
|
+
"Replace"
|
|
14734
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14376
14735
|
StateInspectorButton,
|
|
14377
14736
|
{
|
|
14378
14737
|
theme: theme3,
|
|
14379
14738
|
onClick: () => assetManager.delete(asset.id)
|
|
14380
14739
|
},
|
|
14381
14740
|
"Delete"
|
|
14382
|
-
))))
|
|
14741
|
+
)))))
|
|
14383
14742
|
),
|
|
14384
|
-
advanced && /* @__PURE__ */
|
|
14743
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14385
14744
|
StateInspectorDisclosureSection,
|
|
14386
14745
|
{
|
|
14387
|
-
title: /* @__PURE__ */
|
|
14746
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Resources (", resources.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: resourcesInitialized ? "success" : "error" })),
|
|
14388
14747
|
colorScheme,
|
|
14389
14748
|
open: showResources,
|
|
14390
14749
|
setOpen: setShowResources,
|
|
14391
|
-
right: /* @__PURE__ */
|
|
14750
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14392
14751
|
StateInspectorButton,
|
|
14393
14752
|
{
|
|
14394
14753
|
theme: theme3,
|
|
@@ -14403,12 +14762,12 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14403
14762
|
}
|
|
14404
14763
|
},
|
|
14405
14764
|
"Delete all"
|
|
14406
|
-
), /* @__PURE__ */
|
|
14765
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14407
14766
|
StateInspectorButton,
|
|
14408
14767
|
{
|
|
14409
14768
|
theme: theme3,
|
|
14410
14769
|
onClick: async () => {
|
|
14411
|
-
const path2 = prompt("Enter directory path") || (0,
|
|
14770
|
+
const path2 = prompt("Enter directory path") || (0, import_noya_utils23.uuid)();
|
|
14412
14771
|
await resourceManager.createResource({
|
|
14413
14772
|
type: "directory",
|
|
14414
14773
|
path: path2
|
|
@@ -14416,7 +14775,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14416
14775
|
}
|
|
14417
14776
|
},
|
|
14418
14777
|
"Create Directory"
|
|
14419
|
-
), /* @__PURE__ */
|
|
14778
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14420
14779
|
StateInspectorButton,
|
|
14421
14780
|
{
|
|
14422
14781
|
theme: theme3,
|
|
@@ -14424,9 +14783,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14424
14783
|
const file = await uploadFile();
|
|
14425
14784
|
resourceManager.createResource({
|
|
14426
14785
|
type: "asset",
|
|
14427
|
-
path: file.name || (0,
|
|
14786
|
+
path: file.name || (0, import_noya_utils23.uuid)(),
|
|
14428
14787
|
asset: {
|
|
14429
|
-
content:
|
|
14788
|
+
content: import_noya_utils23.Base64.encode(await file.arrayBuffer()),
|
|
14430
14789
|
contentType: file.type,
|
|
14431
14790
|
encoding: "base64"
|
|
14432
14791
|
}
|
|
@@ -14436,21 +14795,21 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14436
14795
|
"Create Asset"
|
|
14437
14796
|
))
|
|
14438
14797
|
},
|
|
14439
|
-
/* @__PURE__ */
|
|
14798
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, resources?.map((resource) => /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { key: resource.id, colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14440
14799
|
themedObjectInspector,
|
|
14441
14800
|
{
|
|
14442
14801
|
name: resource.path,
|
|
14443
14802
|
data: resource,
|
|
14444
14803
|
theme: theme3
|
|
14445
14804
|
}
|
|
14446
|
-
), /* @__PURE__ */
|
|
14805
|
+
), /* @__PURE__ */ import_react57.default.createElement("div", { style: { display: "flex", gap: "4px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14447
14806
|
StateInspectorButton,
|
|
14448
14807
|
{
|
|
14449
14808
|
theme: theme3,
|
|
14450
14809
|
onClick: () => resourceManager.deleteResource({ id: resource.id })
|
|
14451
14810
|
},
|
|
14452
14811
|
"Delete"
|
|
14453
|
-
), /* @__PURE__ */
|
|
14812
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14454
14813
|
StateInspectorButton,
|
|
14455
14814
|
{
|
|
14456
14815
|
theme: theme3,
|
|
@@ -14463,14 +14822,23 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14463
14822
|
"Rename"
|
|
14464
14823
|
)))))
|
|
14465
14824
|
),
|
|
14466
|
-
advanced && /* @__PURE__ */
|
|
14825
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14467
14826
|
StateInspectorDisclosureSection,
|
|
14468
14827
|
{
|
|
14469
|
-
title: /* @__PURE__ */
|
|
14828
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Secrets (", secrets.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: secretsInitialized ? "success" : "error" })),
|
|
14470
14829
|
colorScheme,
|
|
14471
14830
|
open: showSecrets,
|
|
14472
14831
|
setOpen: setShowSecrets,
|
|
14473
|
-
right: /* @__PURE__ */
|
|
14832
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14833
|
+
StateInspectorButton,
|
|
14834
|
+
{
|
|
14835
|
+
theme: theme3,
|
|
14836
|
+
onClick: () => {
|
|
14837
|
+
void secretManager.fetchSecrets();
|
|
14838
|
+
}
|
|
14839
|
+
},
|
|
14840
|
+
"Refresh"
|
|
14841
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14474
14842
|
StateInspectorButton,
|
|
14475
14843
|
{
|
|
14476
14844
|
theme: theme3,
|
|
@@ -14483,9 +14851,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14483
14851
|
}
|
|
14484
14852
|
},
|
|
14485
14853
|
"Create"
|
|
14486
|
-
)
|
|
14854
|
+
))
|
|
14487
14855
|
},
|
|
14488
|
-
/* @__PURE__ */
|
|
14856
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, secrets.map((secret) => /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { key: secret.id, colorScheme }, /* @__PURE__ */ import_react57.default.createElement(themedObjectInspector, { data: secret, theme: theme3 }), /* @__PURE__ */ import_react57.default.createElement(
|
|
14489
14857
|
StateInspectorButton,
|
|
14490
14858
|
{
|
|
14491
14859
|
theme: theme3,
|
|
@@ -14494,15 +14862,24 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14494
14862
|
"Delete"
|
|
14495
14863
|
))))
|
|
14496
14864
|
),
|
|
14497
|
-
advanced && /* @__PURE__ */
|
|
14865
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14866
|
+
GitSection,
|
|
14867
|
+
{
|
|
14868
|
+
showGit,
|
|
14869
|
+
setShowGit,
|
|
14870
|
+
colorScheme,
|
|
14871
|
+
gitManager
|
|
14872
|
+
}
|
|
14873
|
+
),
|
|
14874
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14498
14875
|
StateInspectorDisclosureSection,
|
|
14499
14876
|
{
|
|
14500
14877
|
open: showInputs,
|
|
14501
14878
|
setOpen: setShowInputs,
|
|
14502
|
-
title: /* @__PURE__ */
|
|
14879
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Inputs (", inputs.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: inputsInitialized ? "success" : "error" })),
|
|
14503
14880
|
colorScheme
|
|
14504
14881
|
},
|
|
14505
|
-
/* @__PURE__ */
|
|
14882
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, inputs?.map((input) => /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { key: input.id, colorScheme }, /* @__PURE__ */ import_react57.default.createElement(themedObjectInspector, { data: input, theme: theme3 }))), !inputs?.length && /* @__PURE__ */ import_react57.default.createElement(
|
|
14506
14883
|
"div",
|
|
14507
14884
|
{
|
|
14508
14885
|
style: {
|
|
@@ -14513,15 +14890,15 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14513
14890
|
gap: "4px"
|
|
14514
14891
|
}
|
|
14515
14892
|
},
|
|
14516
|
-
/* @__PURE__ */
|
|
14893
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No inputs")
|
|
14517
14894
|
))
|
|
14518
14895
|
),
|
|
14519
|
-
advanced && /* @__PURE__ */
|
|
14896
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14520
14897
|
StateInspectorDisclosureSection,
|
|
14521
14898
|
{
|
|
14522
14899
|
open: showOutputTransforms,
|
|
14523
14900
|
setOpen: setShowOutputTransforms,
|
|
14524
|
-
title: /* @__PURE__ */
|
|
14901
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Output Transforms (", outputTransforms.length, ")", /* @__PURE__ */ import_react57.default.createElement(
|
|
14525
14902
|
ColoredDot,
|
|
14526
14903
|
{
|
|
14527
14904
|
type: outputTransformsInitialized ? "success" : "error"
|
|
@@ -14529,7 +14906,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14529
14906
|
)),
|
|
14530
14907
|
colorScheme
|
|
14531
14908
|
},
|
|
14532
|
-
/* @__PURE__ */
|
|
14909
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, outputTransforms?.map((transform) => /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { key: transform.id, colorScheme }, /* @__PURE__ */ import_react57.default.createElement(themedObjectInspector, { data: transform, theme: theme3 }))), !outputTransforms?.length && /* @__PURE__ */ import_react57.default.createElement(
|
|
14533
14910
|
"div",
|
|
14534
14911
|
{
|
|
14535
14912
|
style: {
|
|
@@ -14540,10 +14917,10 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14540
14917
|
gap: "4px"
|
|
14541
14918
|
}
|
|
14542
14919
|
},
|
|
14543
|
-
/* @__PURE__ */
|
|
14920
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No output transforms")
|
|
14544
14921
|
))
|
|
14545
14922
|
),
|
|
14546
|
-
advanced && /* @__PURE__ */
|
|
14923
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14547
14924
|
StateInspectorDisclosureSection,
|
|
14548
14925
|
{
|
|
14549
14926
|
title: "Tasks",
|
|
@@ -14551,7 +14928,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14551
14928
|
open: showTasks,
|
|
14552
14929
|
setOpen: setShowTasks
|
|
14553
14930
|
},
|
|
14554
|
-
/* @__PURE__ */
|
|
14931
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, tasks?.map((task) => /* @__PURE__ */ import_react57.default.createElement(
|
|
14555
14932
|
StateInspectorRow,
|
|
14556
14933
|
{
|
|
14557
14934
|
key: task.id,
|
|
@@ -14560,7 +14937,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14560
14937
|
backgroundColor: task.status === "done" ? "rgba(0,255,0,0.2)" : task.status === "error" ? "rgba(255,0,0,0.2)" : void 0
|
|
14561
14938
|
}
|
|
14562
14939
|
},
|
|
14563
|
-
/* @__PURE__ */
|
|
14940
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14564
14941
|
themedObjectInspector,
|
|
14565
14942
|
{
|
|
14566
14943
|
name: task.name,
|
|
@@ -14570,7 +14947,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14570
14947
|
)
|
|
14571
14948
|
)))
|
|
14572
14949
|
),
|
|
14573
|
-
/* @__PURE__ */
|
|
14950
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14574
14951
|
StateInspectorDisclosureSection,
|
|
14575
14952
|
{
|
|
14576
14953
|
open: showShared,
|
|
@@ -14578,7 +14955,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14578
14955
|
title: "Shared Connection Data",
|
|
14579
14956
|
colorScheme
|
|
14580
14957
|
},
|
|
14581
|
-
/* @__PURE__ */
|
|
14958
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, Object.entries(shared).map(([key, value]) => /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { key, colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14582
14959
|
themedObjectInspector,
|
|
14583
14960
|
{
|
|
14584
14961
|
name: key,
|
|
@@ -14588,7 +14965,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14588
14965
|
}
|
|
14589
14966
|
))))
|
|
14590
14967
|
),
|
|
14591
|
-
/* @__PURE__ */
|
|
14968
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14592
14969
|
ServerScriptLogsSection,
|
|
14593
14970
|
{
|
|
14594
14971
|
colorScheme,
|
|
@@ -14600,7 +14977,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14600
14977
|
containerRef: serverLogsContainerRef
|
|
14601
14978
|
}
|
|
14602
14979
|
),
|
|
14603
|
-
showSimulationLogsSection && /* @__PURE__ */
|
|
14980
|
+
showSimulationLogsSection && /* @__PURE__ */ import_react57.default.createElement(
|
|
14604
14981
|
ServerScriptLogsSection,
|
|
14605
14982
|
{
|
|
14606
14983
|
title: "Server Script Simulation Logs",
|
|
@@ -14613,7 +14990,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14613
14990
|
containerRef: serverSimulationLogsContainerRef
|
|
14614
14991
|
}
|
|
14615
14992
|
),
|
|
14616
|
-
/* @__PURE__ */
|
|
14993
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14617
14994
|
StateInspectorDisclosureSection,
|
|
14618
14995
|
{
|
|
14619
14996
|
open: showSimulation,
|
|
@@ -14621,7 +14998,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14621
14998
|
title: "Server Simulation",
|
|
14622
14999
|
colorScheme
|
|
14623
15000
|
},
|
|
14624
|
-
/* @__PURE__ */
|
|
15001
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14625
15002
|
themedObjectInspector,
|
|
14626
15003
|
{
|
|
14627
15004
|
name: "status",
|
|
@@ -14637,7 +15014,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14637
15014
|
}
|
|
14638
15015
|
)))
|
|
14639
15016
|
),
|
|
14640
|
-
advanced && /* @__PURE__ */
|
|
15017
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14641
15018
|
ActivityEventsSection,
|
|
14642
15019
|
{
|
|
14643
15020
|
colorScheme,
|
|
@@ -14647,7 +15024,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14647
15024
|
activityEventsManager
|
|
14648
15025
|
}
|
|
14649
15026
|
),
|
|
14650
|
-
/* @__PURE__ */
|
|
15027
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14651
15028
|
EventsSection,
|
|
14652
15029
|
{
|
|
14653
15030
|
connectionEvents: visibleConnectionEvents,
|
|
@@ -14661,7 +15038,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14661
15038
|
)
|
|
14662
15039
|
);
|
|
14663
15040
|
});
|
|
14664
|
-
var truncateAsset = (0,
|
|
15041
|
+
var truncateAsset = (0, import_noya_utils23.memoize)((asset) => {
|
|
14665
15042
|
if (asset.url.startsWith("data:") || asset.url.startsWith("blob:")) {
|
|
14666
15043
|
return { ...asset, url: ellipsis(asset.url, 40) };
|
|
14667
15044
|
}
|
|
@@ -14670,7 +15047,7 @@ var truncateAsset = (0, import_noya_utils24.memoize)((asset) => {
|
|
|
14670
15047
|
|
|
14671
15048
|
// ../noya-multiplayer-react/src/hooks.ts
|
|
14672
15049
|
function useManagedHistory(stateManager) {
|
|
14673
|
-
return (0,
|
|
15050
|
+
return (0, import_react59.useSyncExternalStore)(
|
|
14674
15051
|
stateManager.historyEmittor.addListener,
|
|
14675
15052
|
stateManager.getHistorySnapshot,
|
|
14676
15053
|
stateManager.getHistorySnapshot
|
|
@@ -14678,15 +15055,15 @@ function useManagedHistory(stateManager) {
|
|
|
14678
15055
|
}
|
|
14679
15056
|
|
|
14680
15057
|
// ../noya-multiplayer-react/src/singleton.tsx
|
|
14681
|
-
var
|
|
15058
|
+
var import_react61 = __toESM(require("react"));
|
|
14682
15059
|
|
|
14683
15060
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
14684
|
-
var AnyNoyaStateContext = (0,
|
|
15061
|
+
var AnyNoyaStateContext = (0, import_react62.createContext)(void 0);
|
|
14685
15062
|
var emptyArray = [];
|
|
14686
15063
|
function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
14687
|
-
const [streamId, setStreamId] = (0,
|
|
15064
|
+
const [streamId, setStreamId] = (0, import_react62.useState)(void 0);
|
|
14688
15065
|
const stableStreamFilter = useJsonMemo(streamFilter);
|
|
14689
|
-
(0,
|
|
15066
|
+
(0, import_react62.useEffect)(() => {
|
|
14690
15067
|
if (!stableStreamFilter) return;
|
|
14691
15068
|
const streamId2 = activityEventsManager.subscribe(stableStreamFilter);
|
|
14692
15069
|
setStreamId(streamId2);
|
|
@@ -14700,8 +15077,8 @@ function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
|
14700
15077
|
}
|
|
14701
15078
|
|
|
14702
15079
|
// ../noya-multiplayer-react/src/components/UserPointersOverlay.tsx
|
|
14703
|
-
var
|
|
14704
|
-
var
|
|
15080
|
+
var import_observable25 = require("@noya-app/observable");
|
|
15081
|
+
var import_react64 = __toESM(require("react"));
|
|
14705
15082
|
function shouldShow(hideAfter, updatedAt) {
|
|
14706
15083
|
return !!updatedAt && Date.now() - updatedAt < hideAfter;
|
|
14707
15084
|
}
|
|
@@ -14711,18 +15088,18 @@ var UserPointerInternal = memoGeneric(function UserPointerInternal2({
|
|
|
14711
15088
|
hideAfter = 5e3,
|
|
14712
15089
|
renderUserPointer
|
|
14713
15090
|
}) {
|
|
14714
|
-
const observable = (0,
|
|
15091
|
+
const observable = (0, import_react64.useMemo)(() => {
|
|
14715
15092
|
const metadata$ = sharedConnectionDataManager.metadata$.observePath([user.connectionId]).throttle(50);
|
|
14716
15093
|
const data$ = sharedConnectionDataManager.data$.observePath([user.connectionId]).throttle(50);
|
|
14717
|
-
return
|
|
15094
|
+
return import_observable25.Observable.combine([metadata$, data$], ([metadata2, data2]) => {
|
|
14718
15095
|
return { metadata: metadata2, data: data2 };
|
|
14719
15096
|
});
|
|
14720
15097
|
}, [sharedConnectionDataManager, user.connectionId]);
|
|
14721
15098
|
const { metadata, data } = useObservable2(observable);
|
|
14722
|
-
const [, setForceUpdate] = (0,
|
|
15099
|
+
const [, setForceUpdate] = (0, import_react64.useState)(0);
|
|
14723
15100
|
const updatedAt = metadata?.updatedAt ?? 0;
|
|
14724
15101
|
const show = shouldShow(hideAfter, updatedAt);
|
|
14725
|
-
(0,
|
|
15102
|
+
(0, import_react64.useEffect)(() => {
|
|
14726
15103
|
if (!show) return;
|
|
14727
15104
|
const timeoutId = setTimeout(() => {
|
|
14728
15105
|
setForceUpdate((prev) => prev + 1);
|
|
@@ -14746,9 +15123,9 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
14746
15123
|
sharedConnectionDataManager.currentConnectionId$
|
|
14747
15124
|
);
|
|
14748
15125
|
const connectedUsers = useObservable2(userManager.connectedUsers$);
|
|
14749
|
-
return /* @__PURE__ */
|
|
15126
|
+
return /* @__PURE__ */ import_react64.default.createElement(import_react64.default.Fragment, null, connectedUsers.map((user) => {
|
|
14750
15127
|
if (user.connectionId === currentConnectionId) return null;
|
|
14751
|
-
return /* @__PURE__ */
|
|
15128
|
+
return /* @__PURE__ */ import_react64.default.createElement(
|
|
14752
15129
|
UserPointerInternal,
|
|
14753
15130
|
{
|
|
14754
15131
|
key: user.connectionId,
|
|
@@ -14762,15 +15139,15 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
14762
15139
|
|
|
14763
15140
|
// src/react/tableHooks.ts
|
|
14764
15141
|
var import_observable_store = require("@noya-app/observable-store");
|
|
14765
|
-
var
|
|
15142
|
+
var import_react65 = require("react");
|
|
14766
15143
|
function useTable(table, {
|
|
14767
15144
|
where,
|
|
14768
15145
|
select
|
|
14769
15146
|
}, options = {}) {
|
|
14770
|
-
const stableSelect = (0,
|
|
15147
|
+
const stableSelect = (0, import_react65.useMemo)(() => {
|
|
14771
15148
|
return JSON.stringify(select);
|
|
14772
15149
|
}, [select]);
|
|
14773
|
-
const stableWhere = (0,
|
|
15150
|
+
const stableWhere = (0, import_react65.useMemo)(() => {
|
|
14774
15151
|
let cloneWithNoUndefined = {};
|
|
14775
15152
|
for (const [key, value] of Object.entries(where ?? {})) {
|
|
14776
15153
|
if (value !== void 0) {
|
|
@@ -14779,7 +15156,7 @@ function useTable(table, {
|
|
|
14779
15156
|
}
|
|
14780
15157
|
return JSON.stringify(cloneWithNoUndefined);
|
|
14781
15158
|
}, [where]);
|
|
14782
|
-
const observable = (0,
|
|
15159
|
+
const observable = (0, import_react65.useMemo)(() => {
|
|
14783
15160
|
const parsedSelect = JSON.parse(stableSelect);
|
|
14784
15161
|
const parsedWhere = JSON.parse(stableWhere);
|
|
14785
15162
|
if (!table) {
|
|
@@ -14806,18 +15183,18 @@ function useTable(table, {
|
|
|
14806
15183
|
}
|
|
14807
15184
|
);
|
|
14808
15185
|
}, [stableSelect, stableWhere, table, options.policy, options.debug]);
|
|
14809
|
-
(0,
|
|
15186
|
+
(0, import_react65.useEffect)(() => {
|
|
14810
15187
|
observable.start?.();
|
|
14811
15188
|
}, [observable]);
|
|
14812
15189
|
const { status, data } = useObservable2(observable);
|
|
14813
|
-
const optimisticUpdate = (0,
|
|
15190
|
+
const optimisticUpdate = (0, import_react65.useCallback)(
|
|
14814
15191
|
(entity, config) => {
|
|
14815
15192
|
if (!table) return;
|
|
14816
15193
|
table.optimisticUpdate(entity, config);
|
|
14817
15194
|
},
|
|
14818
15195
|
[table]
|
|
14819
15196
|
);
|
|
14820
|
-
return (0,
|
|
15197
|
+
return (0, import_react65.useMemo)(() => {
|
|
14821
15198
|
return {
|
|
14822
15199
|
status,
|
|
14823
15200
|
data,
|
|
@@ -14847,7 +15224,7 @@ function useFileListItem(id, select, options = {}) {
|
|
|
14847
15224
|
{ where: { id: id ?? null }, select },
|
|
14848
15225
|
options
|
|
14849
15226
|
);
|
|
14850
|
-
return (0,
|
|
15227
|
+
return (0, import_react65.useMemo)(() => {
|
|
14851
15228
|
return {
|
|
14852
15229
|
data: data.at(0),
|
|
14853
15230
|
status,
|
|
@@ -14877,7 +15254,7 @@ function useUser(id, select, options = {}) {
|
|
|
14877
15254
|
{ select, where: { id: id ?? null } },
|
|
14878
15255
|
options
|
|
14879
15256
|
);
|
|
14880
|
-
return (0,
|
|
15257
|
+
return (0, import_react65.useMemo)(() => {
|
|
14881
15258
|
return {
|
|
14882
15259
|
status,
|
|
14883
15260
|
data: data.at(0),
|
|
@@ -14906,11 +15283,6 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
14906
15283
|
useActivityEventsList,
|
|
14907
15284
|
useFileList,
|
|
14908
15285
|
useFileListItem,
|
|
14909
|
-
useGeneratedComponentDescription,
|
|
14910
|
-
useGeneratedComponentDescriptions,
|
|
14911
|
-
useGeneratedComponentNames,
|
|
14912
|
-
useGeneratedPageComponentNames,
|
|
14913
|
-
useGeneratedPageNames,
|
|
14914
15286
|
useIsBeta,
|
|
14915
15287
|
useMetadata,
|
|
14916
15288
|
useNetworkRequests,
|
|
@@ -14935,6 +15307,7 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
14935
15307
|
useNoyaUserData,
|
|
14936
15308
|
useNoyaWorkspaceBilling,
|
|
14937
15309
|
useNoyaWorkspaceInvitations,
|
|
15310
|
+
useNoyaWorkspaceMembers,
|
|
14938
15311
|
useNoyaWorkspaces,
|
|
14939
15312
|
useOptionalNoyaClient,
|
|
14940
15313
|
useOptionalNoyaCreators,
|
|
@@ -14942,8 +15315,6 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
14942
15315
|
useOptionalNoyaTags,
|
|
14943
15316
|
useOptionalNoyaTools,
|
|
14944
15317
|
useOptionalNoyaUserData,
|
|
14945
|
-
useRandomIcons,
|
|
14946
|
-
useRandomImages,
|
|
14947
15318
|
useResourcesList,
|
|
14948
15319
|
useTable,
|
|
14949
15320
|
useUser,
|