@noya-app/noya-api-client-react 0.1.45 → 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 +8 -0
- package/dist/index.d.mts +14 -54
- package/dist/index.d.ts +14 -54
- package/dist/index.js +835 -484
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +766 -408
- 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_utils9 = 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,62 +10326,171 @@ 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
|
|
|
10529
10332
|
// ../state-manager/src/serverScripts.ts
|
|
10530
|
-
var
|
|
10333
|
+
var import_noya_utils6 = require("@noya-app/noya-utils");
|
|
10531
10334
|
|
|
10532
10335
|
// ../state-manager/src/stateManager.ts
|
|
10533
|
-
var
|
|
10336
|
+
var import_observable7 = require("@noya-app/observable");
|
|
10534
10337
|
|
|
10535
10338
|
// ../state-manager/src/multiplayer.ts
|
|
10536
|
-
var createHash = (value, options) => (0,
|
|
10339
|
+
var createHash = (value, options) => (0, import_noya_utils7.hash)(value, { ...options, ignoreUndefinedProperties: true });
|
|
10537
10340
|
|
|
10538
|
-
// ../state-manager/src/
|
|
10539
|
-
var
|
|
10540
|
-
var import_observable22 = require("@noya-app/observable");
|
|
10341
|
+
// ../state-manager/src/GitManager.ts
|
|
10342
|
+
var import_observable9 = require("@noya-app/observable");
|
|
10541
10343
|
|
|
10542
|
-
// ../
|
|
10543
|
-
var
|
|
10344
|
+
// ../state-manager/src/IOManager.ts
|
|
10345
|
+
var import_observable10 = require("@noya-app/observable");
|
|
10544
10346
|
|
|
10545
|
-
// ../
|
|
10546
|
-
|
|
10547
|
-
|
|
10548
|
-
|
|
10549
|
-
|
|
10550
|
-
|
|
10551
|
-
|
|
10552
|
-
|
|
10553
|
-
|
|
10554
|
-
|
|
10555
|
-
|
|
10556
|
-
|
|
10557
|
-
|
|
10558
|
-
location: Type.Union([Type.Literal("state"), Type.Literal("url")]),
|
|
10559
|
-
value: Type.String()
|
|
10560
|
-
}),
|
|
10561
|
-
Type.Object({
|
|
10562
|
-
id: Type.String({ format: "uuid", default: "" }),
|
|
10563
|
-
type: Type.Literal("jsonPointer"),
|
|
10564
|
-
value: Type.String()
|
|
10565
|
-
})
|
|
10566
|
-
],
|
|
10567
|
-
{
|
|
10568
|
-
discriminator: "type"
|
|
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;
|
|
10569
10360
|
}
|
|
10570
|
-
);
|
|
10571
|
-
|
|
10572
|
-
|
|
10573
|
-
|
|
10361
|
+
return atob(str);
|
|
10362
|
+
}
|
|
10363
|
+
var HEADER = {
|
|
10364
|
+
alg: "HS256",
|
|
10365
|
+
typ: "JWT"
|
|
10574
10366
|
};
|
|
10575
|
-
var
|
|
10576
|
-
|
|
10577
|
-
|
|
10578
|
-
|
|
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);
|
|
10579
10405
|
}
|
|
10580
|
-
);
|
|
10581
|
-
|
|
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
|
+
);
|
|
10493
|
+
var fileBlockSchema = Type.Object({
|
|
10582
10494
|
...baseBlockProperties,
|
|
10583
10495
|
type: Type.Literal("file"),
|
|
10584
10496
|
fileId: Type.Optional(Type.String()),
|
|
@@ -10642,41 +10554,41 @@ var pipelineSchema = Type.Object(
|
|
|
10642
10554
|
);
|
|
10643
10555
|
|
|
10644
10556
|
// ../state-manager/src/PipelineManager.ts
|
|
10645
|
-
var
|
|
10557
|
+
var import_observable13 = require("@noya-app/observable");
|
|
10646
10558
|
|
|
10647
10559
|
// ../state-manager/src/PublishingManager.ts
|
|
10648
|
-
var
|
|
10560
|
+
var import_observable14 = require("@noya-app/observable");
|
|
10649
10561
|
|
|
10650
10562
|
// ../state-manager/src/ResourceManager.ts
|
|
10651
|
-
var
|
|
10652
|
-
var
|
|
10563
|
+
var import_noya_utils10 = require("@noya-app/noya-utils");
|
|
10564
|
+
var import_observable15 = require("@noya-app/observable");
|
|
10653
10565
|
|
|
10654
10566
|
// ../state-manager/src/SandboxManager.ts
|
|
10655
|
-
var
|
|
10567
|
+
var import_observable16 = require("@noya-app/observable");
|
|
10656
10568
|
|
|
10657
10569
|
// ../state-manager/src/rpcManager.ts
|
|
10658
|
-
var
|
|
10659
|
-
var
|
|
10570
|
+
var import_noya_utils11 = require("@noya-app/noya-utils");
|
|
10571
|
+
var import_observable17 = require("@noya-app/observable");
|
|
10660
10572
|
|
|
10661
10573
|
// ../state-manager/src/SecretManager.ts
|
|
10662
|
-
var
|
|
10574
|
+
var import_observable18 = require("@noya-app/observable");
|
|
10663
10575
|
|
|
10664
10576
|
// ../state-manager/src/TaskManager.ts
|
|
10665
|
-
var
|
|
10577
|
+
var import_observable19 = require("@noya-app/observable");
|
|
10666
10578
|
|
|
10667
10579
|
// ../state-manager/src/TranscriptionManager.ts
|
|
10668
|
-
var
|
|
10669
|
-
var
|
|
10580
|
+
var import_noya_utils12 = require("@noya-app/noya-utils");
|
|
10581
|
+
var import_observable20 = require("@noya-app/observable");
|
|
10670
10582
|
|
|
10671
10583
|
// ../state-manager/src/UserManager.ts
|
|
10672
|
-
var
|
|
10584
|
+
var import_observable22 = require("@noya-app/observable");
|
|
10673
10585
|
|
|
10674
10586
|
// ../state-manager/src/sync/clientId.ts
|
|
10675
|
-
var
|
|
10676
|
-
var
|
|
10587
|
+
var import_noya_utils14 = require("@noya-app/noya-utils");
|
|
10588
|
+
var import_observable21 = require("@noya-app/observable");
|
|
10677
10589
|
|
|
10678
10590
|
// ../state-manager/src/sync/defaultNames.ts
|
|
10679
|
-
var
|
|
10591
|
+
var import_noya_utils13 = require("@noya-app/noya-utils");
|
|
10680
10592
|
var animals = [
|
|
10681
10593
|
"cat",
|
|
10682
10594
|
"dog",
|
|
@@ -10728,7 +10640,7 @@ function getClientImageUrl(animal) {
|
|
|
10728
10640
|
}
|
|
10729
10641
|
function randomClientIdentity() {
|
|
10730
10642
|
const animal = randomElement(animals);
|
|
10731
|
-
const name = `${(0,
|
|
10643
|
+
const name = `${(0, import_noya_utils13.upperFirst)(randomElement(adjectives))} ${(0, import_noya_utils13.upperFirst)(animal)}`;
|
|
10732
10644
|
return {
|
|
10733
10645
|
name,
|
|
10734
10646
|
animal,
|
|
@@ -10746,9 +10658,9 @@ function getClientAnimalFromName(name) {
|
|
|
10746
10658
|
var CLIENT_ID_STORAGE_KEY = "noya-client-id";
|
|
10747
10659
|
var CLIENT_NAME_STORAGE_KEY = "noya-client-name";
|
|
10748
10660
|
var CLIENT_IMAGE_STORAGE_KEY = "noya-client-image";
|
|
10749
|
-
var clientId$ = new
|
|
10750
|
-
var clientName$ = new
|
|
10751
|
-
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);
|
|
10752
10664
|
var safeGetItem = (key) => {
|
|
10753
10665
|
try {
|
|
10754
10666
|
return typeof localStorage !== "undefined" ? localStorage.getItem(key) : null;
|
|
@@ -10769,7 +10681,7 @@ if (typeof window !== "undefined") {
|
|
|
10769
10681
|
if (storedClientId) {
|
|
10770
10682
|
clientId$.set(storedClientId);
|
|
10771
10683
|
} else {
|
|
10772
|
-
const newClientId = (0,
|
|
10684
|
+
const newClientId = (0, import_noya_utils14.uuid)();
|
|
10773
10685
|
safeSetItem(CLIENT_ID_STORAGE_KEY, newClientId);
|
|
10774
10686
|
clientId$.set(newClientId);
|
|
10775
10687
|
}
|
|
@@ -10792,13 +10704,13 @@ if (typeof window !== "undefined") {
|
|
|
10792
10704
|
}
|
|
10793
10705
|
|
|
10794
10706
|
// ../state-manager/src/sync/syncUtils.ts
|
|
10795
|
-
var
|
|
10707
|
+
var import_noya_utils15 = require("@noya-app/noya-utils");
|
|
10796
10708
|
|
|
10797
10709
|
// ../state-manager/src/sync/localRpcHelpers.ts
|
|
10798
|
-
var
|
|
10710
|
+
var import_noya_utils16 = require("@noya-app/noya-utils");
|
|
10799
10711
|
|
|
10800
10712
|
// ../state-manager/src/sync/localStorageSync.ts
|
|
10801
|
-
var
|
|
10713
|
+
var import_noya_utils17 = require("@noya-app/noya-utils");
|
|
10802
10714
|
|
|
10803
10715
|
// ../noya-keymap/src/hooks.ts
|
|
10804
10716
|
var import_react4 = require("react");
|
|
@@ -10921,10 +10833,10 @@ var createMutatorParametersSchema = Type.Object({
|
|
|
10921
10833
|
});
|
|
10922
10834
|
|
|
10923
10835
|
// ../noya-multiplayer-react/src/ai.ts
|
|
10924
|
-
var
|
|
10836
|
+
var import_react63 = require("react");
|
|
10925
10837
|
|
|
10926
10838
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
10927
|
-
var
|
|
10839
|
+
var import_observable24 = require("@noya-app/observable");
|
|
10928
10840
|
|
|
10929
10841
|
// ../noya-react-utils/src/components/AutoSizer.tsx
|
|
10930
10842
|
var React2 = __toESM(require("react"));
|
|
@@ -11106,7 +11018,7 @@ var FileDropTarget = memoGeneric(function FileDropTarget2({ children, onDropFile
|
|
|
11106
11018
|
var import_react8 = require("react");
|
|
11107
11019
|
|
|
11108
11020
|
// ../noya-react-utils/src/hooks/useDeepArray.ts
|
|
11109
|
-
var
|
|
11021
|
+
var import_noya_utils19 = require("@noya-app/noya-utils");
|
|
11110
11022
|
var import_react9 = require("react");
|
|
11111
11023
|
function useJsonMemo(value) {
|
|
11112
11024
|
const stringified = (0, import_react9.useMemo)(
|
|
@@ -11121,7 +11033,7 @@ function useJsonMemo(value) {
|
|
|
11121
11033
|
}
|
|
11122
11034
|
|
|
11123
11035
|
// ../noya-react-utils/src/hooks/useDeepState.ts
|
|
11124
|
-
var
|
|
11036
|
+
var import_noya_utils20 = require("@noya-app/noya-utils");
|
|
11125
11037
|
var import_react10 = require("react");
|
|
11126
11038
|
|
|
11127
11039
|
// ../noya-react-utils/src/hooks/useFetch.ts
|
|
@@ -11152,7 +11064,7 @@ var import_react17 = require("react");
|
|
|
11152
11064
|
var import_react18 = require("react");
|
|
11153
11065
|
|
|
11154
11066
|
// ../noya-react-utils/src/hooks/useShallowArray.ts
|
|
11155
|
-
var
|
|
11067
|
+
var import_noya_utils21 = require("@noya-app/noya-utils");
|
|
11156
11068
|
var import_react19 = require("react");
|
|
11157
11069
|
|
|
11158
11070
|
// ../noya-react-utils/src/hooks/useStableCallback.ts
|
|
@@ -11162,7 +11074,7 @@ var import_react20 = require("react");
|
|
|
11162
11074
|
var import_react21 = require("react");
|
|
11163
11075
|
|
|
11164
11076
|
// ../noya-react-utils/src/hooks/useUrlHashParameters.ts
|
|
11165
|
-
var
|
|
11077
|
+
var import_noya_utils22 = require("@noya-app/noya-utils");
|
|
11166
11078
|
var import_react22 = require("react");
|
|
11167
11079
|
|
|
11168
11080
|
// ../noya-react-utils/src/hooks/useWindowSize.ts
|
|
@@ -11225,13 +11137,13 @@ function downloadBlob(...params) {
|
|
|
11225
11137
|
}
|
|
11226
11138
|
|
|
11227
11139
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
11228
|
-
var
|
|
11140
|
+
var import_react62 = __toESM(require("react"));
|
|
11229
11141
|
|
|
11230
11142
|
// ../noya-multiplayer-react/src/noyaApp.ts
|
|
11231
|
-
var
|
|
11143
|
+
var import_react60 = require("react");
|
|
11232
11144
|
|
|
11233
11145
|
// ../noya-multiplayer-react/src/hooks.ts
|
|
11234
|
-
var
|
|
11146
|
+
var import_react59 = require("react");
|
|
11235
11147
|
var import_client2 = require("react-dom/client");
|
|
11236
11148
|
|
|
11237
11149
|
// ../noya-multiplayer-react/src/components/ErrorOverlay.tsx
|
|
@@ -11309,12 +11221,12 @@ var ErrorOverlay = React6.memo(function ErrorOverlay2({
|
|
|
11309
11221
|
});
|
|
11310
11222
|
|
|
11311
11223
|
// ../noya-multiplayer-react/src/inspector/useStateInspector.tsx
|
|
11312
|
-
var
|
|
11224
|
+
var import_react58 = __toESM(require("react"));
|
|
11313
11225
|
var import_client = require("react-dom/client");
|
|
11314
11226
|
|
|
11315
11227
|
// ../noya-multiplayer-react/src/inspector/StateInspector.tsx
|
|
11316
|
-
var
|
|
11317
|
-
var
|
|
11228
|
+
var import_noya_utils23 = require("@noya-app/noya-utils");
|
|
11229
|
+
var import_react57 = __toESM(require("react"));
|
|
11318
11230
|
|
|
11319
11231
|
// ../../node_modules/react-inspector/dist/index.mjs
|
|
11320
11232
|
var import_react24 = __toESM(require("react"), 1);
|
|
@@ -12962,8 +12874,424 @@ function EventsSection({
|
|
|
12962
12874
|
);
|
|
12963
12875
|
}
|
|
12964
12876
|
|
|
12965
|
-
// ../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
|
|
12966
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"));
|
|
12967
13295
|
|
|
12968
13296
|
// ../noya-multiplayer-react/src/inspector/utils.ts
|
|
12969
13297
|
function pathToString(extendedPath) {
|
|
@@ -13018,15 +13346,15 @@ function HistorySection({
|
|
|
13018
13346
|
historySnapshot,
|
|
13019
13347
|
multiplayerStateManager
|
|
13020
13348
|
}) {
|
|
13021
|
-
const ref = (0,
|
|
13349
|
+
const ref = (0, import_react52.useRef)(null);
|
|
13022
13350
|
const theme3 = getStateInspectorTheme(colorScheme);
|
|
13023
13351
|
const solidBorderColor = getStateInspectorBorderColor(colorScheme);
|
|
13024
|
-
(0,
|
|
13352
|
+
(0, import_react52.useEffect)(() => {
|
|
13025
13353
|
if (ref.current) {
|
|
13026
13354
|
ref.current.scrollTop = ref.current.scrollHeight;
|
|
13027
13355
|
}
|
|
13028
13356
|
}, [historySnapshot]);
|
|
13029
|
-
(0,
|
|
13357
|
+
(0, import_react52.useEffect)(() => {
|
|
13030
13358
|
if (!ref.current) return;
|
|
13031
13359
|
const historyEntry = ref.current.querySelector(
|
|
13032
13360
|
`#${HISTORY_ELEMENT_PREFIX}${historySnapshot.historyIndex}`
|
|
@@ -13038,14 +13366,14 @@ function HistorySection({
|
|
|
13038
13366
|
});
|
|
13039
13367
|
}
|
|
13040
13368
|
}, [historySnapshot.historyIndex]);
|
|
13041
|
-
return /* @__PURE__ */
|
|
13369
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
13042
13370
|
StateInspectorDisclosureSection,
|
|
13043
13371
|
{
|
|
13044
13372
|
open: showHistory,
|
|
13045
13373
|
setOpen: setShowHistory,
|
|
13046
13374
|
title: "History",
|
|
13047
13375
|
colorScheme,
|
|
13048
|
-
right: /* @__PURE__ */
|
|
13376
|
+
right: /* @__PURE__ */ import_react52.default.createElement(
|
|
13049
13377
|
"span",
|
|
13050
13378
|
{
|
|
13051
13379
|
style: {
|
|
@@ -13053,7 +13381,7 @@ function HistorySection({
|
|
|
13053
13381
|
gap: "4px"
|
|
13054
13382
|
}
|
|
13055
13383
|
},
|
|
13056
|
-
/* @__PURE__ */
|
|
13384
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13057
13385
|
StateInspectorButton,
|
|
13058
13386
|
{
|
|
13059
13387
|
disabled: !historySnapshot.canUndo,
|
|
@@ -13062,7 +13390,7 @@ function HistorySection({
|
|
|
13062
13390
|
multiplayerStateManager.undo();
|
|
13063
13391
|
}
|
|
13064
13392
|
},
|
|
13065
|
-
/* @__PURE__ */
|
|
13393
|
+
/* @__PURE__ */ import_react52.default.createElement("span", { style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13066
13394
|
"svg",
|
|
13067
13395
|
{
|
|
13068
13396
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13070,7 +13398,7 @@ function HistorySection({
|
|
|
13070
13398
|
height: "1em",
|
|
13071
13399
|
viewBox: "0 0 20 20"
|
|
13072
13400
|
},
|
|
13073
|
-
/* @__PURE__ */
|
|
13401
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13074
13402
|
"path",
|
|
13075
13403
|
{
|
|
13076
13404
|
fill: "currentColor",
|
|
@@ -13079,7 +13407,7 @@ function HistorySection({
|
|
|
13079
13407
|
)
|
|
13080
13408
|
))
|
|
13081
13409
|
),
|
|
13082
|
-
/* @__PURE__ */
|
|
13410
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13083
13411
|
StateInspectorButton,
|
|
13084
13412
|
{
|
|
13085
13413
|
disabled: !historySnapshot.canRedo,
|
|
@@ -13088,7 +13416,7 @@ function HistorySection({
|
|
|
13088
13416
|
multiplayerStateManager.redo();
|
|
13089
13417
|
}
|
|
13090
13418
|
},
|
|
13091
|
-
/* @__PURE__ */
|
|
13419
|
+
/* @__PURE__ */ import_react52.default.createElement("span", { style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13092
13420
|
"svg",
|
|
13093
13421
|
{
|
|
13094
13422
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13096,7 +13424,7 @@ function HistorySection({
|
|
|
13096
13424
|
height: "1em",
|
|
13097
13425
|
viewBox: "0 0 20 20"
|
|
13098
13426
|
},
|
|
13099
|
-
/* @__PURE__ */
|
|
13427
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13100
13428
|
"path",
|
|
13101
13429
|
{
|
|
13102
13430
|
fill: "currentColor",
|
|
@@ -13107,7 +13435,7 @@ function HistorySection({
|
|
|
13107
13435
|
)
|
|
13108
13436
|
)
|
|
13109
13437
|
},
|
|
13110
|
-
/* @__PURE__ */
|
|
13438
|
+
/* @__PURE__ */ import_react52.default.createElement(StateInspectorDisclosureRowInner, { ref }, /* @__PURE__ */ import_react52.default.createElement(
|
|
13111
13439
|
"div",
|
|
13112
13440
|
{
|
|
13113
13441
|
id: `${HISTORY_ELEMENT_PREFIX}0`,
|
|
@@ -13121,7 +13449,7 @@ function HistorySection({
|
|
|
13121
13449
|
background: historySnapshot.historyIndex === 0 ? "rgb(59 130 246 / 15%)" : void 0
|
|
13122
13450
|
}
|
|
13123
13451
|
},
|
|
13124
|
-
/* @__PURE__ */
|
|
13452
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
13125
13453
|
"span",
|
|
13126
13454
|
{
|
|
13127
13455
|
style: {
|
|
@@ -13136,7 +13464,7 @@ function HistorySection({
|
|
|
13136
13464
|
), historySnapshot.history.map((entry, index) => {
|
|
13137
13465
|
const metadata = entry.metadata;
|
|
13138
13466
|
const { id, name, timestamp, ...rest } = metadata;
|
|
13139
|
-
return /* @__PURE__ */
|
|
13467
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
13140
13468
|
"div",
|
|
13141
13469
|
{
|
|
13142
13470
|
id: `${HISTORY_ELEMENT_PREFIX}${index + 1}`,
|
|
@@ -13147,7 +13475,7 @@ function HistorySection({
|
|
|
13147
13475
|
background: index + 1 === historySnapshot.historyIndex ? "rgb(59 130 246 / 15%)" : void 0
|
|
13148
13476
|
}
|
|
13149
13477
|
},
|
|
13150
|
-
typeof name === "string" && /* @__PURE__ */
|
|
13478
|
+
typeof name === "string" && /* @__PURE__ */ import_react52.default.createElement(
|
|
13151
13479
|
"pre",
|
|
13152
13480
|
{
|
|
13153
13481
|
style: {
|
|
@@ -13158,9 +13486,9 @@ function HistorySection({
|
|
|
13158
13486
|
}
|
|
13159
13487
|
},
|
|
13160
13488
|
entry.metadata.name,
|
|
13161
|
-
Object.keys(rest).length > 0 && /* @__PURE__ */
|
|
13489
|
+
Object.keys(rest).length > 0 && /* @__PURE__ */ import_react52.default.createElement(themedObjectInspector, { data: rest, theme: theme3 })
|
|
13162
13490
|
),
|
|
13163
|
-
entry.redoPatches?.map((patch, j) => /* @__PURE__ */
|
|
13491
|
+
entry.redoPatches?.map((patch, j) => /* @__PURE__ */ import_react52.default.createElement(
|
|
13164
13492
|
"pre",
|
|
13165
13493
|
{
|
|
13166
13494
|
key: j,
|
|
@@ -13171,10 +13499,10 @@ function HistorySection({
|
|
|
13171
13499
|
margin: 0
|
|
13172
13500
|
}
|
|
13173
13501
|
},
|
|
13174
|
-
patch.op === "add" && /* @__PURE__ */
|
|
13175
|
-
patch.op === "replace" && /* @__PURE__ */
|
|
13176
|
-
patch.op === "remove" && /* @__PURE__ */
|
|
13177
|
-
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)))
|
|
13178
13506
|
))
|
|
13179
13507
|
);
|
|
13180
13508
|
}))
|
|
@@ -13182,7 +13510,7 @@ function HistorySection({
|
|
|
13182
13510
|
}
|
|
13183
13511
|
|
|
13184
13512
|
// ../noya-multiplayer-react/src/inspector/sections/ServerScriptLogsSection.tsx
|
|
13185
|
-
var
|
|
13513
|
+
var import_react53 = __toESM(require("react"));
|
|
13186
13514
|
var levelColors = {
|
|
13187
13515
|
error: "#f87171",
|
|
13188
13516
|
warn: "#facc15",
|
|
@@ -13202,16 +13530,16 @@ function ServerScriptLogsSection({
|
|
|
13202
13530
|
title = "Server Script Logs"
|
|
13203
13531
|
}) {
|
|
13204
13532
|
const theme3 = getStateInspectorTheme(colorScheme);
|
|
13205
|
-
return /* @__PURE__ */
|
|
13533
|
+
return /* @__PURE__ */ import_react53.default.createElement(
|
|
13206
13534
|
StateInspectorDisclosureSection,
|
|
13207
13535
|
{
|
|
13208
13536
|
open: showLogs,
|
|
13209
13537
|
setOpen: setShowLogs,
|
|
13210
13538
|
title,
|
|
13211
13539
|
colorScheme,
|
|
13212
|
-
right: /* @__PURE__ */
|
|
13540
|
+
right: /* @__PURE__ */ import_react53.default.createElement(StateInspectorButton, { theme: theme3, onClick: onTogglePaused }, paused ? "Resume" : "Pause")
|
|
13213
13541
|
},
|
|
13214
|
-
/* @__PURE__ */
|
|
13542
|
+
/* @__PURE__ */ import_react53.default.createElement(StateInspectorDisclosureRowInner, { ref: containerRef }, paused && /* @__PURE__ */ import_react53.default.createElement(
|
|
13215
13543
|
"div",
|
|
13216
13544
|
{
|
|
13217
13545
|
style: {
|
|
@@ -13221,7 +13549,7 @@ function ServerScriptLogsSection({
|
|
|
13221
13549
|
}
|
|
13222
13550
|
},
|
|
13223
13551
|
"Log streaming paused"
|
|
13224
|
-
), logs.map((log) => /* @__PURE__ */
|
|
13552
|
+
), logs.map((log) => /* @__PURE__ */ import_react53.default.createElement(StateInspectorRow, { key: log.id, colorScheme }, /* @__PURE__ */ import_react53.default.createElement(
|
|
13225
13553
|
"div",
|
|
13226
13554
|
{
|
|
13227
13555
|
style: {
|
|
@@ -13234,9 +13562,9 @@ function ServerScriptLogsSection({
|
|
|
13234
13562
|
textTransform: "uppercase"
|
|
13235
13563
|
}
|
|
13236
13564
|
},
|
|
13237
|
-
/* @__PURE__ */
|
|
13238
|
-
/* @__PURE__ */
|
|
13239
|
-
(log.origin || log.target || log.mode) && /* @__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(
|
|
13240
13568
|
"span",
|
|
13241
13569
|
{
|
|
13242
13570
|
style: {
|
|
@@ -13248,7 +13576,7 @@ function ServerScriptLogsSection({
|
|
|
13248
13576
|
},
|
|
13249
13577
|
[log.origin ?? log.target, log.mode].filter(Boolean).join(" / ")
|
|
13250
13578
|
),
|
|
13251
|
-
/* @__PURE__ */
|
|
13579
|
+
/* @__PURE__ */ import_react53.default.createElement(
|
|
13252
13580
|
"span",
|
|
13253
13581
|
{
|
|
13254
13582
|
style: {
|
|
@@ -13259,7 +13587,7 @@ function ServerScriptLogsSection({
|
|
|
13259
13587
|
},
|
|
13260
13588
|
log.scriptId
|
|
13261
13589
|
)
|
|
13262
|
-
), /* @__PURE__ */
|
|
13590
|
+
), /* @__PURE__ */ import_react53.default.createElement(
|
|
13263
13591
|
"div",
|
|
13264
13592
|
{
|
|
13265
13593
|
style: {
|
|
@@ -13268,15 +13596,15 @@ function ServerScriptLogsSection({
|
|
|
13268
13596
|
gap: "4px"
|
|
13269
13597
|
}
|
|
13270
13598
|
},
|
|
13271
|
-
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(
|
|
13272
13600
|
themedObjectInspector,
|
|
13273
13601
|
{
|
|
13274
13602
|
key: index,
|
|
13275
13603
|
data: value,
|
|
13276
13604
|
theme: theme3
|
|
13277
13605
|
}
|
|
13278
|
-
)) : /* @__PURE__ */
|
|
13279
|
-
))), !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(
|
|
13280
13608
|
"div",
|
|
13281
13609
|
{
|
|
13282
13610
|
style: {
|
|
@@ -13287,7 +13615,7 @@ function ServerScriptLogsSection({
|
|
|
13287
13615
|
gap: "4px"
|
|
13288
13616
|
}
|
|
13289
13617
|
},
|
|
13290
|
-
/* @__PURE__ */
|
|
13618
|
+
/* @__PURE__ */ import_react53.default.createElement("span", null, "No logs received")
|
|
13291
13619
|
))
|
|
13292
13620
|
);
|
|
13293
13621
|
}
|
|
@@ -13815,16 +14143,8 @@ function decodeAll(buffer) {
|
|
|
13815
14143
|
return { state, schema, assets, assetMap };
|
|
13816
14144
|
}
|
|
13817
14145
|
|
|
13818
|
-
// ../noya-multiplayer-react/src/inspector/StateInspectorTitleLabel.tsx
|
|
13819
|
-
var import_react52 = __toESM(require("react"));
|
|
13820
|
-
function StateInspectorTitleLabel({
|
|
13821
|
-
children
|
|
13822
|
-
}) {
|
|
13823
|
-
return /* @__PURE__ */ import_react52.default.createElement("span", { style: { display: "flex", alignItems: "center", gap: "4px" } }, children);
|
|
13824
|
-
}
|
|
13825
|
-
|
|
13826
14146
|
// ../noya-multiplayer-react/src/inspector/StateInspectorToggleButton.tsx
|
|
13827
|
-
var
|
|
14147
|
+
var import_react54 = __toESM(require("react"));
|
|
13828
14148
|
function StateInspectorToggleButton({
|
|
13829
14149
|
showInspector,
|
|
13830
14150
|
setShowInspector,
|
|
@@ -13832,7 +14152,7 @@ function StateInspectorToggleButton({
|
|
|
13832
14152
|
anchor
|
|
13833
14153
|
}) {
|
|
13834
14154
|
const isRightAnchor = anchor === "right";
|
|
13835
|
-
const rightIcon = /* @__PURE__ */
|
|
14155
|
+
const rightIcon = /* @__PURE__ */ import_react54.default.createElement(
|
|
13836
14156
|
"svg",
|
|
13837
14157
|
{
|
|
13838
14158
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13842,7 +14162,7 @@ function StateInspectorToggleButton({
|
|
|
13842
14162
|
stroke: "currentColor",
|
|
13843
14163
|
className: "size-6"
|
|
13844
14164
|
},
|
|
13845
|
-
/* @__PURE__ */
|
|
14165
|
+
/* @__PURE__ */ import_react54.default.createElement(
|
|
13846
14166
|
"path",
|
|
13847
14167
|
{
|
|
13848
14168
|
strokeLinecap: "round",
|
|
@@ -13851,7 +14171,7 @@ function StateInspectorToggleButton({
|
|
|
13851
14171
|
}
|
|
13852
14172
|
)
|
|
13853
14173
|
);
|
|
13854
|
-
const leftIcon = /* @__PURE__ */
|
|
14174
|
+
const leftIcon = /* @__PURE__ */ import_react54.default.createElement(
|
|
13855
14175
|
"svg",
|
|
13856
14176
|
{
|
|
13857
14177
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13861,7 +14181,7 @@ function StateInspectorToggleButton({
|
|
|
13861
14181
|
stroke: "currentColor",
|
|
13862
14182
|
className: "size-6"
|
|
13863
14183
|
},
|
|
13864
|
-
/* @__PURE__ */
|
|
14184
|
+
/* @__PURE__ */ import_react54.default.createElement(
|
|
13865
14185
|
"path",
|
|
13866
14186
|
{
|
|
13867
14187
|
strokeLinecap: "round",
|
|
@@ -13870,7 +14190,7 @@ function StateInspectorToggleButton({
|
|
|
13870
14190
|
}
|
|
13871
14191
|
)
|
|
13872
14192
|
);
|
|
13873
|
-
return /* @__PURE__ */
|
|
14193
|
+
return /* @__PURE__ */ import_react54.default.createElement(
|
|
13874
14194
|
"span",
|
|
13875
14195
|
{
|
|
13876
14196
|
role: "button",
|
|
@@ -13891,15 +14211,15 @@ function StateInspectorToggleButton({
|
|
|
13891
14211
|
setShowInspector(!showInspector);
|
|
13892
14212
|
}
|
|
13893
14213
|
},
|
|
13894
|
-
showInspector ? "Hide Inspector" : /* @__PURE__ */
|
|
14214
|
+
showInspector ? "Hide Inspector" : /* @__PURE__ */ import_react54.default.createElement("span", { style: { width: "12px", height: "12px" } }, isRightAnchor ? rightIcon : leftIcon)
|
|
13895
14215
|
);
|
|
13896
14216
|
}
|
|
13897
14217
|
|
|
13898
14218
|
// ../noya-multiplayer-react/src/inspector/useLocalStorageState.tsx
|
|
13899
|
-
var
|
|
14219
|
+
var import_react55 = __toESM(require("react"));
|
|
13900
14220
|
var localStorage2 = typeof window !== "undefined" ? window.localStorage : null;
|
|
13901
14221
|
function useLocalStorageState(key, defaultValue) {
|
|
13902
|
-
const [state, setState] =
|
|
14222
|
+
const [state, setState] = import_react55.default.useState(() => {
|
|
13903
14223
|
const value = localStorage2?.getItem(key);
|
|
13904
14224
|
let result = defaultValue;
|
|
13905
14225
|
if (value) {
|
|
@@ -13919,11 +14239,11 @@ function useLocalStorageState(key, defaultValue) {
|
|
|
13919
14239
|
}
|
|
13920
14240
|
|
|
13921
14241
|
// ../noya-multiplayer-react/src/inspector/usePausedStream.ts
|
|
13922
|
-
var
|
|
14242
|
+
var import_react56 = __toESM(require("react"));
|
|
13923
14243
|
function usePausedStream(items) {
|
|
13924
|
-
const [paused, setPaused] =
|
|
13925
|
-
const [visibleItems, setVisibleItems] =
|
|
13926
|
-
const togglePaused =
|
|
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(() => {
|
|
13927
14247
|
setPaused((value) => {
|
|
13928
14248
|
if (!value) {
|
|
13929
14249
|
setVisibleItems(items ?? []);
|
|
@@ -13931,7 +14251,7 @@ function usePausedStream(items) {
|
|
|
13931
14251
|
return !value;
|
|
13932
14252
|
});
|
|
13933
14253
|
}, [items]);
|
|
13934
|
-
|
|
14254
|
+
import_react56.default.useEffect(() => {
|
|
13935
14255
|
if (paused) return;
|
|
13936
14256
|
setVisibleItems(items ?? []);
|
|
13937
14257
|
}, [items, paused]);
|
|
@@ -13963,19 +14283,20 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
13963
14283
|
ioManager,
|
|
13964
14284
|
resourceManager,
|
|
13965
14285
|
activityEventsManager,
|
|
13966
|
-
logManager
|
|
14286
|
+
logManager,
|
|
14287
|
+
gitManager
|
|
13967
14288
|
} = noyaManager;
|
|
13968
|
-
const [didMount, setDidMount] =
|
|
14289
|
+
const [didMount, setDidMount] = import_react57.default.useState(false);
|
|
13969
14290
|
const tasks = useObservable2(taskManager.tasks$);
|
|
13970
14291
|
const inputs = useObservable2(ioManager.inputs$);
|
|
13971
14292
|
const outputTransforms = useObservable2(ioManager.outputTransforms$);
|
|
13972
|
-
(0,
|
|
14293
|
+
(0, import_react57.useLayoutEffect)(() => {
|
|
13973
14294
|
setDidMount(true);
|
|
13974
14295
|
}, []);
|
|
13975
|
-
const eventsContainerRef =
|
|
13976
|
-
const activityEventsContainerRef =
|
|
13977
|
-
const serverLogsContainerRef =
|
|
13978
|
-
const serverSimulationLogsContainerRef =
|
|
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);
|
|
13979
14300
|
const [showInspector, setShowInspector] = useLocalStorageState(
|
|
13980
14301
|
"noya-multiplayer-react-show-inspector",
|
|
13981
14302
|
true
|
|
@@ -14040,6 +14361,10 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14040
14361
|
"noya-multiplayer-react-show-server-simulation-logs",
|
|
14041
14362
|
false
|
|
14042
14363
|
);
|
|
14364
|
+
const [showGit, setShowGit] = useLocalStorageState(
|
|
14365
|
+
"noya-multiplayer-react-show-git",
|
|
14366
|
+
false
|
|
14367
|
+
);
|
|
14043
14368
|
const [showSimulation, setShowSimulation] = useLocalStorageState(
|
|
14044
14369
|
"noya-multiplayer-react-show-simulation",
|
|
14045
14370
|
false
|
|
@@ -14050,7 +14375,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14050
14375
|
paused: connectionEventsPaused,
|
|
14051
14376
|
togglePaused: toggleConnectionEventsPaused
|
|
14052
14377
|
} = usePausedStream(connectionEvents);
|
|
14053
|
-
(0,
|
|
14378
|
+
(0, import_react57.useEffect)(() => {
|
|
14054
14379
|
if (eventsContainerRef.current) {
|
|
14055
14380
|
eventsContainerRef.current.scrollTop = eventsContainerRef.current.scrollHeight;
|
|
14056
14381
|
}
|
|
@@ -14069,13 +14394,13 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14069
14394
|
paused: serverSimulationLogsPaused,
|
|
14070
14395
|
togglePaused: toggleServerSimulationLogsPaused
|
|
14071
14396
|
} = usePausedStream(serverSimulationLogs);
|
|
14072
|
-
(0,
|
|
14397
|
+
(0, import_react57.useEffect)(() => {
|
|
14073
14398
|
if (!showServerLogs) return;
|
|
14074
14399
|
if (serverLogsContainerRef.current) {
|
|
14075
14400
|
serverLogsContainerRef.current.scrollTop = serverLogsContainerRef.current.scrollHeight;
|
|
14076
14401
|
}
|
|
14077
14402
|
}, [showServerLogs, visibleServerLogs]);
|
|
14078
|
-
(0,
|
|
14403
|
+
(0, import_react57.useEffect)(() => {
|
|
14079
14404
|
if (!showServerSimulationLogs) return;
|
|
14080
14405
|
if (serverSimulationLogsContainerRef.current) {
|
|
14081
14406
|
serverSimulationLogsContainerRef.current.scrollTop = serverSimulationLogsContainerRef.current.scrollHeight;
|
|
@@ -14122,11 +14447,11 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14122
14447
|
zIndex: 9999,
|
|
14123
14448
|
lineHeight: "13px"
|
|
14124
14449
|
};
|
|
14125
|
-
const handleExportAll = (0,
|
|
14450
|
+
const handleExportAll = (0, import_react57.useCallback)(async () => {
|
|
14126
14451
|
const buffer = await exportAll(noyaManager);
|
|
14127
14452
|
downloadBlob(new Blob([buffer]), "state.zip");
|
|
14128
14453
|
}, [noyaManager]);
|
|
14129
|
-
const handleImportAll = (0,
|
|
14454
|
+
const handleImportAll = (0, import_react57.useCallback)(async () => {
|
|
14130
14455
|
const file = await uploadFile();
|
|
14131
14456
|
const buffer = await file.arrayBuffer();
|
|
14132
14457
|
importAll(buffer, noyaManager, {
|
|
@@ -14139,7 +14464,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14139
14464
|
}, [noyaManager]);
|
|
14140
14465
|
if (!didMount) return null;
|
|
14141
14466
|
if (!showInspector) {
|
|
14142
|
-
return /* @__PURE__ */
|
|
14467
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
14143
14468
|
"div",
|
|
14144
14469
|
{
|
|
14145
14470
|
...props,
|
|
@@ -14151,7 +14476,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14151
14476
|
},
|
|
14152
14477
|
onClick: () => setShowInspector(true)
|
|
14153
14478
|
},
|
|
14154
|
-
/* @__PURE__ */
|
|
14479
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14155
14480
|
StateInspectorToggleButton,
|
|
14156
14481
|
{
|
|
14157
14482
|
showInspector,
|
|
@@ -14162,7 +14487,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14162
14487
|
)
|
|
14163
14488
|
);
|
|
14164
14489
|
}
|
|
14165
|
-
return /* @__PURE__ */
|
|
14490
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
14166
14491
|
"div",
|
|
14167
14492
|
{
|
|
14168
14493
|
...props,
|
|
@@ -14171,7 +14496,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14171
14496
|
...props.style
|
|
14172
14497
|
}
|
|
14173
14498
|
},
|
|
14174
|
-
/* @__PURE__ */
|
|
14499
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14175
14500
|
StateInspectorDisclosureSection,
|
|
14176
14501
|
{
|
|
14177
14502
|
isFirst: true,
|
|
@@ -14184,14 +14509,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14184
14509
|
maxHeight: "50%",
|
|
14185
14510
|
overflowY: "auto"
|
|
14186
14511
|
},
|
|
14187
|
-
right: /* @__PURE__ */
|
|
14512
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14188
14513
|
StateInspectorButton,
|
|
14189
14514
|
{
|
|
14190
14515
|
theme: theme3,
|
|
14191
14516
|
onClick: () => setShowUserDetails(!showUserDetails)
|
|
14192
14517
|
},
|
|
14193
14518
|
"Toggle details"
|
|
14194
|
-
), /* @__PURE__ */
|
|
14519
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14195
14520
|
StateInspectorToggleButton,
|
|
14196
14521
|
{
|
|
14197
14522
|
showInspector,
|
|
@@ -14201,8 +14526,8 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14201
14526
|
}
|
|
14202
14527
|
))
|
|
14203
14528
|
},
|
|
14204
|
-
/* @__PURE__ */
|
|
14205
|
-
return /* @__PURE__ */
|
|
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(
|
|
14206
14531
|
StateInspectorRow,
|
|
14207
14532
|
{
|
|
14208
14533
|
key: user.connectionId,
|
|
@@ -14213,7 +14538,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14213
14538
|
opacity: user.inactive ? 0.5 : 1
|
|
14214
14539
|
}
|
|
14215
14540
|
},
|
|
14216
|
-
user.image && /* @__PURE__ */
|
|
14541
|
+
user.image && /* @__PURE__ */ import_react57.default.createElement(
|
|
14217
14542
|
"img",
|
|
14218
14543
|
{
|
|
14219
14544
|
src: user.image,
|
|
@@ -14230,9 +14555,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14230
14555
|
}
|
|
14231
14556
|
}
|
|
14232
14557
|
),
|
|
14233
|
-
showUserDetails ? /* @__PURE__ */
|
|
14558
|
+
showUserDetails ? /* @__PURE__ */ import_react57.default.createElement(themedObjectInspector, { data: user, theme: theme3 }) : user.name
|
|
14234
14559
|
);
|
|
14235
|
-
}), !connectedUsers && /* @__PURE__ */
|
|
14560
|
+
}), !connectedUsers && /* @__PURE__ */ import_react57.default.createElement(
|
|
14236
14561
|
"div",
|
|
14237
14562
|
{
|
|
14238
14563
|
style: {
|
|
@@ -14243,13 +14568,13 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14243
14568
|
gap: "4px"
|
|
14244
14569
|
}
|
|
14245
14570
|
},
|
|
14246
|
-
/* @__PURE__ */
|
|
14571
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No connected users")
|
|
14247
14572
|
))
|
|
14248
14573
|
),
|
|
14249
|
-
/* @__PURE__ */
|
|
14574
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14250
14575
|
StateInspectorDisclosureSection,
|
|
14251
14576
|
{
|
|
14252
|
-
title: /* @__PURE__ */
|
|
14577
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Data", /* @__PURE__ */ import_react57.default.createElement(
|
|
14253
14578
|
ColoredDot,
|
|
14254
14579
|
{
|
|
14255
14580
|
type: multipeerStateInitialized ? "success" : "error"
|
|
@@ -14258,7 +14583,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14258
14583
|
colorScheme,
|
|
14259
14584
|
setOpen: setShowData,
|
|
14260
14585
|
open: showData,
|
|
14261
|
-
right: /* @__PURE__ */
|
|
14586
|
+
right: /* @__PURE__ */ import_react57.default.createElement(
|
|
14262
14587
|
"span",
|
|
14263
14588
|
{
|
|
14264
14589
|
style: {
|
|
@@ -14266,9 +14591,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14266
14591
|
gap: "12px"
|
|
14267
14592
|
}
|
|
14268
14593
|
},
|
|
14269
|
-
/* @__PURE__ */
|
|
14270
|
-
/* @__PURE__ */
|
|
14271
|
-
/* @__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(
|
|
14272
14597
|
StateInspectorButton,
|
|
14273
14598
|
{
|
|
14274
14599
|
theme: theme3,
|
|
@@ -14280,14 +14605,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14280
14605
|
)
|
|
14281
14606
|
)
|
|
14282
14607
|
},
|
|
14283
|
-
/* @__PURE__ */
|
|
14608
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14284
14609
|
themedObjectInspector,
|
|
14285
14610
|
{
|
|
14286
14611
|
name: multiplayerStateManager.schema ? "state" : void 0,
|
|
14287
14612
|
data: state,
|
|
14288
14613
|
theme: theme3
|
|
14289
14614
|
}
|
|
14290
|
-
)), multiplayerStateManager.schema && /* @__PURE__ */
|
|
14615
|
+
)), multiplayerStateManager.schema && /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14291
14616
|
themedObjectInspector,
|
|
14292
14617
|
{
|
|
14293
14618
|
name: "schema",
|
|
@@ -14296,7 +14621,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14296
14621
|
}
|
|
14297
14622
|
)))
|
|
14298
14623
|
),
|
|
14299
|
-
/* @__PURE__ */
|
|
14624
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14300
14625
|
HistorySection,
|
|
14301
14626
|
{
|
|
14302
14627
|
showHistory,
|
|
@@ -14306,14 +14631,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14306
14631
|
multiplayerStateManager
|
|
14307
14632
|
}
|
|
14308
14633
|
),
|
|
14309
|
-
/* @__PURE__ */
|
|
14634
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14310
14635
|
StateInspectorDisclosureSection,
|
|
14311
14636
|
{
|
|
14312
14637
|
open: showAssets,
|
|
14313
14638
|
setOpen: setShowAssets,
|
|
14314
|
-
title: /* @__PURE__ */
|
|
14639
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Assets (", assets.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: assetsInitialized ? "success" : "error" })),
|
|
14315
14640
|
colorScheme,
|
|
14316
|
-
right: /* @__PURE__ */
|
|
14641
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14317
14642
|
StateInspectorButton,
|
|
14318
14643
|
{
|
|
14319
14644
|
theme: theme3,
|
|
@@ -14328,7 +14653,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14328
14653
|
}
|
|
14329
14654
|
},
|
|
14330
14655
|
"Delete all"
|
|
14331
|
-
), /* @__PURE__ */
|
|
14656
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14332
14657
|
StateInspectorButton,
|
|
14333
14658
|
{
|
|
14334
14659
|
theme: theme3,
|
|
@@ -14341,54 +14666,69 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14341
14666
|
}
|
|
14342
14667
|
},
|
|
14343
14668
|
"Reload"
|
|
14344
|
-
), /* @__PURE__ */
|
|
14669
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14345
14670
|
StateInspectorButton,
|
|
14346
14671
|
{
|
|
14347
14672
|
theme: theme3,
|
|
14348
|
-
onClick: () => {
|
|
14349
|
-
const
|
|
14350
|
-
|
|
14351
|
-
input.onchange = () => {
|
|
14352
|
-
const file = input.files?.[0];
|
|
14353
|
-
if (file) {
|
|
14354
|
-
const reader = new FileReader();
|
|
14355
|
-
reader.onload = () => {
|
|
14356
|
-
const buffer = reader.result;
|
|
14357
|
-
assetManager.create(new Uint8Array(buffer));
|
|
14358
|
-
};
|
|
14359
|
-
reader.readAsArrayBuffer(file);
|
|
14360
|
-
}
|
|
14361
|
-
};
|
|
14362
|
-
input.click();
|
|
14673
|
+
onClick: async () => {
|
|
14674
|
+
const file = await uploadFile();
|
|
14675
|
+
assetManager.create(file);
|
|
14363
14676
|
}
|
|
14364
14677
|
},
|
|
14365
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"
|
|
14366
14693
|
))
|
|
14367
14694
|
},
|
|
14368
|
-
/* @__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(
|
|
14369
14696
|
themedObjectInspector,
|
|
14370
14697
|
{
|
|
14371
14698
|
name: asset.id,
|
|
14372
14699
|
data: truncateAsset(asset),
|
|
14373
14700
|
theme: theme3
|
|
14374
14701
|
}
|
|
14375
|
-
), /* @__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(
|
|
14376
14716
|
StateInspectorButton,
|
|
14377
14717
|
{
|
|
14378
14718
|
theme: theme3,
|
|
14379
14719
|
onClick: () => assetManager.delete(asset.id)
|
|
14380
14720
|
},
|
|
14381
14721
|
"Delete"
|
|
14382
|
-
))))
|
|
14722
|
+
)))))
|
|
14383
14723
|
),
|
|
14384
|
-
advanced && /* @__PURE__ */
|
|
14724
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14385
14725
|
StateInspectorDisclosureSection,
|
|
14386
14726
|
{
|
|
14387
|
-
title: /* @__PURE__ */
|
|
14727
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Resources (", resources.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: resourcesInitialized ? "success" : "error" })),
|
|
14388
14728
|
colorScheme,
|
|
14389
14729
|
open: showResources,
|
|
14390
14730
|
setOpen: setShowResources,
|
|
14391
|
-
right: /* @__PURE__ */
|
|
14731
|
+
right: /* @__PURE__ */ import_react57.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14392
14732
|
StateInspectorButton,
|
|
14393
14733
|
{
|
|
14394
14734
|
theme: theme3,
|
|
@@ -14403,12 +14743,12 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14403
14743
|
}
|
|
14404
14744
|
},
|
|
14405
14745
|
"Delete all"
|
|
14406
|
-
), /* @__PURE__ */
|
|
14746
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14407
14747
|
StateInspectorButton,
|
|
14408
14748
|
{
|
|
14409
14749
|
theme: theme3,
|
|
14410
14750
|
onClick: async () => {
|
|
14411
|
-
const path2 = prompt("Enter directory path") || (0,
|
|
14751
|
+
const path2 = prompt("Enter directory path") || (0, import_noya_utils23.uuid)();
|
|
14412
14752
|
await resourceManager.createResource({
|
|
14413
14753
|
type: "directory",
|
|
14414
14754
|
path: path2
|
|
@@ -14416,7 +14756,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14416
14756
|
}
|
|
14417
14757
|
},
|
|
14418
14758
|
"Create Directory"
|
|
14419
|
-
), /* @__PURE__ */
|
|
14759
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14420
14760
|
StateInspectorButton,
|
|
14421
14761
|
{
|
|
14422
14762
|
theme: theme3,
|
|
@@ -14424,9 +14764,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14424
14764
|
const file = await uploadFile();
|
|
14425
14765
|
resourceManager.createResource({
|
|
14426
14766
|
type: "asset",
|
|
14427
|
-
path: file.name || (0,
|
|
14767
|
+
path: file.name || (0, import_noya_utils23.uuid)(),
|
|
14428
14768
|
asset: {
|
|
14429
|
-
content:
|
|
14769
|
+
content: import_noya_utils23.Base64.encode(await file.arrayBuffer()),
|
|
14430
14770
|
contentType: file.type,
|
|
14431
14771
|
encoding: "base64"
|
|
14432
14772
|
}
|
|
@@ -14436,21 +14776,21 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14436
14776
|
"Create Asset"
|
|
14437
14777
|
))
|
|
14438
14778
|
},
|
|
14439
|
-
/* @__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(
|
|
14440
14780
|
themedObjectInspector,
|
|
14441
14781
|
{
|
|
14442
14782
|
name: resource.path,
|
|
14443
14783
|
data: resource,
|
|
14444
14784
|
theme: theme3
|
|
14445
14785
|
}
|
|
14446
|
-
), /* @__PURE__ */
|
|
14786
|
+
), /* @__PURE__ */ import_react57.default.createElement("div", { style: { display: "flex", gap: "4px" } }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14447
14787
|
StateInspectorButton,
|
|
14448
14788
|
{
|
|
14449
14789
|
theme: theme3,
|
|
14450
14790
|
onClick: () => resourceManager.deleteResource({ id: resource.id })
|
|
14451
14791
|
},
|
|
14452
14792
|
"Delete"
|
|
14453
|
-
), /* @__PURE__ */
|
|
14793
|
+
), /* @__PURE__ */ import_react57.default.createElement(
|
|
14454
14794
|
StateInspectorButton,
|
|
14455
14795
|
{
|
|
14456
14796
|
theme: theme3,
|
|
@@ -14463,14 +14803,23 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14463
14803
|
"Rename"
|
|
14464
14804
|
)))))
|
|
14465
14805
|
),
|
|
14466
|
-
advanced && /* @__PURE__ */
|
|
14806
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14467
14807
|
StateInspectorDisclosureSection,
|
|
14468
14808
|
{
|
|
14469
|
-
title: /* @__PURE__ */
|
|
14809
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Secrets (", secrets.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: secretsInitialized ? "success" : "error" })),
|
|
14470
14810
|
colorScheme,
|
|
14471
14811
|
open: showSecrets,
|
|
14472
14812
|
setOpen: setShowSecrets,
|
|
14473
|
-
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(
|
|
14474
14823
|
StateInspectorButton,
|
|
14475
14824
|
{
|
|
14476
14825
|
theme: theme3,
|
|
@@ -14483,9 +14832,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14483
14832
|
}
|
|
14484
14833
|
},
|
|
14485
14834
|
"Create"
|
|
14486
|
-
)
|
|
14835
|
+
))
|
|
14487
14836
|
},
|
|
14488
|
-
/* @__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(
|
|
14489
14838
|
StateInspectorButton,
|
|
14490
14839
|
{
|
|
14491
14840
|
theme: theme3,
|
|
@@ -14494,15 +14843,24 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14494
14843
|
"Delete"
|
|
14495
14844
|
))))
|
|
14496
14845
|
),
|
|
14497
|
-
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(
|
|
14498
14856
|
StateInspectorDisclosureSection,
|
|
14499
14857
|
{
|
|
14500
14858
|
open: showInputs,
|
|
14501
14859
|
setOpen: setShowInputs,
|
|
14502
|
-
title: /* @__PURE__ */
|
|
14860
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Inputs (", inputs.length, ")", /* @__PURE__ */ import_react57.default.createElement(ColoredDot, { type: inputsInitialized ? "success" : "error" })),
|
|
14503
14861
|
colorScheme
|
|
14504
14862
|
},
|
|
14505
|
-
/* @__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(
|
|
14506
14864
|
"div",
|
|
14507
14865
|
{
|
|
14508
14866
|
style: {
|
|
@@ -14513,15 +14871,15 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14513
14871
|
gap: "4px"
|
|
14514
14872
|
}
|
|
14515
14873
|
},
|
|
14516
|
-
/* @__PURE__ */
|
|
14874
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No inputs")
|
|
14517
14875
|
))
|
|
14518
14876
|
),
|
|
14519
|
-
advanced && /* @__PURE__ */
|
|
14877
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14520
14878
|
StateInspectorDisclosureSection,
|
|
14521
14879
|
{
|
|
14522
14880
|
open: showOutputTransforms,
|
|
14523
14881
|
setOpen: setShowOutputTransforms,
|
|
14524
|
-
title: /* @__PURE__ */
|
|
14882
|
+
title: /* @__PURE__ */ import_react57.default.createElement(StateInspectorTitleLabel, null, "Output Transforms (", outputTransforms.length, ")", /* @__PURE__ */ import_react57.default.createElement(
|
|
14525
14883
|
ColoredDot,
|
|
14526
14884
|
{
|
|
14527
14885
|
type: outputTransformsInitialized ? "success" : "error"
|
|
@@ -14529,7 +14887,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14529
14887
|
)),
|
|
14530
14888
|
colorScheme
|
|
14531
14889
|
},
|
|
14532
|
-
/* @__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(
|
|
14533
14891
|
"div",
|
|
14534
14892
|
{
|
|
14535
14893
|
style: {
|
|
@@ -14540,10 +14898,10 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14540
14898
|
gap: "4px"
|
|
14541
14899
|
}
|
|
14542
14900
|
},
|
|
14543
|
-
/* @__PURE__ */
|
|
14901
|
+
/* @__PURE__ */ import_react57.default.createElement("span", null, "No output transforms")
|
|
14544
14902
|
))
|
|
14545
14903
|
),
|
|
14546
|
-
advanced && /* @__PURE__ */
|
|
14904
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14547
14905
|
StateInspectorDisclosureSection,
|
|
14548
14906
|
{
|
|
14549
14907
|
title: "Tasks",
|
|
@@ -14551,7 +14909,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14551
14909
|
open: showTasks,
|
|
14552
14910
|
setOpen: setShowTasks
|
|
14553
14911
|
},
|
|
14554
|
-
/* @__PURE__ */
|
|
14912
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, tasks?.map((task) => /* @__PURE__ */ import_react57.default.createElement(
|
|
14555
14913
|
StateInspectorRow,
|
|
14556
14914
|
{
|
|
14557
14915
|
key: task.id,
|
|
@@ -14560,7 +14918,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14560
14918
|
backgroundColor: task.status === "done" ? "rgba(0,255,0,0.2)" : task.status === "error" ? "rgba(255,0,0,0.2)" : void 0
|
|
14561
14919
|
}
|
|
14562
14920
|
},
|
|
14563
|
-
/* @__PURE__ */
|
|
14921
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14564
14922
|
themedObjectInspector,
|
|
14565
14923
|
{
|
|
14566
14924
|
name: task.name,
|
|
@@ -14570,7 +14928,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14570
14928
|
)
|
|
14571
14929
|
)))
|
|
14572
14930
|
),
|
|
14573
|
-
/* @__PURE__ */
|
|
14931
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14574
14932
|
StateInspectorDisclosureSection,
|
|
14575
14933
|
{
|
|
14576
14934
|
open: showShared,
|
|
@@ -14578,7 +14936,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14578
14936
|
title: "Shared Connection Data",
|
|
14579
14937
|
colorScheme
|
|
14580
14938
|
},
|
|
14581
|
-
/* @__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(
|
|
14582
14940
|
themedObjectInspector,
|
|
14583
14941
|
{
|
|
14584
14942
|
name: key,
|
|
@@ -14588,7 +14946,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14588
14946
|
}
|
|
14589
14947
|
))))
|
|
14590
14948
|
),
|
|
14591
|
-
/* @__PURE__ */
|
|
14949
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14592
14950
|
ServerScriptLogsSection,
|
|
14593
14951
|
{
|
|
14594
14952
|
colorScheme,
|
|
@@ -14600,7 +14958,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14600
14958
|
containerRef: serverLogsContainerRef
|
|
14601
14959
|
}
|
|
14602
14960
|
),
|
|
14603
|
-
showSimulationLogsSection && /* @__PURE__ */
|
|
14961
|
+
showSimulationLogsSection && /* @__PURE__ */ import_react57.default.createElement(
|
|
14604
14962
|
ServerScriptLogsSection,
|
|
14605
14963
|
{
|
|
14606
14964
|
title: "Server Script Simulation Logs",
|
|
@@ -14613,7 +14971,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14613
14971
|
containerRef: serverSimulationLogsContainerRef
|
|
14614
14972
|
}
|
|
14615
14973
|
),
|
|
14616
|
-
/* @__PURE__ */
|
|
14974
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14617
14975
|
StateInspectorDisclosureSection,
|
|
14618
14976
|
{
|
|
14619
14977
|
open: showSimulation,
|
|
@@ -14621,7 +14979,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14621
14979
|
title: "Server Simulation",
|
|
14622
14980
|
colorScheme
|
|
14623
14981
|
},
|
|
14624
|
-
/* @__PURE__ */
|
|
14982
|
+
/* @__PURE__ */ import_react57.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react57.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react57.default.createElement(
|
|
14625
14983
|
themedObjectInspector,
|
|
14626
14984
|
{
|
|
14627
14985
|
name: "status",
|
|
@@ -14637,7 +14995,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14637
14995
|
}
|
|
14638
14996
|
)))
|
|
14639
14997
|
),
|
|
14640
|
-
advanced && /* @__PURE__ */
|
|
14998
|
+
advanced && /* @__PURE__ */ import_react57.default.createElement(
|
|
14641
14999
|
ActivityEventsSection,
|
|
14642
15000
|
{
|
|
14643
15001
|
colorScheme,
|
|
@@ -14647,7 +15005,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14647
15005
|
activityEventsManager
|
|
14648
15006
|
}
|
|
14649
15007
|
),
|
|
14650
|
-
/* @__PURE__ */
|
|
15008
|
+
/* @__PURE__ */ import_react57.default.createElement(
|
|
14651
15009
|
EventsSection,
|
|
14652
15010
|
{
|
|
14653
15011
|
connectionEvents: visibleConnectionEvents,
|
|
@@ -14661,7 +15019,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
14661
15019
|
)
|
|
14662
15020
|
);
|
|
14663
15021
|
});
|
|
14664
|
-
var truncateAsset = (0,
|
|
15022
|
+
var truncateAsset = (0, import_noya_utils23.memoize)((asset) => {
|
|
14665
15023
|
if (asset.url.startsWith("data:") || asset.url.startsWith("blob:")) {
|
|
14666
15024
|
return { ...asset, url: ellipsis(asset.url, 40) };
|
|
14667
15025
|
}
|
|
@@ -14670,7 +15028,7 @@ var truncateAsset = (0, import_noya_utils24.memoize)((asset) => {
|
|
|
14670
15028
|
|
|
14671
15029
|
// ../noya-multiplayer-react/src/hooks.ts
|
|
14672
15030
|
function useManagedHistory(stateManager) {
|
|
14673
|
-
return (0,
|
|
15031
|
+
return (0, import_react59.useSyncExternalStore)(
|
|
14674
15032
|
stateManager.historyEmittor.addListener,
|
|
14675
15033
|
stateManager.getHistorySnapshot,
|
|
14676
15034
|
stateManager.getHistorySnapshot
|
|
@@ -14678,15 +15036,15 @@ function useManagedHistory(stateManager) {
|
|
|
14678
15036
|
}
|
|
14679
15037
|
|
|
14680
15038
|
// ../noya-multiplayer-react/src/singleton.tsx
|
|
14681
|
-
var
|
|
15039
|
+
var import_react61 = __toESM(require("react"));
|
|
14682
15040
|
|
|
14683
15041
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
14684
|
-
var AnyNoyaStateContext = (0,
|
|
15042
|
+
var AnyNoyaStateContext = (0, import_react62.createContext)(void 0);
|
|
14685
15043
|
var emptyArray = [];
|
|
14686
15044
|
function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
14687
|
-
const [streamId, setStreamId] = (0,
|
|
15045
|
+
const [streamId, setStreamId] = (0, import_react62.useState)(void 0);
|
|
14688
15046
|
const stableStreamFilter = useJsonMemo(streamFilter);
|
|
14689
|
-
(0,
|
|
15047
|
+
(0, import_react62.useEffect)(() => {
|
|
14690
15048
|
if (!stableStreamFilter) return;
|
|
14691
15049
|
const streamId2 = activityEventsManager.subscribe(stableStreamFilter);
|
|
14692
15050
|
setStreamId(streamId2);
|
|
@@ -14700,8 +15058,8 @@ function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
|
14700
15058
|
}
|
|
14701
15059
|
|
|
14702
15060
|
// ../noya-multiplayer-react/src/components/UserPointersOverlay.tsx
|
|
14703
|
-
var
|
|
14704
|
-
var
|
|
15061
|
+
var import_observable25 = require("@noya-app/observable");
|
|
15062
|
+
var import_react64 = __toESM(require("react"));
|
|
14705
15063
|
function shouldShow(hideAfter, updatedAt) {
|
|
14706
15064
|
return !!updatedAt && Date.now() - updatedAt < hideAfter;
|
|
14707
15065
|
}
|
|
@@ -14711,18 +15069,18 @@ var UserPointerInternal = memoGeneric(function UserPointerInternal2({
|
|
|
14711
15069
|
hideAfter = 5e3,
|
|
14712
15070
|
renderUserPointer
|
|
14713
15071
|
}) {
|
|
14714
|
-
const observable = (0,
|
|
15072
|
+
const observable = (0, import_react64.useMemo)(() => {
|
|
14715
15073
|
const metadata$ = sharedConnectionDataManager.metadata$.observePath([user.connectionId]).throttle(50);
|
|
14716
15074
|
const data$ = sharedConnectionDataManager.data$.observePath([user.connectionId]).throttle(50);
|
|
14717
|
-
return
|
|
15075
|
+
return import_observable25.Observable.combine([metadata$, data$], ([metadata2, data2]) => {
|
|
14718
15076
|
return { metadata: metadata2, data: data2 };
|
|
14719
15077
|
});
|
|
14720
15078
|
}, [sharedConnectionDataManager, user.connectionId]);
|
|
14721
15079
|
const { metadata, data } = useObservable2(observable);
|
|
14722
|
-
const [, setForceUpdate] = (0,
|
|
15080
|
+
const [, setForceUpdate] = (0, import_react64.useState)(0);
|
|
14723
15081
|
const updatedAt = metadata?.updatedAt ?? 0;
|
|
14724
15082
|
const show = shouldShow(hideAfter, updatedAt);
|
|
14725
|
-
(0,
|
|
15083
|
+
(0, import_react64.useEffect)(() => {
|
|
14726
15084
|
if (!show) return;
|
|
14727
15085
|
const timeoutId = setTimeout(() => {
|
|
14728
15086
|
setForceUpdate((prev) => prev + 1);
|
|
@@ -14746,9 +15104,9 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
14746
15104
|
sharedConnectionDataManager.currentConnectionId$
|
|
14747
15105
|
);
|
|
14748
15106
|
const connectedUsers = useObservable2(userManager.connectedUsers$);
|
|
14749
|
-
return /* @__PURE__ */
|
|
15107
|
+
return /* @__PURE__ */ import_react64.default.createElement(import_react64.default.Fragment, null, connectedUsers.map((user) => {
|
|
14750
15108
|
if (user.connectionId === currentConnectionId) return null;
|
|
14751
|
-
return /* @__PURE__ */
|
|
15109
|
+
return /* @__PURE__ */ import_react64.default.createElement(
|
|
14752
15110
|
UserPointerInternal,
|
|
14753
15111
|
{
|
|
14754
15112
|
key: user.connectionId,
|
|
@@ -14762,15 +15120,15 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
14762
15120
|
|
|
14763
15121
|
// src/react/tableHooks.ts
|
|
14764
15122
|
var import_observable_store = require("@noya-app/observable-store");
|
|
14765
|
-
var
|
|
15123
|
+
var import_react65 = require("react");
|
|
14766
15124
|
function useTable(table, {
|
|
14767
15125
|
where,
|
|
14768
15126
|
select
|
|
14769
15127
|
}, options = {}) {
|
|
14770
|
-
const stableSelect = (0,
|
|
15128
|
+
const stableSelect = (0, import_react65.useMemo)(() => {
|
|
14771
15129
|
return JSON.stringify(select);
|
|
14772
15130
|
}, [select]);
|
|
14773
|
-
const stableWhere = (0,
|
|
15131
|
+
const stableWhere = (0, import_react65.useMemo)(() => {
|
|
14774
15132
|
let cloneWithNoUndefined = {};
|
|
14775
15133
|
for (const [key, value] of Object.entries(where ?? {})) {
|
|
14776
15134
|
if (value !== void 0) {
|
|
@@ -14779,7 +15137,7 @@ function useTable(table, {
|
|
|
14779
15137
|
}
|
|
14780
15138
|
return JSON.stringify(cloneWithNoUndefined);
|
|
14781
15139
|
}, [where]);
|
|
14782
|
-
const observable = (0,
|
|
15140
|
+
const observable = (0, import_react65.useMemo)(() => {
|
|
14783
15141
|
const parsedSelect = JSON.parse(stableSelect);
|
|
14784
15142
|
const parsedWhere = JSON.parse(stableWhere);
|
|
14785
15143
|
if (!table) {
|
|
@@ -14806,18 +15164,18 @@ function useTable(table, {
|
|
|
14806
15164
|
}
|
|
14807
15165
|
);
|
|
14808
15166
|
}, [stableSelect, stableWhere, table, options.policy, options.debug]);
|
|
14809
|
-
(0,
|
|
15167
|
+
(0, import_react65.useEffect)(() => {
|
|
14810
15168
|
observable.start?.();
|
|
14811
15169
|
}, [observable]);
|
|
14812
15170
|
const { status, data } = useObservable2(observable);
|
|
14813
|
-
const optimisticUpdate = (0,
|
|
15171
|
+
const optimisticUpdate = (0, import_react65.useCallback)(
|
|
14814
15172
|
(entity, config) => {
|
|
14815
15173
|
if (!table) return;
|
|
14816
15174
|
table.optimisticUpdate(entity, config);
|
|
14817
15175
|
},
|
|
14818
15176
|
[table]
|
|
14819
15177
|
);
|
|
14820
|
-
return (0,
|
|
15178
|
+
return (0, import_react65.useMemo)(() => {
|
|
14821
15179
|
return {
|
|
14822
15180
|
status,
|
|
14823
15181
|
data,
|
|
@@ -14847,7 +15205,7 @@ function useFileListItem(id, select, options = {}) {
|
|
|
14847
15205
|
{ where: { id: id ?? null }, select },
|
|
14848
15206
|
options
|
|
14849
15207
|
);
|
|
14850
|
-
return (0,
|
|
15208
|
+
return (0, import_react65.useMemo)(() => {
|
|
14851
15209
|
return {
|
|
14852
15210
|
data: data.at(0),
|
|
14853
15211
|
status,
|
|
@@ -14877,7 +15235,7 @@ function useUser(id, select, options = {}) {
|
|
|
14877
15235
|
{ select, where: { id: id ?? null } },
|
|
14878
15236
|
options
|
|
14879
15237
|
);
|
|
14880
|
-
return (0,
|
|
15238
|
+
return (0, import_react65.useMemo)(() => {
|
|
14881
15239
|
return {
|
|
14882
15240
|
status,
|
|
14883
15241
|
data: data.at(0),
|
|
@@ -14906,11 +15264,6 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
14906
15264
|
useActivityEventsList,
|
|
14907
15265
|
useFileList,
|
|
14908
15266
|
useFileListItem,
|
|
14909
|
-
useGeneratedComponentDescription,
|
|
14910
|
-
useGeneratedComponentDescriptions,
|
|
14911
|
-
useGeneratedComponentNames,
|
|
14912
|
-
useGeneratedPageComponentNames,
|
|
14913
|
-
useGeneratedPageNames,
|
|
14914
15267
|
useIsBeta,
|
|
14915
15268
|
useMetadata,
|
|
14916
15269
|
useNetworkRequests,
|
|
@@ -14942,8 +15295,6 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
14942
15295
|
useOptionalNoyaTags,
|
|
14943
15296
|
useOptionalNoyaTools,
|
|
14944
15297
|
useOptionalNoyaUserData,
|
|
14945
|
-
useRandomIcons,
|
|
14946
|
-
useRandomImages,
|
|
14947
15298
|
useResourcesList,
|
|
14948
15299
|
useTable,
|
|
14949
15300
|
useUser,
|