@powerhousedao/reactor-browser 6.1.0-dev.2 → 6.1.0-dev.20

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/dist/index.js CHANGED
@@ -1,19 +1,20 @@
1
- import { C as queueOperations, S as queueActions, _ as getAnalyticsStore, a as setDocumentCache, b as setGlobal, c as useDocumentSafe, d as useGetDocumentAsync, f as useGetDocuments, g as createAnalyticsStore, h as readPromiseState, i as addDocumentCacheEventHandler, l as useDocuments, m as addPromiseState, n as useDocumentsByIds, o as useDocument, p as DocumentCache, r as useDispatch, s as useDocumentCache, t as useDocumentById, u as useGetDocument, v as clearGlobal, w as uploadOperations, x as dispatchActions, y as getGlobal } from "./document-by-id-DuujBqAQ.js";
1
+ import { C as queueOperations, S as queueActions, _ as getAnalyticsStore, a as setDocumentCache, b as setGlobal, c as useDocumentSafe, d as useGetDocumentAsync, f as useGetDocuments, g as createAnalyticsStore, h as readPromiseState, i as addDocumentCacheEventHandler, l as useDocuments, m as addPromiseState, n as useDocumentsByIds, o as useDocument, p as DocumentCache, r as useDispatch, s as useDocumentCache, t as useDocumentById, u as useGetDocument, v as clearGlobal, w as uploadOperations, x as dispatchActions, y as getGlobal } from "./document-by-id-BrIy0iHX.js";
2
2
  import { n as GetDocumentWithOperationsDocument, r as PropagationMode, t as createClient } from "./client-D7hUM13i.js";
3
- import { t as makePHEventFunctions } from "./make-ph-event-functions-Cr4GqOTT.js";
4
- import { A as useLoginStatus, C as RENOWN_CHAIN_ID, D as addRenownEventHandler, E as VERIFIABLE_CREDENTIAL_EIP712_TYPE, F as setLoading, I as useLoading, M as useUser, N as addLoadingEventHandler, O as setRenown, P as loading, S as ISSUER_TYPE, T as RENOWN_URL, _ as openRenown, a as RenownAuthButton, b as CREDENTIAL_TYPES, c as ChevronDownIcon, d as RenownLogo, f as SpinnerIcon, g as logout, h as login, i as initRenownCrypto, j as useRenown, k as useDid, l as CopyIcon, m as useRenownAuth, n as useRenownInit, o as RenownUserButton, p as UserIcon, r as initConnectCrypto, s as RenownLoginButton, t as Renown, u as DisconnectIcon, v as CREDENTIAL_SCHEMA_EIP712_TYPE, w as RENOWN_NETWORK_ID, x as DOMAIN_TYPE, y as CREDENTIAL_SUBJECT_TYPE } from "./renown-s0H1puU4.js";
5
- import { n as useRelationalQuery, r as useRelationalDb, t as createProcessorQuery } from "./relational-jwreqDwz.js";
3
+ import { t as makePHEventFunctions } from "./make-ph-event-functions-DwiD1zH9.js";
4
+ import { A as useLoginStatus, C as RENOWN_CHAIN_ID, D as addRenownEventHandler, E as VERIFIABLE_CREDENTIAL_EIP712_TYPE, F as setLoading, I as useLoading, M as useUser, N as addLoadingEventHandler, O as setRenown, P as loading, S as ISSUER_TYPE, T as RENOWN_URL, _ as openRenown, a as RenownAuthButton, b as CREDENTIAL_TYPES, c as ChevronDownIcon, d as RenownLogo, f as SpinnerIcon, g as logout, h as login, i as initRenownCrypto, j as useRenown, k as useDid, l as CopyIcon, m as useRenownAuth, n as useRenownInit, o as RenownUserButton, p as UserIcon, r as initConnectCrypto, s as RenownLoginButton, t as Renown, u as DisconnectIcon, v as CREDENTIAL_SCHEMA_EIP712_TYPE, w as RENOWN_NETWORK_ID, x as DOMAIN_TYPE, y as CREDENTIAL_SUBJECT_TYPE } from "./renown-Dzmo1gJD.js";
5
+ import { n as useRelationalQuery, r as useRelationalDb, t as createProcessorQuery } from "./relational-4_LVwp8p.js";
6
6
  import { documentModelDocumentModelModule, logger } from "document-model";
7
7
  import { baseLoadFromInput, baseSaveToFileHandle, createPresignedHeader, createZip, documentModelDocumentType, generateId, replayDocument, setName, validateInitialState, validateModules, validateStateSchemaName } from "@powerhousedao/shared/document-model";
8
- import { DriveDocumentSchema, addFolder as addFolder$1, copyNode, driveCreateDocument, driveDocumentModelModule, generateNodesCopy, handleTargetNameCollisions, isFileNode, isFolderNode, moveNode, setAvailableOffline, setSharingType, updateNode } from "@powerhousedao/shared/document-drive";
8
+ import { DriveDocumentSchema, addFolder as addFolder$1, copyNode, driveCreateDocument, driveDocumentModelModule, generateNodesCopy, handleTargetNameCollisions, isFileNode, isFolderNode, moveNode, setAvailableOffline, setDriveIcon, setDriveName, setSharingType, updateNode } from "@powerhousedao/shared/document-drive";
9
9
  import { allPass, conditional, constant, filter, find, forEach, forEachObj, funnel, hasAtLeast, isArray, isDefined, isIncludedIn, isNot, isStrictEqual, isString, isTruthy, last, map, mapToObj, once, pipe, prop, split, unique } from "remeda";
10
- import { ChannelScheme, DocumentChangeType, DocumentIntegrityService, DuplicateManifestError, DuplicateModuleError, GqlRequestChannel, InMemoryQueue, IntervalPollTimer, ModuleNotFoundError, PollBehavior, PropagationMode as PropagationMode$1, REACTOR_SCHEMA, REACTOR_SCHEMA as REACTOR_SCHEMA$1, ReactorBuilder, ReactorClientBuilder, RelationalDbProcessor, SyncOperationStatus, SyncStatus, driveCollectionId, driveCollectionId as driveCollectionId$1, driveIdFromUrl, parseDriveUrl } from "@powerhousedao/reactor";
10
+ import { ChannelScheme, DocumentChangeType, DocumentChangeType as DocumentChangeType$1, DocumentIntegrityService, DuplicateManifestError, DuplicateModuleError, GqlRequestChannel, InMemoryQueue, IntervalPollTimer, ModuleNotFoundError, PollBehavior, PropagationMode as PropagationMode$1, REACTOR_SCHEMA, REACTOR_SCHEMA as REACTOR_SCHEMA$1, ReactorBuilder, ReactorClientBuilder, RelationalDbProcessor, SyncOperationStatus, SyncStatus, driveCollectionId, driveCollectionId as driveCollectionId$1, driveIdFromUrl, parseDriveUrl } from "@powerhousedao/reactor";
11
11
  import { reactorDriveDocumentModelModule } from "@powerhousedao/reactor-drive";
12
12
  import { z } from "zod";
13
13
  import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
14
14
  import slug from "slug";
15
15
  import normalizeException from "normalize-exception";
16
16
  import * as lzString from "lz-string";
17
+ import { createAttachmentClient } from "@powerhousedao/reactor-attachments/client";
17
18
  //#region src/errors.ts
18
19
  var UnsupportedDocumentTypeError = class extends Error {
19
20
  constructor(documentType) {
@@ -508,6 +509,49 @@ async function copyNode$1(driveId, src, target) {
508
509
  }
509
510
  //#endregion
510
511
  //#region src/actions/drive.ts
512
+ const DEFAULT_INITIAL_SYNC_TIMEOUT_MS = 3e4;
513
+ /**
514
+ * Resolves once a document with the given id is queryable through the
515
+ * reactor client. Subscribes to Created events filtered by id and
516
+ * short-circuits if the document already exists.
517
+ */
518
+ async function waitForDocumentReady(reactorClient, documentId, options) {
519
+ const timeoutMs = options?.timeoutMs ?? DEFAULT_INITIAL_SYNC_TIMEOUT_MS;
520
+ const signal = options?.signal;
521
+ return new Promise((resolve, reject) => {
522
+ let settled = false;
523
+ let unsubscribe;
524
+ let timer;
525
+ let abortHandler;
526
+ const settle = (action) => {
527
+ if (settled) return;
528
+ settled = true;
529
+ unsubscribe?.();
530
+ if (timer) clearTimeout(timer);
531
+ if (abortHandler && signal) signal.removeEventListener("abort", abortHandler);
532
+ action();
533
+ };
534
+ unsubscribe = reactorClient.subscribe({ ids: [documentId] }, (event) => {
535
+ if (event.type === DocumentChangeType$1.Created) settle(() => resolve());
536
+ });
537
+ reactorClient.find({ ids: [documentId] }).then((existing) => {
538
+ if (existing.results.length > 0) settle(() => resolve());
539
+ }).catch(() => {});
540
+ if (signal) {
541
+ if (signal.aborted) {
542
+ settle(() => reject(new DOMException("Aborted", "AbortError")));
543
+ return;
544
+ }
545
+ abortHandler = () => {
546
+ settle(() => reject(new DOMException("Aborted", "AbortError")));
547
+ };
548
+ signal.addEventListener("abort", abortHandler);
549
+ }
550
+ timer = setTimeout(() => {
551
+ settle(() => reject(/* @__PURE__ */ new Error(`Timed out after ${timeoutMs}ms waiting for document ${documentId}`)));
552
+ }, timeoutMs);
553
+ });
554
+ }
511
555
  async function addDrive(input, preferredEditor) {
512
556
  const { isAllowedToCreateDocuments } = getUserPermissions();
513
557
  if (!isAllowedToCreateDocuments) throw new Error("User is not allowed to create drives");
@@ -522,7 +566,8 @@ async function addDrive(input, preferredEditor) {
522
566
  return await reactorClient.create(driveDoc);
523
567
  }
524
568
  async function addRemoteDrive(url, driveId, options) {
525
- if (!window.ph?.reactorClient) throw new Error("ReactorClient not initialized");
569
+ const reactorClient = window.ph?.reactorClient;
570
+ if (!reactorClient) throw new Error("ReactorClient not initialized");
526
571
  const sync = window.ph?.reactorClientModule?.reactorModule?.syncModule?.syncManager;
527
572
  if (!sync) throw new Error("Sync not initialized");
528
573
  const response = await fetch(url);
@@ -530,12 +575,17 @@ async function addRemoteDrive(url, driveId, options) {
530
575
  const driveInfo = await response.json();
531
576
  const resolvedDriveId = driveId ?? driveInfo.id;
532
577
  const collectionId = driveCollectionId$1("main", resolvedDriveId);
533
- if (sync.list().find((remote) => remote.collectionId === collectionId)) return resolvedDriveId;
534
- const remoteName = crypto.randomUUID();
535
- await sync.add(remoteName, collectionId, {
536
- type: "gql",
537
- parameters: { url: driveInfo.graphqlEndpoint }
538
- }, void 0, options?.pollBehavior ? { pollBehavior: options.pollBehavior } : void 0);
578
+ if (!sync.list().find((remote) => remote.collectionId === collectionId)) {
579
+ const remoteName = crypto.randomUUID();
580
+ await sync.add(remoteName, collectionId, {
581
+ type: "gql",
582
+ parameters: { url: driveInfo.graphqlEndpoint }
583
+ }, void 0, options?.pollBehavior ? { pollBehavior: options.pollBehavior } : void 0);
584
+ }
585
+ if (options?.awaitInitialSync) await waitForDocumentReady(reactorClient, resolvedDriveId, {
586
+ timeoutMs: options.initialSyncTimeoutMs,
587
+ signal: options.signal
588
+ });
539
589
  return resolvedDriveId;
540
590
  }
541
591
  async function deleteDrive(driveId) {
@@ -572,6 +622,17 @@ async function setDriveSharingType(driveId, sharingType) {
572
622
  if (!reactorClient) throw new Error("ReactorClient not initialized");
573
623
  return await reactorClient.execute(driveId, "main", [setSharingType({ type: sharingType })]);
574
624
  }
625
+ async function setDriveMetadata(driveId, metadata) {
626
+ const { isAllowedToCreateDocuments } = getUserPermissions();
627
+ if (!isAllowedToCreateDocuments) throw new Error("User is not allowed to update drive metadata");
628
+ const reactorClient = window.ph?.reactorClient;
629
+ if (!reactorClient) throw new Error("ReactorClient not initialized");
630
+ const actions = [];
631
+ if (metadata.name) actions.push(setDriveName({ name: metadata.name }));
632
+ if (metadata.icon !== void 0 && metadata.icon !== null) actions.push(setDriveIcon({ icon: metadata.icon }));
633
+ if (actions.length === 0) return;
634
+ return await reactorClient.execute(driveId, "main", actions);
635
+ }
575
636
  //#endregion
576
637
  //#region src/constants.ts
577
638
  const DEFAULT_DRIVE_EDITOR_ID = "powerhouse/generic-drive-explorer";
@@ -650,7 +711,7 @@ async function reactorGraphqlFetchDocument(identifier, documentSchema) {
650
711
  const document = (await client.GetDocument({ identifier })).document?.document;
651
712
  if (!document) return void 0;
652
713
  return phDocumentFromQuery(document, documentSchema);
653
- } catch (error) {
714
+ } catch {
654
715
  return;
655
716
  }
656
717
  }
@@ -1108,6 +1169,15 @@ const phGlobalConfigHooks = {
1108
1169
  ...nonUserConfigHooks
1109
1170
  };
1110
1171
  //#endregion
1172
+ //#region src/hooks/attachment-service.ts
1173
+ const attachmentServiceEventFunctions = makePHEventFunctions("attachmentService");
1174
+ /** Returns the attachment service from window.ph */
1175
+ const useAttachmentService = attachmentServiceEventFunctions.useValue;
1176
+ /** Sets the attachment service on window.ph */
1177
+ const setAttachmentService = attachmentServiceEventFunctions.setValue;
1178
+ /** Registers the attachmentService window event handler */
1179
+ const addAttachmentServiceEventHandler = attachmentServiceEventFunctions.addEventHandler;
1180
+ //#endregion
1111
1181
  //#region src/hooks/features.ts
1112
1182
  const featuresEventFunctions = makePHEventFunctions("features");
1113
1183
  const useFeatures = featuresEventFunctions.useValue;
@@ -1185,6 +1255,40 @@ const setDrives = drivesEventFunctions.setValue;
1185
1255
  /** Adds an event handler for the drives */
1186
1256
  const addDrivesEventHandler = drivesEventFunctions.addEventHandler;
1187
1257
  //#endregion
1258
+ //#region src/hooks/set-selected-node.ts
1259
+ const selectedNodeIdEventFunctions = makePHEventFunctions("selectedNodeId");
1260
+ const useSelectedNodeId = selectedNodeIdEventFunctions.useValue;
1261
+ const setSelectedNodeId = selectedNodeIdEventFunctions.setValue;
1262
+ const addSelectedNodeIdEventHandler = selectedNodeIdEventFunctions.addEventHandler;
1263
+ /** Sets the selected node (file or folder). */
1264
+ function setSelectedNode(nodeOrNodeSlug) {
1265
+ const nodeSlug = typeof nodeOrNodeSlug === "string" ? nodeOrNodeSlug : makeNodeSlug(nodeOrNodeSlug);
1266
+ setSelectedNodeId(extractNodeIdFromSlug(nodeSlug));
1267
+ const driveSlugFromPath = extractDriveSlugFromPath(window.location.pathname);
1268
+ if (!driveSlugFromPath) return;
1269
+ if (!nodeSlug) {
1270
+ const pathname = resolveUrlPathname(`/d/${driveSlugFromPath}`);
1271
+ if (pathname === window.location.pathname) return;
1272
+ window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
1273
+ return;
1274
+ }
1275
+ const pathname = resolveUrlPathname(`/d/${driveSlugFromPath}/${nodeSlug}`);
1276
+ if (pathname === window.location.pathname) return;
1277
+ window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
1278
+ }
1279
+ function addResetSelectedNodeEventHandler() {
1280
+ window.addEventListener("ph:selectedDriveIdUpdated", () => {
1281
+ setSelectedNodeId(void 0);
1282
+ });
1283
+ }
1284
+ function addSetSelectedNodeOnPopStateEventHandler() {
1285
+ window.addEventListener("popstate", () => {
1286
+ const pathname = window.location.pathname;
1287
+ const nodeSlug = extractNodeSlugFromPath(pathname);
1288
+ if (extractNodeIdFromSlug(nodeSlug) !== window.ph?.selectedNodeId) setSelectedNode(nodeSlug);
1289
+ });
1290
+ }
1291
+ //#endregion
1188
1292
  //#region src/hooks/selected-drive.ts
1189
1293
  const selectedDriveIdEventFunctions = makePHEventFunctions("selectedDriveId");
1190
1294
  /** Returns the selected drive id */
@@ -1209,7 +1313,14 @@ function useSelectedDriveSafe() {
1209
1313
  }
1210
1314
  function setSelectedDrive(driveOrDriveSlug) {
1211
1315
  const driveSlug = typeof driveOrDriveSlug === "string" ? driveOrDriveSlug : driveOrDriveSlug?.header.slug;
1212
- const driveId = (window.ph?.drives?.find((d) => d.header.slug === driveSlug))?.header.id;
1316
+ const drives = window.ph?.drives;
1317
+ const driveId = (typeof driveOrDriveSlug === "object" && driveOrDriveSlug !== null ? driveOrDriveSlug : drives?.find((d) => d.header.slug === driveSlug))?.header.id;
1318
+ if (!driveId && driveSlug && extractDriveSlugFromPath(window.location.pathname) === driveSlug) {
1319
+ if (window.ph?.selectedDriveId) setSelectedDriveId(void 0);
1320
+ deferDriveSelection(driveSlug);
1321
+ return;
1322
+ }
1323
+ cancelPendingDriveSelection();
1213
1324
  setSelectedDriveId(driveId);
1214
1325
  if (!driveId) {
1215
1326
  const pathname = resolveUrlPathname("/");
@@ -1221,6 +1332,58 @@ function setSelectedDrive(driveOrDriveSlug) {
1221
1332
  if (pathname === window.location.pathname) return;
1222
1333
  window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
1223
1334
  }
1335
+ const DEFERRED_DRIVE_TICK_MS = 2e3;
1336
+ const DEFERRED_DRIVE_MAX_WAIT_MS = 15e3;
1337
+ function isInitialSyncInFlight() {
1338
+ const remotes = window.ph?.reactorClientModule?.reactorModule?.syncModule?.syncManager?.list();
1339
+ if (!remotes?.length) return false;
1340
+ return remotes.some((remote) => {
1341
+ try {
1342
+ const snapshot = remote.channel.getConnectionState();
1343
+ return snapshot.receivingPages || !snapshot.lastSuccessUtcMs && snapshot.state !== "error";
1344
+ } catch {
1345
+ return false;
1346
+ }
1347
+ });
1348
+ }
1349
+ let pendingHandler;
1350
+ let pendingTimeout;
1351
+ function cancelPendingDriveSelection() {
1352
+ if (pendingHandler) {
1353
+ window.removeEventListener("ph:drivesUpdated", pendingHandler);
1354
+ pendingHandler = void 0;
1355
+ }
1356
+ if (pendingTimeout) {
1357
+ clearTimeout(pendingTimeout);
1358
+ pendingTimeout = void 0;
1359
+ }
1360
+ }
1361
+ function deferDriveSelection(driveSlug) {
1362
+ cancelPendingDriveSelection();
1363
+ const nodeSlug = extractNodeSlugFromPath(window.location.pathname);
1364
+ const handler = () => {
1365
+ if (!window.ph?.drives?.find((d) => d.header.slug === driveSlug)) return;
1366
+ cancelPendingDriveSelection();
1367
+ setSelectedDrive(driveSlug);
1368
+ setSelectedNode(nodeSlug);
1369
+ };
1370
+ pendingHandler = handler;
1371
+ window.addEventListener("ph:drivesUpdated", handler);
1372
+ const deadline = Date.now() + DEFERRED_DRIVE_MAX_WAIT_MS;
1373
+ const scheduleTick = () => {
1374
+ pendingTimeout = setTimeout(() => {
1375
+ if (Date.now() < deadline && isInitialSyncInFlight()) {
1376
+ scheduleTick();
1377
+ return;
1378
+ }
1379
+ cancelPendingDriveSelection();
1380
+ const pathname = resolveUrlPathname("/");
1381
+ if (pathname === window.location.pathname) return;
1382
+ window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
1383
+ }, DEFERRED_DRIVE_TICK_MS);
1384
+ };
1385
+ scheduleTick();
1386
+ }
1224
1387
  function addSetSelectedDriveOnPopStateEventHandler() {
1225
1388
  window.addEventListener("popstate", () => {
1226
1389
  const pathname = window.location.pathname;
@@ -1476,43 +1639,11 @@ function isDocumentModelDocument(document) {
1476
1639
  }
1477
1640
  //#endregion
1478
1641
  //#region src/hooks/selected-node.ts
1479
- const selectedNodeIdEventFunctions = makePHEventFunctions("selectedNodeId");
1480
- const useSelectedNodeId = selectedNodeIdEventFunctions.useValue;
1481
- const setSelectedNodeId = selectedNodeIdEventFunctions.setValue;
1482
- const addSelectedNodeIdEventHandler = selectedNodeIdEventFunctions.addEventHandler;
1483
1642
  /** Returns the selected node. */
1484
1643
  function useSelectedNode() {
1485
1644
  const selectedNodeId = useSelectedNodeId();
1486
1645
  return useNodesInSelectedDrive()?.find((n) => n.id === selectedNodeId);
1487
1646
  }
1488
- /** Sets the selected node (file or folder). */
1489
- function setSelectedNode(nodeOrNodeSlug) {
1490
- const nodeSlug = typeof nodeOrNodeSlug === "string" ? nodeOrNodeSlug : makeNodeSlug(nodeOrNodeSlug);
1491
- setSelectedNodeId(extractNodeIdFromSlug(nodeSlug));
1492
- const driveSlugFromPath = extractDriveSlugFromPath(window.location.pathname);
1493
- if (!driveSlugFromPath) return;
1494
- if (!nodeSlug) {
1495
- const pathname = resolveUrlPathname(`/d/${driveSlugFromPath}`);
1496
- if (pathname === window.location.pathname) return;
1497
- window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
1498
- return;
1499
- }
1500
- const pathname = resolveUrlPathname(`/d/${driveSlugFromPath}/${nodeSlug}`);
1501
- if (pathname === window.location.pathname) return;
1502
- window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
1503
- }
1504
- function addResetSelectedNodeEventHandler() {
1505
- window.addEventListener("ph:selectedDriveIdUpdated", () => {
1506
- setSelectedNodeId(void 0);
1507
- });
1508
- }
1509
- function addSetSelectedNodeOnPopStateEventHandler() {
1510
- window.addEventListener("popstate", () => {
1511
- const pathname = window.location.pathname;
1512
- const nodeSlug = extractNodeSlugFromPath(pathname);
1513
- if (nodeSlug !== window.ph?.selectedNodeId) setSelectedNode(nodeSlug);
1514
- });
1515
- }
1516
1647
  //#endregion
1517
1648
  //#region src/hooks/selected-timeline-item.ts
1518
1649
  const selectedTimelineItemEventFunctions = makePHEventFunctions("selectedTimelineItem");
@@ -1611,6 +1742,7 @@ const phGlobalEventHandlerRegisterFunctions = {
1611
1742
  ...commonGlobalEventHandlerFunctions,
1612
1743
  reactorClientModule: addReactorClientModuleEventHandler,
1613
1744
  reactorClient: addReactorClientEventHandler,
1745
+ attachmentService: addAttachmentServiceEventHandler,
1614
1746
  features: addFeaturesEventHandler,
1615
1747
  modal: addModalEventHandler,
1616
1748
  renown: addRenownEventHandler,
@@ -1983,58 +2115,6 @@ function useDocumentTypes() {
1983
2115
  return allowedDocumentTypes ?? supportedDocumentTypes;
1984
2116
  }
1985
2117
  //#endregion
1986
- //#region src/hooks/file-drag-and-drop.ts
1987
- const allowedExtensions = [
1988
- "zip",
1989
- "phd",
1990
- "phdm"
1991
- ];
1992
- const hasFilesType = (types) => isDefined(find(types, (type) => isStrictEqual(type, "Files")));
1993
- const isFileDrop = (event) => allPass(event.dataTransfer.types, [
1994
- isArray,
1995
- hasAtLeast(1),
1996
- hasFilesType
1997
- ]);
1998
- const EDITOR_FILE_DROP_OPT_OUT_ATTR = "data-accepts-files";
1999
- const isInsideEditorFileDropOptOut = (event) => {
2000
- const target = event.target;
2001
- if (!(target instanceof Element)) return false;
2002
- return target.closest(`[${EDITOR_FILE_DROP_OPT_OUT_ATTR}]`) !== null;
2003
- };
2004
- const hasAllowedExtension = (file) => pipe(file, (file) => file.name, split("."), last(), isIncludedIn(allowedExtensions));
2005
- const getFileItems = (event) => pipe([...event.dataTransfer.items], filter((item) => isStrictEqual(item.kind, "file")), map((item) => item.getAsFile()), filter(isTruthy));
2006
- function useDropFile(handleAddFile) {
2007
- const { isDropTarget, setTarget, unsetTarget } = useDropTarget();
2008
- const isDragAndDropEnabled = useIsDragAndDropEnabled();
2009
- const selectedFolder = useSelectedFolder();
2010
- function handleDragEvent(event, cb) {
2011
- if (!isDragAndDropEnabled) return;
2012
- if (!isFileDrop(event)) return;
2013
- if (isInsideEditorFileDropOptOut(event)) {
2014
- unsetTarget();
2015
- return;
2016
- }
2017
- event.preventDefault();
2018
- event.stopPropagation();
2019
- cb?.();
2020
- }
2021
- const handleAddFiles = (event) => Promise.all(pipe(event, getFileItems, filter(hasAllowedExtension), map((file) => handleAddFile(file, selectedFolder))));
2022
- const onDragEnter = (event) => handleDragEvent(event);
2023
- const onDragOver = (event) => handleDragEvent(event, setTarget);
2024
- const onDragLeave = (event) => handleDragEvent(event, unsetTarget);
2025
- const onDrop = (event) => handleDragEvent(event, once(() => {
2026
- unsetTarget();
2027
- handleAddFiles(event).catch(console.error);
2028
- }));
2029
- return {
2030
- onDragEnter,
2031
- onDragOver,
2032
- onDragLeave,
2033
- onDrop,
2034
- isDropTarget
2035
- };
2036
- }
2037
- //#endregion
2038
2118
  //#region src/utils/validate-document.ts
2039
2119
  const validateDocument = (document) => {
2040
2120
  const errors = [];
@@ -2135,6 +2215,58 @@ function useEditorModulesForDocumentType(documentType) {
2135
2215
  return editorModules?.filter((module) => module.documentTypes.includes(documentType));
2136
2216
  }
2137
2217
  //#endregion
2218
+ //#region src/hooks/file-drag-and-drop.ts
2219
+ const allowedExtensions = [
2220
+ "zip",
2221
+ "phd",
2222
+ "phdm"
2223
+ ];
2224
+ const hasFilesType = (types) => isDefined(find(types, (type) => isStrictEqual(type, "Files")));
2225
+ const isFileDrop = (event) => allPass(event.dataTransfer.types, [
2226
+ isArray,
2227
+ hasAtLeast(1),
2228
+ hasFilesType
2229
+ ]);
2230
+ const EDITOR_FILE_DROP_OPT_OUT_ATTR = "data-accepts-files";
2231
+ const isInsideEditorFileDropOptOut = (event) => {
2232
+ const target = event.target;
2233
+ if (!(target instanceof Element)) return false;
2234
+ return target.closest(`[${EDITOR_FILE_DROP_OPT_OUT_ATTR}]`) !== null;
2235
+ };
2236
+ const hasAllowedExtension = (file) => pipe(file, (file) => file.name, split("."), last(), isIncludedIn(allowedExtensions));
2237
+ const getFileItems = (event) => pipe([...event.dataTransfer.items], filter((item) => isStrictEqual(item.kind, "file")), map((item) => item.getAsFile()), filter(isTruthy));
2238
+ function useDropFile(handleAddFile) {
2239
+ const { isDropTarget, setTarget, unsetTarget } = useDropTarget();
2240
+ const isDragAndDropEnabled = useIsDragAndDropEnabled();
2241
+ const selectedFolder = useSelectedFolder();
2242
+ function handleDragEvent(event, cb) {
2243
+ if (!isDragAndDropEnabled) return;
2244
+ if (!isFileDrop(event)) return;
2245
+ if (isInsideEditorFileDropOptOut(event)) {
2246
+ unsetTarget();
2247
+ return;
2248
+ }
2249
+ event.preventDefault();
2250
+ event.stopPropagation();
2251
+ cb?.();
2252
+ }
2253
+ const handleAddFiles = (event) => Promise.all(pipe(event, getFileItems, filter(hasAllowedExtension), map((file) => handleAddFile(file, selectedFolder))));
2254
+ const onDragEnter = (event) => handleDragEvent(event);
2255
+ const onDragOver = (event) => handleDragEvent(event, setTarget);
2256
+ const onDragLeave = (event) => handleDragEvent(event, unsetTarget);
2257
+ const onDrop = (event) => handleDragEvent(event, once(() => {
2258
+ unsetTarget();
2259
+ handleAddFiles(event).catch(console.error);
2260
+ }));
2261
+ return {
2262
+ onDragEnter,
2263
+ onDragOver,
2264
+ onDragLeave,
2265
+ onDrop,
2266
+ isDropTarget
2267
+ };
2268
+ }
2269
+ //#endregion
2138
2270
  //#region src/hooks/folder-by-id.ts
2139
2271
  function useFolderById(id) {
2140
2272
  return useFolderNodesInSelectedDrive()?.find((n) => n.id === id);
@@ -2363,6 +2495,97 @@ function useSubgraphModules() {
2363
2495
  return useVetraPackages().flatMap((pkg) => pkg.subgraphs || []);
2364
2496
  }
2365
2497
  //#endregion
2498
+ //#region src/hooks/theme.ts
2499
+ const STORED_THEME_KEY = "ph:theme";
2500
+ const UPDATE_STORED_THEME = "ph:updateStoredTheme";
2501
+ const STORED_THEME_UPDATED = "ph:storedThemeUpdated";
2502
+ const SYSTEM_THEME_UPDATED = "ph:systemThemeUpdated";
2503
+ const isServer = typeof window === "undefined";
2504
+ function setStoredTheme(storedTheme) {
2505
+ if (isServer) return;
2506
+ localStorage.setItem(STORED_THEME_KEY, storedTheme);
2507
+ }
2508
+ function setTheme(storedTheme) {
2509
+ if (isServer) return;
2510
+ const updateStoredThemeEvent = new CustomEvent(UPDATE_STORED_THEME, { detail: { storedTheme } });
2511
+ window.dispatchEvent(updateStoredThemeEvent);
2512
+ }
2513
+ function handleUpdateStoredTheme(event) {
2514
+ if (isServer) return;
2515
+ const storedTheme = event.detail.storedTheme;
2516
+ setStoredTheme(storedTheme);
2517
+ const storedThemeUpdatedEvent = new CustomEvent(STORED_THEME_UPDATED, { detail: { storedTheme } });
2518
+ window.dispatchEvent(storedThemeUpdatedEvent);
2519
+ }
2520
+ function getStoredTheme() {
2521
+ if (isServer) return void 0;
2522
+ return localStorage.getItem(STORED_THEME_KEY) ?? void 0;
2523
+ }
2524
+ function getPrefersDarkMediaQuery() {
2525
+ if (isServer) return;
2526
+ return window.matchMedia("(prefers-color-scheme: dark)");
2527
+ }
2528
+ function getPrefersDark() {
2529
+ if (isServer) return false;
2530
+ if (getPrefersDarkMediaQuery()?.matches) return true;
2531
+ return false;
2532
+ }
2533
+ function getSystemTheme() {
2534
+ if (isServer) return "light";
2535
+ if (getPrefersDark()) return "dark";
2536
+ return "light";
2537
+ }
2538
+ function handleSystemThemeChange(event) {
2539
+ const systemTheme = event.matches ? "dark" : "light";
2540
+ const systemThemeUpdatedEvent = new CustomEvent(SYSTEM_THEME_UPDATED, { detail: { systemTheme } });
2541
+ window.dispatchEvent(systemThemeUpdatedEvent);
2542
+ }
2543
+ function toggleDark(isDark) {
2544
+ if (isServer) return;
2545
+ document.documentElement.classList.toggle("dark", isDark);
2546
+ }
2547
+ function initTheme() {
2548
+ if (isServer) return;
2549
+ useEffect(() => {
2550
+ window.addEventListener(UPDATE_STORED_THEME, handleUpdateStoredTheme);
2551
+ const prefersDarkMediaQuery = getPrefersDarkMediaQuery();
2552
+ prefersDarkMediaQuery?.addEventListener("change", handleSystemThemeChange);
2553
+ return () => {
2554
+ window.removeEventListener(UPDATE_STORED_THEME, handleUpdateStoredTheme);
2555
+ prefersDarkMediaQuery?.removeEventListener("change", handleSystemThemeChange);
2556
+ };
2557
+ }, []);
2558
+ }
2559
+ function subscribeToStoredTheme(onStoreChange) {
2560
+ if (isServer) return () => {};
2561
+ window.addEventListener(STORED_THEME_UPDATED, onStoreChange);
2562
+ return () => {
2563
+ window.removeEventListener(STORED_THEME_UPDATED, onStoreChange);
2564
+ };
2565
+ }
2566
+ function subscribeToSystemTheme(onStoreChange) {
2567
+ if (isServer) return () => {};
2568
+ window.addEventListener(SYSTEM_THEME_UPDATED, onStoreChange);
2569
+ return () => {
2570
+ window.removeEventListener(SYSTEM_THEME_UPDATED, onStoreChange);
2571
+ };
2572
+ }
2573
+ function useTheme() {
2574
+ const storedTheme = useSyncExternalStore(subscribeToStoredTheme, () => getStoredTheme(), () => "system");
2575
+ const systemTheme = useSyncExternalStore(subscribeToSystemTheme, () => getSystemTheme(), () => "light");
2576
+ const isSystem = storedTheme === void 0 || storedTheme === "system";
2577
+ const theme = isSystem ? systemTheme : storedTheme;
2578
+ const isDark = theme === "dark";
2579
+ useEffect(() => {
2580
+ toggleDark(isDark);
2581
+ }, [isDark]);
2582
+ return {
2583
+ theme,
2584
+ isSystem,
2585
+ setTheme
2586
+ };
2587
+ }
2588
+ //#endregion
2366
2589
  //#region src/hooks/use-drive-system-info.ts
2367
2590
  function deriveSystemUrl(channelUrl) {
2368
2591
  try {
@@ -2647,6 +2870,61 @@ function useUserPermissions() {
2647
2870
  };
2648
2871
  }
2649
2872
  //#endregion
2873
+ //#region src/hooks/use-attachments.ts
2874
+ /** Returns an IAttachmentClient wrapping the current IAttachmentService, or undefined if none is set. */
2875
+ function useAttachments() {
2876
+ const service = useAttachmentService();
2877
+ return useMemo(() => service ? createAttachmentClient(service) : void 0, [service]);
2878
+ }
2879
+ /** Upload lifecycle status. progress is coarse (0 before/during, 1 on Done) because RemoteAttachmentUpload buffers the full body before issuing a single PUT. */
2880
+ let UploadStatus = /* @__PURE__ */ function(UploadStatus) {
2881
+ UploadStatus["None"] = "None";
2882
+ UploadStatus["Hashing"] = "Hashing";
2883
+ UploadStatus["Uploading"] = "Uploading";
2884
+ UploadStatus["Done"] = "Done";
2885
+ UploadStatus["Error"] = "Error";
2886
+ return UploadStatus;
2887
+ }({});
2888
+ /** Hook for managing the full attachment preprocess + upload lifecycle. preprocess and upload callbacks are stable (useCallback) and depend only on the current IAttachmentClient reference. */
2889
+ function useAttachmentUpload() {
2890
+ const [status, setStatus] = useState(UploadStatus.None);
2891
+ const [progress, setProgress] = useState(0);
2892
+ const [error, setError] = useState(void 0);
2893
+ const client = useAttachments();
2894
+ return {
2895
+ preprocess: useCallback(async (file) => {
2896
+ if (!client) throw new Error("AttachmentClient not available");
2897
+ setError(void 0);
2898
+ setStatus(UploadStatus.Hashing);
2899
+ try {
2900
+ return await client.preprocess(file);
2901
+ } catch (err) {
2902
+ setError(err instanceof Error ? err : new Error(String(err)));
2903
+ setStatus(UploadStatus.Error);
2904
+ throw err;
2905
+ }
2906
+ }, [client]),
2907
+ upload: useCallback(async (results) => {
2908
+ if (!client) throw new Error("AttachmentClient not available");
2909
+ setError(void 0);
2910
+ setStatus(UploadStatus.Uploading);
2911
+ setProgress(0);
2912
+ try {
2913
+ await client.reserve(results.options, (handle) => handle.send(results.stream()));
2914
+ } catch (err) {
2915
+ setError(err instanceof Error ? err : new Error(String(err)));
2916
+ setStatus(UploadStatus.Error);
2917
+ throw err;
2918
+ }
2919
+ setProgress(1);
2920
+ setStatus(UploadStatus.Done);
2921
+ }, [client]),
2922
+ status,
2923
+ progress,
2924
+ error
2925
+ };
2926
+ }
2927
+ //#endregion
2650
2928
  //#region src/pglite/drop.ts
2651
2929
  async function dropTablesInSchema(pg, schema) {
2652
2930
  await pg.exec(`
@@ -3517,6 +3795,6 @@ var BrowserLocalStorage = class extends BaseStorage {
3517
3795
  }
3518
3796
  };
3519
3797
  //#endregion
3520
- export { ActionTracker, BaseStorage, BrowserLocalStorage, COMMON_PACKAGE_ID, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ChannelScheme, ChevronDownIcon, ConflictError, CopyIcon, DEFAULT_DRIVE_EDITOR_ID, DEFAULT_DRIVE_ID, DEFAULT_SWITCHBOARD_URL, DOMAIN_TYPE, DisconnectIcon, DocumentCache, DocumentChangeType, DocumentIntegrityService, EDITOR_FILE_DROP_OPT_OUT_ATTR, GqlRequestChannel, GraphQLClientDocumentCache, ISSUER_TYPE, InMemoryQueue, IntervalPollTimer, PollBehavior, PropagationMode, REACTOR_SCHEMA, RENOWN_CHAIN_ID, RENOWN_NETWORK_ID, RENOWN_URL, ReactorBuilder, ReactorClientBuilder, RegistryClient, RelationalDbProcessor, RemoteClient, RemoteDocumentController, Renown, RenownAuthButton, RenownLoginButton, RenownLogo, RenownUserButton, SpinnerIcon, SyncOperationStatus, UserIcon, VERIFIABLE_CREDENTIAL_EIP712_TYPE, addAllowListEventHandler, addAllowedDocumentTypesEventHandler, addAnalyticsDatabaseNameEventHandler, addBasePathEventHandler, addCliVersionEventHandler, addDefaultDrivesUrlEventHandler, addDisabledEditorsEventHandler, addDocument, addDocumentCacheEventHandler, addDraggingNodeEventHandler, addDrive, addDrivesEventHandler, addDrivesPreserveStrategyEventHandler, addEnabledEditorsEventHandler, addFeaturesEventHandler, addFileUploadOperationsChunkSizeEventHandler, addFolder, addGaTrackingIdEventHandler, addGraphQLReactorClientEventHandler, addIsAddCloudDrivesEnabledEventHandler, addIsAddDriveEnabledEventHandler, addIsAddLocalDrivesEnabledEventHandler, addIsAddPublicDrivesEnabledEventHandler, addIsAnalyticsDatabaseWorkerEnabledEventHandler, addIsAnalyticsEnabledEventHandler, addIsAnalyticsExternalProcessorsEnabledEventHandler, addIsCloudDrivesEnabledEventHandler, addIsDeleteCloudDrivesEnabledEventHandler, addIsDeleteLocalDrivesEnabledEventHandler, addIsDeletePublicDrivesEnabledEventHandler, addIsDiffAnalyticsEnabledEventHandler, addIsDocumentModelSelectionSettingsEnabledEventHandler, addIsDragAndDropEnabledEventHandler, addIsDriveAnalyticsEnabledEventHandler, addIsEditorDebugModeEnabledEventHandler, addIsEditorReadModeEnabledEventHandler, addIsExternalControlsEnabledEventHandler, addIsExternalPackagesEnabledEventHandler, addIsExternalProcessorsEnabledEventHandler, addIsExternalRelationalProcessorsEnabledEventHandler, addIsLocalDrivesEnabledEventHandler, addIsPublicDrivesEnabledEventHandler, addIsRelationalProcessorsEnabledEventHandler, addIsSentryTracingEnabledEventHandler, addLoadingEventHandler, addLocalDrivesEnabledEventHandler, addLogLevelEventHandler, addModalEventHandler, addPHEventHandlers, addPackageDiscoveryServiceEventHandler, addPromiseState, addReactorClientEventHandler, addReactorClientModuleEventHandler, addRemoteDrive, addRenownChainIdEventHandler, addRenownEventHandler, addRenownNetworkIdEventHandler, addRenownUrlEventHandler, addRequiresHardRefreshEventHandler, addResetSelectedNodeEventHandler, addRevisionHistoryVisibleEventHandler, addRouterBasenameEventHandler, addSelectedDriveIdEventHandler, addSelectedNodeIdEventHandler, addSelectedTimelineItemEventHandler, addSelectedTimelineRevisionEventHandler, addSentryDsnEventHandler, addSentryEnvEventHandler, addSentryReleaseEventHandler, addSetSelectedDriveOnPopStateEventHandler, addSetSelectedNodeOnPopStateEventHandler, addStudioModeEventHandler, addToastEventHandler, addVersionCheckIntervalEventHandler, addVersionEventHandler, addVetraPackageManagerEventHandler, addWarnOutdatedAppEventHandler, baseDocumentModels, baseDocumentModelsMap, buildDocumentSubgraphQuery, buildDocumentSubgraphUrl, callEventHandlerRegisterFunctions, callGlobalSetterForKey, clearGlobal, closePHModal, commonGlobalEventHandlerFunctions, convertRemoteOperations, createAnalyticsStore, createClient, createProcessorQuery, createUrlWithPreservedParams, deleteDrive, deleteNode, deriveSystemUrl, dispatchActions, downloadDocument, driveCollectionId, driveIdFromUrl, dropAllReactorStorage, exportFile, extractDriveIdFromPath, extractDriveIdFromSlug, extractDriveSlugFromPath, extractNodeIdFromPath, extractNodeIdFromSlug, extractNodeSlugFromPath, findUuid, getAnalyticsStore, getDocumentGraphqlQuery, getDriveIdBySlug, getDrives, getGlobal, getPackages, getPackagesByDocumentType, getPathWithoutBase, getRevisionFromDate, getSlugFromDriveUrl, getSwitchboardGatewayUrlFromDriveUrl, getSyncStatus, getSyncStatusSync, getUserPermissions, graphqlDocumentEvents, graphqlDocumentsEvents, graphqlEventsToSyncDrive, hideRevisionHistory, identifierFromMutateDocumentOperationVariables, initConnectCrypto, initRenownCrypto, isDocumentTypeSupported, isExternalControlsEnabledEventFunctions, isFileNodeKind, isFolderNodeKind, loading, login, logout, makeDriveUrlComponent, makeNodeSlug, makePHEventFunctions, openRenown, parseDriveUrl, phAppConfigHooks, phAppConfigSetters, phDocumentEditorConfigHooks, phDocumentEditorConfigSetters, phDocumentFromQuery, phDocumentsFromQuery, phGlobalConfigHooks, phGlobalConfigSetters, reactorGraphqlBatchFetchDocuments, reactorGraphqlCreateDocument, reactorGraphqlDeleteDocument, reactorGraphqlDeleteDocuments, reactorGraphqlFetchDocument, reactorGraphqlMutateDocument, readPromiseState, refreshReactorData, refreshReactorDataClient, renameDrive, renameDriveNode, resolveUrlPathname, setAllowList, setAllowedDocumentTypes, setAnalyticsDatabaseName, setBasePath, setCliVersion, setDefaultDrivesUrl, setDefaultPHGlobalConfig, setDisabledEditors, setDocumentCache, setDriveAvailableOffline, setDriveSharingType, setDrives, setDrivesPreserveStrategy, setEnabledEditors, setFeatures, setFileUploadOperationsChunkSize, setGaTrackingId, setGlobal, setGraphQLReactorClient, setIsAddCloudDrivesEnabled, setIsAddDriveEnabled, setIsAddLocalDrivesEnabled, setIsAddPublicDrivesEnabled, setIsAnalyticsDatabaseWorkerEnabled, setIsAnalyticsEnabled, setIsAnalyticsExternalProcessorsEnabled, setIsCloudDrivesEnabled, setIsDeleteCloudDrivesEnabled, setIsDeleteLocalDrivesEnabled, setIsDeletePublicDrivesEnabled, setIsDiffAnalyticsEnabled, setIsDocumentModelSelectionSettingsEnabled, setIsDragAndDropEnabled, setIsDriveAnalyticsEnabled, setIsEditorDebugModeEnabled, setIsEditorReadModeEnabled, setIsExternalControlsEnabled, setIsExternalPackagesEnabled, setIsExternalProcessorsEnabled, setIsExternalRelationalProcessorsEnabled, setIsLocalDrivesEnabled, setIsPublicDrivesEnabled, setIsRelationalProcessorsEnabled, setIsSentryTracingEnabled, setLoading, setLocalDrivesEnabled, setLogLevel, setPHAppConfig, setPHAppConfigByKey, setPHDocumentEditorConfig, setPHDocumentEditorConfigByKey, setPHGlobalConfig, setPHGlobalConfigByKey, setPHModal, setPHToast, setPackageDiscoveryService, setReactorClient, setReactorClientModule, setRenown, setRenownChainId, setRenownNetworkId, setRenownUrl, setRequiresHardRefresh, setRevisionHistoryVisible, setRouterBasename, setSelectedDrive, setSelectedDriveId, setSelectedNode, setSelectedTimelineItem, setSelectedTimelineRevision, setSentryDsn, setSentryEnv, setSentryRelease, setStudioMode, setVersion, setVersionCheckInterval, setVetraPackageManager, setWarnOutdatedApp, showCreateDocumentModal, showDeleteNodeModal, showPHModal, showRevisionHistory, sortNodesByName, trimTrailingSlash, truncateAllTables, useAllowList, useAllowedDocumentModelModules, useAllowedDocumentTypes, useAnalyticsDatabaseName, useAppModuleById, useAppModules, useBasePath, useCliVersion, useConnectionState, useConnectionStates, useDatabase, useDefaultAppModule, useDefaultDrivesUrl, useDid, useDisabledEditors, useDispatch, useDocument, useDocumentById, useDocumentCache, useDocumentModelModuleById, useDocumentModelModules, useDocumentOfType, useDocumentOperations, useDocumentSafe, useDocumentTypes, useDocumentTypesInSelectedDrive, useDocuments, useDocumentsByIds, useDocumentsInSelectedDrive, useDocumentsInSelectedFolder, useDownloadDocument, useDragNode, useDriveById, useDriveSystemInfo, useDrives, useDrivesPreserveStrategy, useDropFile, useDropNode, useEditorFileDrop, useEditorModuleById, useEditorModules, useEditorModulesForDocumentType, useEnabledEditors, useFallbackEditorModule, useFeatures, useFileNodesInSelectedDrive, useFileNodesInSelectedFolder, useFileUploadOperationsChunkSize, useFolderById, useFolderNodesInSelectedDrive, useFolderNodesInSelectedFolder, useGaTrackingId, useGetDocument, useGetDocumentAsync, useGetDocuments, useGetSwitchboardLink, useGraphQLReactorClient, useInitReactorGraphqlClient, useIsAddCloudDrivesEnabled, useIsAddDriveEnabled, useIsAddLocalDrivesEnabled, useIsAddPublicDrivesEnabled, useIsAnalyticsDatabaseWorkerEnabled, useIsAnalyticsEnabled, useIsAnalyticsExternalProcessorsEnabled, useIsCloudDrivesEnabled, useIsDeleteCloudDrivesEnabled, useIsDeleteLocalDrivesEnabled, useIsDeletePublicDrivesEnabled, useIsDiffAnalyticsEnabled, useIsDocumentModelSelectionSettingsEnabled, useIsDragAndDropEnabled, useIsDriveAnalyticsEnabled, useIsEditorDebugModeEnabled, useIsEditorReadModeEnabled, useIsExternalControlsEnabled, useIsExternalPackagesEnabled, useIsExternalProcessorsEnabled, useIsExternalRelationalProcessorsEnabled, useIsLocalDrivesEnabled, useIsPublicDrivesEnabled, useIsRelationalProcessorsEnabled, useIsSentryTracingEnabled, useLoading, useLocalDrivesEnabled, useLogLevel, useLoginStatus, useModelRegistry, useNodeActions, useNodeById, useNodeParentFolderById, useNodePathById, useNodesInSelectedDrive, useNodesInSelectedDriveOrFolder, useNodesInSelectedFolder, useOnDropFile, usePGlite, usePHAppConfigByKey, usePHDocumentEditorConfigByKey, usePHGlobalConfigByKey, usePHModal, usePHToast, usePackageDiscoveryService, useParentFolderForSelectedNode, useReactorClient, useReactorClientModule, useRelationalDb, useRelationalQuery, useRenown, useRenownAuth, useRenownChainId, useRenownInit, useRenownNetworkId, useRenownUrl, useRequiresHardRefresh, useResetPHGlobalConfig, useRevisionHistoryVisible, useRouterBasename, useSelectedDocument, useSelectedDocumentId, useSelectedDocumentOfType, useSelectedDocumentSafe, useSelectedDrive, useSelectedDriveId, useSelectedDriveSafe, useSelectedFolder, useSelectedNode, useSelectedNodePath, useSelectedTimelineItem, useSelectedTimelineRevision, useSentryDsn, useSentryEnv, useSentryRelease, useSetDefaultPHGlobalConfig, useSetPHAppConfig, useSetPHDocumentEditorConfig, useSetPHGlobalConfig, useStudioMode, useSubgraphModules, useSupportedDocumentTypesInReactor, useSync, useSyncList, useUser, useUserPermissions, useVersion, useVersionCheckInterval, useVetraPackageManager, useVetraPackages, useWarnOutdatedApp, validateDocument };
3798
+ export { ActionTracker, BaseStorage, BrowserLocalStorage, COMMON_PACKAGE_ID, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ChannelScheme, ChevronDownIcon, ConflictError, CopyIcon, DEFAULT_DRIVE_EDITOR_ID, DEFAULT_DRIVE_ID, DEFAULT_SWITCHBOARD_URL, DOMAIN_TYPE, DisconnectIcon, DocumentCache, DocumentChangeType, DocumentIntegrityService, EDITOR_FILE_DROP_OPT_OUT_ATTR, GqlRequestChannel, GraphQLClientDocumentCache, ISSUER_TYPE, InMemoryQueue, IntervalPollTimer, PollBehavior, PropagationMode, REACTOR_SCHEMA, RENOWN_CHAIN_ID, RENOWN_NETWORK_ID, RENOWN_URL, ReactorBuilder, ReactorClientBuilder, RegistryClient, RelationalDbProcessor, RemoteClient, RemoteDocumentController, Renown, RenownAuthButton, RenownLoginButton, RenownLogo, RenownUserButton, SpinnerIcon, SyncOperationStatus, UploadStatus, UserIcon, VERIFIABLE_CREDENTIAL_EIP712_TYPE, addAllowListEventHandler, addAllowedDocumentTypesEventHandler, addAnalyticsDatabaseNameEventHandler, addAttachmentServiceEventHandler, addBasePathEventHandler, addCliVersionEventHandler, addDefaultDrivesUrlEventHandler, addDisabledEditorsEventHandler, addDocument, addDocumentCacheEventHandler, addDraggingNodeEventHandler, addDrive, addDrivesEventHandler, addDrivesPreserveStrategyEventHandler, addEnabledEditorsEventHandler, addFeaturesEventHandler, addFileUploadOperationsChunkSizeEventHandler, addFolder, addGaTrackingIdEventHandler, addGraphQLReactorClientEventHandler, addIsAddCloudDrivesEnabledEventHandler, addIsAddDriveEnabledEventHandler, addIsAddLocalDrivesEnabledEventHandler, addIsAddPublicDrivesEnabledEventHandler, addIsAnalyticsDatabaseWorkerEnabledEventHandler, addIsAnalyticsEnabledEventHandler, addIsAnalyticsExternalProcessorsEnabledEventHandler, addIsCloudDrivesEnabledEventHandler, addIsDeleteCloudDrivesEnabledEventHandler, addIsDeleteLocalDrivesEnabledEventHandler, addIsDeletePublicDrivesEnabledEventHandler, addIsDiffAnalyticsEnabledEventHandler, addIsDocumentModelSelectionSettingsEnabledEventHandler, addIsDragAndDropEnabledEventHandler, addIsDriveAnalyticsEnabledEventHandler, addIsEditorDebugModeEnabledEventHandler, addIsEditorReadModeEnabledEventHandler, addIsExternalControlsEnabledEventHandler, addIsExternalPackagesEnabledEventHandler, addIsExternalProcessorsEnabledEventHandler, addIsExternalRelationalProcessorsEnabledEventHandler, addIsLocalDrivesEnabledEventHandler, addIsPublicDrivesEnabledEventHandler, addIsRelationalProcessorsEnabledEventHandler, addIsSentryTracingEnabledEventHandler, addLoadingEventHandler, addLocalDrivesEnabledEventHandler, addLogLevelEventHandler, addModalEventHandler, addPHEventHandlers, addPackageDiscoveryServiceEventHandler, addPromiseState, addReactorClientEventHandler, addReactorClientModuleEventHandler, addRemoteDrive, addRenownChainIdEventHandler, addRenownEventHandler, addRenownNetworkIdEventHandler, addRenownUrlEventHandler, addRequiresHardRefreshEventHandler, addResetSelectedNodeEventHandler, addRevisionHistoryVisibleEventHandler, addRouterBasenameEventHandler, addSelectedDriveIdEventHandler, addSelectedNodeIdEventHandler, addSelectedTimelineItemEventHandler, addSelectedTimelineRevisionEventHandler, addSentryDsnEventHandler, addSentryEnvEventHandler, addSentryReleaseEventHandler, addSetSelectedDriveOnPopStateEventHandler, addSetSelectedNodeOnPopStateEventHandler, addStudioModeEventHandler, addToastEventHandler, addVersionCheckIntervalEventHandler, addVersionEventHandler, addVetraPackageManagerEventHandler, addWarnOutdatedAppEventHandler, baseDocumentModels, baseDocumentModelsMap, buildDocumentSubgraphQuery, buildDocumentSubgraphUrl, callEventHandlerRegisterFunctions, callGlobalSetterForKey, clearGlobal, closePHModal, commonGlobalEventHandlerFunctions, convertRemoteOperations, createAnalyticsStore, createClient, createProcessorQuery, createUrlWithPreservedParams, deleteDrive, deleteNode, deriveSystemUrl, dispatchActions, downloadDocument, driveCollectionId, driveIdFromUrl, dropAllReactorStorage, exportFile, extractDriveIdFromPath, extractDriveIdFromSlug, extractDriveSlugFromPath, extractNodeIdFromPath, extractNodeIdFromSlug, extractNodeSlugFromPath, findUuid, getAnalyticsStore, getDocumentGraphqlQuery, getDriveIdBySlug, getDrives, getGlobal, getPackages, getPackagesByDocumentType, getPathWithoutBase, getRevisionFromDate, getSlugFromDriveUrl, getSwitchboardGatewayUrlFromDriveUrl, getSyncStatus, getSyncStatusSync, getUserPermissions, graphqlDocumentEvents, graphqlDocumentsEvents, graphqlEventsToSyncDrive, hideRevisionHistory, identifierFromMutateDocumentOperationVariables, initConnectCrypto, initRenownCrypto, initTheme, isDocumentTypeSupported, isExternalControlsEnabledEventFunctions, isFileNodeKind, isFolderNodeKind, loading, login, logout, makeDriveUrlComponent, makeNodeSlug, makePHEventFunctions, openRenown, parseDriveUrl, phAppConfigHooks, phAppConfigSetters, phDocumentEditorConfigHooks, phDocumentEditorConfigSetters, phDocumentFromQuery, phDocumentsFromQuery, phGlobalConfigHooks, phGlobalConfigSetters, reactorGraphqlBatchFetchDocuments, reactorGraphqlCreateDocument, reactorGraphqlDeleteDocument, reactorGraphqlDeleteDocuments, reactorGraphqlFetchDocument, reactorGraphqlMutateDocument, readPromiseState, refreshReactorData, refreshReactorDataClient, renameDrive, renameDriveNode, resolveUrlPathname, setAllowList, setAllowedDocumentTypes, setAnalyticsDatabaseName, setAttachmentService, setBasePath, setCliVersion, setDefaultDrivesUrl, setDefaultPHGlobalConfig, setDisabledEditors, setDocumentCache, setDriveAvailableOffline, setDriveMetadata, setDriveSharingType, setDrives, setDrivesPreserveStrategy, setEnabledEditors, setFeatures, setFileUploadOperationsChunkSize, setGaTrackingId, setGlobal, setGraphQLReactorClient, setIsAddCloudDrivesEnabled, setIsAddDriveEnabled, setIsAddLocalDrivesEnabled, setIsAddPublicDrivesEnabled, setIsAnalyticsDatabaseWorkerEnabled, setIsAnalyticsEnabled, setIsAnalyticsExternalProcessorsEnabled, setIsCloudDrivesEnabled, setIsDeleteCloudDrivesEnabled, setIsDeleteLocalDrivesEnabled, setIsDeletePublicDrivesEnabled, setIsDiffAnalyticsEnabled, setIsDocumentModelSelectionSettingsEnabled, setIsDragAndDropEnabled, setIsDriveAnalyticsEnabled, setIsEditorDebugModeEnabled, setIsEditorReadModeEnabled, setIsExternalControlsEnabled, setIsExternalPackagesEnabled, setIsExternalProcessorsEnabled, setIsExternalRelationalProcessorsEnabled, setIsLocalDrivesEnabled, setIsPublicDrivesEnabled, setIsRelationalProcessorsEnabled, setIsSentryTracingEnabled, setLoading, setLocalDrivesEnabled, setLogLevel, setPHAppConfig, setPHAppConfigByKey, setPHDocumentEditorConfig, setPHDocumentEditorConfigByKey, setPHGlobalConfig, setPHGlobalConfigByKey, setPHModal, setPHToast, setPackageDiscoveryService, setReactorClient, setReactorClientModule, setRenown, setRenownChainId, setRenownNetworkId, setRenownUrl, setRequiresHardRefresh, setRevisionHistoryVisible, setRouterBasename, setSelectedDrive, setSelectedDriveId, setSelectedNode, setSelectedTimelineItem, setSelectedTimelineRevision, setSentryDsn, setSentryEnv, setSentryRelease, setStudioMode, setVersion, setVersionCheckInterval, setVetraPackageManager, setWarnOutdatedApp, showCreateDocumentModal, showDeleteNodeModal, showPHModal, showRevisionHistory, sortNodesByName, trimTrailingSlash, truncateAllTables, useAllowList, useAllowedDocumentModelModules, useAllowedDocumentTypes, useAnalyticsDatabaseName, useAppModuleById, useAppModules, useAttachmentService, useAttachmentUpload, useAttachments, useBasePath, useCliVersion, useConnectionState, useConnectionStates, useDatabase, useDefaultAppModule, useDefaultDrivesUrl, useDid, useDisabledEditors, useDispatch, useDocument, useDocumentById, useDocumentCache, useDocumentModelModuleById, useDocumentModelModules, useDocumentOfType, useDocumentOperations, useDocumentSafe, useDocumentTypes, useDocumentTypesInSelectedDrive, useDocuments, useDocumentsByIds, useDocumentsInSelectedDrive, useDocumentsInSelectedFolder, useDownloadDocument, useDragNode, useDriveById, useDriveSystemInfo, useDrives, useDrivesPreserveStrategy, useDropFile, useDropNode, useEditorFileDrop, useEditorModuleById, useEditorModules, useEditorModulesForDocumentType, useEnabledEditors, useFallbackEditorModule, useFeatures, useFileNodesInSelectedDrive, useFileNodesInSelectedFolder, useFileUploadOperationsChunkSize, useFolderById, useFolderNodesInSelectedDrive, useFolderNodesInSelectedFolder, useGaTrackingId, useGetDocument, useGetDocumentAsync, useGetDocuments, useGetSwitchboardLink, useGraphQLReactorClient, useInitReactorGraphqlClient, useIsAddCloudDrivesEnabled, useIsAddDriveEnabled, useIsAddLocalDrivesEnabled, useIsAddPublicDrivesEnabled, useIsAnalyticsDatabaseWorkerEnabled, useIsAnalyticsEnabled, useIsAnalyticsExternalProcessorsEnabled, useIsCloudDrivesEnabled, useIsDeleteCloudDrivesEnabled, useIsDeleteLocalDrivesEnabled, useIsDeletePublicDrivesEnabled, useIsDiffAnalyticsEnabled, useIsDocumentModelSelectionSettingsEnabled, useIsDragAndDropEnabled, useIsDriveAnalyticsEnabled, useIsEditorDebugModeEnabled, useIsEditorReadModeEnabled, useIsExternalControlsEnabled, useIsExternalPackagesEnabled, useIsExternalProcessorsEnabled, useIsExternalRelationalProcessorsEnabled, useIsLocalDrivesEnabled, useIsPublicDrivesEnabled, useIsRelationalProcessorsEnabled, useIsSentryTracingEnabled, useLoading, useLocalDrivesEnabled, useLogLevel, useLoginStatus, useModelRegistry, useNodeActions, useNodeById, useNodeParentFolderById, useNodePathById, useNodesInSelectedDrive, useNodesInSelectedDriveOrFolder, useNodesInSelectedFolder, useOnDropFile, usePGlite, usePHAppConfigByKey, usePHDocumentEditorConfigByKey, usePHGlobalConfigByKey, usePHModal, usePHToast, usePackageDiscoveryService, useParentFolderForSelectedNode, useReactorClient, useReactorClientModule, useRelationalDb, useRelationalQuery, useRenown, useRenownAuth, useRenownChainId, useRenownInit, useRenownNetworkId, useRenownUrl, useRequiresHardRefresh, useResetPHGlobalConfig, useRevisionHistoryVisible, useRouterBasename, useSelectedDocument, useSelectedDocumentId, useSelectedDocumentOfType, useSelectedDocumentSafe, useSelectedDrive, useSelectedDriveId, useSelectedDriveSafe, useSelectedFolder, useSelectedNode, useSelectedNodePath, useSelectedTimelineItem, useSelectedTimelineRevision, useSentryDsn, useSentryEnv, useSentryRelease, useSetDefaultPHGlobalConfig, useSetPHAppConfig, useSetPHDocumentEditorConfig, useSetPHGlobalConfig, useStudioMode, useSubgraphModules, useSupportedDocumentTypesInReactor, useSync, useSyncList, useTheme, useUser, useUserPermissions, useVersion, useVersionCheckInterval, useVetraPackageManager, useVetraPackages, useWarnOutdatedApp, validateDocument, waitForDocumentReady };
3521
3799
 
3522
3800
  //# sourceMappingURL=index.js.map