@noya-app/noya-api-client-react 0.1.37 → 0.1.39
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 +17 -0
- package/dist/index.d.mts +23 -1
- package/dist/index.d.ts +23 -1
- package/dist/index.js +145 -104
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +130 -90
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/react/tableHooks.ts +69 -9
package/dist/index.js
CHANGED
|
@@ -5309,6 +5309,18 @@ var import_observable2 = require("@noya-app/observable");
|
|
|
5309
5309
|
// ../state-manager/src/AssetManager.ts
|
|
5310
5310
|
var import_noya_utils3 = require("@noya-app/noya-utils");
|
|
5311
5311
|
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
|
+
);
|
|
5312
5324
|
|
|
5313
5325
|
// ../noya-schemas/src/nullable.ts
|
|
5314
5326
|
var Nullable = (schema) => Type.Union([Type.Null(), schema]);
|
|
@@ -5373,6 +5385,7 @@ var activityEventSchema = Type.Object({
|
|
|
5373
5385
|
// ../noya-schemas/src/asset.ts
|
|
5374
5386
|
var assetSchema = Type.Object({
|
|
5375
5387
|
id: Type.String(),
|
|
5388
|
+
stableId: Type.String(),
|
|
5376
5389
|
url: Type.String(),
|
|
5377
5390
|
createdAt: Type.String(),
|
|
5378
5391
|
size: Type.Number(),
|
|
@@ -6067,11 +6080,11 @@ function handleValue(target, handledSet, options) {
|
|
|
6067
6080
|
}
|
|
6068
6081
|
});
|
|
6069
6082
|
if (setMap) {
|
|
6070
|
-
const
|
|
6071
|
-
const values = Array.from(
|
|
6072
|
-
|
|
6083
|
+
const set4 = target;
|
|
6084
|
+
const values = Array.from(set4);
|
|
6085
|
+
set4.clear();
|
|
6073
6086
|
values.forEach((value) => {
|
|
6074
|
-
|
|
6087
|
+
set4.add(setMap.has(value) ? setMap.get(value) : value);
|
|
6075
6088
|
});
|
|
6076
6089
|
}
|
|
6077
6090
|
}
|
|
@@ -6904,7 +6917,7 @@ var makeCreator = (arg) => {
|
|
|
6904
6917
|
};
|
|
6905
6918
|
}
|
|
6906
6919
|
const base2 = arg0;
|
|
6907
|
-
const
|
|
6920
|
+
const mutate = arg1;
|
|
6908
6921
|
let options = arg2;
|
|
6909
6922
|
if (typeof arg1 !== "function") {
|
|
6910
6923
|
options = arg1;
|
|
@@ -6948,7 +6961,7 @@ var makeCreator = (arg) => {
|
|
|
6948
6961
|
}
|
|
6949
6962
|
let result;
|
|
6950
6963
|
try {
|
|
6951
|
-
result =
|
|
6964
|
+
result = mutate(draft);
|
|
6952
6965
|
} catch (error) {
|
|
6953
6966
|
revokeProxy(getProxyDraft(draft));
|
|
6954
6967
|
throw error;
|
|
@@ -7056,7 +7069,7 @@ function apply(state, patches, applyOptions) {
|
|
|
7056
7069
|
if (i > -1) {
|
|
7057
7070
|
patches = patches.slice(i + 1);
|
|
7058
7071
|
}
|
|
7059
|
-
const
|
|
7072
|
+
const mutate = (draft) => {
|
|
7060
7073
|
patches.forEach((patch) => {
|
|
7061
7074
|
const { path: _path, from: _fromPath, op } = patch;
|
|
7062
7075
|
const path2 = unescapePath(_path);
|
|
@@ -7176,17 +7189,17 @@ function apply(state, patches, applyOptions) {
|
|
|
7176
7189
|
console.warn('The "mutable" option is not allowed to be used with other options.');
|
|
7177
7190
|
}
|
|
7178
7191
|
}
|
|
7179
|
-
|
|
7192
|
+
mutate(state);
|
|
7180
7193
|
return void 0;
|
|
7181
7194
|
}
|
|
7182
7195
|
if (isDraft(state)) {
|
|
7183
7196
|
if (applyOptions !== void 0) {
|
|
7184
7197
|
throw new Error(`Cannot apply patches with options to a draft.`);
|
|
7185
7198
|
}
|
|
7186
|
-
|
|
7199
|
+
mutate(state);
|
|
7187
7200
|
return state;
|
|
7188
7201
|
}
|
|
7189
|
-
return create(state,
|
|
7202
|
+
return create(state, mutate, Object.assign(Object.assign({}, applyOptions), { enablePatches: false }));
|
|
7190
7203
|
}
|
|
7191
7204
|
var constructorString = Object.prototype.constructor.toString();
|
|
7192
7205
|
|
|
@@ -7299,6 +7312,10 @@ var import_fast_diff = __toESM(require_diff());
|
|
|
7299
7312
|
// ../state-manager/src/EvalManager.ts
|
|
7300
7313
|
var import_noya_utils4 = require("@noya-app/noya-utils");
|
|
7301
7314
|
|
|
7315
|
+
// ../state-manager/src/FilePropertyManager.ts
|
|
7316
|
+
var import_noya_utils5 = require("@noya-app/noya-utils");
|
|
7317
|
+
var import_observable6 = require("@noya-app/observable");
|
|
7318
|
+
|
|
7302
7319
|
// ../state-manager/src/historyEntries.ts
|
|
7303
7320
|
var HistoryEntries;
|
|
7304
7321
|
((HistoryEntries2) => {
|
|
@@ -7386,7 +7403,7 @@ var HistoryEntries;
|
|
|
7386
7403
|
})(HistoryEntries || (HistoryEntries = {}));
|
|
7387
7404
|
|
|
7388
7405
|
// ../state-manager/src/IOManager.ts
|
|
7389
|
-
var
|
|
7406
|
+
var import_observable7 = require("@noya-app/observable");
|
|
7390
7407
|
|
|
7391
7408
|
// ../state-manager/src/jwt.ts
|
|
7392
7409
|
function base64UrlEncode(str) {
|
|
@@ -7488,27 +7505,27 @@ var jwt;
|
|
|
7488
7505
|
})(jwt || (jwt = {}));
|
|
7489
7506
|
|
|
7490
7507
|
// ../state-manager/src/MenuManager.ts
|
|
7491
|
-
var
|
|
7508
|
+
var import_observable8 = require("@noya-app/observable");
|
|
7492
7509
|
|
|
7493
7510
|
// ../state-manager/src/multiplayer.ts
|
|
7494
|
-
var
|
|
7495
|
-
var
|
|
7511
|
+
var import_noya_utils6 = require("@noya-app/noya-utils");
|
|
7512
|
+
var import_observable10 = require("@noya-app/observable");
|
|
7496
7513
|
|
|
7497
7514
|
// ../state-manager/src/stateManager.ts
|
|
7498
|
-
var
|
|
7515
|
+
var import_observable9 = require("@noya-app/observable");
|
|
7499
7516
|
|
|
7500
7517
|
// ../state-manager/src/multiplayer.ts
|
|
7501
|
-
var createHash =
|
|
7518
|
+
var createHash = (value, options) => (0, import_noya_utils6.hash)(value, { ...options, ignoreUndefinedProperties: true });
|
|
7502
7519
|
|
|
7503
7520
|
// ../state-manager/src/NoyaManager.ts
|
|
7504
|
-
var
|
|
7505
|
-
var
|
|
7521
|
+
var import_noya_utils10 = require("@noya-app/noya-utils");
|
|
7522
|
+
var import_observable18 = require("@noya-app/observable");
|
|
7506
7523
|
|
|
7507
7524
|
// ../noya-pipeline/src/graphToTasks.ts
|
|
7508
|
-
var
|
|
7525
|
+
var import_observable11 = require("@noya-app/observable");
|
|
7509
7526
|
|
|
7510
7527
|
// ../noya-pipeline/src/state.ts
|
|
7511
|
-
var
|
|
7528
|
+
var import_noya_utils7 = require("@noya-app/noya-utils");
|
|
7512
7529
|
var rectSchema = Type.Object({
|
|
7513
7530
|
x: Type.Number(),
|
|
7514
7531
|
y: Type.Number(),
|
|
@@ -7607,25 +7624,25 @@ var pipelineSchema = Type.Object(
|
|
|
7607
7624
|
);
|
|
7608
7625
|
|
|
7609
7626
|
// ../state-manager/src/PipelineManager.ts
|
|
7610
|
-
var import_observable11 = require("@noya-app/observable");
|
|
7611
|
-
|
|
7612
|
-
// ../state-manager/src/PublishingManager.ts
|
|
7613
7627
|
var import_observable12 = require("@noya-app/observable");
|
|
7614
7628
|
|
|
7615
|
-
// ../state-manager/src/
|
|
7616
|
-
var import_noya_utils7 = require("@noya-app/noya-utils");
|
|
7629
|
+
// ../state-manager/src/PublishingManager.ts
|
|
7617
7630
|
var import_observable13 = require("@noya-app/observable");
|
|
7618
7631
|
|
|
7619
|
-
// ../state-manager/src/
|
|
7632
|
+
// ../state-manager/src/ResourceManager.ts
|
|
7620
7633
|
var import_noya_utils8 = require("@noya-app/noya-utils");
|
|
7621
7634
|
var import_observable14 = require("@noya-app/observable");
|
|
7622
7635
|
|
|
7623
|
-
// ../state-manager/src/
|
|
7636
|
+
// ../state-manager/src/rpcManager.ts
|
|
7637
|
+
var import_noya_utils9 = require("@noya-app/noya-utils");
|
|
7624
7638
|
var import_observable15 = require("@noya-app/observable");
|
|
7625
7639
|
|
|
7626
|
-
// ../state-manager/src/
|
|
7640
|
+
// ../state-manager/src/SecretManager.ts
|
|
7627
7641
|
var import_observable16 = require("@noya-app/observable");
|
|
7628
7642
|
|
|
7643
|
+
// ../state-manager/src/TaskManager.ts
|
|
7644
|
+
var import_observable17 = require("@noya-app/observable");
|
|
7645
|
+
|
|
7629
7646
|
// ../state-manager/src/NoyaManager.ts
|
|
7630
7647
|
var createMutatorParametersSchema = Type.Object({
|
|
7631
7648
|
sourceCode: Type.String({
|
|
@@ -7746,11 +7763,14 @@ var MenuItemTree = (0, import_tree_visit3.defineTree)((node) => {
|
|
|
7746
7763
|
return node.type === "submenu" ? node.items : [];
|
|
7747
7764
|
});
|
|
7748
7765
|
|
|
7766
|
+
// ../state-manager/src/sync/parentLocalRpcBridge.ts
|
|
7767
|
+
var import_noya_utils11 = require("@noya-app/noya-utils");
|
|
7768
|
+
|
|
7749
7769
|
// ../noya-multiplayer-react/src/ai.ts
|
|
7750
|
-
var
|
|
7770
|
+
var import_react60 = require("react");
|
|
7751
7771
|
|
|
7752
7772
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
7753
|
-
var
|
|
7773
|
+
var import_observable19 = require("@noya-app/observable");
|
|
7754
7774
|
|
|
7755
7775
|
// ../noya-react-utils/src/components/AutoSizer.tsx
|
|
7756
7776
|
var React2 = __toESM(require("react"));
|
|
@@ -7932,7 +7952,7 @@ var FileDropTarget = memoGeneric(function FileDropTarget2({ children, onDropFile
|
|
|
7932
7952
|
var import_react8 = require("react");
|
|
7933
7953
|
|
|
7934
7954
|
// ../noya-react-utils/src/hooks/useDeepArray.ts
|
|
7935
|
-
var
|
|
7955
|
+
var import_noya_utils12 = require("@noya-app/noya-utils");
|
|
7936
7956
|
var import_react9 = require("react");
|
|
7937
7957
|
function useJsonMemo(value) {
|
|
7938
7958
|
const stringified = (0, import_react9.useMemo)(
|
|
@@ -7947,7 +7967,7 @@ function useJsonMemo(value) {
|
|
|
7947
7967
|
}
|
|
7948
7968
|
|
|
7949
7969
|
// ../noya-react-utils/src/hooks/useDeepState.ts
|
|
7950
|
-
var
|
|
7970
|
+
var import_noya_utils13 = require("@noya-app/noya-utils");
|
|
7951
7971
|
var import_react10 = require("react");
|
|
7952
7972
|
|
|
7953
7973
|
// ../noya-react-utils/src/hooks/useFetch.ts
|
|
@@ -7978,7 +7998,7 @@ var import_react17 = require("react");
|
|
|
7978
7998
|
var import_react18 = require("react");
|
|
7979
7999
|
|
|
7980
8000
|
// ../noya-react-utils/src/hooks/useShallowArray.ts
|
|
7981
|
-
var
|
|
8001
|
+
var import_noya_utils14 = require("@noya-app/noya-utils");
|
|
7982
8002
|
var import_react19 = require("react");
|
|
7983
8003
|
|
|
7984
8004
|
// ../noya-react-utils/src/hooks/useStableCallback.ts
|
|
@@ -7988,7 +8008,7 @@ var import_react20 = require("react");
|
|
|
7988
8008
|
var import_react21 = require("react");
|
|
7989
8009
|
|
|
7990
8010
|
// ../noya-react-utils/src/hooks/useUrlHashParameters.ts
|
|
7991
|
-
var
|
|
8011
|
+
var import_noya_utils15 = require("@noya-app/noya-utils");
|
|
7992
8012
|
var import_react22 = require("react");
|
|
7993
8013
|
|
|
7994
8014
|
// ../noya-react-utils/src/hooks/useWindowSize.ts
|
|
@@ -8051,7 +8071,7 @@ function downloadBlob(...params) {
|
|
|
8051
8071
|
}
|
|
8052
8072
|
|
|
8053
8073
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
8054
|
-
var
|
|
8074
|
+
var import_react59 = __toESM(require("react"));
|
|
8055
8075
|
|
|
8056
8076
|
// ../noya-multiplayer-react/src/noyaApp.ts
|
|
8057
8077
|
var import_react57 = require("react");
|
|
@@ -8139,7 +8159,7 @@ var import_react55 = __toESM(require("react"));
|
|
|
8139
8159
|
var import_client = require("react-dom/client");
|
|
8140
8160
|
|
|
8141
8161
|
// ../noya-multiplayer-react/src/inspector/StateInspector.tsx
|
|
8142
|
-
var
|
|
8162
|
+
var import_noya_utils16 = require("@noya-app/noya-utils");
|
|
8143
8163
|
var import_react54 = __toESM(require("react"));
|
|
8144
8164
|
|
|
8145
8165
|
// ../../node_modules/react-inspector/dist/index.mjs
|
|
@@ -10472,19 +10492,17 @@ async function importAll(buffer, noyaManager, {
|
|
|
10472
10492
|
}
|
|
10473
10493
|
if (assets.length) {
|
|
10474
10494
|
await Promise.all(
|
|
10475
|
-
noyaManager.assetManager.assets$.get().map((asset) => noyaManager.assetManager.delete(asset.
|
|
10495
|
+
noyaManager.assetManager.assets$.get().map((asset) => noyaManager.assetManager.delete(asset.stableId))
|
|
10476
10496
|
);
|
|
10477
|
-
|
|
10497
|
+
await Promise.all(
|
|
10478
10498
|
assets.map(async (asset) => {
|
|
10479
|
-
|
|
10499
|
+
await noyaManager.assetManager.create({
|
|
10480
10500
|
data: assetMap[asset.id],
|
|
10481
|
-
contentType: asset.contentType
|
|
10501
|
+
contentType: asset.contentType,
|
|
10502
|
+
stableId: asset.stableId
|
|
10482
10503
|
});
|
|
10483
|
-
return [asset.id, newAsset.id];
|
|
10484
10504
|
})
|
|
10485
10505
|
);
|
|
10486
|
-
const replacementMap = Object.fromEntries(idPairs);
|
|
10487
|
-
state = replaceDeep(state, replacementMap);
|
|
10488
10506
|
}
|
|
10489
10507
|
noyaManager.initialState = state;
|
|
10490
10508
|
noyaManager.forceInit();
|
|
@@ -10517,27 +10535,6 @@ function decodeAll(buffer) {
|
|
|
10517
10535
|
}
|
|
10518
10536
|
return { state, schema, assets, assetMap };
|
|
10519
10537
|
}
|
|
10520
|
-
function replaceDeep(obj, replacementMap) {
|
|
10521
|
-
switch (typeof obj) {
|
|
10522
|
-
case "object":
|
|
10523
|
-
if (obj === null) {
|
|
10524
|
-
return obj;
|
|
10525
|
-
}
|
|
10526
|
-
if (Array.isArray(obj)) {
|
|
10527
|
-
return obj.map((item) => replaceDeep(item, replacementMap));
|
|
10528
|
-
}
|
|
10529
|
-
return Object.fromEntries(
|
|
10530
|
-
Object.entries(obj).map(([key, value]) => [
|
|
10531
|
-
key,
|
|
10532
|
-
replaceDeep(value, replacementMap)
|
|
10533
|
-
])
|
|
10534
|
-
);
|
|
10535
|
-
case "string":
|
|
10536
|
-
return replacementMap[obj] ?? obj;
|
|
10537
|
-
default:
|
|
10538
|
-
return obj;
|
|
10539
|
-
}
|
|
10540
|
-
}
|
|
10541
10538
|
|
|
10542
10539
|
// ../noya-multiplayer-react/src/inspector/StateInspectorTitleLabel.tsx
|
|
10543
10540
|
var import_react51 = __toESM(require("react"));
|
|
@@ -11000,7 +10997,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11000
10997
|
"Upload"
|
|
11001
10998
|
))
|
|
11002
10999
|
},
|
|
11003
|
-
/* @__PURE__ */ import_react54.default.createElement(StateInspectorDisclosureRowInner, null, assets.map((asset) => /* @__PURE__ */ import_react54.default.createElement(StateInspectorRow, { key: asset.id, colorScheme }, /* @__PURE__ */ import_react54.default.createElement(
|
|
11000
|
+
/* @__PURE__ */ import_react54.default.createElement(StateInspectorDisclosureRowInner, null, assets.map((asset) => /* @__PURE__ */ import_react54.default.createElement(StateInspectorRow, { key: asset.id, colorScheme }, /* @__PURE__ */ import_react54.default.createElement(
|
|
11001
|
+
themedObjectInspector,
|
|
11002
|
+
{
|
|
11003
|
+
name: asset.id,
|
|
11004
|
+
data: truncateAsset(asset),
|
|
11005
|
+
theme: theme3
|
|
11006
|
+
}
|
|
11007
|
+
), /* @__PURE__ */ import_react54.default.createElement(
|
|
11004
11008
|
StateInspectorButton,
|
|
11005
11009
|
{
|
|
11006
11010
|
theme: theme3,
|
|
@@ -11025,10 +11029,8 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11025
11029
|
"Are you sure you want to delete all resources?"
|
|
11026
11030
|
);
|
|
11027
11031
|
if (!ok) return;
|
|
11028
|
-
await
|
|
11029
|
-
resources.map(
|
|
11030
|
-
(resource) => resourceManager.deleteResource({ id: resource.id })
|
|
11031
|
-
)
|
|
11032
|
+
await resourceManager.deleteResource(
|
|
11033
|
+
resources.map((resource) => ({ id: resource.id }))
|
|
11032
11034
|
);
|
|
11033
11035
|
}
|
|
11034
11036
|
},
|
|
@@ -11038,7 +11040,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11038
11040
|
{
|
|
11039
11041
|
theme: theme3,
|
|
11040
11042
|
onClick: async () => {
|
|
11041
|
-
const path2 = prompt("Enter directory path") || (0,
|
|
11043
|
+
const path2 = prompt("Enter directory path") || (0, import_noya_utils16.uuid)();
|
|
11042
11044
|
await resourceManager.createResource({
|
|
11043
11045
|
type: "directory",
|
|
11044
11046
|
path: path2
|
|
@@ -11054,9 +11056,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11054
11056
|
const file = await uploadFile();
|
|
11055
11057
|
resourceManager.createResource({
|
|
11056
11058
|
type: "asset",
|
|
11057
|
-
path: file.name || (0,
|
|
11059
|
+
path: file.name || (0, import_noya_utils16.uuid)(),
|
|
11058
11060
|
asset: {
|
|
11059
|
-
content:
|
|
11061
|
+
content: import_noya_utils16.Base64.encode(await file.arrayBuffer()),
|
|
11060
11062
|
contentType: file.type,
|
|
11061
11063
|
encoding: "base64"
|
|
11062
11064
|
}
|
|
@@ -11241,6 +11243,12 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11241
11243
|
)
|
|
11242
11244
|
);
|
|
11243
11245
|
});
|
|
11246
|
+
var truncateAsset = (0, import_noya_utils16.memoize)((asset) => {
|
|
11247
|
+
if (asset.url.startsWith("data:") || asset.url.startsWith("blob:")) {
|
|
11248
|
+
return { ...asset, url: ellipsis(asset.url, 40) };
|
|
11249
|
+
}
|
|
11250
|
+
return asset;
|
|
11251
|
+
});
|
|
11244
11252
|
|
|
11245
11253
|
// ../noya-multiplayer-react/src/hooks.ts
|
|
11246
11254
|
function useManagedHistory(stateManager) {
|
|
@@ -11251,15 +11259,16 @@ function useManagedHistory(stateManager) {
|
|
|
11251
11259
|
);
|
|
11252
11260
|
}
|
|
11253
11261
|
|
|
11262
|
+
// ../noya-multiplayer-react/src/singleton.tsx
|
|
11263
|
+
var import_react58 = __toESM(require("react"));
|
|
11264
|
+
|
|
11254
11265
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
11255
|
-
var AnyNoyaStateContext = (0,
|
|
11256
|
-
var ConnectedUsersContext = (0, import_react58.createContext)(void 0);
|
|
11257
|
-
var AnyEphemeralUserDataManagerContext = (0, import_react58.createContext)(void 0);
|
|
11266
|
+
var AnyNoyaStateContext = (0, import_react59.createContext)(void 0);
|
|
11258
11267
|
var emptyArray = [];
|
|
11259
11268
|
function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
11260
|
-
const [streamId, setStreamId] = (0,
|
|
11269
|
+
const [streamId, setStreamId] = (0, import_react59.useState)(void 0);
|
|
11261
11270
|
const stableStreamFilter = useJsonMemo(streamFilter);
|
|
11262
|
-
(0,
|
|
11271
|
+
(0, import_react59.useEffect)(() => {
|
|
11263
11272
|
if (!stableStreamFilter) return;
|
|
11264
11273
|
const streamId2 = activityEventsManager.subscribe(stableStreamFilter);
|
|
11265
11274
|
setStreamId(streamId2);
|
|
@@ -11273,8 +11282,8 @@ function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
|
11273
11282
|
}
|
|
11274
11283
|
|
|
11275
11284
|
// ../noya-multiplayer-react/src/components/UserPointersOverlay.tsx
|
|
11276
|
-
var
|
|
11277
|
-
var
|
|
11285
|
+
var import_observable20 = require("@noya-app/observable");
|
|
11286
|
+
var import_react61 = __toESM(require("react"));
|
|
11278
11287
|
function shouldShow(hideAfter, updatedAt) {
|
|
11279
11288
|
return !!updatedAt && Date.now() - updatedAt < hideAfter;
|
|
11280
11289
|
}
|
|
@@ -11284,18 +11293,18 @@ var UserPointerInternal = memoGeneric(function UserPointerInternal2({
|
|
|
11284
11293
|
hideAfter = 5e3,
|
|
11285
11294
|
renderUserPointer
|
|
11286
11295
|
}) {
|
|
11287
|
-
const observable = (0,
|
|
11296
|
+
const observable = (0, import_react61.useMemo)(() => {
|
|
11288
11297
|
const metadata$ = ephemeralUserDataManager.metadata$.observePath([user.id]).throttle(50);
|
|
11289
11298
|
const data$ = ephemeralUserDataManager.data$.observePath([user.id]).throttle(50);
|
|
11290
|
-
return
|
|
11299
|
+
return import_observable20.Observable.combine([metadata$, data$], ([metadata2, data2]) => {
|
|
11291
11300
|
return { metadata: metadata2, data: data2 };
|
|
11292
11301
|
});
|
|
11293
11302
|
}, [ephemeralUserDataManager, user.id]);
|
|
11294
11303
|
const { metadata, data } = useObservable2(observable);
|
|
11295
|
-
const [, setForceUpdate] = (0,
|
|
11304
|
+
const [, setForceUpdate] = (0, import_react61.useState)(0);
|
|
11296
11305
|
const updatedAt = metadata?.updatedAt ?? 0;
|
|
11297
11306
|
const show = shouldShow(hideAfter, updatedAt);
|
|
11298
|
-
(0,
|
|
11307
|
+
(0, import_react61.useEffect)(() => {
|
|
11299
11308
|
if (!show) return;
|
|
11300
11309
|
const timeoutId = setTimeout(() => {
|
|
11301
11310
|
setForceUpdate((prev) => prev + 1);
|
|
@@ -11317,9 +11326,9 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
11317
11326
|
}) {
|
|
11318
11327
|
const currentUserId = useObservable2(ephemeralUserDataManager.currentUserId$);
|
|
11319
11328
|
const connectedUsers = useObservable2(connectedUsersManager.connectedUsers$);
|
|
11320
|
-
return /* @__PURE__ */
|
|
11329
|
+
return /* @__PURE__ */ import_react61.default.createElement(import_react61.default.Fragment, null, connectedUsers.map((user) => {
|
|
11321
11330
|
if (user.id === currentUserId) return null;
|
|
11322
|
-
return /* @__PURE__ */
|
|
11331
|
+
return /* @__PURE__ */ import_react61.default.createElement(
|
|
11323
11332
|
UserPointerInternal,
|
|
11324
11333
|
{
|
|
11325
11334
|
key: user.id,
|
|
@@ -11333,15 +11342,15 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
11333
11342
|
|
|
11334
11343
|
// src/react/tableHooks.ts
|
|
11335
11344
|
var import_observable_store = require("@noya-app/observable-store");
|
|
11336
|
-
var
|
|
11345
|
+
var import_react62 = require("react");
|
|
11337
11346
|
function useTable(table, {
|
|
11338
11347
|
where,
|
|
11339
11348
|
select
|
|
11340
11349
|
}, options = {}) {
|
|
11341
|
-
const stableSelect = (0,
|
|
11350
|
+
const stableSelect = (0, import_react62.useMemo)(() => {
|
|
11342
11351
|
return JSON.stringify(select);
|
|
11343
11352
|
}, [select]);
|
|
11344
|
-
const stableWhere = (0,
|
|
11353
|
+
const stableWhere = (0, import_react62.useMemo)(() => {
|
|
11345
11354
|
let cloneWithNoUndefined = {};
|
|
11346
11355
|
for (const [key, value] of Object.entries(where ?? {})) {
|
|
11347
11356
|
if (value !== void 0) {
|
|
@@ -11350,7 +11359,7 @@ function useTable(table, {
|
|
|
11350
11359
|
}
|
|
11351
11360
|
return JSON.stringify(cloneWithNoUndefined);
|
|
11352
11361
|
}, [where]);
|
|
11353
|
-
const observable = (0,
|
|
11362
|
+
const observable = (0, import_react62.useMemo)(() => {
|
|
11354
11363
|
const parsedSelect = JSON.parse(stableSelect);
|
|
11355
11364
|
const parsedWhere = JSON.parse(stableWhere);
|
|
11356
11365
|
if (!table) {
|
|
@@ -11377,67 +11386,99 @@ function useTable(table, {
|
|
|
11377
11386
|
}
|
|
11378
11387
|
);
|
|
11379
11388
|
}, [stableSelect, stableWhere, table, options.policy, options.debug]);
|
|
11380
|
-
(0,
|
|
11389
|
+
(0, import_react62.useEffect)(() => {
|
|
11381
11390
|
observable.start?.();
|
|
11382
11391
|
}, [observable]);
|
|
11383
11392
|
const { status, data } = useObservable2(observable);
|
|
11384
|
-
|
|
11393
|
+
const optimisticUpdate = (0, import_react62.useCallback)(
|
|
11394
|
+
(entity, config) => {
|
|
11395
|
+
if (!table) return;
|
|
11396
|
+
table.optimisticUpdate(entity, config);
|
|
11397
|
+
},
|
|
11398
|
+
[table]
|
|
11399
|
+
);
|
|
11400
|
+
return (0, import_react62.useMemo)(() => {
|
|
11385
11401
|
return {
|
|
11386
11402
|
status,
|
|
11387
11403
|
data,
|
|
11388
|
-
refetch: observable.refetch
|
|
11404
|
+
refetch: observable.refetch,
|
|
11405
|
+
optimisticUpdate
|
|
11389
11406
|
};
|
|
11390
|
-
}, [status, data, observable]);
|
|
11407
|
+
}, [status, data, observable, optimisticUpdate]);
|
|
11391
11408
|
}
|
|
11392
11409
|
function useFileList(select, options = {}) {
|
|
11393
11410
|
const client = useNoyaClientOrFallback();
|
|
11394
|
-
|
|
11411
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11412
|
+
client.fileList$,
|
|
11413
|
+
{ select },
|
|
11414
|
+
options
|
|
11415
|
+
);
|
|
11416
|
+
return {
|
|
11417
|
+
status,
|
|
11418
|
+
data,
|
|
11419
|
+
refetch,
|
|
11420
|
+
optimisticUpdate
|
|
11421
|
+
};
|
|
11395
11422
|
}
|
|
11396
11423
|
function useFileListItem(id, select, options = {}) {
|
|
11397
11424
|
const client = useNoyaClientOrFallback();
|
|
11398
|
-
const { status, data, refetch } = useTable(
|
|
11425
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11399
11426
|
client.fileList$,
|
|
11400
11427
|
{ where: { id: id ?? null }, select },
|
|
11401
11428
|
options
|
|
11402
11429
|
);
|
|
11403
|
-
return (0,
|
|
11430
|
+
return (0, import_react62.useMemo)(() => {
|
|
11404
11431
|
return {
|
|
11405
11432
|
data: data.at(0),
|
|
11406
11433
|
status,
|
|
11407
|
-
refetch
|
|
11434
|
+
refetch,
|
|
11435
|
+
optimisticUpdate
|
|
11408
11436
|
};
|
|
11409
|
-
}, [data, status, refetch]);
|
|
11437
|
+
}, [data, status, refetch, optimisticUpdate]);
|
|
11410
11438
|
}
|
|
11411
11439
|
function useResourcesList(fileId, select, options = {}) {
|
|
11412
11440
|
const client = useNoyaClientOrFallback();
|
|
11413
|
-
|
|
11441
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11414
11442
|
client.resources$,
|
|
11415
11443
|
{ select, where: { accessibleByFileId: fileId } },
|
|
11416
11444
|
options
|
|
11417
11445
|
);
|
|
11446
|
+
return {
|
|
11447
|
+
status,
|
|
11448
|
+
data,
|
|
11449
|
+
refetch,
|
|
11450
|
+
optimisticUpdate
|
|
11451
|
+
};
|
|
11418
11452
|
}
|
|
11419
11453
|
function useUser(id, select, options = {}) {
|
|
11420
11454
|
const client = useNoyaClientOrFallback();
|
|
11421
|
-
const { status, data, refetch } = useTable(
|
|
11455
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11422
11456
|
client.users$,
|
|
11423
11457
|
{ select, where: { id: id ?? null } },
|
|
11424
11458
|
options
|
|
11425
11459
|
);
|
|
11426
|
-
return (0,
|
|
11460
|
+
return (0, import_react62.useMemo)(() => {
|
|
11427
11461
|
return {
|
|
11428
11462
|
status,
|
|
11429
11463
|
data: data.at(0),
|
|
11430
|
-
refetch
|
|
11464
|
+
refetch,
|
|
11465
|
+
optimisticUpdate
|
|
11431
11466
|
};
|
|
11432
|
-
}, [status, data, refetch]);
|
|
11467
|
+
}, [status, data, refetch, optimisticUpdate]);
|
|
11433
11468
|
}
|
|
11434
11469
|
function useActivityEventsList(fileId, select, options = {}) {
|
|
11435
11470
|
const client = useNoyaClientOrFallback();
|
|
11436
|
-
|
|
11471
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11437
11472
|
client.activityEvents$,
|
|
11438
11473
|
{ select, where: { fileId } },
|
|
11439
11474
|
options
|
|
11440
11475
|
);
|
|
11476
|
+
return {
|
|
11477
|
+
status,
|
|
11478
|
+
data,
|
|
11479
|
+
refetch,
|
|
11480
|
+
optimisticUpdate
|
|
11481
|
+
};
|
|
11441
11482
|
}
|
|
11442
11483
|
// Annotate the CommonJS export names for ESM import in node:
|
|
11443
11484
|
0 && (module.exports = {
|