@noya-app/noya-api-client-react 0.1.38 → 0.1.40
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 +32 -1
- package/dist/index.d.ts +32 -1
- package/dist/index.js +146 -104
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +132 -91
- 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,28 @@ var jwt;
|
|
|
7488
7505
|
})(jwt || (jwt = {}));
|
|
7489
7506
|
|
|
7490
7507
|
// ../state-manager/src/MenuManager.ts
|
|
7491
|
-
var
|
|
7508
|
+
var import_noya_utils6 = require("@noya-app/noya-utils");
|
|
7509
|
+
var import_observable8 = require("@noya-app/observable");
|
|
7492
7510
|
|
|
7493
7511
|
// ../state-manager/src/multiplayer.ts
|
|
7494
|
-
var
|
|
7495
|
-
var
|
|
7512
|
+
var import_noya_utils7 = require("@noya-app/noya-utils");
|
|
7513
|
+
var import_observable10 = require("@noya-app/observable");
|
|
7496
7514
|
|
|
7497
7515
|
// ../state-manager/src/stateManager.ts
|
|
7498
|
-
var
|
|
7516
|
+
var import_observable9 = require("@noya-app/observable");
|
|
7499
7517
|
|
|
7500
7518
|
// ../state-manager/src/multiplayer.ts
|
|
7501
|
-
var createHash = (value, options) => (0,
|
|
7519
|
+
var createHash = (value, options) => (0, import_noya_utils7.hash)(value, { ...options, ignoreUndefinedProperties: true });
|
|
7502
7520
|
|
|
7503
7521
|
// ../state-manager/src/NoyaManager.ts
|
|
7504
|
-
var
|
|
7505
|
-
var
|
|
7522
|
+
var import_noya_utils11 = require("@noya-app/noya-utils");
|
|
7523
|
+
var import_observable18 = require("@noya-app/observable");
|
|
7506
7524
|
|
|
7507
7525
|
// ../noya-pipeline/src/graphToTasks.ts
|
|
7508
|
-
var
|
|
7526
|
+
var import_observable11 = require("@noya-app/observable");
|
|
7509
7527
|
|
|
7510
7528
|
// ../noya-pipeline/src/state.ts
|
|
7511
|
-
var
|
|
7529
|
+
var import_noya_utils8 = require("@noya-app/noya-utils");
|
|
7512
7530
|
var rectSchema = Type.Object({
|
|
7513
7531
|
x: Type.Number(),
|
|
7514
7532
|
y: Type.Number(),
|
|
@@ -7607,24 +7625,24 @@ var pipelineSchema = Type.Object(
|
|
|
7607
7625
|
);
|
|
7608
7626
|
|
|
7609
7627
|
// ../state-manager/src/PipelineManager.ts
|
|
7610
|
-
var
|
|
7628
|
+
var import_observable12 = require("@noya-app/observable");
|
|
7611
7629
|
|
|
7612
7630
|
// ../state-manager/src/PublishingManager.ts
|
|
7613
|
-
var
|
|
7631
|
+
var import_observable13 = require("@noya-app/observable");
|
|
7614
7632
|
|
|
7615
7633
|
// ../state-manager/src/ResourceManager.ts
|
|
7616
|
-
var
|
|
7617
|
-
var
|
|
7634
|
+
var import_noya_utils9 = require("@noya-app/noya-utils");
|
|
7635
|
+
var import_observable14 = require("@noya-app/observable");
|
|
7618
7636
|
|
|
7619
7637
|
// ../state-manager/src/rpcManager.ts
|
|
7620
|
-
var
|
|
7621
|
-
var
|
|
7638
|
+
var import_noya_utils10 = require("@noya-app/noya-utils");
|
|
7639
|
+
var import_observable15 = require("@noya-app/observable");
|
|
7622
7640
|
|
|
7623
7641
|
// ../state-manager/src/SecretManager.ts
|
|
7624
|
-
var
|
|
7642
|
+
var import_observable16 = require("@noya-app/observable");
|
|
7625
7643
|
|
|
7626
7644
|
// ../state-manager/src/TaskManager.ts
|
|
7627
|
-
var
|
|
7645
|
+
var import_observable17 = require("@noya-app/observable");
|
|
7628
7646
|
|
|
7629
7647
|
// ../state-manager/src/NoyaManager.ts
|
|
7630
7648
|
var createMutatorParametersSchema = Type.Object({
|
|
@@ -7636,6 +7654,9 @@ var createMutatorParametersSchema = Type.Object({
|
|
|
7636
7654
|
})
|
|
7637
7655
|
});
|
|
7638
7656
|
|
|
7657
|
+
// ../state-manager/src/sync/localRpcHelpers.ts
|
|
7658
|
+
var import_noya_utils12 = require("@noya-app/noya-utils");
|
|
7659
|
+
|
|
7639
7660
|
// ../noya-keymap/src/hooks.ts
|
|
7640
7661
|
var import_react4 = require("react");
|
|
7641
7662
|
|
|
@@ -7747,10 +7768,10 @@ var MenuItemTree = (0, import_tree_visit3.defineTree)((node) => {
|
|
|
7747
7768
|
});
|
|
7748
7769
|
|
|
7749
7770
|
// ../noya-multiplayer-react/src/ai.ts
|
|
7750
|
-
var
|
|
7771
|
+
var import_react60 = require("react");
|
|
7751
7772
|
|
|
7752
7773
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
7753
|
-
var
|
|
7774
|
+
var import_observable19 = require("@noya-app/observable");
|
|
7754
7775
|
|
|
7755
7776
|
// ../noya-react-utils/src/components/AutoSizer.tsx
|
|
7756
7777
|
var React2 = __toESM(require("react"));
|
|
@@ -7932,7 +7953,7 @@ var FileDropTarget = memoGeneric(function FileDropTarget2({ children, onDropFile
|
|
|
7932
7953
|
var import_react8 = require("react");
|
|
7933
7954
|
|
|
7934
7955
|
// ../noya-react-utils/src/hooks/useDeepArray.ts
|
|
7935
|
-
var
|
|
7956
|
+
var import_noya_utils13 = require("@noya-app/noya-utils");
|
|
7936
7957
|
var import_react9 = require("react");
|
|
7937
7958
|
function useJsonMemo(value) {
|
|
7938
7959
|
const stringified = (0, import_react9.useMemo)(
|
|
@@ -7947,7 +7968,7 @@ function useJsonMemo(value) {
|
|
|
7947
7968
|
}
|
|
7948
7969
|
|
|
7949
7970
|
// ../noya-react-utils/src/hooks/useDeepState.ts
|
|
7950
|
-
var
|
|
7971
|
+
var import_noya_utils14 = require("@noya-app/noya-utils");
|
|
7951
7972
|
var import_react10 = require("react");
|
|
7952
7973
|
|
|
7953
7974
|
// ../noya-react-utils/src/hooks/useFetch.ts
|
|
@@ -7978,7 +7999,7 @@ var import_react17 = require("react");
|
|
|
7978
7999
|
var import_react18 = require("react");
|
|
7979
8000
|
|
|
7980
8001
|
// ../noya-react-utils/src/hooks/useShallowArray.ts
|
|
7981
|
-
var
|
|
8002
|
+
var import_noya_utils15 = require("@noya-app/noya-utils");
|
|
7982
8003
|
var import_react19 = require("react");
|
|
7983
8004
|
|
|
7984
8005
|
// ../noya-react-utils/src/hooks/useStableCallback.ts
|
|
@@ -7988,7 +8009,7 @@ var import_react20 = require("react");
|
|
|
7988
8009
|
var import_react21 = require("react");
|
|
7989
8010
|
|
|
7990
8011
|
// ../noya-react-utils/src/hooks/useUrlHashParameters.ts
|
|
7991
|
-
var
|
|
8012
|
+
var import_noya_utils16 = require("@noya-app/noya-utils");
|
|
7992
8013
|
var import_react22 = require("react");
|
|
7993
8014
|
|
|
7994
8015
|
// ../noya-react-utils/src/hooks/useWindowSize.ts
|
|
@@ -8051,7 +8072,7 @@ function downloadBlob(...params) {
|
|
|
8051
8072
|
}
|
|
8052
8073
|
|
|
8053
8074
|
// ../noya-multiplayer-react/src/NoyaStateContext.tsx
|
|
8054
|
-
var
|
|
8075
|
+
var import_react59 = __toESM(require("react"));
|
|
8055
8076
|
|
|
8056
8077
|
// ../noya-multiplayer-react/src/noyaApp.ts
|
|
8057
8078
|
var import_react57 = require("react");
|
|
@@ -8139,7 +8160,7 @@ var import_react55 = __toESM(require("react"));
|
|
|
8139
8160
|
var import_client = require("react-dom/client");
|
|
8140
8161
|
|
|
8141
8162
|
// ../noya-multiplayer-react/src/inspector/StateInspector.tsx
|
|
8142
|
-
var
|
|
8163
|
+
var import_noya_utils17 = require("@noya-app/noya-utils");
|
|
8143
8164
|
var import_react54 = __toESM(require("react"));
|
|
8144
8165
|
|
|
8145
8166
|
// ../../node_modules/react-inspector/dist/index.mjs
|
|
@@ -10472,19 +10493,17 @@ async function importAll(buffer, noyaManager, {
|
|
|
10472
10493
|
}
|
|
10473
10494
|
if (assets.length) {
|
|
10474
10495
|
await Promise.all(
|
|
10475
|
-
noyaManager.assetManager.assets$.get().map((asset) => noyaManager.assetManager.delete(asset.
|
|
10496
|
+
noyaManager.assetManager.assets$.get().map((asset) => noyaManager.assetManager.delete(asset.stableId))
|
|
10476
10497
|
);
|
|
10477
|
-
|
|
10498
|
+
await Promise.all(
|
|
10478
10499
|
assets.map(async (asset) => {
|
|
10479
|
-
|
|
10500
|
+
await noyaManager.assetManager.create({
|
|
10480
10501
|
data: assetMap[asset.id],
|
|
10481
|
-
contentType: asset.contentType
|
|
10502
|
+
contentType: asset.contentType,
|
|
10503
|
+
stableId: asset.stableId
|
|
10482
10504
|
});
|
|
10483
|
-
return [asset.id, newAsset.id];
|
|
10484
10505
|
})
|
|
10485
10506
|
);
|
|
10486
|
-
const replacementMap = Object.fromEntries(idPairs);
|
|
10487
|
-
state = replaceDeep(state, replacementMap);
|
|
10488
10507
|
}
|
|
10489
10508
|
noyaManager.initialState = state;
|
|
10490
10509
|
noyaManager.forceInit();
|
|
@@ -10517,27 +10536,6 @@ function decodeAll(buffer) {
|
|
|
10517
10536
|
}
|
|
10518
10537
|
return { state, schema, assets, assetMap };
|
|
10519
10538
|
}
|
|
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
10539
|
|
|
10542
10540
|
// ../noya-multiplayer-react/src/inspector/StateInspectorTitleLabel.tsx
|
|
10543
10541
|
var import_react51 = __toESM(require("react"));
|
|
@@ -11000,7 +10998,14 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11000
10998
|
"Upload"
|
|
11001
10999
|
))
|
|
11002
11000
|
},
|
|
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(
|
|
11001
|
+
/* @__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(
|
|
11002
|
+
themedObjectInspector,
|
|
11003
|
+
{
|
|
11004
|
+
name: asset.id,
|
|
11005
|
+
data: truncateAsset(asset),
|
|
11006
|
+
theme: theme3
|
|
11007
|
+
}
|
|
11008
|
+
), /* @__PURE__ */ import_react54.default.createElement(
|
|
11004
11009
|
StateInspectorButton,
|
|
11005
11010
|
{
|
|
11006
11011
|
theme: theme3,
|
|
@@ -11025,10 +11030,8 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11025
11030
|
"Are you sure you want to delete all resources?"
|
|
11026
11031
|
);
|
|
11027
11032
|
if (!ok) return;
|
|
11028
|
-
await
|
|
11029
|
-
resources.map(
|
|
11030
|
-
(resource) => resourceManager.deleteResource({ id: resource.id })
|
|
11031
|
-
)
|
|
11033
|
+
await resourceManager.deleteResource(
|
|
11034
|
+
resources.map((resource) => ({ id: resource.id }))
|
|
11032
11035
|
);
|
|
11033
11036
|
}
|
|
11034
11037
|
},
|
|
@@ -11038,7 +11041,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11038
11041
|
{
|
|
11039
11042
|
theme: theme3,
|
|
11040
11043
|
onClick: async () => {
|
|
11041
|
-
const path2 = prompt("Enter directory path") || (0,
|
|
11044
|
+
const path2 = prompt("Enter directory path") || (0, import_noya_utils17.uuid)();
|
|
11042
11045
|
await resourceManager.createResource({
|
|
11043
11046
|
type: "directory",
|
|
11044
11047
|
path: path2
|
|
@@ -11054,9 +11057,9 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11054
11057
|
const file = await uploadFile();
|
|
11055
11058
|
resourceManager.createResource({
|
|
11056
11059
|
type: "asset",
|
|
11057
|
-
path: file.name || (0,
|
|
11060
|
+
path: file.name || (0, import_noya_utils17.uuid)(),
|
|
11058
11061
|
asset: {
|
|
11059
|
-
content:
|
|
11062
|
+
content: import_noya_utils17.Base64.encode(await file.arrayBuffer()),
|
|
11060
11063
|
contentType: file.type,
|
|
11061
11064
|
encoding: "base64"
|
|
11062
11065
|
}
|
|
@@ -11241,6 +11244,12 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
11241
11244
|
)
|
|
11242
11245
|
);
|
|
11243
11246
|
});
|
|
11247
|
+
var truncateAsset = (0, import_noya_utils17.memoize)((asset) => {
|
|
11248
|
+
if (asset.url.startsWith("data:") || asset.url.startsWith("blob:")) {
|
|
11249
|
+
return { ...asset, url: ellipsis(asset.url, 40) };
|
|
11250
|
+
}
|
|
11251
|
+
return asset;
|
|
11252
|
+
});
|
|
11244
11253
|
|
|
11245
11254
|
// ../noya-multiplayer-react/src/hooks.ts
|
|
11246
11255
|
function useManagedHistory(stateManager) {
|
|
@@ -11251,15 +11260,16 @@ function useManagedHistory(stateManager) {
|
|
|
11251
11260
|
);
|
|
11252
11261
|
}
|
|
11253
11262
|
|
|
11263
|
+
// ../noya-multiplayer-react/src/singleton.tsx
|
|
11264
|
+
var import_react58 = __toESM(require("react"));
|
|
11265
|
+
|
|
11254
11266
|
// ../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);
|
|
11267
|
+
var AnyNoyaStateContext = (0, import_react59.createContext)(void 0);
|
|
11258
11268
|
var emptyArray = [];
|
|
11259
11269
|
function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
11260
|
-
const [streamId, setStreamId] = (0,
|
|
11270
|
+
const [streamId, setStreamId] = (0, import_react59.useState)(void 0);
|
|
11261
11271
|
const stableStreamFilter = useJsonMemo(streamFilter);
|
|
11262
|
-
(0,
|
|
11272
|
+
(0, import_react59.useEffect)(() => {
|
|
11263
11273
|
if (!stableStreamFilter) return;
|
|
11264
11274
|
const streamId2 = activityEventsManager.subscribe(stableStreamFilter);
|
|
11265
11275
|
setStreamId(streamId2);
|
|
@@ -11273,8 +11283,8 @@ function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
|
11273
11283
|
}
|
|
11274
11284
|
|
|
11275
11285
|
// ../noya-multiplayer-react/src/components/UserPointersOverlay.tsx
|
|
11276
|
-
var
|
|
11277
|
-
var
|
|
11286
|
+
var import_observable20 = require("@noya-app/observable");
|
|
11287
|
+
var import_react61 = __toESM(require("react"));
|
|
11278
11288
|
function shouldShow(hideAfter, updatedAt) {
|
|
11279
11289
|
return !!updatedAt && Date.now() - updatedAt < hideAfter;
|
|
11280
11290
|
}
|
|
@@ -11284,18 +11294,18 @@ var UserPointerInternal = memoGeneric(function UserPointerInternal2({
|
|
|
11284
11294
|
hideAfter = 5e3,
|
|
11285
11295
|
renderUserPointer
|
|
11286
11296
|
}) {
|
|
11287
|
-
const observable = (0,
|
|
11297
|
+
const observable = (0, import_react61.useMemo)(() => {
|
|
11288
11298
|
const metadata$ = ephemeralUserDataManager.metadata$.observePath([user.id]).throttle(50);
|
|
11289
11299
|
const data$ = ephemeralUserDataManager.data$.observePath([user.id]).throttle(50);
|
|
11290
|
-
return
|
|
11300
|
+
return import_observable20.Observable.combine([metadata$, data$], ([metadata2, data2]) => {
|
|
11291
11301
|
return { metadata: metadata2, data: data2 };
|
|
11292
11302
|
});
|
|
11293
11303
|
}, [ephemeralUserDataManager, user.id]);
|
|
11294
11304
|
const { metadata, data } = useObservable2(observable);
|
|
11295
|
-
const [, setForceUpdate] = (0,
|
|
11305
|
+
const [, setForceUpdate] = (0, import_react61.useState)(0);
|
|
11296
11306
|
const updatedAt = metadata?.updatedAt ?? 0;
|
|
11297
11307
|
const show = shouldShow(hideAfter, updatedAt);
|
|
11298
|
-
(0,
|
|
11308
|
+
(0, import_react61.useEffect)(() => {
|
|
11299
11309
|
if (!show) return;
|
|
11300
11310
|
const timeoutId = setTimeout(() => {
|
|
11301
11311
|
setForceUpdate((prev) => prev + 1);
|
|
@@ -11317,9 +11327,9 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
11317
11327
|
}) {
|
|
11318
11328
|
const currentUserId = useObservable2(ephemeralUserDataManager.currentUserId$);
|
|
11319
11329
|
const connectedUsers = useObservable2(connectedUsersManager.connectedUsers$);
|
|
11320
|
-
return /* @__PURE__ */
|
|
11330
|
+
return /* @__PURE__ */ import_react61.default.createElement(import_react61.default.Fragment, null, connectedUsers.map((user) => {
|
|
11321
11331
|
if (user.id === currentUserId) return null;
|
|
11322
|
-
return /* @__PURE__ */
|
|
11332
|
+
return /* @__PURE__ */ import_react61.default.createElement(
|
|
11323
11333
|
UserPointerInternal,
|
|
11324
11334
|
{
|
|
11325
11335
|
key: user.id,
|
|
@@ -11333,15 +11343,15 @@ var UserPointersOverlay = memoGeneric(function UserPointers({
|
|
|
11333
11343
|
|
|
11334
11344
|
// src/react/tableHooks.ts
|
|
11335
11345
|
var import_observable_store = require("@noya-app/observable-store");
|
|
11336
|
-
var
|
|
11346
|
+
var import_react62 = require("react");
|
|
11337
11347
|
function useTable(table, {
|
|
11338
11348
|
where,
|
|
11339
11349
|
select
|
|
11340
11350
|
}, options = {}) {
|
|
11341
|
-
const stableSelect = (0,
|
|
11351
|
+
const stableSelect = (0, import_react62.useMemo)(() => {
|
|
11342
11352
|
return JSON.stringify(select);
|
|
11343
11353
|
}, [select]);
|
|
11344
|
-
const stableWhere = (0,
|
|
11354
|
+
const stableWhere = (0, import_react62.useMemo)(() => {
|
|
11345
11355
|
let cloneWithNoUndefined = {};
|
|
11346
11356
|
for (const [key, value] of Object.entries(where ?? {})) {
|
|
11347
11357
|
if (value !== void 0) {
|
|
@@ -11350,7 +11360,7 @@ function useTable(table, {
|
|
|
11350
11360
|
}
|
|
11351
11361
|
return JSON.stringify(cloneWithNoUndefined);
|
|
11352
11362
|
}, [where]);
|
|
11353
|
-
const observable = (0,
|
|
11363
|
+
const observable = (0, import_react62.useMemo)(() => {
|
|
11354
11364
|
const parsedSelect = JSON.parse(stableSelect);
|
|
11355
11365
|
const parsedWhere = JSON.parse(stableWhere);
|
|
11356
11366
|
if (!table) {
|
|
@@ -11377,67 +11387,99 @@ function useTable(table, {
|
|
|
11377
11387
|
}
|
|
11378
11388
|
);
|
|
11379
11389
|
}, [stableSelect, stableWhere, table, options.policy, options.debug]);
|
|
11380
|
-
(0,
|
|
11390
|
+
(0, import_react62.useEffect)(() => {
|
|
11381
11391
|
observable.start?.();
|
|
11382
11392
|
}, [observable]);
|
|
11383
11393
|
const { status, data } = useObservable2(observable);
|
|
11384
|
-
|
|
11394
|
+
const optimisticUpdate = (0, import_react62.useCallback)(
|
|
11395
|
+
(entity, config) => {
|
|
11396
|
+
if (!table) return;
|
|
11397
|
+
table.optimisticUpdate(entity, config);
|
|
11398
|
+
},
|
|
11399
|
+
[table]
|
|
11400
|
+
);
|
|
11401
|
+
return (0, import_react62.useMemo)(() => {
|
|
11385
11402
|
return {
|
|
11386
11403
|
status,
|
|
11387
11404
|
data,
|
|
11388
|
-
refetch: observable.refetch
|
|
11405
|
+
refetch: observable.refetch,
|
|
11406
|
+
optimisticUpdate
|
|
11389
11407
|
};
|
|
11390
|
-
}, [status, data, observable]);
|
|
11408
|
+
}, [status, data, observable, optimisticUpdate]);
|
|
11391
11409
|
}
|
|
11392
11410
|
function useFileList(select, options = {}) {
|
|
11393
11411
|
const client = useNoyaClientOrFallback();
|
|
11394
|
-
|
|
11412
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11413
|
+
client.fileList$,
|
|
11414
|
+
{ select },
|
|
11415
|
+
options
|
|
11416
|
+
);
|
|
11417
|
+
return {
|
|
11418
|
+
status,
|
|
11419
|
+
data,
|
|
11420
|
+
refetch,
|
|
11421
|
+
optimisticUpdate
|
|
11422
|
+
};
|
|
11395
11423
|
}
|
|
11396
11424
|
function useFileListItem(id, select, options = {}) {
|
|
11397
11425
|
const client = useNoyaClientOrFallback();
|
|
11398
|
-
const { status, data, refetch } = useTable(
|
|
11426
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11399
11427
|
client.fileList$,
|
|
11400
11428
|
{ where: { id: id ?? null }, select },
|
|
11401
11429
|
options
|
|
11402
11430
|
);
|
|
11403
|
-
return (0,
|
|
11431
|
+
return (0, import_react62.useMemo)(() => {
|
|
11404
11432
|
return {
|
|
11405
11433
|
data: data.at(0),
|
|
11406
11434
|
status,
|
|
11407
|
-
refetch
|
|
11435
|
+
refetch,
|
|
11436
|
+
optimisticUpdate
|
|
11408
11437
|
};
|
|
11409
|
-
}, [data, status, refetch]);
|
|
11438
|
+
}, [data, status, refetch, optimisticUpdate]);
|
|
11410
11439
|
}
|
|
11411
11440
|
function useResourcesList(fileId, select, options = {}) {
|
|
11412
11441
|
const client = useNoyaClientOrFallback();
|
|
11413
|
-
|
|
11442
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11414
11443
|
client.resources$,
|
|
11415
11444
|
{ select, where: { accessibleByFileId: fileId } },
|
|
11416
11445
|
options
|
|
11417
11446
|
);
|
|
11447
|
+
return {
|
|
11448
|
+
status,
|
|
11449
|
+
data,
|
|
11450
|
+
refetch,
|
|
11451
|
+
optimisticUpdate
|
|
11452
|
+
};
|
|
11418
11453
|
}
|
|
11419
11454
|
function useUser(id, select, options = {}) {
|
|
11420
11455
|
const client = useNoyaClientOrFallback();
|
|
11421
|
-
const { status, data, refetch } = useTable(
|
|
11456
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11422
11457
|
client.users$,
|
|
11423
11458
|
{ select, where: { id: id ?? null } },
|
|
11424
11459
|
options
|
|
11425
11460
|
);
|
|
11426
|
-
return (0,
|
|
11461
|
+
return (0, import_react62.useMemo)(() => {
|
|
11427
11462
|
return {
|
|
11428
11463
|
status,
|
|
11429
11464
|
data: data.at(0),
|
|
11430
|
-
refetch
|
|
11465
|
+
refetch,
|
|
11466
|
+
optimisticUpdate
|
|
11431
11467
|
};
|
|
11432
|
-
}, [status, data, refetch]);
|
|
11468
|
+
}, [status, data, refetch, optimisticUpdate]);
|
|
11433
11469
|
}
|
|
11434
11470
|
function useActivityEventsList(fileId, select, options = {}) {
|
|
11435
11471
|
const client = useNoyaClientOrFallback();
|
|
11436
|
-
|
|
11472
|
+
const { status, data, refetch, optimisticUpdate } = useTable(
|
|
11437
11473
|
client.activityEvents$,
|
|
11438
11474
|
{ select, where: { fileId } },
|
|
11439
11475
|
options
|
|
11440
11476
|
);
|
|
11477
|
+
return {
|
|
11478
|
+
status,
|
|
11479
|
+
data,
|
|
11480
|
+
refetch,
|
|
11481
|
+
optimisticUpdate
|
|
11482
|
+
};
|
|
11441
11483
|
}
|
|
11442
11484
|
// Annotate the CommonJS export names for ESM import in node:
|
|
11443
11485
|
0 && (module.exports = {
|