@ai-matrx/sharing 0.1.9 → 0.1.11
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/CHANGELOG.md +15 -2
- package/dist/access-react.cjs +71 -12
- package/dist/access-react.cjs.map +1 -1
- package/dist/access-react.d.cts +3 -1
- package/dist/access-react.d.ts +3 -1
- package/dist/access-react.js +85 -25
- package/dist/access-react.js.map +1 -1
- package/dist/react.cjs +269 -288
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +17 -1
- package/dist/react.d.ts +17 -1
- package/dist/react.js +173 -192
- package/dist/react.js.map +1 -1
- package/package.json +5 -5
package/dist/access-react.d.cts
CHANGED
|
@@ -184,6 +184,8 @@ interface AccessUiEnv {
|
|
|
184
184
|
}
|
|
185
185
|
/** The documented default for `manualRequestActionKey`. */
|
|
186
186
|
declare const REQUEST_ACCESS_MANUAL_ACTION = "request_access.manual";
|
|
187
|
+
/** Test seam: forget what was announced. */
|
|
188
|
+
declare function resetAccessUiStandInNotices(): void;
|
|
187
189
|
/** The host's `Link`, resolved at render. Components import this as `Link`. */
|
|
188
190
|
declare const AccessLink: react.ForwardRefExoticComponent<AccessUiLinkProps & RefAttributes<HTMLAnchorElement>>;
|
|
189
191
|
/**
|
|
@@ -679,4 +681,4 @@ declare function offerOwnerChoices(error: unknown, request: CantRemoveRequest):
|
|
|
679
681
|
*/
|
|
680
682
|
declare function ensureRemovable(request: CantRemoveRequest): Promise<boolean>;
|
|
681
683
|
|
|
682
|
-
export { ACCESS_REQUESTS_HREF, AccessDenied, type AccessDeniedProps, type AccessDeniedSuggestion, AccessDeniedView, AccessGate, type AccessGateProps, AccessLink, AccessRequestsSurface, type AccessResourceActionRequestAction, type AccessSettingRequestAction, type AccessUi, type AccessUiCurrentUser, type AccessUiEntityInfo, type AccessUiEntityRefProps, type AccessUiEnv, type AccessUiErrorMenuProps, type AccessUiFeedbackInput, type AccessUiLinkProps, AccessUiProvider, type AccessUiRouter, type AccessUiTextareaProps, type AccessUiToast, type AccessUiUserIdentityProps, BlindAccessAsk, CANT_REMOVE_DIALOG, type CantRemoveOutcome, type CantRemoveRequest, ForbiddenSurfaceView, type ForbiddenSurfaceViewProps, GovernedActionDialog, HiddenByMeButton, HiddenFilter, REQUEST_ACCESS_MANUAL_ACTION, RemovalNotYoursError, RequestAccess, RequestAccessPanel, type RequestAccessResult, ResourceActionRequestButtons, ServerReadRecheck, type ServerReadRecheckToken, SettingAccessGate, SettingRequestActionButtons, SlugAccessGate, type SlugAccessGateProps, UnresolvedEntityRef, type UnresolvedEntityRefProps, type UseAccessGateResult, type UseAccessStatesResult, configureAccessUi, ensureRemovable, getAccessUi, isAccessUiConfigured, isRemovalNotYours, offerOwnerChoices, refreshHiddenByMe, requestCantRemove, useAccessGate, useAccessStates, useAccessUi, useHiddenByMe, useHiddenItems, useHideForMe, useRemovalRights, useRequestAccess };
|
|
684
|
+
export { ACCESS_REQUESTS_HREF, AccessDenied, type AccessDeniedProps, type AccessDeniedSuggestion, AccessDeniedView, AccessGate, type AccessGateProps, AccessLink, AccessRequestsSurface, type AccessResourceActionRequestAction, type AccessSettingRequestAction, type AccessUi, type AccessUiCurrentUser, type AccessUiEntityInfo, type AccessUiEntityRefProps, type AccessUiEnv, type AccessUiErrorMenuProps, type AccessUiFeedbackInput, type AccessUiLinkProps, AccessUiProvider, type AccessUiRouter, type AccessUiTextareaProps, type AccessUiToast, type AccessUiUserIdentityProps, BlindAccessAsk, CANT_REMOVE_DIALOG, type CantRemoveOutcome, type CantRemoveRequest, ForbiddenSurfaceView, type ForbiddenSurfaceViewProps, GovernedActionDialog, HiddenByMeButton, HiddenFilter, REQUEST_ACCESS_MANUAL_ACTION, RemovalNotYoursError, RequestAccess, RequestAccessPanel, type RequestAccessResult, ResourceActionRequestButtons, ServerReadRecheck, type ServerReadRecheckToken, SettingAccessGate, SettingRequestActionButtons, SlugAccessGate, type SlugAccessGateProps, UnresolvedEntityRef, type UnresolvedEntityRefProps, type UseAccessGateResult, type UseAccessStatesResult, configureAccessUi, ensureRemovable, getAccessUi, isAccessUiConfigured, isRemovalNotYours, offerOwnerChoices, refreshHiddenByMe, requestCantRemove, resetAccessUiStandInNotices, useAccessGate, useAccessStates, useAccessUi, useHiddenByMe, useHiddenItems, useHideForMe, useRemovalRights, useRequestAccess };
|
package/dist/access-react.d.ts
CHANGED
|
@@ -184,6 +184,8 @@ interface AccessUiEnv {
|
|
|
184
184
|
}
|
|
185
185
|
/** The documented default for `manualRequestActionKey`. */
|
|
186
186
|
declare const REQUEST_ACCESS_MANUAL_ACTION = "request_access.manual";
|
|
187
|
+
/** Test seam: forget what was announced. */
|
|
188
|
+
declare function resetAccessUiStandInNotices(): void;
|
|
187
189
|
/** The host's `Link`, resolved at render. Components import this as `Link`. */
|
|
188
190
|
declare const AccessLink: react.ForwardRefExoticComponent<AccessUiLinkProps & RefAttributes<HTMLAnchorElement>>;
|
|
189
191
|
/**
|
|
@@ -679,4 +681,4 @@ declare function offerOwnerChoices(error: unknown, request: CantRemoveRequest):
|
|
|
679
681
|
*/
|
|
680
682
|
declare function ensureRemovable(request: CantRemoveRequest): Promise<boolean>;
|
|
681
683
|
|
|
682
|
-
export { ACCESS_REQUESTS_HREF, AccessDenied, type AccessDeniedProps, type AccessDeniedSuggestion, AccessDeniedView, AccessGate, type AccessGateProps, AccessLink, AccessRequestsSurface, type AccessResourceActionRequestAction, type AccessSettingRequestAction, type AccessUi, type AccessUiCurrentUser, type AccessUiEntityInfo, type AccessUiEntityRefProps, type AccessUiEnv, type AccessUiErrorMenuProps, type AccessUiFeedbackInput, type AccessUiLinkProps, AccessUiProvider, type AccessUiRouter, type AccessUiTextareaProps, type AccessUiToast, type AccessUiUserIdentityProps, BlindAccessAsk, CANT_REMOVE_DIALOG, type CantRemoveOutcome, type CantRemoveRequest, ForbiddenSurfaceView, type ForbiddenSurfaceViewProps, GovernedActionDialog, HiddenByMeButton, HiddenFilter, REQUEST_ACCESS_MANUAL_ACTION, RemovalNotYoursError, RequestAccess, RequestAccessPanel, type RequestAccessResult, ResourceActionRequestButtons, ServerReadRecheck, type ServerReadRecheckToken, SettingAccessGate, SettingRequestActionButtons, SlugAccessGate, type SlugAccessGateProps, UnresolvedEntityRef, type UnresolvedEntityRefProps, type UseAccessGateResult, type UseAccessStatesResult, configureAccessUi, ensureRemovable, getAccessUi, isAccessUiConfigured, isRemovalNotYours, offerOwnerChoices, refreshHiddenByMe, requestCantRemove, useAccessGate, useAccessStates, useAccessUi, useHiddenByMe, useHiddenItems, useHideForMe, useRemovalRights, useRequestAccess };
|
|
684
|
+
export { ACCESS_REQUESTS_HREF, AccessDenied, type AccessDeniedProps, type AccessDeniedSuggestion, AccessDeniedView, AccessGate, type AccessGateProps, AccessLink, AccessRequestsSurface, type AccessResourceActionRequestAction, type AccessSettingRequestAction, type AccessUi, type AccessUiCurrentUser, type AccessUiEntityInfo, type AccessUiEntityRefProps, type AccessUiEnv, type AccessUiErrorMenuProps, type AccessUiFeedbackInput, type AccessUiLinkProps, AccessUiProvider, type AccessUiRouter, type AccessUiTextareaProps, type AccessUiToast, type AccessUiUserIdentityProps, BlindAccessAsk, CANT_REMOVE_DIALOG, type CantRemoveOutcome, type CantRemoveRequest, ForbiddenSurfaceView, type ForbiddenSurfaceViewProps, GovernedActionDialog, HiddenByMeButton, HiddenFilter, REQUEST_ACCESS_MANUAL_ACTION, RemovalNotYoursError, RequestAccess, RequestAccessPanel, type RequestAccessResult, ResourceActionRequestButtons, ServerReadRecheck, type ServerReadRecheckToken, SettingAccessGate, SettingRequestActionButtons, SlugAccessGate, type SlugAccessGateProps, UnresolvedEntityRef, type UnresolvedEntityRefProps, type UseAccessGateResult, type UseAccessStatesResult, configureAccessUi, ensureRemovable, getAccessUi, isAccessUiConfigured, isRemovalNotYours, offerOwnerChoices, refreshHiddenByMe, requestCantRemove, resetAccessUiStandInNotices, useAccessGate, useAccessStates, useAccessUi, useHiddenByMe, useHiddenItems, useHideForMe, useRemovalRights, useRequestAccess };
|
package/dist/access-react.js
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
createContext,
|
|
6
6
|
forwardRef,
|
|
7
7
|
useContext,
|
|
8
|
+
useEffect,
|
|
8
9
|
useMemo
|
|
9
10
|
} from "react";
|
|
10
11
|
import { Avatar, AvatarFallback, AvatarImage, Textarea } from "@ai-matrx/design-system";
|
|
@@ -16,9 +17,33 @@ var DEFAULT_NAV_ITEM_CLASSES = {
|
|
|
16
17
|
selected: "bg-[var(--shell-nav-selected-bg)] text-[var(--shell-nav-selected-text)] shadow-[var(--shell-nav-selected-shadow)] font-semibold",
|
|
17
18
|
unselected: "text-[var(--shell-nav-unselected-text)] hover:text-[var(--shell-nav-text-hover)] hover:bg-[var(--matrx-glass-bg-hover)]"
|
|
18
19
|
};
|
|
20
|
+
var announcedPorts = /* @__PURE__ */ new Set();
|
|
21
|
+
function announceDefault(port, consequence) {
|
|
22
|
+
if (announcedPorts.has(port)) return;
|
|
23
|
+
announcedPorts.add(port);
|
|
24
|
+
if (typeof console !== "undefined") {
|
|
25
|
+
console.warn(
|
|
26
|
+
`[@ai-matrx/sharing/access/react] The access screens are using their built-in stand-in for "${port}": ${consequence}. Pass it with configureAccessUi({ ${port} }) once at app boot.`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
if (typeof document !== "undefined") {
|
|
30
|
+
const root = document.documentElement;
|
|
31
|
+
const ports = new Set((root.getAttribute("data-access-ui-ports") ?? "").split(",").filter(Boolean));
|
|
32
|
+
ports.add(port);
|
|
33
|
+
root.setAttribute("data-access-ui-ports", [...ports].join(","));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function resetAccessUiStandInNotices() {
|
|
37
|
+
announcedPorts.clear();
|
|
38
|
+
if (typeof document !== "undefined") document.documentElement.removeAttribute("data-access-ui-ports");
|
|
39
|
+
}
|
|
40
|
+
function standInAttrs(port) {
|
|
41
|
+
return { "data-access-ui-host": "unconfigured", "data-access-ui-port": port };
|
|
42
|
+
}
|
|
19
43
|
var DefaultLink = forwardRef(
|
|
20
44
|
function DefaultLink2(props, ref) {
|
|
21
|
-
|
|
45
|
+
useEffect(() => announceDefault("Link", "links are plain anchors (a full page load, no client navigation)"), []);
|
|
46
|
+
return /* @__PURE__ */ jsx("a", { ref, ...standInAttrs("Link"), ...props });
|
|
22
47
|
}
|
|
23
48
|
);
|
|
24
49
|
var AccessLink = forwardRef(
|
|
@@ -27,28 +52,35 @@ var AccessLink = forwardRef(
|
|
|
27
52
|
return /* @__PURE__ */ jsx(Link, { ref, ...props });
|
|
28
53
|
}
|
|
29
54
|
);
|
|
55
|
+
var ROUTER_CONSEQUENCE = "navigation uses the browser (full page loads; refresh reloads the tab)";
|
|
30
56
|
var DEFAULT_ROUTER = {
|
|
31
57
|
push: (href) => {
|
|
58
|
+
announceDefault("router", ROUTER_CONSEQUENCE);
|
|
32
59
|
if (typeof window !== "undefined") window.location.assign(href);
|
|
33
60
|
},
|
|
34
61
|
back: () => {
|
|
62
|
+
announceDefault("router", ROUTER_CONSEQUENCE);
|
|
35
63
|
if (typeof window !== "undefined") window.history.back();
|
|
36
64
|
},
|
|
37
65
|
refresh: () => {
|
|
66
|
+
announceDefault("router", ROUTER_CONSEQUENCE);
|
|
38
67
|
if (typeof window !== "undefined") window.location.reload();
|
|
39
68
|
}
|
|
40
69
|
};
|
|
41
70
|
function defaultSearchParam(name) {
|
|
71
|
+
announceDefault("searchParam", "query parameters are read from window.location");
|
|
42
72
|
if (typeof window === "undefined") return null;
|
|
43
73
|
return new URLSearchParams(window.location.search).get(name);
|
|
44
74
|
}
|
|
45
75
|
function DefaultTextarea(props) {
|
|
46
|
-
|
|
76
|
+
useEffect(() => announceDefault("Textarea", "the message box is the plain design-system textarea (no voice, no agent actions)"), []);
|
|
77
|
+
return /* @__PURE__ */ jsx(Textarea, { ...standInAttrs("Textarea"), ...props });
|
|
47
78
|
}
|
|
48
79
|
function DefaultUserIdentity({ user, size = "md", avatarOnly }) {
|
|
80
|
+
useEffect(() => announceDefault("renderUserIdentity", "people are drawn as an avatar and a name (no profile door)"), []);
|
|
49
81
|
const name = user.displayName ?? "Someone";
|
|
50
82
|
const box = size === "sm" ? "h-7 w-7" : "h-9 w-9";
|
|
51
|
-
return /* @__PURE__ */ jsxs("span", { className: "inline-flex min-w-0 items-center gap-2", children: [
|
|
83
|
+
return /* @__PURE__ */ jsxs("span", { ...standInAttrs("renderUserIdentity"), className: "inline-flex min-w-0 items-center gap-2", children: [
|
|
52
84
|
/* @__PURE__ */ jsxs(Avatar, { className: box, children: [
|
|
53
85
|
user.avatarUrl ? /* @__PURE__ */ jsx(AvatarImage, { src: user.avatarUrl, alt: name }) : null,
|
|
54
86
|
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-[11px]", children: getInitials(user.displayName) })
|
|
@@ -57,7 +89,16 @@ function DefaultUserIdentity({ user, size = "md", avatarOnly }) {
|
|
|
57
89
|
] });
|
|
58
90
|
}
|
|
59
91
|
function DefaultEntityRef({ name, className }) {
|
|
60
|
-
|
|
92
|
+
useEffect(() => announceDefault("renderEntityRef", "records are drawn as a plain name (not a door to the record)"), []);
|
|
93
|
+
return /* @__PURE__ */ jsx("span", { ...standInAttrs("renderEntityRef"), className, children: name });
|
|
94
|
+
}
|
|
95
|
+
function DefaultErrorMenu() {
|
|
96
|
+
useEffect(() => announceDefault("renderErrorMenu", "errors show no copy / fix-request menu"), []);
|
|
97
|
+
return /* @__PURE__ */ jsx("span", { hidden: true, ...standInAttrs("renderErrorMenu") });
|
|
98
|
+
}
|
|
99
|
+
function defaultConfirm(options) {
|
|
100
|
+
announceDefault("confirm", "confirmations use the kit confirm (the design-system ConfirmDialogHost must be mounted)");
|
|
101
|
+
return kitConfirm(options);
|
|
61
102
|
}
|
|
62
103
|
var moduleEnv = {};
|
|
63
104
|
var moduleVersion = 0;
|
|
@@ -94,21 +135,33 @@ function resolveAccessUi(base, override) {
|
|
|
94
135
|
Link: env.Link ?? DefaultLink,
|
|
95
136
|
router: env.router ?? DEFAULT_ROUTER,
|
|
96
137
|
searchParam: env.searchParam ?? defaultSearchParam,
|
|
97
|
-
confirm: env.confirm ??
|
|
138
|
+
confirm: env.confirm ?? defaultConfirm,
|
|
98
139
|
Textarea: env.Textarea ?? DefaultTextarea,
|
|
99
140
|
renderUserIdentity: env.renderUserIdentity ?? ((p) => /* @__PURE__ */ jsx(DefaultUserIdentity, { ...p })),
|
|
100
141
|
renderEntityRef: env.renderEntityRef ?? ((p) => /* @__PURE__ */ jsx(DefaultEntityRef, { ...p })),
|
|
101
|
-
renderErrorMenu: env.renderErrorMenu ?? (() =>
|
|
142
|
+
renderErrorMenu: env.renderErrorMenu ?? (() => /* @__PURE__ */ jsx(DefaultErrorMenu, {})),
|
|
102
143
|
navItemClasses: env.navItemClasses ?? DEFAULT_NAV_ITEM_CLASSES,
|
|
103
144
|
manualRequestActionKey: env.manualRequestActionKey ?? REQUEST_ACCESS_MANUAL_ACTION,
|
|
104
|
-
tryGetEntityInfo: (token) =>
|
|
145
|
+
tryGetEntityInfo: (token) => {
|
|
146
|
+
if (!env.entityRegistry) announceDefault("entityRegistry", "owners and records render as plain names (no labels or links)");
|
|
147
|
+
return env.entityRegistry?.tryGetEntityInfo(token) ?? null;
|
|
148
|
+
},
|
|
105
149
|
restoreFromTrash: async (token, id) => {
|
|
106
150
|
if (!env.trash) throw notConfigured("trash");
|
|
107
151
|
await env.trash.restore(token, id);
|
|
108
152
|
},
|
|
109
|
-
resolveRecordUnavailableCapture: (error, resolution) =>
|
|
110
|
-
|
|
111
|
-
|
|
153
|
+
resolveRecordUnavailableCapture: (error, resolution) => {
|
|
154
|
+
if (!env.recordUnavailableCapture) announceDefault("recordUnavailableCapture", "a captured unavailable read is not reconciled");
|
|
155
|
+
env.recordUnavailableCapture?.resolve(error, resolution);
|
|
156
|
+
},
|
|
157
|
+
getSettingRequestAction: (key) => {
|
|
158
|
+
if (!env.settingRequestActions) announceDefault("settingRequestActions", "setting-change requests show without their primary action button");
|
|
159
|
+
return env.settingRequestActions?.get(key);
|
|
160
|
+
},
|
|
161
|
+
getResourceActionRequestAction: (key) => {
|
|
162
|
+
if (!env.resourceActionRequests) announceDefault("resourceActionRequests", "resource-action requests show without their primary action button");
|
|
163
|
+
return env.resourceActionRequests?.get(key);
|
|
164
|
+
},
|
|
112
165
|
createCmsAccessRequest: async (args) => {
|
|
113
166
|
if (!env.cms) throw notConfigured("cms");
|
|
114
167
|
return env.cms.createAccessRequest(args);
|
|
@@ -121,12 +174,18 @@ function resolveAccessUi(base, override) {
|
|
|
121
174
|
if (!env.reportFeedback) throw notConfigured("reportFeedback");
|
|
122
175
|
return env.reportFeedback(input);
|
|
123
176
|
},
|
|
124
|
-
presentOrganizationRefusal: (error, options) =>
|
|
177
|
+
presentOrganizationRefusal: (error, options) => {
|
|
178
|
+
if (!env.presentOrganizationRefusal) announceDefault("presentOrganizationRefusal", "a refusal for a missing organization is shown as a plain error");
|
|
179
|
+
return env.presentOrganizationRefusal?.(error, options) ?? false;
|
|
180
|
+
},
|
|
125
181
|
openOverlay: (overlayId, instanceId, data) => {
|
|
126
182
|
if (!env.overlays) throw notConfigured("overlays");
|
|
127
183
|
env.overlays.open(overlayId, instanceId, data);
|
|
128
184
|
},
|
|
129
|
-
closeOverlay: (overlayId, instanceId) =>
|
|
185
|
+
closeOverlay: (overlayId, instanceId) => {
|
|
186
|
+
if (!env.overlays) announceDefault("overlays", "no overlay can be closed (none was ever opened)");
|
|
187
|
+
env.overlays?.close(overlayId, instanceId);
|
|
188
|
+
}
|
|
130
189
|
};
|
|
131
190
|
return ui;
|
|
132
191
|
}
|
|
@@ -422,7 +481,7 @@ function BlindAccessAsk({
|
|
|
422
481
|
}
|
|
423
482
|
|
|
424
483
|
// src/access/react/useAccessGate.ts
|
|
425
|
-
import { useCallback, useEffect, useState as useState3 } from "react";
|
|
484
|
+
import { useCallback, useEffect as useEffect2, useState as useState3 } from "react";
|
|
426
485
|
import { fetchAccessDeniedContext } from "@ai-matrx/data/access";
|
|
427
486
|
import { classifyDataError } from "@ai-matrx/data/access";
|
|
428
487
|
function useAccessGate(token, id, options = {}) {
|
|
@@ -431,7 +490,7 @@ function useAccessGate(token, id, options = {}) {
|
|
|
431
490
|
const enabled = options.enabled !== false && Boolean(token && id);
|
|
432
491
|
const key = enabled ? `${token}:${id}:${nonce}` : null;
|
|
433
492
|
const [resolved, setResolved] = useState3(null);
|
|
434
|
-
|
|
493
|
+
useEffect2(() => {
|
|
435
494
|
if (!key || !token || !id) return;
|
|
436
495
|
let active = true;
|
|
437
496
|
const read = classifyDataError(options.readError) === "fault" ? "fault" : "access-question";
|
|
@@ -842,7 +901,7 @@ function ServerRefusalCode({
|
|
|
842
901
|
}
|
|
843
902
|
|
|
844
903
|
// src/access/react/SlugAccessGate.tsx
|
|
845
|
-
import { useEffect as
|
|
904
|
+
import { useEffect as useEffect3, useState as useState5 } from "react";
|
|
846
905
|
import { ArrowLeft as ArrowLeft2, Link2Off } from "lucide-react";
|
|
847
906
|
import { isUuidShape } from "@ai-matrx/kit/uuid";
|
|
848
907
|
import { Button as Button4 } from "@ai-matrx/design-system/controls";
|
|
@@ -862,7 +921,7 @@ function SlugAccessGate({
|
|
|
862
921
|
const tokenKey = tokens.join("|");
|
|
863
922
|
const [resolved, setResolved] = useState5(null);
|
|
864
923
|
const key = `${tokenKey}::${slug}`;
|
|
865
|
-
|
|
924
|
+
useEffect3(() => {
|
|
866
925
|
let active = true;
|
|
867
926
|
const list = tokenKey ? tokenKey.split("|") : [];
|
|
868
927
|
void (async () => {
|
|
@@ -1477,7 +1536,7 @@ function UnresolvedEntityRef({
|
|
|
1477
1536
|
}
|
|
1478
1537
|
|
|
1479
1538
|
// src/access/react/ServerReadRecheck.tsx
|
|
1480
|
-
import { useEffect as
|
|
1539
|
+
import { useEffect as useEffect4, useState as useState10 } from "react";
|
|
1481
1540
|
import { getClaimsUser } from "@ai-matrx/auth/claims";
|
|
1482
1541
|
import { getAccessEnv as getAccessEnv2 } from "@ai-matrx/data/access";
|
|
1483
1542
|
import { decideServerReadRecheck } from "@ai-matrx/data/access";
|
|
@@ -1498,7 +1557,7 @@ function ServerReadRecheck({
|
|
|
1498
1557
|
const router = useAccessUi().router;
|
|
1499
1558
|
const key = `${token}:${id}`;
|
|
1500
1559
|
const [showGate, setShowGate] = useState10(false);
|
|
1501
|
-
|
|
1560
|
+
useEffect4(() => {
|
|
1502
1561
|
let active = true;
|
|
1503
1562
|
void (async () => {
|
|
1504
1563
|
let signedIn = false;
|
|
@@ -1561,7 +1620,7 @@ import {
|
|
|
1561
1620
|
} from "@ai-matrx/data/access";
|
|
1562
1621
|
|
|
1563
1622
|
// src/access/react/useHiddenByMe.ts
|
|
1564
|
-
import { useEffect as
|
|
1623
|
+
import { useEffect as useEffect5, useState as useState11, useSyncExternalStore } from "react";
|
|
1565
1624
|
import {
|
|
1566
1625
|
fetchRemovalRights,
|
|
1567
1626
|
hideForMe,
|
|
@@ -1635,7 +1694,7 @@ function useHiddenSlot(token, enabled) {
|
|
|
1635
1694
|
);
|
|
1636
1695
|
const active = enabled && Boolean(token);
|
|
1637
1696
|
const slot = active ? slotFor(token) : void 0;
|
|
1638
|
-
|
|
1697
|
+
useEffect5(() => {
|
|
1639
1698
|
if (!active) return;
|
|
1640
1699
|
const current = slotFor(token);
|
|
1641
1700
|
if ((current.items === void 0 || current.failed) && !current.loading) void refreshHiddenByMe(token);
|
|
@@ -1657,7 +1716,7 @@ function useRemovalRights(token, id) {
|
|
|
1657
1716
|
const [nonce, setNonce] = useState11(0);
|
|
1658
1717
|
const key = id ? `${token}:${id}:${nonce}` : null;
|
|
1659
1718
|
const [settled, setSettled] = useState11(null);
|
|
1660
|
-
|
|
1719
|
+
useEffect5(() => {
|
|
1661
1720
|
if (!key || !id) return;
|
|
1662
1721
|
let active = true;
|
|
1663
1722
|
fetchRemovalRights(token, id).then(
|
|
@@ -2335,7 +2394,7 @@ function SettingRequestActionButtons({
|
|
|
2335
2394
|
}
|
|
2336
2395
|
|
|
2337
2396
|
// src/access/react/AccessRequestsSurface.tsx
|
|
2338
|
-
import { useCallback as useCallback2, useEffect as
|
|
2397
|
+
import { useCallback as useCallback2, useEffect as useEffect6, useState as useState16 } from "react";
|
|
2339
2398
|
import {
|
|
2340
2399
|
CircleCheck,
|
|
2341
2400
|
CircleSlash as CircleSlash3,
|
|
@@ -2464,7 +2523,7 @@ function AccessRequestsSurface() {
|
|
|
2464
2523
|
setError(result.error);
|
|
2465
2524
|
setRefreshing(false);
|
|
2466
2525
|
}, []);
|
|
2467
|
-
|
|
2526
|
+
useEffect6(() => {
|
|
2468
2527
|
let alive = true;
|
|
2469
2528
|
void (async () => {
|
|
2470
2529
|
const result = await fetchBoxes();
|
|
@@ -2725,7 +2784,7 @@ function AccessRequestsSurface() {
|
|
|
2725
2784
|
}
|
|
2726
2785
|
|
|
2727
2786
|
// src/access/react/useAccessStates.ts
|
|
2728
|
-
import { useCallback as useCallback3, useEffect as
|
|
2787
|
+
import { useCallback as useCallback3, useEffect as useEffect7, useMemo as useMemo2, useState as useState17 } from "react";
|
|
2729
2788
|
import { fetchAccessDeniedContext as fetchAccessDeniedContext3 } from "@ai-matrx/data/access";
|
|
2730
2789
|
var CACHE = /* @__PURE__ */ new Map();
|
|
2731
2790
|
var INFLIGHT = /* @__PURE__ */ new Map();
|
|
@@ -2750,7 +2809,7 @@ function useAccessStates(token, ids) {
|
|
|
2750
2809
|
const [nonce, setNonce] = useState17(0);
|
|
2751
2810
|
const [resolved, setResolved] = useState17(() => /* @__PURE__ */ new Map());
|
|
2752
2811
|
const idKey = useMemo2(() => Array.from(new Set(ids)).sort().join(","), [ids]);
|
|
2753
|
-
|
|
2812
|
+
useEffect7(() => {
|
|
2754
2813
|
const wanted2 = idKey ? idKey.split(",") : [];
|
|
2755
2814
|
if (wanted2.length === 0) return;
|
|
2756
2815
|
let active = true;
|
|
@@ -2864,6 +2923,7 @@ export {
|
|
|
2864
2923
|
offerOwnerChoices,
|
|
2865
2924
|
refreshHiddenByMe,
|
|
2866
2925
|
requestCantRemove,
|
|
2926
|
+
resetAccessUiStandInNotices,
|
|
2867
2927
|
useAccessGate,
|
|
2868
2928
|
useAccessStates,
|
|
2869
2929
|
useAccessUi,
|