@noya-app/noya-api-client-react 0.1.44 → 0.1.46
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 +16 -54
- package/dist/index.d.ts +16 -54
- package/dist/index.js +968 -495
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +911 -431
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/react/hooks.ts +1 -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,
|
|
@@ -2304,8 +2299,6 @@ __export(src_exports, {
|
|
|
2304
2299
|
useOptionalNoyaTags: () => useOptionalNoyaTags,
|
|
2305
2300
|
useOptionalNoyaTools: () => useOptionalNoyaTools,
|
|
2306
2301
|
useOptionalNoyaUserData: () => useOptionalNoyaUserData,
|
|
2307
|
-
useRandomIcons: () => useRandomIcons,
|
|
2308
|
-
useRandomImages: () => useRandomImages,
|
|
2309
2302
|
useResourcesList: () => useResourcesList,
|
|
2310
2303
|
useTable: () => useTable,
|
|
2311
2304
|
useUser: () => useUser
|
|
@@ -2341,8 +2334,6 @@ function useNoyaClientOrFallback() {
|
|
|
2341
2334
|
|
|
2342
2335
|
// src/react/hooks.ts
|
|
2343
2336
|
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
2337
|
var import_observable_react = require("@noya-app/observable-react");
|
|
2347
2338
|
var import_react3 = require("react");
|
|
2348
2339
|
function useNoyaTools(initial) {
|
|
@@ -2474,87 +2465,11 @@ function useMetadata(key) {
|
|
|
2474
2465
|
const metadataItem = metadata.find((item) => item.key === key);
|
|
2475
2466
|
return metadataItem?.value;
|
|
2476
2467
|
}
|
|
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
2468
|
function useNetworkRequests() {
|
|
2514
2469
|
const { requests$ } = useNoyaClientOrFallback();
|
|
2515
2470
|
const requests = (0, import_react2.useSelector)(requests$);
|
|
2516
2471
|
return requests;
|
|
2517
2472
|
}
|
|
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
2473
|
function useNoyaSites() {
|
|
2559
2474
|
const sites = (0, import_react2.useSelector)(useNoyaClientOrFallback().sites$);
|
|
2560
2475
|
return sites;
|
|
@@ -3425,15 +3340,15 @@ function Or(pattern) {
|
|
|
3425
3340
|
if (IsCloseParen(pattern, index))
|
|
3426
3341
|
count -= 1;
|
|
3427
3342
|
if (IsSeparator(pattern, index) && count === 0) {
|
|
3428
|
-
const
|
|
3429
|
-
if (
|
|
3430
|
-
expressions.push(TemplateLiteralParse(
|
|
3343
|
+
const range2 = pattern.slice(start, index);
|
|
3344
|
+
if (range2.length > 0)
|
|
3345
|
+
expressions.push(TemplateLiteralParse(range2));
|
|
3431
3346
|
start = index + 1;
|
|
3432
3347
|
}
|
|
3433
3348
|
}
|
|
3434
|
-
const
|
|
3435
|
-
if (
|
|
3436
|
-
expressions.push(TemplateLiteralParse(
|
|
3349
|
+
const range = pattern.slice(start);
|
|
3350
|
+
if (range.length > 0)
|
|
3351
|
+
expressions.push(TemplateLiteralParse(range));
|
|
3437
3352
|
if (expressions.length === 0)
|
|
3438
3353
|
return { type: "const", const: "" };
|
|
3439
3354
|
if (expressions.length === 1)
|
|
@@ -3466,14 +3381,14 @@ function And(pattern) {
|
|
|
3466
3381
|
for (let index = 0; index < pattern.length; index++) {
|
|
3467
3382
|
if (IsOpenParen(pattern, index)) {
|
|
3468
3383
|
const [start, end] = Group(pattern, index);
|
|
3469
|
-
const
|
|
3470
|
-
expressions.push(TemplateLiteralParse(
|
|
3384
|
+
const range = pattern.slice(start, end + 1);
|
|
3385
|
+
expressions.push(TemplateLiteralParse(range));
|
|
3471
3386
|
index = end;
|
|
3472
3387
|
} else {
|
|
3473
3388
|
const [start, end] = Range(pattern, index);
|
|
3474
|
-
const
|
|
3475
|
-
if (
|
|
3476
|
-
expressions.push(TemplateLiteralParse(
|
|
3389
|
+
const range = pattern.slice(start, end);
|
|
3390
|
+
if (range.length > 0)
|
|
3391
|
+
expressions.push(TemplateLiteralParse(range));
|
|
3477
3392
|
index = end - 1;
|
|
3478
3393
|
}
|
|
3479
3394
|
}
|
|
@@ -5303,24 +5218,12 @@ var Emitter = class {
|
|
|
5303
5218
|
};
|
|
5304
5219
|
|
|
5305
5220
|
// ../state-manager/src/AIManager.ts
|
|
5306
|
-
var
|
|
5221
|
+
var import_noya_utils = require("@noya-app/noya-utils");
|
|
5307
5222
|
var import_observable2 = require("@noya-app/observable");
|
|
5308
5223
|
|
|
5309
5224
|
// ../state-manager/src/AssetManager.ts
|
|
5310
|
-
var
|
|
5225
|
+
var import_noya_utils2 = require("@noya-app/noya-utils");
|
|
5311
5226
|
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
5227
|
|
|
5325
5228
|
// ../noya-schemas/src/nullable.ts
|
|
5326
5229
|
var Nullable = (schema) => Type.Union([Type.Null(), schema]);
|
|
@@ -5383,6 +5286,10 @@ var activityEventSchema = Type.Object({
|
|
|
5383
5286
|
});
|
|
5384
5287
|
|
|
5385
5288
|
// ../noya-schemas/src/asset.ts
|
|
5289
|
+
var assetModeSchema = Type.Union([
|
|
5290
|
+
Type.Literal("immutable"),
|
|
5291
|
+
Type.Literal("mutable")
|
|
5292
|
+
]);
|
|
5386
5293
|
var assetSchema = Type.Object({
|
|
5387
5294
|
id: Type.String(),
|
|
5388
5295
|
stableId: Type.String(),
|
|
@@ -5392,7 +5299,9 @@ var assetSchema = Type.Object({
|
|
|
5392
5299
|
contentType: Type.Optional(Type.String()),
|
|
5393
5300
|
width: Type.Union([Type.Null(), Type.Number()]),
|
|
5394
5301
|
height: Type.Union([Type.Null(), Type.Number()]),
|
|
5395
|
-
userId: Type.Union([Type.Null(), Type.String()])
|
|
5302
|
+
userId: Type.Union([Type.Null(), Type.String()]),
|
|
5303
|
+
mode: Type.Optional(assetModeSchema),
|
|
5304
|
+
version: Type.Optional(Type.Number())
|
|
5396
5305
|
});
|
|
5397
5306
|
|
|
5398
5307
|
// ../noya-schemas/src/encode.ts
|
|
@@ -7307,12 +7216,19 @@ function applyExtendedPatch(obj, patches) {
|
|
|
7307
7216
|
var import_fast_diff = __toESM(require_diff());
|
|
7308
7217
|
|
|
7309
7218
|
// ../state-manager/src/EvalManager.ts
|
|
7310
|
-
var
|
|
7219
|
+
var import_noya_utils3 = require("@noya-app/noya-utils");
|
|
7311
7220
|
|
|
7312
7221
|
// ../state-manager/src/FilePropertyManager.ts
|
|
7313
|
-
var
|
|
7222
|
+
var import_noya_utils4 = require("@noya-app/noya-utils");
|
|
7314
7223
|
var import_observable5 = require("@noya-app/observable");
|
|
7315
7224
|
|
|
7225
|
+
// ../state-manager/src/multiplayer.ts
|
|
7226
|
+
var import_noya_utils7 = require("@noya-app/noya-utils");
|
|
7227
|
+
var import_observable8 = require("@noya-app/observable");
|
|
7228
|
+
|
|
7229
|
+
// ../state-manager/src/LogManager.ts
|
|
7230
|
+
var import_observable6 = require("@noya-app/observable");
|
|
7231
|
+
|
|
7316
7232
|
// ../state-manager/src/historyEntries.ts
|
|
7317
7233
|
var HistoryEntries;
|
|
7318
7234
|
((HistoryEntries2) => {
|
|
@@ -7399,119 +7315,6 @@ var HistoryEntries;
|
|
|
7399
7315
|
HistoryEntries2.pathsEqual = pathsEqual;
|
|
7400
7316
|
})(HistoryEntries || (HistoryEntries = {}));
|
|
7401
7317
|
|
|
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_utils8 = require("@noya-app/noya-utils");
|
|
7513
|
-
var import_observable10 = require("@noya-app/observable");
|
|
7514
|
-
|
|
7515
7318
|
// ../../node_modules/@marcbachmann/cel-js/lib/errors.js
|
|
7516
7319
|
var ParseError = class extends Error {
|
|
7517
7320
|
#wasConstructedWithAst = false;
|
|
@@ -10488,7 +10291,7 @@ var globalEnvironment = new Environment({
|
|
|
10488
10291
|
});
|
|
10489
10292
|
|
|
10490
10293
|
// ../state-manager/src/multiplayerPolicies.ts
|
|
10491
|
-
var
|
|
10294
|
+
var import_noya_utils5 = require("@noya-app/noya-utils");
|
|
10492
10295
|
var celEnvironment = new Environment({
|
|
10493
10296
|
unlistedVariablesAreDyn: true
|
|
10494
10297
|
});
|
|
@@ -10523,58 +10326,170 @@ celEnvironment.registerFunction("random(): double", () => Math.random()).registe
|
|
|
10523
10326
|
const nowValue = typeof nowVariable?.value === "number" ? nowVariable.value : typeof nowVariable?.value === "string" ? Number(nowVariable.value) : Date.now();
|
|
10524
10327
|
return new Date(nowValue).toISOString();
|
|
10525
10328
|
}
|
|
10526
|
-
).registerFunction("uuid(): string", () => (0,
|
|
10329
|
+
).registerFunction("uuid(): string", () => (0, import_noya_utils5.uuid)());
|
|
10527
10330
|
var READ_DENIED = Symbol("readDenied");
|
|
10528
10331
|
|
|
10332
|
+
// ../state-manager/src/serverScripts.ts
|
|
10333
|
+
var import_noya_utils6 = require("@noya-app/noya-utils");
|
|
10334
|
+
|
|
10529
10335
|
// ../state-manager/src/stateManager.ts
|
|
10530
|
-
var
|
|
10336
|
+
var import_observable7 = require("@noya-app/observable");
|
|
10531
10337
|
|
|
10532
10338
|
// ../state-manager/src/multiplayer.ts
|
|
10533
|
-
var createHash = (value, options) => (0,
|
|
10339
|
+
var createHash = (value, options) => (0, import_noya_utils7.hash)(value, { ...options, ignoreUndefinedProperties: true });
|
|
10534
10340
|
|
|
10535
|
-
// ../state-manager/src/
|
|
10536
|
-
var
|
|
10537
|
-
var import_observable21 = require("@noya-app/observable");
|
|
10341
|
+
// ../state-manager/src/GitManager.ts
|
|
10342
|
+
var import_observable9 = require("@noya-app/observable");
|
|
10538
10343
|
|
|
10539
|
-
// ../
|
|
10540
|
-
var
|
|
10344
|
+
// ../state-manager/src/IOManager.ts
|
|
10345
|
+
var import_observable10 = require("@noya-app/observable");
|
|
10541
10346
|
|
|
10542
|
-
// ../
|
|
10543
|
-
|
|
10544
|
-
|
|
10545
|
-
|
|
10546
|
-
|
|
10547
|
-
|
|
10548
|
-
|
|
10549
|
-
|
|
10550
|
-
|
|
10551
|
-
|
|
10552
|
-
|
|
10553
|
-
|
|
10554
|
-
|
|
10555
|
-
location: Type.Union([Type.Literal("state"), Type.Literal("url")]),
|
|
10556
|
-
value: Type.String()
|
|
10557
|
-
}),
|
|
10558
|
-
Type.Object({
|
|
10559
|
-
id: Type.String({ format: "uuid", default: "" }),
|
|
10560
|
-
type: Type.Literal("jsonPointer"),
|
|
10561
|
-
value: Type.String()
|
|
10562
|
-
})
|
|
10563
|
-
],
|
|
10564
|
-
{
|
|
10565
|
-
discriminator: "type"
|
|
10347
|
+
// ../state-manager/src/jwt.ts
|
|
10348
|
+
function base64UrlEncode(str) {
|
|
10349
|
+
return btoa(str).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
10350
|
+
}
|
|
10351
|
+
function base64UrlDecode(str) {
|
|
10352
|
+
str = str.replace(/-/g, "+").replace(/_/g, "/");
|
|
10353
|
+
switch (str.length % 4) {
|
|
10354
|
+
case 2:
|
|
10355
|
+
str += "==";
|
|
10356
|
+
break;
|
|
10357
|
+
case 3:
|
|
10358
|
+
str += "=";
|
|
10359
|
+
break;
|
|
10566
10360
|
}
|
|
10567
|
-
);
|
|
10568
|
-
|
|
10569
|
-
|
|
10570
|
-
|
|
10361
|
+
return atob(str);
|
|
10362
|
+
}
|
|
10363
|
+
var HEADER = {
|
|
10364
|
+
alg: "HS256",
|
|
10365
|
+
typ: "JWT"
|
|
10571
10366
|
};
|
|
10572
|
-
var
|
|
10573
|
-
|
|
10574
|
-
|
|
10575
|
-
|
|
10367
|
+
var JWT_ERROR = {
|
|
10368
|
+
INVALID_JWT_FORMAT: "Invalid JWT format"
|
|
10369
|
+
// INVALID_SIGNATURE: "Invalid signature",
|
|
10370
|
+
};
|
|
10371
|
+
async function createJwt({
|
|
10372
|
+
payload,
|
|
10373
|
+
secret,
|
|
10374
|
+
header
|
|
10375
|
+
}) {
|
|
10376
|
+
const encoder = new TextEncoder();
|
|
10377
|
+
const encodedHeader = base64UrlEncode(
|
|
10378
|
+
JSON.stringify({ ...HEADER, ...header })
|
|
10379
|
+
);
|
|
10380
|
+
const encodedPayload = base64UrlEncode(JSON.stringify(payload));
|
|
10381
|
+
const dataToSign = `${encodedHeader}.${encodedPayload}`;
|
|
10382
|
+
const key = await crypto.subtle.importKey(
|
|
10383
|
+
"raw",
|
|
10384
|
+
encoder.encode(secret),
|
|
10385
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
10386
|
+
false,
|
|
10387
|
+
["sign"]
|
|
10388
|
+
);
|
|
10389
|
+
const signature = await crypto.subtle.sign(
|
|
10390
|
+
"HMAC",
|
|
10391
|
+
key,
|
|
10392
|
+
encoder.encode(dataToSign)
|
|
10393
|
+
);
|
|
10394
|
+
const encodedSignature = base64UrlEncode(
|
|
10395
|
+
String.fromCharCode(...new Uint8Array(signature))
|
|
10396
|
+
);
|
|
10397
|
+
return `${dataToSign}.${encodedSignature}`;
|
|
10398
|
+
}
|
|
10399
|
+
async function decodeJwt({
|
|
10400
|
+
token,
|
|
10401
|
+
secret
|
|
10402
|
+
}) {
|
|
10403
|
+
if (typeof token !== "string") {
|
|
10404
|
+
throw new Error(JWT_ERROR.INVALID_JWT_FORMAT);
|
|
10576
10405
|
}
|
|
10577
|
-
);
|
|
10406
|
+
const [encodedHeader, encodedPayload, encodedSignature] = token.split(".");
|
|
10407
|
+
if (!encodedHeader || !encodedPayload || !encodedSignature) {
|
|
10408
|
+
throw new Error(JWT_ERROR.INVALID_JWT_FORMAT);
|
|
10409
|
+
}
|
|
10410
|
+
const headerJson = base64UrlDecode(encodedHeader);
|
|
10411
|
+
const payloadJson = base64UrlDecode(encodedPayload);
|
|
10412
|
+
const header = JSON.parse(headerJson);
|
|
10413
|
+
const payload = JSON.parse(payloadJson);
|
|
10414
|
+
const dataToVerify = `${encodedHeader}.${encodedPayload}`;
|
|
10415
|
+
const encoder = new TextEncoder();
|
|
10416
|
+
if (secret !== void 0) {
|
|
10417
|
+
const key = await crypto.subtle.importKey(
|
|
10418
|
+
"raw",
|
|
10419
|
+
encoder.encode(secret),
|
|
10420
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
10421
|
+
false,
|
|
10422
|
+
["verify"]
|
|
10423
|
+
);
|
|
10424
|
+
const binarySignature = base64UrlDecode(encodedSignature);
|
|
10425
|
+
const signature = new Uint8Array(
|
|
10426
|
+
[...binarySignature].map((char) => char.charCodeAt(0))
|
|
10427
|
+
);
|
|
10428
|
+
const valid = await crypto.subtle.verify(
|
|
10429
|
+
"HMAC",
|
|
10430
|
+
key,
|
|
10431
|
+
signature,
|
|
10432
|
+
encoder.encode(dataToVerify)
|
|
10433
|
+
);
|
|
10434
|
+
return { header, payload, valid };
|
|
10435
|
+
}
|
|
10436
|
+
return { header, payload, valid: false };
|
|
10437
|
+
}
|
|
10438
|
+
var jwt;
|
|
10439
|
+
((jwt2) => {
|
|
10440
|
+
jwt2.encode = createJwt;
|
|
10441
|
+
jwt2.decode = decodeJwt;
|
|
10442
|
+
jwt2.ERROR = JWT_ERROR;
|
|
10443
|
+
jwt2.DEFAULT_HEADER = HEADER;
|
|
10444
|
+
})(jwt || (jwt = {}));
|
|
10445
|
+
|
|
10446
|
+
// ../state-manager/src/MenuManager.ts
|
|
10447
|
+
var import_noya_utils8 = require("@noya-app/noya-utils");
|
|
10448
|
+
var import_observable11 = require("@noya-app/observable");
|
|
10449
|
+
|
|
10450
|
+
// ../state-manager/src/NoyaManager.ts
|
|
10451
|
+
var import_noya_utils18 = require("@noya-app/noya-utils");
|
|
10452
|
+
var import_observable23 = require("@noya-app/observable");
|
|
10453
|
+
|
|
10454
|
+
// ../noya-pipeline/src/graphToTasks.ts
|
|
10455
|
+
var import_observable12 = require("@noya-app/observable");
|
|
10456
|
+
|
|
10457
|
+
// ../noya-pipeline/src/state.ts
|
|
10458
|
+
var import_noya_utils9 = require("@noya-app/noya-utils");
|
|
10459
|
+
var rectSchema = Type.Object({
|
|
10460
|
+
x: Type.Number(),
|
|
10461
|
+
y: Type.Number(),
|
|
10462
|
+
width: Type.Number(),
|
|
10463
|
+
height: Type.Number()
|
|
10464
|
+
});
|
|
10465
|
+
var transformSchema = Type.Union(
|
|
10466
|
+
[
|
|
10467
|
+
Type.Object({
|
|
10468
|
+
id: Type.String({ format: "uuid", default: "" }),
|
|
10469
|
+
type: Type.Literal("script"),
|
|
10470
|
+
location: Type.Union([Type.Literal("state"), Type.Literal("url")]),
|
|
10471
|
+
value: Type.String()
|
|
10472
|
+
}),
|
|
10473
|
+
Type.Object({
|
|
10474
|
+
id: Type.String({ format: "uuid", default: "" }),
|
|
10475
|
+
type: Type.Literal("jsonPointer"),
|
|
10476
|
+
value: Type.String()
|
|
10477
|
+
})
|
|
10478
|
+
],
|
|
10479
|
+
{
|
|
10480
|
+
discriminator: "type"
|
|
10481
|
+
}
|
|
10482
|
+
);
|
|
10483
|
+
var baseBlockProperties = {
|
|
10484
|
+
id: Type.String({ format: "uuid", default: "" }),
|
|
10485
|
+
name: Type.String()
|
|
10486
|
+
};
|
|
10487
|
+
var preferredFileSourceSchema = Type.Union(
|
|
10488
|
+
[Type.Literal("fileVersion"), Type.Literal("file")],
|
|
10489
|
+
{
|
|
10490
|
+
default: "fileVersion"
|
|
10491
|
+
}
|
|
10492
|
+
);
|
|
10578
10493
|
var fileBlockSchema = Type.Object({
|
|
10579
10494
|
...baseBlockProperties,
|
|
10580
10495
|
type: Type.Literal("file"),
|
|
@@ -10639,35 +10554,38 @@ var pipelineSchema = Type.Object(
|
|
|
10639
10554
|
);
|
|
10640
10555
|
|
|
10641
10556
|
// ../state-manager/src/PipelineManager.ts
|
|
10642
|
-
var
|
|
10557
|
+
var import_observable13 = require("@noya-app/observable");
|
|
10643
10558
|
|
|
10644
10559
|
// ../state-manager/src/PublishingManager.ts
|
|
10645
|
-
var
|
|
10560
|
+
var import_observable14 = require("@noya-app/observable");
|
|
10646
10561
|
|
|
10647
10562
|
// ../state-manager/src/ResourceManager.ts
|
|
10648
10563
|
var import_noya_utils10 = require("@noya-app/noya-utils");
|
|
10649
|
-
var
|
|
10564
|
+
var import_observable15 = require("@noya-app/observable");
|
|
10565
|
+
|
|
10566
|
+
// ../state-manager/src/SandboxManager.ts
|
|
10567
|
+
var import_observable16 = require("@noya-app/observable");
|
|
10650
10568
|
|
|
10651
10569
|
// ../state-manager/src/rpcManager.ts
|
|
10652
10570
|
var import_noya_utils11 = require("@noya-app/noya-utils");
|
|
10653
|
-
var
|
|
10571
|
+
var import_observable17 = require("@noya-app/observable");
|
|
10654
10572
|
|
|
10655
10573
|
// ../state-manager/src/SecretManager.ts
|
|
10656
|
-
var
|
|
10574
|
+
var import_observable18 = require("@noya-app/observable");
|
|
10657
10575
|
|
|
10658
10576
|
// ../state-manager/src/TaskManager.ts
|
|
10659
|
-
var
|
|
10577
|
+
var import_observable19 = require("@noya-app/observable");
|
|
10660
10578
|
|
|
10661
10579
|
// ../state-manager/src/TranscriptionManager.ts
|
|
10662
10580
|
var import_noya_utils12 = require("@noya-app/noya-utils");
|
|
10663
|
-
var
|
|
10581
|
+
var import_observable20 = require("@noya-app/observable");
|
|
10664
10582
|
|
|
10665
10583
|
// ../state-manager/src/UserManager.ts
|
|
10666
|
-
var
|
|
10584
|
+
var import_observable22 = require("@noya-app/observable");
|
|
10667
10585
|
|
|
10668
10586
|
// ../state-manager/src/sync/clientId.ts
|
|
10669
10587
|
var import_noya_utils14 = require("@noya-app/noya-utils");
|
|
10670
|
-
var
|
|
10588
|
+
var import_observable21 = require("@noya-app/observable");
|
|
10671
10589
|
|
|
10672
10590
|
// ../state-manager/src/sync/defaultNames.ts
|
|
10673
10591
|
var import_noya_utils13 = require("@noya-app/noya-utils");
|
|
@@ -10740,9 +10658,9 @@ function getClientAnimalFromName(name) {
|
|
|
10740
10658
|
var CLIENT_ID_STORAGE_KEY = "noya-client-id";
|
|
10741
10659
|
var CLIENT_NAME_STORAGE_KEY = "noya-client-name";
|
|
10742
10660
|
var CLIENT_IMAGE_STORAGE_KEY = "noya-client-image";
|
|
10743
|
-
var clientId$ = new
|
|
10744
|
-
var clientName$ = new
|
|
10745
|
-
var clientImage$ = new
|
|
10661
|
+
var clientId$ = new import_observable21.Observable(void 0);
|
|
10662
|
+
var clientName$ = new import_observable21.Observable(void 0);
|
|
10663
|
+
var clientImage$ = new import_observable21.Observable(void 0);
|
|
10746
10664
|
var safeGetItem = (key) => {
|
|
10747
10665
|
try {
|
|
10748
10666
|
return typeof localStorage !== "undefined" ? localStorage.getItem(key) : null;
|
|
@@ -10792,9 +10710,6 @@ var import_noya_utils15 = require("@noya-app/noya-utils");
|
|
|
10792
10710
|
var import_noya_utils16 = require("@noya-app/noya-utils");
|
|
10793
10711
|
|
|
10794
10712
|
// ../state-manager/src/sync/localStorageSync.ts
|
|
10795
|
-
var import_noya_utils18 = require("@noya-app/noya-utils");
|
|
10796
|
-
|
|
10797
|
-
// ../state-manager/src/serverScripts.ts
|
|
10798
10713
|
var import_noya_utils17 = require("@noya-app/noya-utils");
|
|
10799
10714
|
|
|
10800
10715
|
// ../noya-keymap/src/hooks.ts
|
|
@@ -10918,10 +10833,10 @@ var createMutatorParametersSchema = Type.Object({
|
|
|
10918
10833
|
});
|
|
10919
10834
|
|
|
10920
10835
|
// ../noya-multiplayer-react/src/ai.ts
|
|
10921
|
-
var
|
|
10836
|
+
var import_react63 = require("react");
|
|
10922
10837
|
|
|
10923
10838
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
10924
|
-
var
|
|
10839
|
+
var import_observable24 = require("@noya-app/observable");
|
|
10925
10840
|
|
|
10926
10841
|
// ../noya-react-utils/src/components/AutoSizer.tsx
|
|
10927
10842
|
var React2 = __toESM(require("react"));
|
|
@@ -11103,7 +11018,7 @@ var FileDropTarget = memoGeneric(function FileDropTarget2({ children, onDropFile
|
|
|
11103
11018
|
var import_react8 = require("react");
|
|
11104
11019
|
|
|
11105
11020
|
// ../noya-react-utils/src/hooks/useDeepArray.ts
|
|
11106
|
-
var
|
|
11021
|
+
var import_noya_utils19 = require("@noya-app/noya-utils");
|
|
11107
11022
|
var import_react9 = require("react");
|
|
11108
11023
|
function useJsonMemo(value) {
|
|
11109
11024
|
const stringified = (0, import_react9.useMemo)(
|
|
@@ -11118,7 +11033,7 @@ function useJsonMemo(value) {
|
|
|
11118
11033
|
}
|
|
11119
11034
|
|
|
11120
11035
|
// ../noya-react-utils/src/hooks/useDeepState.ts
|
|
11121
|
-
var
|
|
11036
|
+
var import_noya_utils20 = require("@noya-app/noya-utils");
|
|
11122
11037
|
var import_react10 = require("react");
|
|
11123
11038
|
|
|
11124
11039
|
// ../noya-react-utils/src/hooks/useFetch.ts
|
|
@@ -11149,7 +11064,7 @@ var import_react17 = require("react");
|
|
|
11149
11064
|
var import_react18 = require("react");
|
|
11150
11065
|
|
|
11151
11066
|
// ../noya-react-utils/src/hooks/useShallowArray.ts
|
|
11152
|
-
var
|
|
11067
|
+
var import_noya_utils21 = require("@noya-app/noya-utils");
|
|
11153
11068
|
var import_react19 = require("react");
|
|
11154
11069
|
|
|
11155
11070
|
// ../noya-react-utils/src/hooks/useStableCallback.ts
|
|
@@ -11159,7 +11074,7 @@ var import_react20 = require("react");
|
|
|
11159
11074
|
var import_react21 = require("react");
|
|
11160
11075
|
|
|
11161
11076
|
// ../noya-react-utils/src/hooks/useUrlHashParameters.ts
|
|
11162
|
-
var
|
|
11077
|
+
var import_noya_utils22 = require("@noya-app/noya-utils");
|
|
11163
11078
|
var import_react22 = require("react");
|
|
11164
11079
|
|
|
11165
11080
|
// ../noya-react-utils/src/hooks/useWindowSize.ts
|
|
@@ -11222,13 +11137,13 @@ function downloadBlob(...params) {
|
|
|
11222
11137
|
}
|
|
11223
11138
|
|
|
11224
11139
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
11225
|
-
var
|
|
11140
|
+
var import_react62 = __toESM(require("react"));
|
|
11226
11141
|
|
|
11227
11142
|
// ../noya-multiplayer-react/src/noyaApp.ts
|
|
11228
|
-
var
|
|
11143
|
+
var import_react60 = require("react");
|
|
11229
11144
|
|
|
11230
11145
|
// ../noya-multiplayer-react/src/hooks.ts
|
|
11231
|
-
var
|
|
11146
|
+
var import_react59 = require("react");
|
|
11232
11147
|
var import_client2 = require("react-dom/client");
|
|
11233
11148
|
|
|
11234
11149
|
// ../noya-multiplayer-react/src/components/ErrorOverlay.tsx
|
|
@@ -11306,12 +11221,12 @@ var ErrorOverlay = React6.memo(function ErrorOverlay2({
|
|
|
11306
11221
|
});
|
|
11307
11222
|
|
|
11308
11223
|
// ../noya-multiplayer-react/src/inspector/useStateInspector.tsx
|
|
11309
|
-
var
|
|
11224
|
+
var import_react58 = __toESM(require("react"));
|
|
11310
11225
|
var import_client = require("react-dom/client");
|
|
11311
11226
|
|
|
11312
11227
|
// ../noya-multiplayer-react/src/inspector/StateInspector.tsx
|
|
11313
|
-
var
|
|
11314
|
-
var
|
|
11228
|
+
var import_noya_utils23 = require("@noya-app/noya-utils");
|
|
11229
|
+
var import_react57 = __toESM(require("react"));
|
|
11315
11230
|
|
|
11316
11231
|
// ../../node_modules/react-inspector/dist/index.mjs
|
|
11317
11232
|
var import_react24 = __toESM(require("react"), 1);
|
|
@@ -12888,7 +12803,9 @@ function EventsSection({
|
|
|
12888
12803
|
setShowEvents,
|
|
12889
12804
|
colorScheme,
|
|
12890
12805
|
eventsContainerRef,
|
|
12891
|
-
connectionEvents
|
|
12806
|
+
connectionEvents,
|
|
12807
|
+
paused,
|
|
12808
|
+
onTogglePaused
|
|
12892
12809
|
}) {
|
|
12893
12810
|
const theme3 = getStateInspectorTheme(colorScheme);
|
|
12894
12811
|
return /* @__PURE__ */ import_react49.default.createElement(
|
|
@@ -12897,9 +12814,20 @@ function EventsSection({
|
|
|
12897
12814
|
open: showEvents,
|
|
12898
12815
|
setOpen: setShowEvents,
|
|
12899
12816
|
title: "Events",
|
|
12900
|
-
colorScheme
|
|
12817
|
+
colorScheme,
|
|
12818
|
+
right: /* @__PURE__ */ import_react49.default.createElement(StateInspectorButton, { theme: theme3, onClick: onTogglePaused }, paused ? "Resume" : "Pause")
|
|
12901
12819
|
},
|
|
12902
|
-
/* @__PURE__ */ import_react49.default.createElement(StateInspectorDisclosureRowInner, { ref: eventsContainerRef },
|
|
12820
|
+
/* @__PURE__ */ import_react49.default.createElement(StateInspectorDisclosureRowInner, { ref: eventsContainerRef }, paused && /* @__PURE__ */ import_react49.default.createElement(
|
|
12821
|
+
"div",
|
|
12822
|
+
{
|
|
12823
|
+
style: {
|
|
12824
|
+
padding: "4px 12px",
|
|
12825
|
+
fontSize: "11px",
|
|
12826
|
+
opacity: 0.7
|
|
12827
|
+
}
|
|
12828
|
+
},
|
|
12829
|
+
"Event streaming paused"
|
|
12830
|
+
), connectionEvents?.map(
|
|
12903
12831
|
(event, index) => event.type === "stateChange" ? /* @__PURE__ */ import_react49.default.createElement(StateInspectorRow, { key: index, colorScheme }, "connection:", " ", /* @__PURE__ */ import_react49.default.createElement("span", { style: { fontStyle: "italic" } }, event.state.toLowerCase())) : /* @__PURE__ */ import_react49.default.createElement(
|
|
12904
12832
|
StateInspectorRow,
|
|
12905
12833
|
{
|
|
@@ -12930,7 +12858,7 @@ function EventsSection({
|
|
|
12930
12858
|
}
|
|
12931
12859
|
)
|
|
12932
12860
|
)
|
|
12933
|
-
), !connectionEvents && /* @__PURE__ */ import_react49.default.createElement(
|
|
12861
|
+
), !connectionEvents?.length && /* @__PURE__ */ import_react49.default.createElement(
|
|
12934
12862
|
"div",
|
|
12935
12863
|
{
|
|
12936
12864
|
style: {
|
|
@@ -12946,8 +12874,424 @@ function EventsSection({
|
|
|
12946
12874
|
);
|
|
12947
12875
|
}
|
|
12948
12876
|
|
|
12949
|
-
// ../noya-multiplayer-react/src/inspector/sections/
|
|
12877
|
+
// ../noya-multiplayer-react/src/inspector/sections/GitSection.tsx
|
|
12878
|
+
var import_react51 = __toESM(require("react"));
|
|
12879
|
+
|
|
12880
|
+
// ../noya-multiplayer-react/src/inspector/StateInspectorTitleLabel.tsx
|
|
12950
12881
|
var import_react50 = __toESM(require("react"));
|
|
12882
|
+
function StateInspectorTitleLabel({
|
|
12883
|
+
children
|
|
12884
|
+
}) {
|
|
12885
|
+
return /* @__PURE__ */ import_react50.default.createElement("span", { style: { display: "flex", alignItems: "center", gap: "4px" } }, children);
|
|
12886
|
+
}
|
|
12887
|
+
|
|
12888
|
+
// ../noya-multiplayer-react/src/inspector/sections/GitSection.tsx
|
|
12889
|
+
function GitSection({
|
|
12890
|
+
showGit,
|
|
12891
|
+
setShowGit,
|
|
12892
|
+
colorScheme,
|
|
12893
|
+
gitManager
|
|
12894
|
+
}) {
|
|
12895
|
+
const theme3 = getStateInspectorTheme(colorScheme);
|
|
12896
|
+
const repos = useObservable2(gitManager.repos$);
|
|
12897
|
+
const isInitialized = useObservable2(gitManager.isInitialized$);
|
|
12898
|
+
const repoFiles = useObservable2(gitManager.repoFiles$);
|
|
12899
|
+
const [focusedRepoId, setFocusedRepoId] = (0, import_react51.useState)(null);
|
|
12900
|
+
const [editingFile, setEditingFile] = (0, import_react51.useState)(null);
|
|
12901
|
+
const editHandleRef = (0, import_react51.useRef)(null);
|
|
12902
|
+
const [editContent, setEditContent] = (0, import_react51.useState)("");
|
|
12903
|
+
const [isEditInitialized, setIsEditInitialized] = (0, import_react51.useState)(false);
|
|
12904
|
+
const focusedRepo = focusedRepoId ? repos.find((r) => r.id === focusedRepoId) : null;
|
|
12905
|
+
const focusedRepoFilesState = focusedRepoId ? repoFiles[focusedRepoId] : null;
|
|
12906
|
+
const handleFocusRepo = async (repoId) => {
|
|
12907
|
+
if (editHandleRef.current) {
|
|
12908
|
+
editHandleRef.current.close();
|
|
12909
|
+
editHandleRef.current = null;
|
|
12910
|
+
setEditingFile(null);
|
|
12911
|
+
setEditContent("");
|
|
12912
|
+
setIsEditInitialized(false);
|
|
12913
|
+
}
|
|
12914
|
+
setFocusedRepoId(repoId);
|
|
12915
|
+
if (repoId && !repoFiles[repoId]) {
|
|
12916
|
+
await gitManager.fetchRepoFiles(repoId);
|
|
12917
|
+
}
|
|
12918
|
+
};
|
|
12919
|
+
const handleEditFile = (filePath) => {
|
|
12920
|
+
if (!focusedRepoId || !focusedRepoFilesState) return;
|
|
12921
|
+
if (editHandleRef.current) {
|
|
12922
|
+
editHandleRef.current.close();
|
|
12923
|
+
}
|
|
12924
|
+
const handle = gitManager.openEditingHandle(
|
|
12925
|
+
focusedRepoId,
|
|
12926
|
+
filePath,
|
|
12927
|
+
focusedRepoFilesState.ref
|
|
12928
|
+
);
|
|
12929
|
+
editHandleRef.current = handle;
|
|
12930
|
+
setEditingFile(filePath);
|
|
12931
|
+
setIsEditInitialized(false);
|
|
12932
|
+
setEditContent("");
|
|
12933
|
+
};
|
|
12934
|
+
const handleCloseEdit = () => {
|
|
12935
|
+
if (editHandleRef.current) {
|
|
12936
|
+
editHandleRef.current.close();
|
|
12937
|
+
editHandleRef.current = null;
|
|
12938
|
+
}
|
|
12939
|
+
setEditingFile(null);
|
|
12940
|
+
setEditContent("");
|
|
12941
|
+
setIsEditInitialized(false);
|
|
12942
|
+
};
|
|
12943
|
+
(0, import_react51.useEffect)(() => {
|
|
12944
|
+
const handle = editHandleRef.current;
|
|
12945
|
+
if (!handle) return;
|
|
12946
|
+
const unsubContent = handle.content$.subscribe((content) => {
|
|
12947
|
+
setEditContent(content);
|
|
12948
|
+
});
|
|
12949
|
+
const unsubInitialized = handle.isInitialized$.subscribe((initialized) => {
|
|
12950
|
+
setIsEditInitialized(initialized);
|
|
12951
|
+
});
|
|
12952
|
+
return () => {
|
|
12953
|
+
unsubContent();
|
|
12954
|
+
unsubInitialized();
|
|
12955
|
+
};
|
|
12956
|
+
}, [editingFile]);
|
|
12957
|
+
const handleContentChange = (newContent) => {
|
|
12958
|
+
const handle = editHandleRef.current;
|
|
12959
|
+
if (!handle) return;
|
|
12960
|
+
handle.setState(newContent);
|
|
12961
|
+
};
|
|
12962
|
+
const handleBranchChange = async (ref) => {
|
|
12963
|
+
if (focusedRepoId) {
|
|
12964
|
+
await gitManager.fetchRepoFiles(focusedRepoId, ref);
|
|
12965
|
+
}
|
|
12966
|
+
};
|
|
12967
|
+
const handleAddFile = async () => {
|
|
12968
|
+
if (!focusedRepoId || !focusedRepoFilesState) return;
|
|
12969
|
+
const path2 = prompt("Enter file path (e.g., src/index.ts):");
|
|
12970
|
+
if (!path2) return;
|
|
12971
|
+
try {
|
|
12972
|
+
await gitManager.patchFiles(
|
|
12973
|
+
focusedRepoId,
|
|
12974
|
+
{ create: [{ path: path2, content: "" }] },
|
|
12975
|
+
focusedRepoFilesState.ref
|
|
12976
|
+
);
|
|
12977
|
+
} catch (error) {
|
|
12978
|
+
alert(`Failed to create file: ${error}`);
|
|
12979
|
+
}
|
|
12980
|
+
};
|
|
12981
|
+
const handleRenameFile = async (oldPath) => {
|
|
12982
|
+
if (!focusedRepoId || !focusedRepoFilesState) return;
|
|
12983
|
+
const newPath = prompt(`Rename "${oldPath}" to:`, oldPath);
|
|
12984
|
+
if (!newPath || newPath === oldPath) return;
|
|
12985
|
+
try {
|
|
12986
|
+
await gitManager.patchFiles(
|
|
12987
|
+
focusedRepoId,
|
|
12988
|
+
{ rename: [{ oldPath, newPath }] },
|
|
12989
|
+
focusedRepoFilesState.ref
|
|
12990
|
+
);
|
|
12991
|
+
} catch (error) {
|
|
12992
|
+
alert(`Failed to rename file: ${error}`);
|
|
12993
|
+
}
|
|
12994
|
+
};
|
|
12995
|
+
const handleDeleteFile = async (path2) => {
|
|
12996
|
+
if (!focusedRepoId || !focusedRepoFilesState) return;
|
|
12997
|
+
const confirmed = confirm(`Delete "${path2}"?`);
|
|
12998
|
+
if (!confirmed) return;
|
|
12999
|
+
try {
|
|
13000
|
+
await gitManager.patchFiles(
|
|
13001
|
+
focusedRepoId,
|
|
13002
|
+
{ delete: [{ path: path2 }] },
|
|
13003
|
+
focusedRepoFilesState.ref
|
|
13004
|
+
);
|
|
13005
|
+
if (editingFile === path2) {
|
|
13006
|
+
handleCloseEdit();
|
|
13007
|
+
}
|
|
13008
|
+
} catch (error) {
|
|
13009
|
+
alert(`Failed to delete file: ${error}`);
|
|
13010
|
+
}
|
|
13011
|
+
};
|
|
13012
|
+
return /* @__PURE__ */ import_react51.default.createElement(
|
|
13013
|
+
StateInspectorDisclosureSection,
|
|
13014
|
+
{
|
|
13015
|
+
open: showGit,
|
|
13016
|
+
setOpen: setShowGit,
|
|
13017
|
+
title: /* @__PURE__ */ import_react51.default.createElement(StateInspectorTitleLabel, null, "Git Repos (", repos.length, ")", /* @__PURE__ */ import_react51.default.createElement(ColoredDot, { type: isInitialized ? "success" : "error" })),
|
|
13018
|
+
colorScheme,
|
|
13019
|
+
right: /* @__PURE__ */ import_react51.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react51.default.createElement(
|
|
13020
|
+
StateInspectorButton,
|
|
13021
|
+
{
|
|
13022
|
+
theme: theme3,
|
|
13023
|
+
onClick: async () => {
|
|
13024
|
+
try {
|
|
13025
|
+
await gitManager.initRepo();
|
|
13026
|
+
} catch (error) {
|
|
13027
|
+
console.error("[GitSection] Failed to create repo:", error);
|
|
13028
|
+
}
|
|
13029
|
+
}
|
|
13030
|
+
},
|
|
13031
|
+
"Init Repo"
|
|
13032
|
+
))
|
|
13033
|
+
},
|
|
13034
|
+
/* @__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(
|
|
13035
|
+
"select",
|
|
13036
|
+
{
|
|
13037
|
+
name: "repoSelector",
|
|
13038
|
+
value: focusedRepoId ?? "",
|
|
13039
|
+
style: { flex: "1 1 auto", height: "19px", minWidth: 0 },
|
|
13040
|
+
onChange: (e) => {
|
|
13041
|
+
const value = e.target.value;
|
|
13042
|
+
handleFocusRepo(value || null);
|
|
13043
|
+
}
|
|
13044
|
+
},
|
|
13045
|
+
/* @__PURE__ */ import_react51.default.createElement("option", { value: "" }, "Select a repo..."),
|
|
13046
|
+
repos.map((repo) => /* @__PURE__ */ import_react51.default.createElement("option", { key: repo.id, value: repo.id }, repo.id))
|
|
13047
|
+
), focusedRepoId && /* @__PURE__ */ import_react51.default.createElement(
|
|
13048
|
+
StateInspectorButton,
|
|
13049
|
+
{
|
|
13050
|
+
theme: theme3,
|
|
13051
|
+
onClick: () => gitManager.fetchRepoFiles(focusedRepoId)
|
|
13052
|
+
},
|
|
13053
|
+
"Refresh"
|
|
13054
|
+
), /* @__PURE__ */ import_react51.default.createElement(
|
|
13055
|
+
"label",
|
|
13056
|
+
{
|
|
13057
|
+
style: {
|
|
13058
|
+
display: "flex",
|
|
13059
|
+
alignItems: "center",
|
|
13060
|
+
gap: "4px",
|
|
13061
|
+
fontSize: "11px",
|
|
13062
|
+
whiteSpace: "nowrap"
|
|
13063
|
+
}
|
|
13064
|
+
},
|
|
13065
|
+
"[Include Content = ",
|
|
13066
|
+
gitManager.includeContent ? "true" : "false",
|
|
13067
|
+
"]"
|
|
13068
|
+
)), focusedRepo && focusedRepoFilesState && /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, /* @__PURE__ */ import_react51.default.createElement(
|
|
13069
|
+
"div",
|
|
13070
|
+
{
|
|
13071
|
+
style: {
|
|
13072
|
+
padding: "4px 12px",
|
|
13073
|
+
display: "flex",
|
|
13074
|
+
gap: "8px",
|
|
13075
|
+
alignItems: "center",
|
|
13076
|
+
fontSize: "12px"
|
|
13077
|
+
}
|
|
13078
|
+
},
|
|
13079
|
+
/* @__PURE__ */ import_react51.default.createElement("span", { style: { color: theme3.BASE_COLOR } }, "Branch:"),
|
|
13080
|
+
focusedRepoFilesState.branches.length > 0 ? /* @__PURE__ */ import_react51.default.createElement(
|
|
13081
|
+
"select",
|
|
13082
|
+
{
|
|
13083
|
+
value: focusedRepoFilesState.ref,
|
|
13084
|
+
style: { flex: "1 1 auto", height: "19px" },
|
|
13085
|
+
onChange: (e) => handleBranchChange(e.target.value)
|
|
13086
|
+
},
|
|
13087
|
+
focusedRepoFilesState.branches.map((branch) => /* @__PURE__ */ import_react51.default.createElement("option", { key: branch.name, value: branch.name }, branch.name))
|
|
13088
|
+
) : /* @__PURE__ */ import_react51.default.createElement("span", { style: { opacity: 0.6, fontStyle: "italic" } }, focusedRepoFilesState.ref || "No branches"),
|
|
13089
|
+
focusedRepoFilesState.oid && /* @__PURE__ */ import_react51.default.createElement(
|
|
13090
|
+
"span",
|
|
13091
|
+
{
|
|
13092
|
+
style: {
|
|
13093
|
+
fontFamily: "monospace",
|
|
13094
|
+
fontSize: "10px",
|
|
13095
|
+
opacity: 0.6
|
|
13096
|
+
},
|
|
13097
|
+
title: focusedRepoFilesState.oid
|
|
13098
|
+
},
|
|
13099
|
+
focusedRepoFilesState.oid.slice(0, 7),
|
|
13100
|
+
focusedRepoFilesState.fetchState === "refreshing" && "\u2026"
|
|
13101
|
+
),
|
|
13102
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13103
|
+
StateInspectorButton,
|
|
13104
|
+
{
|
|
13105
|
+
theme: theme3,
|
|
13106
|
+
onClick: handleAddFile,
|
|
13107
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13108
|
+
},
|
|
13109
|
+
"+ Add File"
|
|
13110
|
+
)
|
|
13111
|
+
), focusedRepoFilesState.fetchState === "loading" && /* @__PURE__ */ import_react51.default.createElement(
|
|
13112
|
+
"div",
|
|
13113
|
+
{
|
|
13114
|
+
style: {
|
|
13115
|
+
padding: "12px",
|
|
13116
|
+
fontSize: "12px"
|
|
13117
|
+
}
|
|
13118
|
+
},
|
|
13119
|
+
"Loading files..."
|
|
13120
|
+
), focusedRepoFilesState.error && /* @__PURE__ */ import_react51.default.createElement(
|
|
13121
|
+
"div",
|
|
13122
|
+
{
|
|
13123
|
+
style: {
|
|
13124
|
+
padding: "12px",
|
|
13125
|
+
fontSize: "12px",
|
|
13126
|
+
color: "#f44"
|
|
13127
|
+
}
|
|
13128
|
+
},
|
|
13129
|
+
"Error: ",
|
|
13130
|
+
focusedRepoFilesState.error
|
|
13131
|
+
), focusedRepoFilesState.fetchState !== "loading" && !focusedRepoFilesState.error && focusedRepoFilesState.files.length === 0 && /* @__PURE__ */ import_react51.default.createElement(
|
|
13132
|
+
"div",
|
|
13133
|
+
{
|
|
13134
|
+
style: {
|
|
13135
|
+
padding: "12px",
|
|
13136
|
+
fontSize: "12px"
|
|
13137
|
+
}
|
|
13138
|
+
},
|
|
13139
|
+
"No files (empty repo)"
|
|
13140
|
+
), !editingFile && focusedRepoFilesState.files.map((file, index) => {
|
|
13141
|
+
const fileInfo = focusedRepoFilesState.fileContents?.find(
|
|
13142
|
+
(f) => f.path === file
|
|
13143
|
+
);
|
|
13144
|
+
let preview = "";
|
|
13145
|
+
if (fileInfo) {
|
|
13146
|
+
try {
|
|
13147
|
+
const decoded = atob(fileInfo.content);
|
|
13148
|
+
preview = decoded.slice(0, 40).replace(/\n/g, " ").replace(/\s+/g, " ");
|
|
13149
|
+
if (decoded.length > 40) preview += "\u2026";
|
|
13150
|
+
} catch {
|
|
13151
|
+
}
|
|
13152
|
+
}
|
|
13153
|
+
return /* @__PURE__ */ import_react51.default.createElement(
|
|
13154
|
+
"div",
|
|
13155
|
+
{
|
|
13156
|
+
key: index,
|
|
13157
|
+
style: {
|
|
13158
|
+
padding: "2px 12px",
|
|
13159
|
+
display: "flex",
|
|
13160
|
+
justifyContent: "space-between",
|
|
13161
|
+
alignItems: "center",
|
|
13162
|
+
gap: "8px",
|
|
13163
|
+
borderBottom: `1px solid ${colorScheme === "light" ? "rgb(223 223 223)" : "rgb(29 29 29)"}`
|
|
13164
|
+
}
|
|
13165
|
+
},
|
|
13166
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13167
|
+
"span",
|
|
13168
|
+
{
|
|
13169
|
+
style: {
|
|
13170
|
+
fontFamily: "monospace",
|
|
13171
|
+
fontSize: "11px",
|
|
13172
|
+
overflow: "hidden",
|
|
13173
|
+
textOverflow: "ellipsis",
|
|
13174
|
+
whiteSpace: "nowrap",
|
|
13175
|
+
minWidth: 0,
|
|
13176
|
+
display: "flex",
|
|
13177
|
+
gap: "8px"
|
|
13178
|
+
},
|
|
13179
|
+
title: file
|
|
13180
|
+
},
|
|
13181
|
+
/* @__PURE__ */ import_react51.default.createElement("span", null, file),
|
|
13182
|
+
preview && /* @__PURE__ */ import_react51.default.createElement("span", { style: { opacity: 0.5 } }, preview)
|
|
13183
|
+
),
|
|
13184
|
+
/* @__PURE__ */ import_react51.default.createElement("span", { style: { display: "flex", gap: "4px", flexShrink: 0 } }, /* @__PURE__ */ import_react51.default.createElement(
|
|
13185
|
+
StateInspectorButton,
|
|
13186
|
+
{
|
|
13187
|
+
theme: theme3,
|
|
13188
|
+
onClick: () => handleEditFile(file),
|
|
13189
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13190
|
+
},
|
|
13191
|
+
"Edit"
|
|
13192
|
+
), /* @__PURE__ */ import_react51.default.createElement(
|
|
13193
|
+
StateInspectorButton,
|
|
13194
|
+
{
|
|
13195
|
+
theme: theme3,
|
|
13196
|
+
onClick: () => handleRenameFile(file),
|
|
13197
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13198
|
+
},
|
|
13199
|
+
"Rename"
|
|
13200
|
+
), /* @__PURE__ */ import_react51.default.createElement(
|
|
13201
|
+
StateInspectorButton,
|
|
13202
|
+
{
|
|
13203
|
+
theme: theme3,
|
|
13204
|
+
onClick: () => handleDeleteFile(file),
|
|
13205
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13206
|
+
},
|
|
13207
|
+
"Delete"
|
|
13208
|
+
))
|
|
13209
|
+
);
|
|
13210
|
+
}), editingFile && /* @__PURE__ */ import_react51.default.createElement(
|
|
13211
|
+
"div",
|
|
13212
|
+
{
|
|
13213
|
+
style: {
|
|
13214
|
+
padding: "8px 12px",
|
|
13215
|
+
borderTop: `1px solid ${theme3.DIVIDER_COLOR}`,
|
|
13216
|
+
flex: "1 1 auto",
|
|
13217
|
+
display: "flex",
|
|
13218
|
+
flexDirection: "column",
|
|
13219
|
+
minHeight: 0
|
|
13220
|
+
}
|
|
13221
|
+
},
|
|
13222
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13223
|
+
"div",
|
|
13224
|
+
{
|
|
13225
|
+
style: {
|
|
13226
|
+
display: "flex",
|
|
13227
|
+
justifyContent: "space-between",
|
|
13228
|
+
alignItems: "center",
|
|
13229
|
+
marginBottom: "8px",
|
|
13230
|
+
flexShrink: 0
|
|
13231
|
+
}
|
|
13232
|
+
},
|
|
13233
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13234
|
+
"span",
|
|
13235
|
+
{
|
|
13236
|
+
style: {
|
|
13237
|
+
fontFamily: "monospace",
|
|
13238
|
+
fontSize: "11px",
|
|
13239
|
+
fontWeight: "bold"
|
|
13240
|
+
}
|
|
13241
|
+
},
|
|
13242
|
+
editingFile,
|
|
13243
|
+
!isEditInitialized && /* @__PURE__ */ import_react51.default.createElement("span", { style: { opacity: 0.5, marginLeft: "8px" } }, "Loading...")
|
|
13244
|
+
),
|
|
13245
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13246
|
+
StateInspectorButton,
|
|
13247
|
+
{
|
|
13248
|
+
theme: theme3,
|
|
13249
|
+
onClick: handleCloseEdit,
|
|
13250
|
+
style: { fontSize: "10px", padding: "2px 6px" }
|
|
13251
|
+
},
|
|
13252
|
+
"Close"
|
|
13253
|
+
)
|
|
13254
|
+
),
|
|
13255
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
13256
|
+
"textarea",
|
|
13257
|
+
{
|
|
13258
|
+
value: editContent,
|
|
13259
|
+
onChange: (e) => handleContentChange(e.target.value),
|
|
13260
|
+
disabled: !isEditInitialized,
|
|
13261
|
+
style: {
|
|
13262
|
+
width: "100%",
|
|
13263
|
+
flex: "1 1 auto",
|
|
13264
|
+
minHeight: "100px",
|
|
13265
|
+
fontFamily: "monospace",
|
|
13266
|
+
fontSize: "11px",
|
|
13267
|
+
padding: "8px",
|
|
13268
|
+
border: `1px solid ${theme3.DIVIDER_COLOR}`,
|
|
13269
|
+
borderRadius: "4px",
|
|
13270
|
+
backgroundColor: theme3.ROW_BACKGROUND,
|
|
13271
|
+
color: theme3.BASE_COLOR,
|
|
13272
|
+
resize: "none",
|
|
13273
|
+
boxSizing: "border-box"
|
|
13274
|
+
}
|
|
13275
|
+
}
|
|
13276
|
+
)
|
|
13277
|
+
)), repos.length === 0 && /* @__PURE__ */ import_react51.default.createElement(
|
|
13278
|
+
"div",
|
|
13279
|
+
{
|
|
13280
|
+
style: {
|
|
13281
|
+
padding: "12px",
|
|
13282
|
+
fontSize: "12px",
|
|
13283
|
+
display: "flex",
|
|
13284
|
+
flexDirection: "column",
|
|
13285
|
+
gap: "4px"
|
|
13286
|
+
}
|
|
13287
|
+
},
|
|
13288
|
+
/* @__PURE__ */ import_react51.default.createElement("span", null, "No git repos")
|
|
13289
|
+
))
|
|
13290
|
+
);
|
|
13291
|
+
}
|
|
13292
|
+
|
|
13293
|
+
// ../noya-multiplayer-react/src/inspector/sections/HistorySection.tsx
|
|
13294
|
+
var import_react52 = __toESM(require("react"));
|
|
12951
13295
|
|
|
12952
13296
|
// ../noya-multiplayer-react/src/inspector/utils.ts
|
|
12953
13297
|
function pathToString(extendedPath) {
|
|
@@ -13002,15 +13346,15 @@ function HistorySection({
|
|
|
13002
13346
|
historySnapshot,
|
|
13003
13347
|
multiplayerStateManager
|
|
13004
13348
|
}) {
|
|
13005
|
-
const ref = (0,
|
|
13349
|
+
const ref = (0, import_react52.useRef)(null);
|
|
13006
13350
|
const theme3 = getStateInspectorTheme(colorScheme);
|
|
13007
13351
|
const solidBorderColor = getStateInspectorBorderColor(colorScheme);
|
|
13008
|
-
(0,
|
|
13352
|
+
(0, import_react52.useEffect)(() => {
|
|
13009
13353
|
if (ref.current) {
|
|
13010
13354
|
ref.current.scrollTop = ref.current.scrollHeight;
|
|
13011
13355
|
}
|
|
13012
13356
|
}, [historySnapshot]);
|
|
13013
|
-
(0,
|
|
13357
|
+
(0, import_react52.useEffect)(() => {
|
|
13014
13358
|
if (!ref.current) return;
|
|
13015
13359
|
const historyEntry = ref.current.querySelector(
|
|
13016
13360
|
`#${HISTORY_ELEMENT_PREFIX}${historySnapshot.historyIndex}`
|
|
@@ -13022,14 +13366,14 @@ function HistorySection({
|
|
|
13022
13366
|
});
|
|
13023
13367
|
}
|
|
13024
13368
|
}, [historySnapshot.historyIndex]);
|
|
13025
|
-
return /* @__PURE__ */
|
|
13369
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
13026
13370
|
StateInspectorDisclosureSection,
|
|
13027
13371
|
{
|
|
13028
13372
|
open: showHistory,
|
|
13029
13373
|
setOpen: setShowHistory,
|
|
13030
13374
|
title: "History",
|
|
13031
13375
|
colorScheme,
|
|
13032
|
-
right: /* @__PURE__ */
|
|
13376
|
+
right: /* @__PURE__ */ import_react52.default.createElement(
|
|
13033
13377
|
"span",
|
|
13034
13378
|
{
|
|
13035
13379
|
style: {
|
|
@@ -13037,7 +13381,7 @@ function HistorySection({
|
|
|
13037
13381
|
gap: "4px"
|
|
13038
13382
|
}
|
|
13039
13383
|
},
|
|
13040
|
-
/* @__PURE__ */
|
|
13384
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13041
13385
|
StateInspectorButton,
|
|
13042
13386
|
{
|
|
13043
13387
|
disabled: !historySnapshot.canUndo,
|
|
@@ -13046,7 +13390,7 @@ function HistorySection({
|
|
|
13046
13390
|
multiplayerStateManager.undo();
|
|
13047
13391
|
}
|
|
13048
13392
|
},
|
|
13049
|
-
/* @__PURE__ */
|
|
13393
|
+
/* @__PURE__ */ import_react52.default.createElement("span", { style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13050
13394
|
"svg",
|
|
13051
13395
|
{
|
|
13052
13396
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13054,7 +13398,7 @@ function HistorySection({
|
|
|
13054
13398
|
height: "1em",
|
|
13055
13399
|
viewBox: "0 0 20 20"
|
|
13056
13400
|
},
|
|
13057
|
-
/* @__PURE__ */
|
|
13401
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13058
13402
|
"path",
|
|
13059
13403
|
{
|
|
13060
13404
|
fill: "currentColor",
|
|
@@ -13063,7 +13407,7 @@ function HistorySection({
|
|
|
13063
13407
|
)
|
|
13064
13408
|
))
|
|
13065
13409
|
),
|
|
13066
|
-
/* @__PURE__ */
|
|
13410
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13067
13411
|
StateInspectorButton,
|
|
13068
13412
|
{
|
|
13069
13413
|
disabled: !historySnapshot.canRedo,
|
|
@@ -13072,7 +13416,7 @@ function HistorySection({
|
|
|
13072
13416
|
multiplayerStateManager.redo();
|
|
13073
13417
|
}
|
|
13074
13418
|
},
|
|
13075
|
-
/* @__PURE__ */
|
|
13419
|
+
/* @__PURE__ */ import_react52.default.createElement("span", { style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13076
13420
|
"svg",
|
|
13077
13421
|
{
|
|
13078
13422
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13080,7 +13424,7 @@ function HistorySection({
|
|
|
13080
13424
|
height: "1em",
|
|
13081
13425
|
viewBox: "0 0 20 20"
|
|
13082
13426
|
},
|
|
13083
|
-
/* @__PURE__ */
|
|
13427
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13084
13428
|
"path",
|
|
13085
13429
|
{
|
|
13086
13430
|
fill: "currentColor",
|
|
@@ -13091,7 +13435,7 @@ function HistorySection({
|
|
|
13091
13435
|
)
|
|
13092
13436
|
)
|
|
13093
13437
|
},
|
|
13094
|
-
/* @__PURE__ */
|
|
13438
|
+
/* @__PURE__ */ import_react52.default.createElement(StateInspectorDisclosureRowInner, { ref }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13095
13439
|
"div",
|
|
13096
13440
|
{
|
|
13097
13441
|
id: `${HISTORY_ELEMENT_PREFIX}0`,
|
|
@@ -13105,7 +13449,7 @@ function HistorySection({
|
|
|
13105
13449
|
background: historySnapshot.historyIndex === 0 ? "rgb(59 130 246 / 15%)" : void 0
|
|
13106
13450
|
}
|
|
13107
13451
|
},
|
|
13108
|
-
/* @__PURE__ */
|
|
13452
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13109
13453
|
"span",
|
|
13110
13454
|
{
|
|
13111
13455
|
style: {
|
|
@@ -13120,7 +13464,7 @@ function HistorySection({
|
|
|
13120
13464
|
), historySnapshot.history.map((entry, index) => {
|
|
13121
13465
|
const metadata = entry.metadata;
|
|
13122
13466
|
const { id, name, timestamp, ...rest } = metadata;
|
|
13123
|
-
return /* @__PURE__ */
|
|
13467
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
13124
13468
|
"div",
|
|
13125
13469
|
{
|
|
13126
13470
|
id: `${HISTORY_ELEMENT_PREFIX}${index + 1}`,
|
|
@@ -13131,7 +13475,7 @@ function HistorySection({
|
|
|
13131
13475
|
background: index + 1 === historySnapshot.historyIndex ? "rgb(59 130 246 / 15%)" : void 0
|
|
13132
13476
|
}
|
|
13133
13477
|
},
|
|
13134
|
-
typeof name === "string" && /* @__PURE__ */
|
|
13478
|
+
typeof name === "string" && /* @__PURE__ */ import_react52.default.createElement(
|
|
13135
13479
|
"pre",
|
|
13136
13480
|
{
|
|
13137
13481
|
style: {
|
|
@@ -13142,9 +13486,9 @@ function HistorySection({
|
|
|
13142
13486
|
}
|
|
13143
13487
|
},
|
|
13144
13488
|
entry.metadata.name,
|
|
13145
|
-
Object.keys(rest).length > 0 && /* @__PURE__ */
|
|
13489
|
+
Object.keys(rest).length > 0 && /* @__PURE__ */ import_react52.default.createElement(themedObjectInspector, { data: rest, theme: theme3 })
|
|
13146
13490
|
),
|
|
13147
|
-
entry.redoPatches?.map((patch, j) => /* @__PURE__ */
|
|
13491
|
+
entry.redoPatches?.map((patch, j) => /* @__PURE__ */ import_react52.default.createElement(
|
|
13148
13492
|
"pre",
|
|
13149
13493
|
{
|
|
13150
13494
|
key: j,
|
|
@@ -13155,10 +13499,10 @@ function HistorySection({
|
|
|
13155
13499
|
margin: 0
|
|
13156
13500
|
}
|
|
13157
13501
|
},
|
|
13158
|
-
patch.op === "add" && /* @__PURE__ */
|
|
13159
|
-
patch.op === "replace" && /* @__PURE__ */
|
|
13160
|
-
patch.op === "remove" && /* @__PURE__ */
|
|
13161
|
-
patch.op === "move" && /* @__PURE__ */
|
|
13502
|
+
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 })),
|
|
13503
|
+
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 })),
|
|
13504
|
+
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))),
|
|
13505
|
+
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)))
|
|
13162
13506
|
))
|
|
13163
13507
|
);
|
|
13164
13508
|
}))
|
|
@@ -13166,7 +13510,7 @@ function HistorySection({
|
|
|
13166
13510
|
}
|
|
13167
13511
|
|
|
13168
13512
|
// ../noya-multiplayer-react/src/inspector/sections/ServerScriptLogsSection.tsx
|
|
13169
|
-
var
|
|
13513
|
+
var import_react53 = __toESM(require("react"));
|
|
13170
13514
|
var levelColors = {
|
|
13171
13515
|
error: "#f87171",
|
|
13172
13516
|
warn: "#facc15",
|
|
@@ -13182,19 +13526,20 @@ function ServerScriptLogsSection({
|
|
|
13182
13526
|
logs,
|
|
13183
13527
|
containerRef,
|
|
13184
13528
|
paused,
|
|
13185
|
-
onTogglePaused
|
|
13529
|
+
onTogglePaused,
|
|
13530
|
+
title = "Server Script Logs"
|
|
13186
13531
|
}) {
|
|
13187
13532
|
const theme3 = getStateInspectorTheme(colorScheme);
|
|
13188
|
-
return /* @__PURE__ */
|
|
13533
|
+
return /* @__PURE__ */ import_react53.default.createElement(
|
|
13189
13534
|
StateInspectorDisclosureSection,
|
|
13190
13535
|
{
|
|
13191
13536
|
open: showLogs,
|
|
13192
13537
|
setOpen: setShowLogs,
|
|
13193
|
-
title
|
|
13538
|
+
title,
|
|
13194
13539
|
colorScheme,
|
|
13195
|
-
right: /* @__PURE__ */
|
|
13540
|
+
right: /* @__PURE__ */ import_react53.default.createElement(StateInspectorButton, { theme: theme3, onClick: onTogglePaused }, paused ? "Resume" : "Pause")
|
|
13196
13541
|
},
|
|
13197
|
-
/* @__PURE__ */
|
|
13542
|
+
/* @__PURE__ */ import_react53.default.createElement(StateInspectorDisclosureRowInner, { ref: containerRef }, paused && /* @__PURE__ */ import_react53.default.createElement(
|
|
13198
13543
|
"div",
|
|
13199
13544
|
{
|
|
13200
13545
|
style: {
|
|
@@ -13204,7 +13549,7 @@ function ServerScriptLogsSection({
|
|
|
13204
13549
|
}
|
|
13205
13550
|
},
|
|
13206
13551
|
"Log streaming paused"
|
|
13207
|
-
), logs.map((log) => /* @__PURE__ */
|
|
13552
|
+
), logs.map((log) => /* @__PURE__ */ import_react53.default.createElement(StateInspectorRow, { key: log.id, colorScheme }, /* @__PURE__ */ import_react53.default.createElement(
|
|
13208
13553
|
"div",
|
|
13209
13554
|
{
|
|
13210
13555
|
style: {
|
|
@@ -13217,9 +13562,21 @@ function ServerScriptLogsSection({
|
|
|
13217
13562
|
textTransform: "uppercase"
|
|
13218
13563
|
}
|
|
13219
13564
|
},
|
|
13220
|
-
/* @__PURE__ */
|
|
13221
|
-
/* @__PURE__ */
|
|
13222
|
-
/* @__PURE__ */
|
|
13565
|
+
/* @__PURE__ */ import_react53.default.createElement("span", null, formatTimestamp(log.timestamp)),
|
|
13566
|
+
/* @__PURE__ */ import_react53.default.createElement("span", { style: { color: levelColors[log.level] } }, log.level),
|
|
13567
|
+
(log.origin || log.target || log.mode) && /* @__PURE__ */ import_react53.default.createElement(
|
|
13568
|
+
"span",
|
|
13569
|
+
{
|
|
13570
|
+
style: {
|
|
13571
|
+
fontFamily: "monospace",
|
|
13572
|
+
textTransform: "none",
|
|
13573
|
+
fontSize: "10px",
|
|
13574
|
+
opacity: 0.75
|
|
13575
|
+
}
|
|
13576
|
+
},
|
|
13577
|
+
[log.origin ?? log.target, log.mode].filter(Boolean).join(" / ")
|
|
13578
|
+
),
|
|
13579
|
+
/* @__PURE__ */ import_react53.default.createElement(
|
|
13223
13580
|
"span",
|
|
13224
13581
|
{
|
|
13225
13582
|
style: {
|
|
@@ -13230,7 +13587,7 @@ function ServerScriptLogsSection({
|
|
|
13230
13587
|
},
|
|
13231
13588
|
log.scriptId
|
|
13232
13589
|
)
|
|
13233
|
-
), /* @__PURE__ */
|
|
13590
|
+
), /* @__PURE__ */ import_react53.default.createElement(
|
|
13234
13591
|
"div",
|
|
13235
13592
|
{
|
|
13236
13593
|
style: {
|
|
@@ -13239,16 +13596,15 @@ function ServerScriptLogsSection({
|
|
|
13239
13596
|
gap: "4px"
|
|
13240
13597
|
}
|
|
13241
13598
|
},
|
|
13242
|
-
log.values.length > 0 ? log.values.map((value, index) => /* @__PURE__ */
|
|
13599
|
+
log.values.length > 0 ? log.values.map((value, index) => /* @__PURE__ */ import_react53.default.createElement(
|
|
13243
13600
|
themedObjectInspector,
|
|
13244
13601
|
{
|
|
13245
13602
|
key: index,
|
|
13246
13603
|
data: value,
|
|
13247
|
-
theme: theme3
|
|
13248
|
-
expandLevel: 3
|
|
13604
|
+
theme: theme3
|
|
13249
13605
|
}
|
|
13250
|
-
)) : /* @__PURE__ */
|
|
13251
|
-
))), !logs?.length && /* @__PURE__ */
|
|
13606
|
+
)) : /* @__PURE__ */ import_react53.default.createElement("span", { style: { fontSize: "11px", opacity: 0.7 } }, "No data")
|
|
13607
|
+
))), !logs?.length && /* @__PURE__ */ import_react53.default.createElement(
|
|
13252
13608
|
"div",
|
|
13253
13609
|
{
|
|
13254
13610
|
style: {
|
|
@@ -13259,7 +13615,7 @@ function ServerScriptLogsSection({
|
|
|
13259
13615
|
gap: "4px"
|
|
13260
13616
|
}
|
|
13261
13617
|
},
|
|
13262
|
-
/* @__PURE__ */
|
|
13618
|
+
/* @__PURE__ */ import_react53.default.createElement("span", null, "No logs received")
|
|
13263
13619
|
))
|
|
13264
13620
|
);
|
|
13265
13621
|
}
|
|
@@ -13787,16 +14143,8 @@ function decodeAll(buffer) {
|
|
|
13787
14143
|
return { state, schema, assets, assetMap };
|
|
13788
14144
|
}
|
|
13789
14145
|
|
|
13790
|
-
// ../noya-multiplayer-react/src/inspector/StateInspectorTitleLabel.tsx
|
|
13791
|
-
var import_react52 = __toESM(require("react"));
|
|
13792
|
-
function StateInspectorTitleLabel({
|
|
13793
|
-
children
|
|
13794
|
-
}) {
|
|
13795
|
-
return /* @__PURE__ */ import_react52.default.createElement("span", { style: { display: "flex", alignItems: "center", gap: "4px" } }, children);
|
|
13796
|
-
}
|
|
13797
|
-
|
|
13798
14146
|
// ../noya-multiplayer-react/src/inspector/StateInspectorToggleButton.tsx
|
|
13799
|
-
var
|
|
14147
|
+
var import_react54 = __toESM(require("react"));
|
|
13800
14148
|
function StateInspectorToggleButton({
|
|
13801
14149
|
showInspector,
|
|
13802
14150
|
setShowInspector,
|
|
@@ -13804,7 +14152,7 @@ function StateInspectorToggleButton({
|
|
|
13804
14152
|
anchor
|
|
13805
14153
|
}) {
|
|
13806
14154
|
const isRightAnchor = anchor === "right";
|
|
13807
|
-
const rightIcon = /* @__PURE__ */
|
|
14155
|
+
const rightIcon = /* @__PURE__ */ import_react54.default.createElement(
|
|
13808
14156
|
"svg",
|
|
13809
14157
|
{
|
|
13810
14158
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13814,7 +14162,7 @@ function StateInspectorToggleButton({
|
|
|
13814
14162
|
stroke: "currentColor",
|
|
13815
14163
|
className: "size-6"
|
|
13816
14164
|
},
|
|
13817
|
-
/* @__PURE__ */
|
|
14165
|
+
/* @__PURE__ */ import_react54.default.createElement(
|
|
13818
14166
|
"path",
|
|
13819
14167
|
{
|
|
13820
14168
|
strokeLinecap: "round",
|
|
@@ -13823,7 +14171,7 @@ function StateInspectorToggleButton({
|
|
|
13823
14171
|
}
|
|
13824
14172
|
)
|
|
13825
14173
|
);
|
|
13826
|
-
const leftIcon = /* @__PURE__ */
|
|
14174
|
+
const leftIcon = /* @__PURE__ */ import_react54.default.createElement(
|
|
13827
14175
|
"svg",
|
|
13828
14176
|
{
|
|
13829
14177
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13833,7 +14181,7 @@ function StateInspectorToggleButton({
|
|
|
13833
14181
|
stroke: "currentColor",
|
|
13834
14182
|
className: "size-6"
|
|
13835
14183
|
},
|
|
13836
|
-
/* @__PURE__ */
|
|
14184
|
+
/* @__PURE__ */ import_react54.default.createElement(
|
|
13837
14185
|
"path",
|
|
13838
14186
|
{
|
|
13839
14187
|
strokeLinecap: "round",
|
|
@@ -13842,7 +14190,7 @@ function StateInspectorToggleButton({
|
|
|
13842
14190
|
}
|
|
13843
14191
|
)
|
|
13844
14192
|
);
|
|
13845
|
-
return /* @__PURE__ */
|
|
14193
|
+
return /* @__PURE__ */ import_react54.default.createElement(
|
|
13846
14194
|
"span",
|
|
13847
14195
|
{
|
|
13848
14196
|
role: "button",
|
|
@@ -13863,15 +14211,15 @@ function StateInspectorToggleButton({
|
|
|
13863
14211
|
setShowInspector(!showInspector);
|
|
13864
14212
|
}
|
|
13865
14213
|
},
|
|
13866
|
-
showInspector ? "Hide Inspector" : /* @__PURE__ */
|
|
14214
|
+
showInspector ? "Hide Inspector" : /* @__PURE__ */ import_react54.default.createElement("span", { style: { width: "12px", height: "12px" } }, isRightAnchor ? rightIcon : leftIcon)
|
|
13867
14215
|
);
|
|
13868
14216
|
}
|
|
13869
14217
|
|
|
13870
14218
|
// ../noya-multiplayer-react/src/inspector/useLocalStorageState.tsx
|
|
13871
|
-
var
|
|
14219
|
+
var import_react55 = __toESM(require("react"));
|
|
13872
14220
|
var localStorage2 = typeof window !== "undefined" ? window.localStorage : null;
|
|
13873
14221
|
function useLocalStorageState(key, defaultValue) {
|
|
13874
|
-
const [state, setState] =
|
|
14222
|
+
const [state, setState] = import_react55.default.useState(() => {
|
|
13875
14223
|
const value = localStorage2?.getItem(key);
|
|
13876
14224
|
let result = defaultValue;
|
|
13877
14225
|
if (value) {
|
|
@@ -13890,6 +14238,31 @@ function useLocalStorageState(key, defaultValue) {
|
|
|
13890
14238
|
return [state, setLocalStorageState];
|
|
13891
14239
|
}
|
|
13892
14240
|
|
|
14241
|
+
// ../noya-multiplayer-react/src/inspector/usePausedStream.ts
|
|
14242
|
+
var import_react56 = __toESM(require("react"));
|
|
14243
|
+
function usePausedStream(items) {
|
|
14244
|
+
const [paused, setPaused] = import_react56.default.useState(false);
|
|
14245
|
+
const [visibleItems, setVisibleItems] = import_react56.default.useState(items ?? []);
|
|
14246
|
+
const togglePaused = import_react56.default.useCallback(() => {
|
|
14247
|
+
setPaused((value) => {
|
|
14248
|
+
if (!value) {
|
|
14249
|
+
setVisibleItems(items ?? []);
|
|
14250
|
+
}
|
|
14251
|
+
return !value;
|
|
14252
|
+
});
|
|
14253
|
+
}, [items]);
|
|
14254
|
+
import_react56.default.useEffect(() => {
|
|
14255
|
+
if (paused) return;
|
|
14256
|
+
setVisibleItems(items ?? []);
|
|
14257
|
+
}, [items, paused]);
|
|
14258
|
+
return {
|
|
14259
|
+
paused,
|
|
14260
|
+
setPaused,
|
|
14261
|
+
togglePaused,
|
|
14262
|
+
visibleItems
|
|
14263
|
+
};
|
|
14264
|
+
}
|
|
14265
|
+
|
|
13893
14266
|
// ../noya-multiplayer-react/src/inspector/StateInspector.tsx
|
|
13894
14267
|
var StateInspector = memoGeneric(function StateInspector2({
|
|
13895
14268
|
noyaManager,
|
|
@@ -13910,18 +14283,20 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
13910
14283
|
ioManager,
|
|
13911
14284
|
resourceManager,
|
|
13912
14285
|
activityEventsManager,
|
|
13913
|
-
logManager
|
|
14286
|
+
logManager,
|
|
14287
|
+
gitManager
|
|
13914
14288
|
} = noyaManager;
|
|
13915
|
-
const [didMount, setDidMount] =
|
|
14289
|
+
const [didMount, setDidMount] = import_react57.default.useState(false);
|
|
13916
14290
|
const tasks = useObservable2(taskManager.tasks$);
|
|
13917
14291
|
const inputs = useObservable2(ioManager.inputs$);
|
|
13918
14292
|
const outputTransforms = useObservable2(ioManager.outputTransforms$);
|
|
13919
|
-
(0,
|
|
14293
|
+
(0, import_react57.useLayoutEffect)(() => {
|
|
13920
14294
|
setDidMount(true);
|
|
13921
14295
|
}, []);
|
|
13922
|
-
const eventsContainerRef =
|
|
13923
|
-
const activityEventsContainerRef =
|
|
13924
|
-
const serverLogsContainerRef =
|
|
14296
|
+
const eventsContainerRef = import_react57.default.useRef(null);
|
|
14297
|
+
const activityEventsContainerRef = import_react57.default.useRef(null);
|
|
14298
|
+
const serverLogsContainerRef = import_react57.default.useRef(null);
|
|
14299
|
+
const serverSimulationLogsContainerRef = import_react57.default.useRef(null);
|
|
13925
14300
|
const [showInspector, setShowInspector] = useLocalStorageState(
|
|
13926
14301
|
"noya-multiplayer-react-show-inspector",
|
|
13927
14302
|
true
|
|
@@ -13938,6 +14313,10 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
13938
14313
|
"noya-multiplayer-react-show-users",
|
|
13939
14314
|
true
|
|
13940
14315
|
);
|
|
14316
|
+
const [showUserDetails, setShowUserDetails] = useLocalStorageState(
|
|
14317
|
+
"noya-multiplayer-react-show-user-details",
|
|
14318
|
+
false
|
|
14319
|
+
);
|
|
13941
14320
|
const [showData, setShowData] = useLocalStorageState(
|
|
13942
14321
|
"noya-multiplayer-react-show-data",
|
|
13943
14322
|
true
|
|
@@ -13978,35 +14357,55 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
13978
14357
|
"noya-multiplayer-react-show-server-logs",
|
|
13979
14358
|
false
|
|
13980
14359
|
);
|
|
14360
|
+
const [showServerSimulationLogs, setShowServerSimulationLogs] = useLocalStorageState(
|
|
14361
|
+
"noya-multiplayer-react-show-server-simulation-logs",
|
|
14362
|
+
false
|
|
14363
|
+
);
|
|
14364
|
+
const [showGit, setShowGit] = useLocalStorageState(
|
|
14365
|
+
"noya-multiplayer-react-show-git",
|
|
14366
|
+
false
|
|
14367
|
+
);
|
|
14368
|
+
const [showSimulation, setShowSimulation] = useLocalStorageState(
|
|
14369
|
+
"noya-multiplayer-react-show-simulation",
|
|
14370
|
+
false
|
|
14371
|
+
);
|
|
13981
14372
|
const connectionEvents = useObservable2(connectionEventManager.events$);
|
|
13982
|
-
|
|
14373
|
+
const {
|
|
14374
|
+
visibleItems: visibleConnectionEvents,
|
|
14375
|
+
paused: connectionEventsPaused,
|
|
14376
|
+
togglePaused: toggleConnectionEventsPaused
|
|
14377
|
+
} = usePausedStream(connectionEvents);
|
|
14378
|
+
(0, import_react57.useEffect)(() => {
|
|
13983
14379
|
if (eventsContainerRef.current) {
|
|
13984
14380
|
eventsContainerRef.current.scrollTop = eventsContainerRef.current.scrollHeight;
|
|
13985
14381
|
}
|
|
13986
|
-
}, [
|
|
14382
|
+
}, [visibleConnectionEvents]);
|
|
13987
14383
|
const serverLogs = useObservable2(logManager.logs$);
|
|
13988
|
-
const
|
|
13989
|
-
|
|
13990
|
-
|
|
14384
|
+
const {
|
|
14385
|
+
visibleItems: visibleServerLogs,
|
|
14386
|
+
paused: serverLogsPaused,
|
|
14387
|
+
togglePaused: toggleServerLogsPaused
|
|
14388
|
+
} = usePausedStream(serverLogs);
|
|
14389
|
+
const serverSimulationLogs = useObservable2(
|
|
14390
|
+
multiplayerStateManager.serverSimulationLogs$
|
|
13991
14391
|
);
|
|
13992
|
-
const
|
|
13993
|
-
|
|
13994
|
-
|
|
13995
|
-
|
|
13996
|
-
|
|
13997
|
-
|
|
13998
|
-
});
|
|
13999
|
-
}, [serverLogs]);
|
|
14000
|
-
(0, import_react55.useEffect)(() => {
|
|
14001
|
-
if (serverLogsPaused) return;
|
|
14002
|
-
setVisibleServerLogs(serverLogs ?? []);
|
|
14003
|
-
}, [serverLogs, serverLogsPaused]);
|
|
14004
|
-
(0, import_react55.useEffect)(() => {
|
|
14392
|
+
const {
|
|
14393
|
+
visibleItems: visibleServerSimulationLogs,
|
|
14394
|
+
paused: serverSimulationLogsPaused,
|
|
14395
|
+
togglePaused: toggleServerSimulationLogsPaused
|
|
14396
|
+
} = usePausedStream(serverSimulationLogs);
|
|
14397
|
+
(0, import_react57.useEffect)(() => {
|
|
14005
14398
|
if (!showServerLogs) return;
|
|
14006
14399
|
if (serverLogsContainerRef.current) {
|
|
14007
14400
|
serverLogsContainerRef.current.scrollTop = serverLogsContainerRef.current.scrollHeight;
|
|
14008
14401
|
}
|
|
14009
14402
|
}, [showServerLogs, visibleServerLogs]);
|
|
14403
|
+
(0, import_react57.useEffect)(() => {
|
|
14404
|
+
if (!showServerSimulationLogs) return;
|
|
14405
|
+
if (serverSimulationLogsContainerRef.current) {
|
|
14406
|
+
serverSimulationLogsContainerRef.current.scrollTop = serverSimulationLogsContainerRef.current.scrollHeight;
|
|
14407
|
+
}
|
|
14408
|
+
}, [showServerSimulationLogs, visibleServerSimulationLogs]);
|
|
14010
14409
|
const multipeerStateInitialized = useObservable2(
|
|
14011
14410
|
multiplayerStateManager.isInitialized$
|
|
14012
14411
|
);
|
|
@@ -14018,8 +14417,10 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14018
14417
|
const assetsInitialized = useObservable2(assetManager.isInitialized$);
|
|
14019
14418
|
const secrets = useObservable2(secretManager.secrets$);
|
|
14020
14419
|
const secretsInitialized = useObservable2(secretManager.isInitialized$);
|
|
14021
|
-
const connectedUsers = useObservable2(userManager.
|
|
14420
|
+
const connectedUsers = useObservable2(userManager.allUsers$);
|
|
14022
14421
|
const connectionId = useObservable2(userManager.currentConnectionId$);
|
|
14422
|
+
const simulationDiagnostics = multiplayerStateManager.getServerSimulationDiagnostics?.() ?? null;
|
|
14423
|
+
const showSimulationLogsSection = (simulationDiagnostics?.simulateLocally ?? false) || visibleServerSimulationLogs.length > 0;
|
|
14023
14424
|
const state = useObservable2(multiplayerStateManager.optimisticState$);
|
|
14024
14425
|
const inputsInitialized = useObservable2(ioManager.inputsInitialized$);
|
|
14025
14426
|
const outputTransformsInitialized = useObservable2(
|
|
@@ -14046,11 +14447,11 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14046
14447
|
zIndex: 9999,
|
|
14047
14448
|
lineHeight: "13px"
|
|
14048
14449
|
};
|
|
14049
|
-
const handleExportAll = (0,
|
|
14450
|
+
const handleExportAll = (0, import_react57.useCallback)(async () => {
|
|
14050
14451
|
const buffer = await exportAll(noyaManager);
|
|
14051
14452
|
downloadBlob(new Blob([buffer]), "state.zip");
|
|
14052
14453
|
}, [noyaManager]);
|
|
14053
|
-
const handleImportAll = (0,
|
|
14454
|
+
const handleImportAll = (0, import_react57.useCallback)(async () => {
|
|
14054
14455
|
const file = await uploadFile();
|
|
14055
14456
|
const buffer = await file.arrayBuffer();
|
|
14056
14457
|
importAll(buffer, noyaManager, {
|
|
@@ -14063,7 +14464,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14063
14464
|
}, [noyaManager]);
|
|
14064
14465
|
if (!didMount) return null;
|
|
14065
14466
|
if (!showInspector) {
|
|
14066
|
-
return /* @__PURE__ */
|
|
14467
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
14067
14468
|
"div",
|
|
14068
14469
|
{
|
|
14069
14470
|
...props,
|
|
@@ -14075,7 +14476,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14075
14476
|
},
|
|
14076
14477
|
onClick: () => setShowInspector(true)
|
|
14077
14478
|
},
|
|
14078
|
-
/* @__PURE__ */
|
|
14479
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14079
14480
|
StateInspectorToggleButton,
|
|
14080
14481
|
{
|
|
14081
14482
|
showInspector,
|
|
@@ -14086,7 +14487,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14086
14487
|
)
|
|
14087
14488
|
);
|
|
14088
14489
|
}
|
|
14089
|
-
return /* @__PURE__ */
|
|
14490
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
14090
14491
|
"div",
|
|
14091
14492
|
{
|
|
14092
14493
|
...props,
|
|
@@ -14095,7 +14496,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14095
14496
|
...props.style
|
|
14096
14497
|
}
|
|
14097
14498
|
},
|
|
14098
|
-
/* @__PURE__ */
|
|
14499
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14099
14500
|
StateInspectorDisclosureSection,
|
|
14100
14501
|
{
|
|
14101
14502
|
isFirst: true,
|
|
@@ -14105,9 +14506,17 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14105
14506
|
colorScheme,
|
|
14106
14507
|
style: {
|
|
14107
14508
|
flex: "0 0 auto",
|
|
14108
|
-
maxHeight: "
|
|
14509
|
+
maxHeight: "50%",
|
|
14510
|
+
overflowY: "auto"
|
|
14109
14511
|
},
|
|
14110
|
-
right: /* @__PURE__ */
|
|
14512
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14513
|
+
StateInspectorButton,
|
|
14514
|
+
{
|
|
14515
|
+
theme: theme3,
|
|
14516
|
+
onClick: () => setShowUserDetails(!showUserDetails)
|
|
14517
|
+
},
|
|
14518
|
+
"Toggle details"
|
|
14519
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14111
14520
|
StateInspectorToggleButton,
|
|
14112
14521
|
{
|
|
14113
14522
|
showInspector,
|
|
@@ -14115,19 +14524,21 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14115
14524
|
theme: theme3,
|
|
14116
14525
|
anchor
|
|
14117
14526
|
}
|
|
14118
|
-
)
|
|
14527
|
+
))
|
|
14119
14528
|
},
|
|
14120
|
-
/* @__PURE__ */
|
|
14121
|
-
|
|
14122
|
-
return /* @__PURE__ */ import_react55.default.createElement(
|
|
14529
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, { style: { flex: "0 0 auto" } }, connectedUsers?.filter((user) => showUserDetails || !user.inactive).map((user, index, array) => {
|
|
14530
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
14123
14531
|
StateInspectorRow,
|
|
14124
14532
|
{
|
|
14125
14533
|
key: user.connectionId,
|
|
14126
14534
|
colorScheme,
|
|
14127
14535
|
variant: user.connectionId === connectionId ? "up" : void 0,
|
|
14128
|
-
bordered: index !== array.length - 1
|
|
14536
|
+
bordered: index !== array.length - 1,
|
|
14537
|
+
style: {
|
|
14538
|
+
opacity: user.inactive ? 0.5 : 1
|
|
14539
|
+
}
|
|
14129
14540
|
},
|
|
14130
|
-
user.image && /* @__PURE__ */
|
|
14541
|
+
user.image && /* @__PURE__ */ import_react57.default.createElement(
|
|
14131
14542
|
"img",
|
|
14132
14543
|
{
|
|
14133
14544
|
src: user.image,
|
|
@@ -14144,12 +14555,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14144
14555
|
}
|
|
14145
14556
|
}
|
|
14146
14557
|
),
|
|
14147
|
-
user.name
|
|
14148
|
-
" (",
|
|
14149
|
-
ellipsis(identifier, 8, "middle"),
|
|
14150
|
-
")"
|
|
14558
|
+
showUserDetails ? /* @__PURE__ */ import_react57.default.createElement(themedObjectInspector, { data: user, theme: theme3 }) : user.name
|
|
14151
14559
|
);
|
|
14152
|
-
}), !connectedUsers && /* @__PURE__ */
|
|
14560
|
+
}), !connectedUsers && /* @__PURE__ */ import_react57.default.createElement(
|
|
14153
14561
|
"div",
|
|
14154
14562
|
{
|
|
14155
14563
|
style: {
|
|
@@ -14160,13 +14568,13 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14160
14568
|
gap: "4px"
|
|
14161
14569
|
}
|
|
14162
14570
|
},
|
|
14163
|
-
/* @__PURE__ */
|
|
14571
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No connected users")
|
|
14164
14572
|
))
|
|
14165
14573
|
),
|
|
14166
|
-
/* @__PURE__ */
|
|
14574
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14167
14575
|
StateInspectorDisclosureSection,
|
|
14168
14576
|
{
|
|
14169
|
-
title: /* @__PURE__ */
|
|
14577
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Data", /* @__PURE__ */ import_react57.default.createElement(
|
|
14170
14578
|
ColoredDot,
|
|
14171
14579
|
{
|
|
14172
14580
|
type: multipeerStateInitialized ? "success" : "error"
|
|
@@ -14175,7 +14583,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14175
14583
|
colorScheme,
|
|
14176
14584
|
setOpen: setShowData,
|
|
14177
14585
|
open: showData,
|
|
14178
|
-
right: /* @__PURE__ */
|
|
14586
|
+
right: /* @__PURE__ */ import_react57.default.createElement(
|
|
14179
14587
|
"span",
|
|
14180
14588
|
{
|
|
14181
14589
|
style: {
|
|
@@ -14183,9 +14591,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14183
14591
|
gap: "12px"
|
|
14184
14592
|
}
|
|
14185
14593
|
},
|
|
14186
|
-
/* @__PURE__ */
|
|
14187
|
-
/* @__PURE__ */
|
|
14188
|
-
/* @__PURE__ */
|
|
14594
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorButton, { theme: theme3, onClick: handleImportAll }, "Import"),
|
|
14595
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorButton, { theme: theme3, onClick: handleExportAll }, "Export"),
|
|
14596
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14189
14597
|
StateInspectorButton,
|
|
14190
14598
|
{
|
|
14191
14599
|
theme: theme3,
|
|
@@ -14197,14 +14605,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14197
14605
|
)
|
|
14198
14606
|
)
|
|
14199
14607
|
},
|
|
14200
|
-
/* @__PURE__ */
|
|
14608
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14201
14609
|
themedObjectInspector,
|
|
14202
14610
|
{
|
|
14203
14611
|
name: multiplayerStateManager.schema ? "state" : void 0,
|
|
14204
14612
|
data: state,
|
|
14205
14613
|
theme: theme3
|
|
14206
14614
|
}
|
|
14207
|
-
)), multiplayerStateManager.schema && /* @__PURE__ */
|
|
14615
|
+
)), multiplayerStateManager.schema && /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14208
14616
|
themedObjectInspector,
|
|
14209
14617
|
{
|
|
14210
14618
|
name: "schema",
|
|
@@ -14213,7 +14621,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14213
14621
|
}
|
|
14214
14622
|
)))
|
|
14215
14623
|
),
|
|
14216
|
-
/* @__PURE__ */
|
|
14624
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14217
14625
|
HistorySection,
|
|
14218
14626
|
{
|
|
14219
14627
|
showHistory,
|
|
@@ -14223,14 +14631,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14223
14631
|
multiplayerStateManager
|
|
14224
14632
|
}
|
|
14225
14633
|
),
|
|
14226
|
-
/* @__PURE__ */
|
|
14634
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14227
14635
|
StateInspectorDisclosureSection,
|
|
14228
14636
|
{
|
|
14229
14637
|
open: showAssets,
|
|
14230
14638
|
setOpen: setShowAssets,
|
|
14231
|
-
title: /* @__PURE__ */
|
|
14639
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Assets (", assets.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: assetsInitialized ? "success" : "error" })),
|
|
14232
14640
|
colorScheme,
|
|
14233
|
-
right: /* @__PURE__ */
|
|
14641
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14234
14642
|
StateInspectorButton,
|
|
14235
14643
|
{
|
|
14236
14644
|
theme: theme3,
|
|
@@ -14245,7 +14653,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14245
14653
|
}
|
|
14246
14654
|
},
|
|
14247
14655
|
"Delete all"
|
|
14248
|
-
), /* @__PURE__ */
|
|
14656
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14249
14657
|
StateInspectorButton,
|
|
14250
14658
|
{
|
|
14251
14659
|
theme: theme3,
|
|
@@ -14258,54 +14666,69 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14258
14666
|
}
|
|
14259
14667
|
},
|
|
14260
14668
|
"Reload"
|
|
14261
|
-
), /* @__PURE__ */
|
|
14669
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14262
14670
|
StateInspectorButton,
|
|
14263
14671
|
{
|
|
14264
14672
|
theme: theme3,
|
|
14265
|
-
onClick: () => {
|
|
14266
|
-
const
|
|
14267
|
-
|
|
14268
|
-
input.onchange = () => {
|
|
14269
|
-
const file = input.files?.[0];
|
|
14270
|
-
if (file) {
|
|
14271
|
-
const reader = new FileReader();
|
|
14272
|
-
reader.onload = () => {
|
|
14273
|
-
const buffer = reader.result;
|
|
14274
|
-
assetManager.create(new Uint8Array(buffer));
|
|
14275
|
-
};
|
|
14276
|
-
reader.readAsArrayBuffer(file);
|
|
14277
|
-
}
|
|
14278
|
-
};
|
|
14279
|
-
input.click();
|
|
14673
|
+
onClick: async () => {
|
|
14674
|
+
const file = await uploadFile();
|
|
14675
|
+
assetManager.create(file);
|
|
14280
14676
|
}
|
|
14281
14677
|
},
|
|
14282
14678
|
"Upload"
|
|
14679
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14680
|
+
StateInspectorButton,
|
|
14681
|
+
{
|
|
14682
|
+
theme: theme3,
|
|
14683
|
+
onClick: async () => {
|
|
14684
|
+
const file = await uploadFile();
|
|
14685
|
+
assetManager.create({
|
|
14686
|
+
data: new Uint8Array(await file.arrayBuffer()),
|
|
14687
|
+
contentType: file.type,
|
|
14688
|
+
mode: "mutable"
|
|
14689
|
+
});
|
|
14690
|
+
}
|
|
14691
|
+
},
|
|
14692
|
+
"Upload Mutable"
|
|
14283
14693
|
))
|
|
14284
14694
|
},
|
|
14285
|
-
/* @__PURE__ */
|
|
14695
|
+
/* @__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(
|
|
14286
14696
|
themedObjectInspector,
|
|
14287
14697
|
{
|
|
14288
14698
|
name: asset.id,
|
|
14289
14699
|
data: truncateAsset(asset),
|
|
14290
14700
|
theme: theme3
|
|
14291
14701
|
}
|
|
14292
|
-
), /* @__PURE__ */
|
|
14702
|
+
), /* @__PURE__ */ import_react57.default.createElement("div", { style: { display: "flex", gap: "4px" } }, asset.mode === "mutable" && /* @__PURE__ */ import_react57.default.createElement(
|
|
14703
|
+
StateInspectorButton,
|
|
14704
|
+
{
|
|
14705
|
+
theme: theme3,
|
|
14706
|
+
onClick: async () => {
|
|
14707
|
+
const file = await uploadFile();
|
|
14708
|
+
assetManager.update(asset.id, {
|
|
14709
|
+
data: new Uint8Array(await file.arrayBuffer()),
|
|
14710
|
+
contentType: file.type
|
|
14711
|
+
});
|
|
14712
|
+
}
|
|
14713
|
+
},
|
|
14714
|
+
"Replace"
|
|
14715
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14293
14716
|
StateInspectorButton,
|
|
14294
14717
|
{
|
|
14295
14718
|
theme: theme3,
|
|
14296
14719
|
onClick: () => assetManager.delete(asset.id)
|
|
14297
14720
|
},
|
|
14298
14721
|
"Delete"
|
|
14299
|
-
))))
|
|
14722
|
+
)))))
|
|
14300
14723
|
),
|
|
14301
|
-
advanced && /* @__PURE__ */
|
|
14724
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14302
14725
|
StateInspectorDisclosureSection,
|
|
14303
14726
|
{
|
|
14304
|
-
title: /* @__PURE__ */
|
|
14727
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Resources (", resources.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: resourcesInitialized ? "success" : "error" })),
|
|
14305
14728
|
colorScheme,
|
|
14306
14729
|
open: showResources,
|
|
14307
14730
|
setOpen: setShowResources,
|
|
14308
|
-
right: /* @__PURE__ */
|
|
14731
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14309
14732
|
StateInspectorButton,
|
|
14310
14733
|
{
|
|
14311
14734
|
theme: theme3,
|
|
@@ -14320,12 +14743,12 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14320
14743
|
}
|
|
14321
14744
|
},
|
|
14322
14745
|
"Delete all"
|
|
14323
|
-
), /* @__PURE__ */
|
|
14746
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14324
14747
|
StateInspectorButton,
|
|
14325
14748
|
{
|
|
14326
14749
|
theme: theme3,
|
|
14327
14750
|
onClick: async () => {
|
|
14328
|
-
const path2 = prompt("Enter directory path") || (0,
|
|
14751
|
+
const path2 = prompt("Enter directory path") || (0, import_noya_utils23.uuid)();
|
|
14329
14752
|
await resourceManager.createResource({
|
|
14330
14753
|
type: "directory",
|
|
14331
14754
|
path: path2
|
|
@@ -14333,7 +14756,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14333
14756
|
}
|
|
14334
14757
|
},
|
|
14335
14758
|
"Create Directory"
|
|
14336
|
-
), /* @__PURE__ */
|
|
14759
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14337
14760
|
StateInspectorButton,
|
|
14338
14761
|
{
|
|
14339
14762
|
theme: theme3,
|
|
@@ -14341,9 +14764,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14341
14764
|
const file = await uploadFile();
|
|
14342
14765
|
resourceManager.createResource({
|
|
14343
14766
|
type: "asset",
|
|
14344
|
-
path: file.name || (0,
|
|
14767
|
+
path: file.name || (0, import_noya_utils23.uuid)(),
|
|
14345
14768
|
asset: {
|
|
14346
|
-
content:
|
|
14769
|
+
content: import_noya_utils23.Base64.encode(await file.arrayBuffer()),
|
|
14347
14770
|
contentType: file.type,
|
|
14348
14771
|
encoding: "base64"
|
|
14349
14772
|
}
|
|
@@ -14353,21 +14776,21 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14353
14776
|
"Create Asset"
|
|
14354
14777
|
))
|
|
14355
14778
|
},
|
|
14356
|
-
/* @__PURE__ */
|
|
14779
|
+
/* @__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(
|
|
14357
14780
|
themedObjectInspector,
|
|
14358
14781
|
{
|
|
14359
14782
|
name: resource.path,
|
|
14360
14783
|
data: resource,
|
|
14361
14784
|
theme: theme3
|
|
14362
14785
|
}
|
|
14363
|
-
), /* @__PURE__ */
|
|
14786
|
+
), /* @__PURE__ */ import_react57.default.createElement("div", { style: { display: "flex", gap: "4px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14364
14787
|
StateInspectorButton,
|
|
14365
14788
|
{
|
|
14366
14789
|
theme: theme3,
|
|
14367
14790
|
onClick: () => resourceManager.deleteResource({ id: resource.id })
|
|
14368
14791
|
},
|
|
14369
14792
|
"Delete"
|
|
14370
|
-
), /* @__PURE__ */
|
|
14793
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14371
14794
|
StateInspectorButton,
|
|
14372
14795
|
{
|
|
14373
14796
|
theme: theme3,
|
|
@@ -14380,14 +14803,23 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14380
14803
|
"Rename"
|
|
14381
14804
|
)))))
|
|
14382
14805
|
),
|
|
14383
|
-
advanced && /* @__PURE__ */
|
|
14806
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14384
14807
|
StateInspectorDisclosureSection,
|
|
14385
14808
|
{
|
|
14386
|
-
title: /* @__PURE__ */
|
|
14809
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Secrets (", secrets.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: secretsInitialized ? "success" : "error" })),
|
|
14387
14810
|
colorScheme,
|
|
14388
14811
|
open: showSecrets,
|
|
14389
14812
|
setOpen: setShowSecrets,
|
|
14390
|
-
right: /* @__PURE__ */
|
|
14813
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14814
|
+
StateInspectorButton,
|
|
14815
|
+
{
|
|
14816
|
+
theme: theme3,
|
|
14817
|
+
onClick: () => {
|
|
14818
|
+
void secretManager.fetchSecrets();
|
|
14819
|
+
}
|
|
14820
|
+
},
|
|
14821
|
+
"Refresh"
|
|
14822
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14391
14823
|
StateInspectorButton,
|
|
14392
14824
|
{
|
|
14393
14825
|
theme: theme3,
|
|
@@ -14400,9 +14832,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14400
14832
|
}
|
|
14401
14833
|
},
|
|
14402
14834
|
"Create"
|
|
14403
|
-
)
|
|
14835
|
+
))
|
|
14404
14836
|
},
|
|
14405
|
-
/* @__PURE__ */
|
|
14837
|
+
/* @__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(
|
|
14406
14838
|
StateInspectorButton,
|
|
14407
14839
|
{
|
|
14408
14840
|
theme: theme3,
|
|
@@ -14411,15 +14843,24 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14411
14843
|
"Delete"
|
|
14412
14844
|
))))
|
|
14413
14845
|
),
|
|
14414
|
-
advanced && /* @__PURE__ */
|
|
14846
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14847
|
+
GitSection,
|
|
14848
|
+
{
|
|
14849
|
+
showGit,
|
|
14850
|
+
setShowGit,
|
|
14851
|
+
colorScheme,
|
|
14852
|
+
gitManager
|
|
14853
|
+
}
|
|
14854
|
+
),
|
|
14855
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14415
14856
|
StateInspectorDisclosureSection,
|
|
14416
14857
|
{
|
|
14417
14858
|
open: showInputs,
|
|
14418
14859
|
setOpen: setShowInputs,
|
|
14419
|
-
title: /* @__PURE__ */
|
|
14860
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Inputs (", inputs.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: inputsInitialized ? "success" : "error" })),
|
|
14420
14861
|
colorScheme
|
|
14421
14862
|
},
|
|
14422
|
-
/* @__PURE__ */
|
|
14863
|
+
/* @__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(
|
|
14423
14864
|
"div",
|
|
14424
14865
|
{
|
|
14425
14866
|
style: {
|
|
@@ -14430,15 +14871,15 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14430
14871
|
gap: "4px"
|
|
14431
14872
|
}
|
|
14432
14873
|
},
|
|
14433
|
-
/* @__PURE__ */
|
|
14874
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No inputs")
|
|
14434
14875
|
))
|
|
14435
14876
|
),
|
|
14436
|
-
advanced && /* @__PURE__ */
|
|
14877
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14437
14878
|
StateInspectorDisclosureSection,
|
|
14438
14879
|
{
|
|
14439
14880
|
open: showOutputTransforms,
|
|
14440
14881
|
setOpen: setShowOutputTransforms,
|
|
14441
|
-
title: /* @__PURE__ */
|
|
14882
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Output Transforms (", outputTransforms.length, ")", /* @__PURE__ */ import_react57.default.createElement(
|
|
14442
14883
|
ColoredDot,
|
|
14443
14884
|
{
|
|
14444
14885
|
type: outputTransformsInitialized ? "success" : "error"
|
|
@@ -14446,7 +14887,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14446
14887
|
)),
|
|
14447
14888
|
colorScheme
|
|
14448
14889
|
},
|
|
14449
|
-
/* @__PURE__ */
|
|
14890
|
+
/* @__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(
|
|
14450
14891
|
"div",
|
|
14451
14892
|
{
|
|
14452
14893
|
style: {
|
|
@@ -14457,10 +14898,10 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14457
14898
|
gap: "4px"
|
|
14458
14899
|
}
|
|
14459
14900
|
},
|
|
14460
|
-
/* @__PURE__ */
|
|
14901
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No output transforms")
|
|
14461
14902
|
))
|
|
14462
14903
|
),
|
|
14463
|
-
advanced && /* @__PURE__ */
|
|
14904
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14464
14905
|
StateInspectorDisclosureSection,
|
|
14465
14906
|
{
|
|
14466
14907
|
title: "Tasks",
|
|
@@ -14468,7 +14909,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14468
14909
|
open: showTasks,
|
|
14469
14910
|
setOpen: setShowTasks
|
|
14470
14911
|
},
|
|
14471
|
-
/* @__PURE__ */
|
|
14912
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, tasks?.map((task) => /* @__PURE__ */ import_react57.default.createElement(
|
|
14472
14913
|
StateInspectorRow,
|
|
14473
14914
|
{
|
|
14474
14915
|
key: task.id,
|
|
@@ -14477,7 +14918,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14477
14918
|
backgroundColor: task.status === "done" ? "rgba(0,255,0,0.2)" : task.status === "error" ? "rgba(255,0,0,0.2)" : void 0
|
|
14478
14919
|
}
|
|
14479
14920
|
},
|
|
14480
|
-
/* @__PURE__ */
|
|
14921
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14481
14922
|
themedObjectInspector,
|
|
14482
14923
|
{
|
|
14483
14924
|
name: task.name,
|
|
@@ -14487,7 +14928,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14487
14928
|
)
|
|
14488
14929
|
)))
|
|
14489
14930
|
),
|
|
14490
|
-
/* @__PURE__ */
|
|
14931
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14491
14932
|
StateInspectorDisclosureSection,
|
|
14492
14933
|
{
|
|
14493
14934
|
open: showShared,
|
|
@@ -14495,7 +14936,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14495
14936
|
title: "Shared Connection Data",
|
|
14496
14937
|
colorScheme
|
|
14497
14938
|
},
|
|
14498
|
-
/* @__PURE__ */
|
|
14939
|
+
/* @__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(
|
|
14499
14940
|
themedObjectInspector,
|
|
14500
14941
|
{
|
|
14501
14942
|
name: key,
|
|
@@ -14505,7 +14946,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14505
14946
|
}
|
|
14506
14947
|
))))
|
|
14507
14948
|
),
|
|
14508
|
-
/* @__PURE__ */
|
|
14949
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14509
14950
|
ServerScriptLogsSection,
|
|
14510
14951
|
{
|
|
14511
14952
|
colorScheme,
|
|
@@ -14517,7 +14958,44 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14517
14958
|
containerRef: serverLogsContainerRef
|
|
14518
14959
|
}
|
|
14519
14960
|
),
|
|
14520
|
-
|
|
14961
|
+
showSimulationLogsSection && /* @__PURE__ */ import_react57.default.createElement(
|
|
14962
|
+
ServerScriptLogsSection,
|
|
14963
|
+
{
|
|
14964
|
+
title: "Server Script Simulation Logs",
|
|
14965
|
+
colorScheme,
|
|
14966
|
+
showLogs: showServerSimulationLogs,
|
|
14967
|
+
setShowLogs: setShowServerSimulationLogs,
|
|
14968
|
+
logs: visibleServerSimulationLogs,
|
|
14969
|
+
paused: serverSimulationLogsPaused,
|
|
14970
|
+
onTogglePaused: toggleServerSimulationLogsPaused,
|
|
14971
|
+
containerRef: serverSimulationLogsContainerRef
|
|
14972
|
+
}
|
|
14973
|
+
),
|
|
14974
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14975
|
+
StateInspectorDisclosureSection,
|
|
14976
|
+
{
|
|
14977
|
+
open: showSimulation,
|
|
14978
|
+
setOpen: setShowSimulation,
|
|
14979
|
+
title: "Server Simulation",
|
|
14980
|
+
colorScheme
|
|
14981
|
+
},
|
|
14982
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14983
|
+
themedObjectInspector,
|
|
14984
|
+
{
|
|
14985
|
+
name: "status",
|
|
14986
|
+
data: simulationDiagnostics ?? {
|
|
14987
|
+
simulateLocally: false,
|
|
14988
|
+
simulatorActive: false,
|
|
14989
|
+
clockSkewMs: 0,
|
|
14990
|
+
invocations: [],
|
|
14991
|
+
pendingPredictions: []
|
|
14992
|
+
},
|
|
14993
|
+
theme: theme3,
|
|
14994
|
+
expandLevel: 2
|
|
14995
|
+
}
|
|
14996
|
+
)))
|
|
14997
|
+
),
|
|
14998
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14521
14999
|
ActivityEventsSection,
|
|
14522
15000
|
{
|
|
14523
15001
|
colorScheme,
|
|
@@ -14527,10 +15005,12 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14527
15005
|
activityEventsManager
|
|
14528
15006
|
}
|
|
14529
15007
|
),
|
|
14530
|
-
/* @__PURE__ */
|
|
15008
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14531
15009
|
EventsSection,
|
|
14532
15010
|
{
|
|
14533
|
-
connectionEvents,
|
|
15011
|
+
connectionEvents: visibleConnectionEvents,
|
|
15012
|
+
paused: connectionEventsPaused,
|
|
15013
|
+
onTogglePaused: toggleConnectionEventsPaused,
|
|
14534
15014
|
colorScheme,
|
|
14535
15015
|
eventsContainerRef,
|
|
14536
15016
|
showEvents,
|
|
@@ -14539,7 +15019,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14539
15019
|
)
|
|
14540
15020
|
);
|
|
14541
15021
|
});
|
|
14542
|
-
var truncateAsset = (0,
|
|
15022
|
+
var truncateAsset = (0, import_noya_utils23.memoize)((asset) => {
|
|
14543
15023
|
if (asset.url.startsWith("data:") || asset.url.startsWith("blob:")) {
|
|
14544
15024
|
return { ...asset, url: ellipsis(asset.url, 40) };
|
|
14545
15025
|
}
|
|
@@ -14548,7 +15028,7 @@ var truncateAsset = (0, import_noya_utils24.memoize)((asset) => {
|
|
|
14548
15028
|
|
|
14549
15029
|
// ../noya-multiplayer-react/src/hooks.ts
|
|
14550
15030
|
function useManagedHistory(stateManager) {
|
|
14551
|
-
return (0,
|
|
15031
|
+
return (0, import_react59.useSyncExternalStore)(
|
|
14552
15032
|
stateManager.historyEmittor.addListener,
|
|
14553
15033
|
stateManager.getHistorySnapshot,
|
|
14554
15034
|
stateManager.getHistorySnapshot
|
|
@@ -14556,15 +15036,15 @@ function useManagedHistory(stateManager) {
|
|
|
14556
15036
|
}
|
|
14557
15037
|
|
|
14558
15038
|
// ../noya-multiplayer-react/src/singleton.tsx
|
|
14559
|
-
var
|
|
15039
|
+
var import_react61 = __toESM(require("react"));
|
|
14560
15040
|
|
|
14561
15041
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
14562
|
-
var AnyNoyaStateContext = (0,
|
|
15042
|
+
var AnyNoyaStateContext = (0, import_react62.createContext)(void 0);
|
|
14563
15043
|
var emptyArray = [];
|
|
14564
15044
|
function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
14565
|
-
const [streamId, setStreamId] = (0,
|
|
15045
|
+
const [streamId, setStreamId] = (0, import_react62.useState)(void 0);
|
|
14566
15046
|
const stableStreamFilter = useJsonMemo(streamFilter);
|
|
14567
|
-
(0,
|
|
15047
|
+
(0, import_react62.useEffect)(() => {
|
|
14568
15048
|
if (!stableStreamFilter) return;
|
|
14569
15049
|
const streamId2 = activityEventsManager.subscribe(stableStreamFilter);
|
|
14570
15050
|
setStreamId(streamId2);
|
|
@@ -14578,8 +15058,8 @@ function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
|
14578
15058
|
}
|
|
14579
15059
|
|
|
14580
15060
|
// ../noya-multiplayer-react/src/components/UserPointersOverlay.tsx
|
|
14581
|
-
var
|
|
14582
|
-
var
|
|
15061
|
+
var import_observable25 = require("@noya-app/observable");
|
|
15062
|
+
var import_react64 = __toESM(require("react"));
|
|
14583
15063
|
function shouldShow(hideAfter, updatedAt) {
|
|
14584
15064
|
return !!updatedAt && Date.now() - updatedAt < hideAfter;
|
|
14585
15065
|
}
|
|
@@ -14589,18 +15069,18 @@ var UserPointerInternal = memoGeneric(function UserPointerInternal2({
|
|
|
14589
15069
|
hideAfter = 5e3,
|
|
14590
15070
|
renderUserPointer
|
|
14591
15071
|
}) {
|
|
14592
|
-
const observable = (0,
|
|
15072
|
+
const observable = (0, import_react64.useMemo)(() => {
|
|
14593
15073
|
const metadata$ = sharedConnectionDataManager.metadata$.observePath([user.connectionId]).throttle(50);
|
|
14594
15074
|
const data$ = sharedConnectionDataManager.data$.observePath([user.connectionId]).throttle(50);
|
|
14595
|
-
return
|
|
15075
|
+
return import_observable25.Observable.combine([metadata$, data$], ([metadata2, data2]) => {
|
|
14596
15076
|
return { metadata: metadata2, data: data2 };
|
|
14597
15077
|
});
|
|
14598
15078
|
}, [sharedConnectionDataManager, user.connectionId]);
|
|
14599
15079
|
const { metadata, data } = useObservable2(observable);
|
|
14600
|
-
const [, setForceUpdate] = (0,
|
|
15080
|
+
const [, setForceUpdate] = (0, import_react64.useState)(0);
|
|
14601
15081
|
const updatedAt = metadata?.updatedAt ?? 0;
|
|
14602
15082
|
const show = shouldShow(hideAfter, updatedAt);
|
|
14603
|
-
(0,
|
|
15083
|
+
(0, import_react64.useEffect)(() => {
|
|
14604
15084
|
if (!show) return;
|
|
14605
15085
|
const timeoutId = setTimeout(() => {
|
|
14606
15086
|
setForceUpdate((prev) => prev + 1);
|
|
@@ -14624,9 +15104,9 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
14624
15104
|
sharedConnectionDataManager.currentConnectionId$
|
|
14625
15105
|
);
|
|
14626
15106
|
const connectedUsers = useObservable2(userManager.connectedUsers$);
|
|
14627
|
-
return /* @__PURE__ */
|
|
15107
|
+
return /* @__PURE__ */ import_react64.default.createElement(import_react64.default.Fragment, null, connectedUsers.map((user) => {
|
|
14628
15108
|
if (user.connectionId === currentConnectionId) return null;
|
|
14629
|
-
return /* @__PURE__ */
|
|
15109
|
+
return /* @__PURE__ */ import_react64.default.createElement(
|
|
14630
15110
|
UserPointerInternal,
|
|
14631
15111
|
{
|
|
14632
15112
|
key: user.connectionId,
|
|
@@ -14640,15 +15120,15 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
14640
15120
|
|
|
14641
15121
|
// src/react/tableHooks.ts
|
|
14642
15122
|
var import_observable_store = require("@noya-app/observable-store");
|
|
14643
|
-
var
|
|
15123
|
+
var import_react65 = require("react");
|
|
14644
15124
|
function useTable(table, {
|
|
14645
15125
|
where,
|
|
14646
15126
|
select
|
|
14647
15127
|
}, options = {}) {
|
|
14648
|
-
const stableSelect = (0,
|
|
15128
|
+
const stableSelect = (0, import_react65.useMemo)(() => {
|
|
14649
15129
|
return JSON.stringify(select);
|
|
14650
15130
|
}, [select]);
|
|
14651
|
-
const stableWhere = (0,
|
|
15131
|
+
const stableWhere = (0, import_react65.useMemo)(() => {
|
|
14652
15132
|
let cloneWithNoUndefined = {};
|
|
14653
15133
|
for (const [key, value] of Object.entries(where ?? {})) {
|
|
14654
15134
|
if (value !== void 0) {
|
|
@@ -14657,7 +15137,7 @@ function useTable(table, {
|
|
|
14657
15137
|
}
|
|
14658
15138
|
return JSON.stringify(cloneWithNoUndefined);
|
|
14659
15139
|
}, [where]);
|
|
14660
|
-
const observable = (0,
|
|
15140
|
+
const observable = (0, import_react65.useMemo)(() => {
|
|
14661
15141
|
const parsedSelect = JSON.parse(stableSelect);
|
|
14662
15142
|
const parsedWhere = JSON.parse(stableWhere);
|
|
14663
15143
|
if (!table) {
|
|
@@ -14684,18 +15164,18 @@ function useTable(table, {
|
|
|
14684
15164
|
}
|
|
14685
15165
|
);
|
|
14686
15166
|
}, [stableSelect, stableWhere, table, options.policy, options.debug]);
|
|
14687
|
-
(0,
|
|
15167
|
+
(0, import_react65.useEffect)(() => {
|
|
14688
15168
|
observable.start?.();
|
|
14689
15169
|
}, [observable]);
|
|
14690
15170
|
const { status, data } = useObservable2(observable);
|
|
14691
|
-
const optimisticUpdate = (0,
|
|
15171
|
+
const optimisticUpdate = (0, import_react65.useCallback)(
|
|
14692
15172
|
(entity, config) => {
|
|
14693
15173
|
if (!table) return;
|
|
14694
15174
|
table.optimisticUpdate(entity, config);
|
|
14695
15175
|
},
|
|
14696
15176
|
[table]
|
|
14697
15177
|
);
|
|
14698
|
-
return (0,
|
|
15178
|
+
return (0, import_react65.useMemo)(() => {
|
|
14699
15179
|
return {
|
|
14700
15180
|
status,
|
|
14701
15181
|
data,
|
|
@@ -14725,7 +15205,7 @@ function useFileListItem(id, select, options = {}) {
|
|
|
14725
15205
|
{ where: { id: id ?? null }, select },
|
|
14726
15206
|
options
|
|
14727
15207
|
);
|
|
14728
|
-
return (0,
|
|
15208
|
+
return (0, import_react65.useMemo)(() => {
|
|
14729
15209
|
return {
|
|
14730
15210
|
data: data.at(0),
|
|
14731
15211
|
status,
|
|
@@ -14755,7 +15235,7 @@ function useUser(id, select, options = {}) {
|
|
|
14755
15235
|
{ select, where: { id: id ?? null } },
|
|
14756
15236
|
options
|
|
14757
15237
|
);
|
|
14758
|
-
return (0,
|
|
15238
|
+
return (0, import_react65.useMemo)(() => {
|
|
14759
15239
|
return {
|
|
14760
15240
|
status,
|
|
14761
15241
|
data: data.at(0),
|
|
@@ -14784,11 +15264,6 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
14784
15264
|
useActivityEventsList,
|
|
14785
15265
|
useFileList,
|
|
14786
15266
|
useFileListItem,
|
|
14787
|
-
useGeneratedComponentDescription,
|
|
14788
|
-
useGeneratedComponentDescriptions,
|
|
14789
|
-
useGeneratedComponentNames,
|
|
14790
|
-
useGeneratedPageComponentNames,
|
|
14791
|
-
useGeneratedPageNames,
|
|
14792
15267
|
useIsBeta,
|
|
14793
15268
|
useMetadata,
|
|
14794
15269
|
useNetworkRequests,
|
|
@@ -14820,8 +15295,6 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
14820
15295
|
useOptionalNoyaTags,
|
|
14821
15296
|
useOptionalNoyaTools,
|
|
14822
15297
|
useOptionalNoyaUserData,
|
|
14823
|
-
useRandomIcons,
|
|
14824
|
-
useRandomImages,
|
|
14825
15298
|
useResourcesList,
|
|
14826
15299
|
useTable,
|
|
14827
15300
|
useUser,
|