@powerhousedao/connect 6.2.2-dev.76 → 6.2.2-dev.78
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/{AddDriveModal-Bw0YuxZg.js → AddDriveModal-Q-Ffh5XA.js} +4 -4
- package/dist/{AddDriveModal-Bw0YuxZg.js.map → AddDriveModal-Q-Ffh5XA.js.map} +1 -1
- package/dist/{ClearStorageModal-tXyJ2dGV.js → ClearStorageModal-rKAE3cvA.js} +4 -4
- package/dist/{ClearStorageModal-tXyJ2dGV.js.map → ClearStorageModal-rKAE3cvA.js.map} +1 -1
- package/dist/{ConfirmDocumentUpgradeModal-9AaaQJTs.js → ConfirmDocumentUpgradeModal-FUOhZsk7.js} +4 -4
- package/dist/{ConfirmDocumentUpgradeModal-9AaaQJTs.js.map → ConfirmDocumentUpgradeModal-FUOhZsk7.js.map} +1 -1
- package/dist/{CookiesPolicyModal-CQ-zHJdw.js → CookiesPolicyModal-BpyPPyxS.js} +3 -3
- package/dist/{CookiesPolicyModal-CQ-zHJdw.js.map → CookiesPolicyModal-BpyPPyxS.js.map} +1 -1
- package/dist/{CreateDocumentModal-NNi4p6EI.js → CreateDocumentModal-C45W8J0V.js} +3 -3
- package/dist/{CreateDocumentModal-NNi4p6EI.js.map → CreateDocumentModal-C45W8J0V.js.map} +1 -1
- package/dist/{DebugSettingsModal-CE3uHISS.js → DebugSettingsModal-f7mphH92.js} +6 -6
- package/dist/{DebugSettingsModal-CE3uHISS.js.map → DebugSettingsModal-f7mphH92.js.map} +1 -1
- package/dist/{DeleteDriveModal-C7fnXMsR.js → DeleteDriveModal-Dug84t1j.js} +4 -4
- package/dist/{DeleteDriveModal-C7fnXMsR.js.map → DeleteDriveModal-Dug84t1j.js.map} +1 -1
- package/dist/{DeleteItemModal-BK_Y8Thj.js → DeleteItemModal-mMzy3V8o.js} +4 -4
- package/dist/{DeleteItemModal-BK_Y8Thj.js.map → DeleteItemModal-mMzy3V8o.js.map} +1 -1
- package/dist/{DisclaimerModal-DJPHCnFY.js → DisclaimerModal-DvpD5dPM.js} +3 -3
- package/dist/{DisclaimerModal-DJPHCnFY.js.map → DisclaimerModal-DvpD5dPM.js.map} +1 -1
- package/dist/{DocumentVersionUnsupportedModal-tBHLK6b1.js → DocumentVersionUnsupportedModal-C3Q0V75l.js} +3 -3
- package/dist/{DocumentVersionUnsupportedModal-tBHLK6b1.js.map → DocumentVersionUnsupportedModal-C3Q0V75l.js.map} +1 -1
- package/dist/{DownloadDocumentWithErrorsModal-sWu46HVB.js → DownloadDocumentWithErrorsModal-IKl0ljQb.js} +3 -3
- package/dist/{DownloadDocumentWithErrorsModal-sWu46HVB.js.map → DownloadDocumentWithErrorsModal-IKl0ljQb.js.map} +1 -1
- package/dist/{DriveAuthRequiredModal-D3IPAst0.js → DriveAuthRequiredModal-Cw9eCAQ_.js} +4 -4
- package/dist/{DriveAuthRequiredModal-D3IPAst0.js.map → DriveAuthRequiredModal-Cw9eCAQ_.js.map} +1 -1
- package/dist/{DriveSettingsModal-7OKx8foy.js → DriveSettingsModal-C6-mRQiv.js} +3 -3
- package/dist/{DriveSettingsModal-7OKx8foy.js.map → DriveSettingsModal-C6-mRQiv.js.map} +1 -1
- package/dist/{InspectorModal-BV9QR1MZ.js → InspectorModal-C2usotS-.js} +6 -6
- package/dist/{InspectorModal-BV9QR1MZ.js.map → InspectorModal-C2usotS-.js.map} +1 -1
- package/dist/{LoginModal-Cd2wGgG4.js → LoginModal-CybbOm3N.js} +4 -4
- package/dist/{LoginModal-Cd2wGgG4.js.map → LoginModal-CybbOm3N.js.map} +1 -1
- package/dist/{MissingPackageModal-DyP2-Ojb.js → MissingPackageModal-C7usWVHQ.js} +3 -3
- package/dist/{MissingPackageModal-DyP2-Ojb.js.map → MissingPackageModal-C7usWVHQ.js.map} +1 -1
- package/dist/{OpenFileDocumentsModal-DQ0Slw9y.js → OpenFileDocumentsModal-e_TKIuB4.js} +4 -4
- package/dist/{OpenFileDocumentsModal-DQ0Slw9y.js.map → OpenFileDocumentsModal-e_TKIuB4.js.map} +1 -1
- package/dist/{SettingsModal-Dk-Kp4kl.js → SettingsModal-DbIlDH70.js} +274 -8
- package/dist/SettingsModal-DbIlDH70.js.map +1 -0
- package/dist/{UpgradeDriveModal-wo5oO9mg.js → UpgradeDriveModal-_8t9slxQ.js} +3 -3
- package/dist/{UpgradeDriveModal-wo5oO9mg.js.map → UpgradeDriveModal-_8t9slxQ.js.map} +1 -1
- package/dist/{app-loader-VDeDZD5T.js → app-loader-Cl4p5jBL.js} +302 -408
- package/dist/app-loader-Cl4p5jBL.js.map +1 -0
- package/dist/app-loader-x1CpaZj-.js +4 -0
- package/dist/build-info-BIPBq41n.js +28 -0
- package/dist/build-info-BIPBq41n.js.map +1 -0
- package/dist/components-DYfZ0Q9B.js +4 -0
- package/dist/{connect.config-C-b_Yhd6.js → connect.config-ZWoeCSit.js} +6 -5
- package/dist/connect.config-ZWoeCSit.js.map +1 -0
- package/dist/{connection-state-KCa1yljA.js → connection-state-CedmAXd-.js} +4 -4
- package/dist/{connection-state-KCa1yljA.js.map → connection-state-CedmAXd-.js.map} +1 -1
- package/dist/cookie-banner-CTxjAKt4.js +70 -0
- package/dist/cookie-banner-CTxjAKt4.js.map +1 -0
- package/dist/{reload-connect-toast-DDQEupCN.js → i18n-CWO0vYVd.js} +5 -30
- package/dist/i18n-CWO0vYVd.js.map +1 -0
- package/dist/load-D_5q8fky.js +131 -0
- package/dist/load-D_5q8fky.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/{pglite-seed-DRXPe7p-.js → pglite-seed-B7bWZwVg.js} +4 -4
- package/dist/{pglite-seed-DRXPe7p-.js.map → pglite-seed-B7bWZwVg.js.map} +1 -1
- package/dist/preferences-store-CUBzmf5F.js +104 -0
- package/dist/preferences-store-CUBzmf5F.js.map +1 -0
- package/dist/{pwa-manifest-link-CG8UajMz.js → pwa-manifest-link-DIgOSo2Q.js} +3 -3
- package/dist/{pwa-manifest-link-CG8UajMz.js.map → pwa-manifest-link-DIgOSo2Q.js.map} +1 -1
- package/dist/{reactor-Dn5J8dOX.js → reactor-Dp-5PAKA.js} +8 -8
- package/dist/{reactor-Dn5J8dOX.js.map → reactor-Dp-5PAKA.js.map} +1 -1
- package/dist/{registerServiceWorker-Bn1KWmk0.js → registerServiceWorker-lSZgPKiH.js} +5 -5
- package/dist/{registerServiceWorker-Bn1KWmk0.js.map → registerServiceWorker-lSZgPKiH.js.map} +1 -1
- package/dist/sentry-QXKgQmr2.js +15 -0
- package/dist/sentry-QXKgQmr2.js.map +1 -0
- package/dist/start-connect.js +1 -1
- package/dist/style.css +143 -0
- package/dist/{toast-CO6ChlzE.js → toast-BXIGd4Eb.js} +3 -3
- package/dist/{toast-CO6ChlzE.js.map → toast-BXIGd4Eb.js.map} +1 -1
- package/dist/{use-renown-login-BtGljnB4.js → use-renown-login-Cf3va6u_.js} +3 -3
- package/dist/{use-renown-login-BtGljnB4.js.map → use-renown-login-Cf3va6u_.js.map} +1 -1
- package/package.json +12 -11
- package/public/powerhouse.config.json +9 -1
- package/style.css +1 -0
- package/dist/SettingsModal-Dk-Kp4kl.js.map +0 -1
- package/dist/app-loader-BffxIMi7.js +0 -4
- package/dist/app-loader-VDeDZD5T.js.map +0 -1
- package/dist/build-info-B8kMAY35.js +0 -18
- package/dist/build-info-B8kMAY35.js.map +0 -1
- package/dist/components-jBXd290x.js +0 -5
- package/dist/connect.config-C-b_Yhd6.js.map +0 -1
- package/dist/load-DUCtfMW3.js +0 -100
- package/dist/load-DUCtfMW3.js.map +0 -1
- package/dist/package-ZLxXINym.js +0 -132
- package/dist/package-ZLxXINym.js.map +0 -1
- package/dist/reload-connect-toast-DDQEupCN.js.map +0 -1
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f20d7330-c3fe-5c88-baef-ea4af0179c28")}catch(e){}}();
|
|
3
3
|
import { n as getRuntimeConfig } from "./runtime-config-DL3QjcfM.js";
|
|
4
4
|
import { c as idbError } from "./pglite-major-B39aOEiE.js";
|
|
5
5
|
import { n as cloneFileData, r as migrateIdb } from "./pglite-migrate-core-Boxqqx-c.js";
|
|
6
|
-
import { i as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { t as
|
|
6
|
+
import { a as defaultPHDocumentEditorConfig, i as defaultPHAppConfig, r as connectConfig } from "./connect.config-ZWoeCSit.js";
|
|
7
|
+
import { f as PRIMARY_IDB_NAMES, r as subscribeWorkerConnection, s as getCachedMigrationMajor, t as getWorkerConnectionStatus, u as subscribeMigrationMajor } from "./connection-state-CedmAXd-.js";
|
|
8
|
+
import { n as serviceWorkerManager, r as subscribeServiceWorkerUpdate, t as getServiceWorkerUpdateAvailable } from "./registerServiceWorker-lSZgPKiH.js";
|
|
9
|
+
import { t as setSentryModule } from "./sentry-QXKgQmr2.js";
|
|
10
|
+
import { i as useIsEmbedded, r as getIsEmbedded, t as useAcceptedCookies } from "./preferences-store-CUBzmf5F.js";
|
|
11
|
+
import { n as dismissToast, r as toast, t as ToastContainer } from "./toast-BXIGd4Eb.js";
|
|
12
|
+
import { t as useOpenRenownLogin } from "./use-renown-login-Cf3va6u_.js";
|
|
12
13
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
-
import {
|
|
14
|
+
import { useTranslation } from "react-i18next";
|
|
14
15
|
import React, { StrictMode, Suspense, createElement, lazy, useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
15
16
|
import { DriveCollectionId, RenownWalletProvider, addFileWithProgress, getRevisionFromDate, initTheme, logout, setPHAppConfig, setPHDocumentEditorConfig, setRevisionHistoryVisible, setSelectedDrive, setSelectedNode, showPHModal, useAppModuleById, useConnectionStates, useDefaultAppModule, useDocumentById, useDocumentModelModuleById, useDocumentOperations, useDocumentVersionStatus, useDrives, useEditorModuleById, useEditorPreloader, useFallbackEditorModule, useIsAddDriveEnabled, useNodeParentFolderById, usePHModal, usePackageDiscoveryService, useReactorClientModule, useRevisionHistoryVisible, useSelectedDocument, useSelectedDocumentId, useSelectedDriveSafe, useSelectedFolder, useSelectedTimelineItem, useSyncList, useTheme, useUser, useVetraPackageManager, useVetraPackages } from "@powerhousedao/reactor-browser";
|
|
16
17
|
import { childLogger } from "document-model";
|
|
17
|
-
import { ConnectSidebar, ConnectTooltipProvider,
|
|
18
|
-
import { z } from "zod";
|
|
18
|
+
import { ConnectSidebar, ConnectTooltipProvider, DefaultEditorLoader, DriveAuthGate, DropZoneWrapper, HomeScreen, HomeScreenAddDriveItem, HomeScreenItem, LogoAnimation, PackageInstallModal, RevisionHistory, SidebarAddDriveItem, SidebarItem, UploadFileListContainer, formatFileSize, mapProgressStageToStatus, useEns } from "@powerhousedao/design-system/connect";
|
|
19
19
|
import { Outlet, RouterProvider, createBrowserRouter, createRoutesFromChildren, matchRoutes, useLocation, useNavigationType } from "react-router-dom";
|
|
20
20
|
import { useHotkeys } from "react-hotkeys-hook";
|
|
21
21
|
import { Icon, Modal, PowerhouseButton } from "@powerhousedao/design-system";
|
|
22
22
|
import { ErrorBoundary } from "react-error-boundary";
|
|
23
|
+
import { z } from "zod";
|
|
23
24
|
import { GenericDriveExplorer } from "@powerhousedao/powerhouse-vetra-packages/editors";
|
|
25
|
+
import { createReactorMcpProvider } from "@powerhousedao/reactor-mcp/tools";
|
|
26
|
+
import { ReactorChatFab } from "@powerhousedao/reactor-browser/ai";
|
|
24
27
|
import { twMerge } from "tailwind-merge";
|
|
25
28
|
import { mockAdapter } from "@renown/sdk/wallet/mock";
|
|
26
29
|
import { privyAdapter } from "@renown/sdk/wallet/privy";
|
|
@@ -153,17 +156,17 @@ function initLaunchQueueFileHandling() {
|
|
|
153
156
|
//#endregion
|
|
154
157
|
//#region src/utils/open-file-uploads.ts
|
|
155
158
|
let uploads = [];
|
|
156
|
-
const listeners$
|
|
159
|
+
const listeners$1 = /* @__PURE__ */ new Set();
|
|
157
160
|
function notifyUploadListeners() {
|
|
158
|
-
for (const listener of listeners$
|
|
161
|
+
for (const listener of listeners$1) listener();
|
|
159
162
|
}
|
|
160
163
|
function getOpenFileUploads() {
|
|
161
164
|
return uploads;
|
|
162
165
|
}
|
|
163
166
|
function subscribeOpenFileUploads(cb) {
|
|
164
|
-
listeners$
|
|
167
|
+
listeners$1.add(cb);
|
|
165
168
|
return () => {
|
|
166
|
-
listeners$
|
|
169
|
+
listeners$1.delete(cb);
|
|
167
170
|
};
|
|
168
171
|
}
|
|
169
172
|
function removeOpenFileUpload(id) {
|
|
@@ -260,18 +263,18 @@ function runOpenFileImports(args) {
|
|
|
260
263
|
//#endregion
|
|
261
264
|
//#region src/components/migration-status.ts
|
|
262
265
|
let current = null;
|
|
263
|
-
const listeners
|
|
266
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
264
267
|
function setMigrationStatus(status) {
|
|
265
268
|
current = status;
|
|
266
|
-
for (const l of listeners
|
|
269
|
+
for (const l of listeners) l();
|
|
267
270
|
}
|
|
268
271
|
function getMigrationStatus() {
|
|
269
272
|
return current;
|
|
270
273
|
}
|
|
271
274
|
function subscribeMigrationStatus(cb) {
|
|
272
|
-
listeners
|
|
275
|
+
listeners.add(cb);
|
|
273
276
|
return () => {
|
|
274
|
-
listeners
|
|
277
|
+
listeners.delete(cb);
|
|
275
278
|
};
|
|
276
279
|
}
|
|
277
280
|
//#endregion
|
|
@@ -390,312 +393,6 @@ async function migrateAllIfNeeded() {
|
|
|
390
393
|
});
|
|
391
394
|
}
|
|
392
395
|
//#endregion
|
|
393
|
-
//#region src/hooks/useAcceptedCookies.ts
|
|
394
|
-
const ACCEPTED_COOKIES_KEY_STORAGE = `${connectConfig.routerBasename}:acceptedCookies`;
|
|
395
|
-
const listeners$1 = /* @__PURE__ */ new Set();
|
|
396
|
-
let cookies = getInitial$1();
|
|
397
|
-
function getInitial$1() {
|
|
398
|
-
try {
|
|
399
|
-
const value = localStorage.getItem(ACCEPTED_COOKIES_KEY_STORAGE);
|
|
400
|
-
return value ? JSON.parse(value) : {
|
|
401
|
-
analytics: false,
|
|
402
|
-
marketing: false,
|
|
403
|
-
functional: false
|
|
404
|
-
};
|
|
405
|
-
} catch {
|
|
406
|
-
return {
|
|
407
|
-
analytics: false,
|
|
408
|
-
marketing: false,
|
|
409
|
-
functional: false
|
|
410
|
-
};
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
function getCookies() {
|
|
414
|
-
return cookies;
|
|
415
|
-
}
|
|
416
|
-
function setCookies(setter) {
|
|
417
|
-
cookies = setter(cookies);
|
|
418
|
-
localStorage.setItem(ACCEPTED_COOKIES_KEY_STORAGE, JSON.stringify(cookies));
|
|
419
|
-
listeners$1.forEach((fn) => fn());
|
|
420
|
-
}
|
|
421
|
-
function subscribe$1(fn) {
|
|
422
|
-
listeners$1.add(fn);
|
|
423
|
-
return () => listeners$1.delete(fn);
|
|
424
|
-
}
|
|
425
|
-
const useAcceptedCookies = () => {
|
|
426
|
-
return [useSyncExternalStore(subscribe$1, getCookies, getCookies), setCookies];
|
|
427
|
-
};
|
|
428
|
-
//#endregion
|
|
429
|
-
//#region src/services/openpanel/buffer.ts
|
|
430
|
-
const buffer = [];
|
|
431
|
-
let errorHandler;
|
|
432
|
-
function defaultOnError(err) {
|
|
433
|
-
console.warn("[useOpenPanelAnalytics] track failed:", err);
|
|
434
|
-
}
|
|
435
|
-
/**
|
|
436
|
-
* Forward a single event to the active client, swallowing any throw.
|
|
437
|
-
*
|
|
438
|
-
* The outer try/catch handles synchronous throws from `client.track`; the
|
|
439
|
-
* inner `.catch()` handles rejected promises. Both are needed because
|
|
440
|
-
* `Promise.resolve(x).catch()` cannot catch a throw from evaluating `x`.
|
|
441
|
-
*/
|
|
442
|
-
function forward(client, name, props) {
|
|
443
|
-
try {
|
|
444
|
-
Promise.resolve(client.track(name, props)).catch((err) => (errorHandler ?? defaultOnError)(err));
|
|
445
|
-
} catch (err) {
|
|
446
|
-
(errorHandler ?? defaultOnError)(err);
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
/**
|
|
450
|
-
* Drain the pre-init buffer in FIFO order through `client.track`, then forward
|
|
451
|
-
* subsequent events directly. Called once from `getOpenPanelClient()`.
|
|
452
|
-
*/
|
|
453
|
-
function drainOpenPanelBuffer(client, onError) {
|
|
454
|
-
errorHandler = onError;
|
|
455
|
-
const pending = buffer.splice(0, buffer.length);
|
|
456
|
-
for (const [name, props] of pending) forward(client, name, props);
|
|
457
|
-
}
|
|
458
|
-
/**
|
|
459
|
-
* Clear the buffer and reset the active client. Buffered pre-consent events
|
|
460
|
-
* are discarded so they are not replayed if the user later re-accepts.
|
|
461
|
-
*/
|
|
462
|
-
function clearOpenPanelBuffer() {
|
|
463
|
-
buffer.length = 0;
|
|
464
|
-
errorHandler = void 0;
|
|
465
|
-
}
|
|
466
|
-
//#endregion
|
|
467
|
-
//#region src/services/openpanel/client.ts
|
|
468
|
-
let client;
|
|
469
|
-
/**
|
|
470
|
-
* Returns the cached `OpenPanel` singleton, building it on first call.
|
|
471
|
-
*
|
|
472
|
-
* When `config.clientId` is empty it returns `undefined` without importing
|
|
473
|
-
* `@openpanel/web`, so the bundler can tree-shake the SDK out of production.
|
|
474
|
-
*/
|
|
475
|
-
async function getOpenPanelClient(config) {
|
|
476
|
-
if (!config.clientId) return;
|
|
477
|
-
if (client) return client;
|
|
478
|
-
const { OpenPanel: OpenPanelClass } = await import("@openpanel/web");
|
|
479
|
-
client = new OpenPanelClass({
|
|
480
|
-
clientId: config.clientId,
|
|
481
|
-
...config.apiUrl ? { apiUrl: config.apiUrl } : {},
|
|
482
|
-
trackScreenViews: true,
|
|
483
|
-
trackOutgoingLinks: true
|
|
484
|
-
});
|
|
485
|
-
client.setGlobalProperties({ app: "connect" });
|
|
486
|
-
drainOpenPanelBuffer(client);
|
|
487
|
-
return client;
|
|
488
|
-
}
|
|
489
|
-
/**
|
|
490
|
-
* Clears the cached singleton and the pre-init buffer. Call on consent
|
|
491
|
-
* revocation or during tests; buffered events are discarded, not replayed.
|
|
492
|
-
*/
|
|
493
|
-
function resetOpenPanelClient() {
|
|
494
|
-
client = void 0;
|
|
495
|
-
clearOpenPanelBuffer();
|
|
496
|
-
}
|
|
497
|
-
//#endregion
|
|
498
|
-
//#region src/services/openpanel/events.json
|
|
499
|
-
var events_default = [
|
|
500
|
-
{
|
|
501
|
-
"documentType": "powerhouse/document-drive",
|
|
502
|
-
"actionTypes": [
|
|
503
|
-
"ADD_FOLDER",
|
|
504
|
-
"DELETE_NODE",
|
|
505
|
-
"ADD_FILE",
|
|
506
|
-
"UPDATE_FILE",
|
|
507
|
-
"COPY_NODE",
|
|
508
|
-
"MOVE_NODE",
|
|
509
|
-
"SET_DRIVE_NAME",
|
|
510
|
-
"SET_DRIVE_ICON"
|
|
511
|
-
]
|
|
512
|
-
},
|
|
513
|
-
{
|
|
514
|
-
"documentType": "powerhouse/document-model",
|
|
515
|
-
"actionTypes": [
|
|
516
|
-
"SET_MODEL_NAME",
|
|
517
|
-
"SET_MODEL_ID",
|
|
518
|
-
"ADD_MODULE",
|
|
519
|
-
"DELETE_MODULE",
|
|
520
|
-
"ADD_OPERATION",
|
|
521
|
-
"DELETE_OPERATION"
|
|
522
|
-
]
|
|
523
|
-
},
|
|
524
|
-
{
|
|
525
|
-
"documentType": "powerhouse/reactor-drive",
|
|
526
|
-
"actionTypes": [
|
|
527
|
-
"ADD_FOLDER",
|
|
528
|
-
"REMOVE_FOLDER",
|
|
529
|
-
"UPDATE_FOLDER"
|
|
530
|
-
]
|
|
531
|
-
}
|
|
532
|
-
];
|
|
533
|
-
//#endregion
|
|
534
|
-
//#region src/services/openpanel/events.ts
|
|
535
|
-
const EventMappingSchema = z.object({
|
|
536
|
-
documentType: z.string().min(1),
|
|
537
|
-
actionTypes: z.array(z.string().min(1)).min(1),
|
|
538
|
-
alias: z.string().optional()
|
|
539
|
-
}).strict();
|
|
540
|
-
const EventMappingsSchema = z.array(EventMappingSchema).readonly();
|
|
541
|
-
/**
|
|
542
|
-
* Parses and validates the event mapping table, returning the validated array
|
|
543
|
-
* and an O(1) lookup map. Accepts a `raw` override for tests. Throws on zod
|
|
544
|
-
* failures and on duplicate `(documentType, actionType)` pairs.
|
|
545
|
-
*/
|
|
546
|
-
function loadEvents(raw = events_default) {
|
|
547
|
-
const result = EventMappingsSchema.safeParse(raw);
|
|
548
|
-
if (!result.success) throw new Error(`Invalid OpenPanel events.json: ${result.error.message}`);
|
|
549
|
-
const mappings = result.data;
|
|
550
|
-
const lookupMap = /* @__PURE__ */ new Map();
|
|
551
|
-
for (const mapping of mappings) {
|
|
552
|
-
let inner = lookupMap.get(mapping.documentType);
|
|
553
|
-
if (!inner) {
|
|
554
|
-
inner = /* @__PURE__ */ new Map();
|
|
555
|
-
lookupMap.set(mapping.documentType, inner);
|
|
556
|
-
}
|
|
557
|
-
for (const actionType of mapping.actionTypes) {
|
|
558
|
-
if (inner.has(actionType)) throw new Error(`Duplicate OpenPanel event mapping for ${mapping.documentType}/${actionType}`);
|
|
559
|
-
inner.set(actionType, mapping);
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
return {
|
|
563
|
-
mappings,
|
|
564
|
-
lookupMap
|
|
565
|
-
};
|
|
566
|
-
}
|
|
567
|
-
const { mappings: defaultMappings, lookupMap: defaultLookupMap } = loadEvents();
|
|
568
|
-
/** Validated mapping array from the bundled events.json. */
|
|
569
|
-
const eventMappings = defaultMappings;
|
|
570
|
-
/** O(1) lookup map: documentType → actionType → mapping. */
|
|
571
|
-
const eventLookupMap = defaultLookupMap;
|
|
572
|
-
/**
|
|
573
|
-
* Normalizes a document type into a safe event-name segment: lowercased, `/`
|
|
574
|
-
* replaced with `.`, and any character outside `[a-z0-9._-]` stripped.
|
|
575
|
-
* e.g. `powerhouse/document-drive` → `powerhouse.document-drive`.
|
|
576
|
-
*/
|
|
577
|
-
function normalize(documentType) {
|
|
578
|
-
return documentType.toLowerCase().replace(/\//g, ".").replace(/[^a-z0-9._-]/g, "");
|
|
579
|
-
}
|
|
580
|
-
/**
|
|
581
|
-
* Derives the OpenPanel event name: `mapping.alias` when present, otherwise
|
|
582
|
-
* `${normalize(documentType)}.${actionType.toLowerCase()}`.
|
|
583
|
-
*/
|
|
584
|
-
function deriveEventName(mapping, op) {
|
|
585
|
-
if (mapping.alias) return mapping.alias;
|
|
586
|
-
return `${normalize(op.context.documentType)}.${op.operation.action.type.toLowerCase()}`;
|
|
587
|
-
}
|
|
588
|
-
/**
|
|
589
|
-
* Builds the default properties attached to every OpenPanel event. The `app`
|
|
590
|
-
* property is stamped globally by the client, not here.
|
|
591
|
-
*/
|
|
592
|
-
function buildDefaultProperties(op) {
|
|
593
|
-
return {
|
|
594
|
-
documentType: op.context.documentType,
|
|
595
|
-
actionType: op.operation.action.type,
|
|
596
|
-
documentId: op.context.documentId,
|
|
597
|
-
scope: op.context.scope,
|
|
598
|
-
branch: op.context.branch
|
|
599
|
-
};
|
|
600
|
-
}
|
|
601
|
-
//#endregion
|
|
602
|
-
//#region src/services/openpanel/processor.ts
|
|
603
|
-
/**
|
|
604
|
-
* Read-only reactor `IProcessor` that translates matching document operations
|
|
605
|
-
* into OpenPanel analytics events. Operations whose `(documentType, actionType)`
|
|
606
|
-
* pair is absent from the lookup map are skipped; per-operation errors are
|
|
607
|
-
* routed to `onError` and never thrown back to the manager.
|
|
608
|
-
*/
|
|
609
|
-
var OpenPanelProcessor = class {
|
|
610
|
-
constructor(client, lookupMap, onError = (err) => console.warn("[OpenPanelProcessor] Error tracking event:", err)) {
|
|
611
|
-
this.client = client;
|
|
612
|
-
this.lookupMap = lookupMap;
|
|
613
|
-
this.onError = onError;
|
|
614
|
-
}
|
|
615
|
-
async onOperations(operations) {
|
|
616
|
-
for (const op of operations) {
|
|
617
|
-
const inner = this.lookupMap.get(op.context.documentType);
|
|
618
|
-
if (!inner) continue;
|
|
619
|
-
const mapping = inner.get(op.operation.action.type);
|
|
620
|
-
if (!mapping) continue;
|
|
621
|
-
const name = deriveEventName(mapping, op);
|
|
622
|
-
const payload = buildDefaultProperties(op);
|
|
623
|
-
try {
|
|
624
|
-
await this.client.track(name, payload);
|
|
625
|
-
} catch (err) {
|
|
626
|
-
this.onError(err, op);
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
onDisconnect() {
|
|
631
|
-
this.client.flush?.();
|
|
632
|
-
return Promise.resolve();
|
|
633
|
-
}
|
|
634
|
-
};
|
|
635
|
-
//#endregion
|
|
636
|
-
//#region src/services/openpanel/factory.ts
|
|
637
|
-
/**
|
|
638
|
-
* Returns a `ProcessorFactory` that, for each drive, creates a single
|
|
639
|
-
* `OpenPanelProcessor` record whose `filter.documentType` is the union of all
|
|
640
|
-
* document types present in the event mapping table.
|
|
641
|
-
*/
|
|
642
|
-
function createOpenPanelProcessorFactory(config) {
|
|
643
|
-
return function openPanelProcessorFactory(_driveHeader) {
|
|
644
|
-
const documentType = Array.from(config.events.lookupMap.keys());
|
|
645
|
-
return [{
|
|
646
|
-
processor: new OpenPanelProcessor(config.client, config.events.lookupMap, config.onError),
|
|
647
|
-
filter: { documentType },
|
|
648
|
-
startFrom: config.startFrom ?? "current"
|
|
649
|
-
}];
|
|
650
|
-
};
|
|
651
|
-
}
|
|
652
|
-
//#endregion
|
|
653
|
-
//#region src/hooks/useIsEmbedded.ts
|
|
654
|
-
/**
|
|
655
|
-
* Detects whether Connect is being rendered inside another app (e.g. inside
|
|
656
|
-
* an iframe in the vetra-cli drive editor). When `?embed=1` is present in the
|
|
657
|
-
* URL, chrome that doesn't make sense in the embedded context — the cookie
|
|
658
|
-
* banner, the outer sidebar — is suppressed.
|
|
659
|
-
*/
|
|
660
|
-
function getIsEmbedded() {
|
|
661
|
-
if (typeof window === "undefined") return false;
|
|
662
|
-
try {
|
|
663
|
-
const value = new URLSearchParams(window.location.search).get("embed");
|
|
664
|
-
return value !== null && value !== "0" && value !== "false";
|
|
665
|
-
} catch {
|
|
666
|
-
return false;
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
function useIsEmbedded() {
|
|
670
|
-
return getIsEmbedded();
|
|
671
|
-
}
|
|
672
|
-
const COOKIE_BANNER_KEY_STORAGE = `${connectConfig.routerBasename}:display-cookie-banner`;
|
|
673
|
-
const listeners = /* @__PURE__ */ new Set();
|
|
674
|
-
let bannerShown = getInitial();
|
|
675
|
-
function getInitial() {
|
|
676
|
-
if (getIsEmbedded()) return false;
|
|
677
|
-
try {
|
|
678
|
-
return localStorage.getItem(COOKIE_BANNER_KEY_STORAGE) !== "false";
|
|
679
|
-
} catch (error) {
|
|
680
|
-
console.error(error);
|
|
681
|
-
return true;
|
|
682
|
-
}
|
|
683
|
-
}
|
|
684
|
-
function getCookieBannerState() {
|
|
685
|
-
return bannerShown;
|
|
686
|
-
}
|
|
687
|
-
function setCookieBannerState(state) {
|
|
688
|
-
bannerShown = state;
|
|
689
|
-
localStorage.setItem(COOKIE_BANNER_KEY_STORAGE, JSON.stringify(state));
|
|
690
|
-
}
|
|
691
|
-
function subscribe(fn) {
|
|
692
|
-
listeners.add(fn);
|
|
693
|
-
return () => listeners.delete(fn);
|
|
694
|
-
}
|
|
695
|
-
const useCookieBanner = () => {
|
|
696
|
-
return [useSyncExternalStore(subscribe, getCookieBannerState, getCookieBannerState), setCookieBannerState];
|
|
697
|
-
};
|
|
698
|
-
//#endregion
|
|
699
396
|
//#region src/hooks/useFailedInstallations.ts
|
|
700
397
|
const emptyArray$1 = [];
|
|
701
398
|
function useFailedInstallations() {
|
|
@@ -766,6 +463,44 @@ function useInitSentry() {
|
|
|
766
463
|
}, [analytics]);
|
|
767
464
|
}
|
|
768
465
|
//#endregion
|
|
466
|
+
//#region src/services/openpanel/buffer.ts
|
|
467
|
+
const buffer = [];
|
|
468
|
+
let errorHandler;
|
|
469
|
+
function defaultOnError(err) {
|
|
470
|
+
console.warn("[useOpenPanelAnalytics] track failed:", err);
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Forward a single event to the active client, swallowing any throw.
|
|
474
|
+
*
|
|
475
|
+
* The outer try/catch handles synchronous throws from `client.track`; the
|
|
476
|
+
* inner `.catch()` handles rejected promises. Both are needed because
|
|
477
|
+
* `Promise.resolve(x).catch()` cannot catch a throw from evaluating `x`.
|
|
478
|
+
*/
|
|
479
|
+
function forward(client, name, props) {
|
|
480
|
+
try {
|
|
481
|
+
Promise.resolve(client.track(name, props)).catch((err) => (errorHandler ?? defaultOnError)(err));
|
|
482
|
+
} catch (err) {
|
|
483
|
+
(errorHandler ?? defaultOnError)(err);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Drain the pre-init buffer in FIFO order through `client.track`, then forward
|
|
488
|
+
* subsequent events directly. Called once from `getOpenPanelClient()`.
|
|
489
|
+
*/
|
|
490
|
+
function drainOpenPanelBuffer(client, onError) {
|
|
491
|
+
errorHandler = onError;
|
|
492
|
+
const pending = buffer.splice(0, buffer.length);
|
|
493
|
+
for (const [name, props] of pending) forward(client, name, props);
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Clear the buffer and reset the active client. Buffered pre-consent events
|
|
497
|
+
* are discarded so they are not replayed if the user later re-accepts.
|
|
498
|
+
*/
|
|
499
|
+
function clearOpenPanelBuffer() {
|
|
500
|
+
buffer.length = 0;
|
|
501
|
+
errorHandler = void 0;
|
|
502
|
+
}
|
|
503
|
+
//#endregion
|
|
769
504
|
//#region src/hooks/usePendingInstallations.ts
|
|
770
505
|
const emptyArray = [];
|
|
771
506
|
function usePendingInstallations() {
|
|
@@ -1045,6 +780,192 @@ const Analytics = () => {
|
|
|
1045
780
|
return null;
|
|
1046
781
|
};
|
|
1047
782
|
//#endregion
|
|
783
|
+
//#region src/services/openpanel/client.ts
|
|
784
|
+
let client;
|
|
785
|
+
/**
|
|
786
|
+
* Returns the cached `OpenPanel` singleton, building it on first call.
|
|
787
|
+
*
|
|
788
|
+
* When `config.clientId` is empty it returns `undefined` without importing
|
|
789
|
+
* `@openpanel/web`, so the bundler can tree-shake the SDK out of production.
|
|
790
|
+
*/
|
|
791
|
+
async function getOpenPanelClient(config) {
|
|
792
|
+
if (!config.clientId) return;
|
|
793
|
+
if (client) return client;
|
|
794
|
+
const { OpenPanel: OpenPanelClass } = await import("@openpanel/web");
|
|
795
|
+
client = new OpenPanelClass({
|
|
796
|
+
clientId: config.clientId,
|
|
797
|
+
...config.apiUrl ? { apiUrl: config.apiUrl } : {},
|
|
798
|
+
trackScreenViews: true,
|
|
799
|
+
trackOutgoingLinks: true
|
|
800
|
+
});
|
|
801
|
+
client.setGlobalProperties({ app: "connect" });
|
|
802
|
+
drainOpenPanelBuffer(client);
|
|
803
|
+
return client;
|
|
804
|
+
}
|
|
805
|
+
/**
|
|
806
|
+
* Clears the cached singleton and the pre-init buffer. Call on consent
|
|
807
|
+
* revocation or during tests; buffered events are discarded, not replayed.
|
|
808
|
+
*/
|
|
809
|
+
function resetOpenPanelClient() {
|
|
810
|
+
client = void 0;
|
|
811
|
+
clearOpenPanelBuffer();
|
|
812
|
+
}
|
|
813
|
+
//#endregion
|
|
814
|
+
//#region src/services/openpanel/events.json
|
|
815
|
+
var events_default = [
|
|
816
|
+
{
|
|
817
|
+
"documentType": "powerhouse/document-drive",
|
|
818
|
+
"actionTypes": [
|
|
819
|
+
"ADD_FOLDER",
|
|
820
|
+
"DELETE_NODE",
|
|
821
|
+
"ADD_FILE",
|
|
822
|
+
"UPDATE_FILE",
|
|
823
|
+
"COPY_NODE",
|
|
824
|
+
"MOVE_NODE",
|
|
825
|
+
"SET_DRIVE_NAME",
|
|
826
|
+
"SET_DRIVE_ICON"
|
|
827
|
+
]
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"documentType": "powerhouse/document-model",
|
|
831
|
+
"actionTypes": [
|
|
832
|
+
"SET_MODEL_NAME",
|
|
833
|
+
"SET_MODEL_ID",
|
|
834
|
+
"ADD_MODULE",
|
|
835
|
+
"DELETE_MODULE",
|
|
836
|
+
"ADD_OPERATION",
|
|
837
|
+
"DELETE_OPERATION"
|
|
838
|
+
]
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
"documentType": "powerhouse/reactor-drive",
|
|
842
|
+
"actionTypes": [
|
|
843
|
+
"ADD_FOLDER",
|
|
844
|
+
"REMOVE_FOLDER",
|
|
845
|
+
"UPDATE_FOLDER"
|
|
846
|
+
]
|
|
847
|
+
}
|
|
848
|
+
];
|
|
849
|
+
//#endregion
|
|
850
|
+
//#region src/services/openpanel/events.ts
|
|
851
|
+
const EventMappingSchema = z.object({
|
|
852
|
+
documentType: z.string().min(1),
|
|
853
|
+
actionTypes: z.array(z.string().min(1)).min(1),
|
|
854
|
+
alias: z.string().optional()
|
|
855
|
+
}).strict();
|
|
856
|
+
const EventMappingsSchema = z.array(EventMappingSchema).readonly();
|
|
857
|
+
/**
|
|
858
|
+
* Parses and validates the event mapping table, returning the validated array
|
|
859
|
+
* and an O(1) lookup map. Accepts a `raw` override for tests. Throws on zod
|
|
860
|
+
* failures and on duplicate `(documentType, actionType)` pairs.
|
|
861
|
+
*/
|
|
862
|
+
function loadEvents(raw = events_default) {
|
|
863
|
+
const result = EventMappingsSchema.safeParse(raw);
|
|
864
|
+
if (!result.success) throw new Error(`Invalid OpenPanel events.json: ${result.error.message}`);
|
|
865
|
+
const mappings = result.data;
|
|
866
|
+
const lookupMap = /* @__PURE__ */ new Map();
|
|
867
|
+
for (const mapping of mappings) {
|
|
868
|
+
let inner = lookupMap.get(mapping.documentType);
|
|
869
|
+
if (!inner) {
|
|
870
|
+
inner = /* @__PURE__ */ new Map();
|
|
871
|
+
lookupMap.set(mapping.documentType, inner);
|
|
872
|
+
}
|
|
873
|
+
for (const actionType of mapping.actionTypes) {
|
|
874
|
+
if (inner.has(actionType)) throw new Error(`Duplicate OpenPanel event mapping for ${mapping.documentType}/${actionType}`);
|
|
875
|
+
inner.set(actionType, mapping);
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
return {
|
|
879
|
+
mappings,
|
|
880
|
+
lookupMap
|
|
881
|
+
};
|
|
882
|
+
}
|
|
883
|
+
const { mappings: defaultMappings, lookupMap: defaultLookupMap } = loadEvents();
|
|
884
|
+
/** Validated mapping array from the bundled events.json. */
|
|
885
|
+
const eventMappings = defaultMappings;
|
|
886
|
+
/** O(1) lookup map: documentType → actionType → mapping. */
|
|
887
|
+
const eventLookupMap = defaultLookupMap;
|
|
888
|
+
/**
|
|
889
|
+
* Normalizes a document type into a safe event-name segment: lowercased, `/`
|
|
890
|
+
* replaced with `.`, and any character outside `[a-z0-9._-]` stripped.
|
|
891
|
+
* e.g. `powerhouse/document-drive` → `powerhouse.document-drive`.
|
|
892
|
+
*/
|
|
893
|
+
function normalize(documentType) {
|
|
894
|
+
return documentType.toLowerCase().replace(/\//g, ".").replace(/[^a-z0-9._-]/g, "");
|
|
895
|
+
}
|
|
896
|
+
/**
|
|
897
|
+
* Derives the OpenPanel event name: `mapping.alias` when present, otherwise
|
|
898
|
+
* `${normalize(documentType)}.${actionType.toLowerCase()}`.
|
|
899
|
+
*/
|
|
900
|
+
function deriveEventName(mapping, op) {
|
|
901
|
+
if (mapping.alias) return mapping.alias;
|
|
902
|
+
return `${normalize(op.context.documentType)}.${op.operation.action.type.toLowerCase()}`;
|
|
903
|
+
}
|
|
904
|
+
/**
|
|
905
|
+
* Builds the default properties attached to every OpenPanel event. The `app`
|
|
906
|
+
* property is stamped globally by the client, not here.
|
|
907
|
+
*/
|
|
908
|
+
function buildDefaultProperties(op) {
|
|
909
|
+
return {
|
|
910
|
+
documentType: op.context.documentType,
|
|
911
|
+
actionType: op.operation.action.type,
|
|
912
|
+
documentId: op.context.documentId,
|
|
913
|
+
scope: op.context.scope,
|
|
914
|
+
branch: op.context.branch
|
|
915
|
+
};
|
|
916
|
+
}
|
|
917
|
+
//#endregion
|
|
918
|
+
//#region src/services/openpanel/processor.ts
|
|
919
|
+
/**
|
|
920
|
+
* Read-only reactor `IProcessor` that translates matching document operations
|
|
921
|
+
* into OpenPanel analytics events. Operations whose `(documentType, actionType)`
|
|
922
|
+
* pair is absent from the lookup map are skipped; per-operation errors are
|
|
923
|
+
* routed to `onError` and never thrown back to the manager.
|
|
924
|
+
*/
|
|
925
|
+
var OpenPanelProcessor = class {
|
|
926
|
+
constructor(client, lookupMap, onError = (err) => console.warn("[OpenPanelProcessor] Error tracking event:", err)) {
|
|
927
|
+
this.client = client;
|
|
928
|
+
this.lookupMap = lookupMap;
|
|
929
|
+
this.onError = onError;
|
|
930
|
+
}
|
|
931
|
+
async onOperations(operations) {
|
|
932
|
+
for (const op of operations) {
|
|
933
|
+
const inner = this.lookupMap.get(op.context.documentType);
|
|
934
|
+
if (!inner) continue;
|
|
935
|
+
const mapping = inner.get(op.operation.action.type);
|
|
936
|
+
if (!mapping) continue;
|
|
937
|
+
const name = deriveEventName(mapping, op);
|
|
938
|
+
const payload = buildDefaultProperties(op);
|
|
939
|
+
try {
|
|
940
|
+
await this.client.track(name, payload);
|
|
941
|
+
} catch (err) {
|
|
942
|
+
this.onError(err, op);
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
onDisconnect() {
|
|
947
|
+
this.client.flush?.();
|
|
948
|
+
return Promise.resolve();
|
|
949
|
+
}
|
|
950
|
+
};
|
|
951
|
+
//#endregion
|
|
952
|
+
//#region src/services/openpanel/factory.ts
|
|
953
|
+
/**
|
|
954
|
+
* Returns a `ProcessorFactory` that, for each drive, creates a single
|
|
955
|
+
* `OpenPanelProcessor` record whose `filter.documentType` is the union of all
|
|
956
|
+
* document types present in the event mapping table.
|
|
957
|
+
*/
|
|
958
|
+
function createOpenPanelProcessorFactory(config) {
|
|
959
|
+
return function openPanelProcessorFactory(_driveHeader) {
|
|
960
|
+
const documentType = Array.from(config.events.lookupMap.keys());
|
|
961
|
+
return [{
|
|
962
|
+
processor: new OpenPanelProcessor(config.client, config.events.lookupMap, config.onError),
|
|
963
|
+
filter: { documentType },
|
|
964
|
+
startFrom: config.startFrom ?? "current"
|
|
965
|
+
}];
|
|
966
|
+
};
|
|
967
|
+
}
|
|
968
|
+
//#endregion
|
|
1048
969
|
//#region src/components/openpanel-traits.ts
|
|
1049
970
|
/**
|
|
1050
971
|
* Builds the OpenPanel identity traits from a renown User.
|
|
@@ -1275,6 +1196,30 @@ const SentryProvider = ({ children }) => {
|
|
|
1275
1196
|
return children;
|
|
1276
1197
|
};
|
|
1277
1198
|
//#endregion
|
|
1199
|
+
//#region src/components/reactor-chat.tsx
|
|
1200
|
+
/**
|
|
1201
|
+
* Resolves the reactor tool descriptors for the chat agent from the
|
|
1202
|
+
* browser's live reactor client. Built lazily at send time so the reactor
|
|
1203
|
+
* (and its SharedWorker) do not need to be ready at render time.
|
|
1204
|
+
*/
|
|
1205
|
+
function getReactorTools() {
|
|
1206
|
+
const ph = window.ph;
|
|
1207
|
+
const client = ph?.reactorClient;
|
|
1208
|
+
if (!client) return Promise.reject(/* @__PURE__ */ new Error("The reactor client is not available yet. Try again shortly."));
|
|
1209
|
+
const syncManager = ph?.reactorClientModule?.reactorModule?.syncModule?.syncManager;
|
|
1210
|
+
return createReactorMcpProvider({
|
|
1211
|
+
client,
|
|
1212
|
+
syncManager
|
|
1213
|
+
}).then((provider) => Object.values(provider.tools).map((tool) => ({
|
|
1214
|
+
...tool,
|
|
1215
|
+
inputSchema: tool.inputSchema ?? {}
|
|
1216
|
+
})));
|
|
1217
|
+
}
|
|
1218
|
+
/** Connect's bottom-right AI chat FAB, bound to the browser reactor. */
|
|
1219
|
+
function ConnectReactorChatFab() {
|
|
1220
|
+
return /* @__PURE__ */ jsx(ReactorChatFab, { getTools: getReactorTools });
|
|
1221
|
+
}
|
|
1222
|
+
//#endregion
|
|
1278
1223
|
//#region src/components/missing-model-banner.tsx
|
|
1279
1224
|
const reasonLabels = {
|
|
1280
1225
|
"no-registry": "No package registry is configured.",
|
|
@@ -1562,6 +1507,7 @@ const App = () => {
|
|
|
1562
1507
|
}, []);
|
|
1563
1508
|
return /* @__PURE__ */ jsx(SentryProvider, { children: /* @__PURE__ */ jsxs(RenownWalletProviders, { children: [
|
|
1564
1509
|
/* @__PURE__ */ jsx(ToastContainer, { position: "bottom-right" }),
|
|
1510
|
+
connectConfig.aiAssistantEnabled && /* @__PURE__ */ jsx(ConnectReactorChatFab, {}),
|
|
1565
1511
|
/* @__PURE__ */ jsx(MissingModelBanner, {}),
|
|
1566
1512
|
/* @__PURE__ */ jsx(Router, {}),
|
|
1567
1513
|
/* @__PURE__ */ jsx(OpenFileUploadList, {}),
|
|
@@ -1571,64 +1517,6 @@ const App = () => {
|
|
|
1571
1517
|
] }) });
|
|
1572
1518
|
};
|
|
1573
1519
|
//#endregion
|
|
1574
|
-
//#region src/components/cookie-banner.tsx
|
|
1575
|
-
const isCookieAccepted = (cookies, id) => {
|
|
1576
|
-
return cookies.some((cookie) => cookie.id === id && cookie.value);
|
|
1577
|
-
};
|
|
1578
|
-
const CookieBanner$1 = () => {
|
|
1579
|
-
const { t } = useTranslation(void 0, {
|
|
1580
|
-
useSuspense: true,
|
|
1581
|
-
i18n
|
|
1582
|
-
});
|
|
1583
|
-
const [showBanner, setShowBanner] = useCookieBanner();
|
|
1584
|
-
const [, setAcceptedCookies] = useAcceptedCookies();
|
|
1585
|
-
const cookiesInput = [{
|
|
1586
|
-
id: "analytics-cookie",
|
|
1587
|
-
label: t("cookieBanner.cookies.analytics"),
|
|
1588
|
-
value: true
|
|
1589
|
-
}];
|
|
1590
|
-
const handleAccept = (cookies) => {
|
|
1591
|
-
setShowBanner(false);
|
|
1592
|
-
if (isCookieAccepted(cookies, "analytics-cookie")) setAcceptedCookies((acceptedCookies) => ({
|
|
1593
|
-
...acceptedCookies,
|
|
1594
|
-
analytics: true
|
|
1595
|
-
}));
|
|
1596
|
-
};
|
|
1597
|
-
const handleReject = () => {
|
|
1598
|
-
setShowBanner(false);
|
|
1599
|
-
setAcceptedCookies(() => ({
|
|
1600
|
-
analytics: false,
|
|
1601
|
-
functional: false,
|
|
1602
|
-
marketing: false
|
|
1603
|
-
}));
|
|
1604
|
-
};
|
|
1605
|
-
if (!showBanner) return null;
|
|
1606
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
1607
|
-
className: "absolute inset-0 z-10000 backdrop-blur-sm",
|
|
1608
|
-
children: [/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-primary opacity-15" }), /* @__PURE__ */ jsx("div", {
|
|
1609
|
-
className: "absolute inset-x-0 bottom-0 flex justify-center bg-background px-10 pt-10 pb-16 shadow-lg",
|
|
1610
|
-
children: /* @__PURE__ */ jsx(CookieBanner, {
|
|
1611
|
-
className: "max-w-[1024px]",
|
|
1612
|
-
cookies: cookiesInput,
|
|
1613
|
-
onSubmit: handleAccept,
|
|
1614
|
-
onReject: handleReject,
|
|
1615
|
-
submitLabel: t("cookieBanner.accept"),
|
|
1616
|
-
rejectLabel: t("cookieBanner.reject"),
|
|
1617
|
-
children: /* @__PURE__ */ jsx("p", {
|
|
1618
|
-
className: "font-semibold text-muted-foreground",
|
|
1619
|
-
children: /* @__PURE__ */ jsx(Trans, {
|
|
1620
|
-
i18nKey: "cookieBanner.message",
|
|
1621
|
-
components: { a: /* @__PURE__ */ jsx("a", {
|
|
1622
|
-
onClick: () => showPHModal({ type: "cookiesPolicy" }),
|
|
1623
|
-
className: "cursor-pointer text-foreground hover:underline"
|
|
1624
|
-
}, "cookieBanner.message-link") }
|
|
1625
|
-
}, "cookieBanner.message")
|
|
1626
|
-
})
|
|
1627
|
-
})
|
|
1628
|
-
})]
|
|
1629
|
-
});
|
|
1630
|
-
};
|
|
1631
|
-
//#endregion
|
|
1632
1520
|
//#region src/components/drive-icon.tsx
|
|
1633
1521
|
function DriveIcon({ drive }) {
|
|
1634
1522
|
const remotes = useSyncList();
|
|
@@ -2152,20 +2040,20 @@ const MigrationBanner = () => {
|
|
|
2152
2040
|
};
|
|
2153
2041
|
//#endregion
|
|
2154
2042
|
//#region src/components/modal/modals-container.tsx
|
|
2155
|
-
const AddDriveModal$1 = lazy(() => import("./AddDriveModal-
|
|
2156
|
-
const ClearStorageModal = lazy(() => import("./ClearStorageModal-
|
|
2157
|
-
const CookiesPolicyModal = lazy(() => import("./CookiesPolicyModal-
|
|
2158
|
-
const CreateDocumentModal$1 = lazy(() => import("./CreateDocumentModal-
|
|
2159
|
-
const DebugSettingsModal = lazy(() => import("./DebugSettingsModal-
|
|
2160
|
-
const DeleteDriveModal = lazy(() => import("./DeleteDriveModal-
|
|
2161
|
-
const DeleteItemModal = lazy(() => import("./DeleteItemModal-
|
|
2162
|
-
const DisclaimerModal = lazy(() => import("./DisclaimerModal-
|
|
2163
|
-
const DriveSettingsModal$1 = lazy(() => import("./DriveSettingsModal-
|
|
2164
|
-
const DownloadDocumentWithErrorsModal = lazy(() => import("./DownloadDocumentWithErrorsModal-
|
|
2165
|
-
const DocumentVersionUnsupportedModal = lazy(() => import("./DocumentVersionUnsupportedModal-
|
|
2166
|
-
const ConfirmDocumentUpgradeModal = lazy(() => import("./ConfirmDocumentUpgradeModal-
|
|
2167
|
-
const SettingsModal$1 = lazy(() => import("./SettingsModal-
|
|
2168
|
-
const UpgradeDriveModal = lazy(() => import("./UpgradeDriveModal-
|
|
2043
|
+
const AddDriveModal$1 = lazy(() => import("./AddDriveModal-Q-Ffh5XA.js").then((m) => ({ default: m.AddDriveModal })));
|
|
2044
|
+
const ClearStorageModal = lazy(() => import("./ClearStorageModal-rKAE3cvA.js").then((m) => ({ default: m.ClearStorageModal })));
|
|
2045
|
+
const CookiesPolicyModal = lazy(() => import("./CookiesPolicyModal-BpyPPyxS.js").then((m) => ({ default: m.CookiesPolicyModal })));
|
|
2046
|
+
const CreateDocumentModal$1 = lazy(() => import("./CreateDocumentModal-C45W8J0V.js").then((m) => ({ default: m.CreateDocumentModal })));
|
|
2047
|
+
const DebugSettingsModal = lazy(() => import("./DebugSettingsModal-f7mphH92.js").then((m) => ({ default: m.DebugSettingsModal })));
|
|
2048
|
+
const DeleteDriveModal = lazy(() => import("./DeleteDriveModal-Dug84t1j.js").then((m) => ({ default: m.DeleteDriveModal })));
|
|
2049
|
+
const DeleteItemModal = lazy(() => import("./DeleteItemModal-mMzy3V8o.js").then((m) => ({ default: m.DeleteItemModal })));
|
|
2050
|
+
const DisclaimerModal = lazy(() => import("./DisclaimerModal-DvpD5dPM.js").then((m) => ({ default: m.DisclaimerModal })));
|
|
2051
|
+
const DriveSettingsModal$1 = lazy(() => import("./DriveSettingsModal-C6-mRQiv.js").then((m) => ({ default: m.DriveSettingsModal })));
|
|
2052
|
+
const DownloadDocumentWithErrorsModal = lazy(() => import("./DownloadDocumentWithErrorsModal-IKl0ljQb.js").then((m) => ({ default: m.DownloadDocumentWithErrorsModal })));
|
|
2053
|
+
const DocumentVersionUnsupportedModal = lazy(() => import("./DocumentVersionUnsupportedModal-C3Q0V75l.js").then((m) => ({ default: m.DocumentVersionUnsupportedModal })));
|
|
2054
|
+
const ConfirmDocumentUpgradeModal = lazy(() => import("./ConfirmDocumentUpgradeModal-FUOhZsk7.js").then((m) => ({ default: m.ConfirmDocumentUpgradeModal })));
|
|
2055
|
+
const SettingsModal$1 = lazy(() => import("./SettingsModal-DbIlDH70.js").then((m) => ({ default: m.SettingsModal })));
|
|
2056
|
+
const UpgradeDriveModal = lazy(() => import("./UpgradeDriveModal-_8t9slxQ.js").then((m) => ({ default: m.UpgradeDriveModal })));
|
|
2169
2057
|
const modalComponents = {
|
|
2170
2058
|
addDrive: AddDriveModal$1,
|
|
2171
2059
|
clearStorage: ClearStorageModal,
|
|
@@ -2179,13 +2067,13 @@ const modalComponents = {
|
|
|
2179
2067
|
downloadDocumentWithErrors: DownloadDocumentWithErrorsModal,
|
|
2180
2068
|
documentVersionUnsupported: DocumentVersionUnsupportedModal,
|
|
2181
2069
|
confirmDocumentUpgrade: ConfirmDocumentUpgradeModal,
|
|
2182
|
-
inspector: lazy(() => import("./InspectorModal-
|
|
2070
|
+
inspector: lazy(() => import("./InspectorModal-C2usotS-.js").then((m) => ({ default: m.InspectorModal }))),
|
|
2183
2071
|
settings: SettingsModal$1,
|
|
2184
2072
|
upgradeDrive: UpgradeDriveModal,
|
|
2185
|
-
missingPackage: lazy(() => import("./MissingPackageModal-
|
|
2186
|
-
driveAuthRequired: lazy(() => import("./DriveAuthRequiredModal-
|
|
2187
|
-
openFileDocuments: lazy(() => import("./OpenFileDocumentsModal-
|
|
2188
|
-
login: lazy(() => import("./LoginModal-
|
|
2073
|
+
missingPackage: lazy(() => import("./MissingPackageModal-C7usWVHQ.js").then((m) => ({ default: m.ConnectMissingPackageModal }))),
|
|
2074
|
+
driveAuthRequired: lazy(() => import("./DriveAuthRequiredModal-Cw9eCAQ_.js").then((m) => ({ default: m.DriveAuthRequiredModal }))),
|
|
2075
|
+
openFileDocuments: lazy(() => import("./OpenFileDocumentsModal-e_TKIuB4.js").then((m) => ({ default: m.OpenFileDocumentsModal }))),
|
|
2076
|
+
login: lazy(() => import("./LoginModal-CybbOm3N.js").then((m) => ({ default: m.LoginModal })))
|
|
2189
2077
|
};
|
|
2190
2078
|
const ModalsContainer = lazy(() => {
|
|
2191
2079
|
return Promise.resolve({ default: () => {
|
|
@@ -2224,8 +2112,9 @@ const ServiceWorkerUpdatePrompt = () => {
|
|
|
2224
2112
|
};
|
|
2225
2113
|
//#endregion
|
|
2226
2114
|
//#region src/components/app-loader.tsx
|
|
2115
|
+
const CookieBanner$1 = lazy(() => import("./cookie-banner-CTxjAKt4.js").then((m) => ({ default: m.CookieBanner })));
|
|
2227
2116
|
const AppLoader = (props) => {
|
|
2228
|
-
const Load = lazy(() => import("./load-
|
|
2117
|
+
const Load = lazy(() => import("./load-D_5q8fky.js").then((m) => m.loadComponent(props.localPackage)));
|
|
2229
2118
|
return /* @__PURE__ */ jsx(StrictMode, { children: /* @__PURE__ */ jsxs(ErrorBoundary$1, {
|
|
2230
2119
|
fallbackRender: (props) => /* @__PURE__ */ jsx(AppSkeleton, { children: /* @__PURE__ */ jsx(DetailedFallback, { ...props }) }),
|
|
2231
2120
|
resetKeys: [props.localPackage],
|
|
@@ -2239,9 +2128,14 @@ const AppLoader = (props) => {
|
|
|
2239
2128
|
children: /* @__PURE__ */ jsx(App, {})
|
|
2240
2129
|
})
|
|
2241
2130
|
}),
|
|
2242
|
-
/* @__PURE__ */ jsx(
|
|
2243
|
-
|
|
2244
|
-
|
|
2131
|
+
/* @__PURE__ */ jsx(ErrorBoundary$1, {
|
|
2132
|
+
variant: "silent",
|
|
2133
|
+
loggerContext: ["Connect", "CookieBanner"],
|
|
2134
|
+
children: /* @__PURE__ */ jsx(Suspense, {
|
|
2135
|
+
fallback: null,
|
|
2136
|
+
name: "CookieBanner",
|
|
2137
|
+
children: /* @__PURE__ */ jsx(CookieBanner$1, {})
|
|
2138
|
+
})
|
|
2245
2139
|
}),
|
|
2246
2140
|
/* @__PURE__ */ jsx(Suspense, {
|
|
2247
2141
|
name: "ModalsContainer",
|
|
@@ -2254,7 +2148,7 @@ const AppLoader = (props) => {
|
|
|
2254
2148
|
}) });
|
|
2255
2149
|
};
|
|
2256
2150
|
//#endregion
|
|
2257
|
-
export {
|
|
2151
|
+
export { pendingFileKey as _, DocumentEditor as a, AppContainer as c, OpenPanel as d, Analytics as f, getPendingImportFiles as g, clearPendingImportFiles as h, Root as i, EditorLoader as l, runOpenFileImports as m, Sidebar as n, DriveIcon as o, AppSkeleton as p, Router as r, App as s, AppLoader as t, DocumentEditorContainer as u, subscribePendingImportFiles as v };
|
|
2258
2152
|
|
|
2259
|
-
//# sourceMappingURL=app-loader-
|
|
2260
|
-
//# debugId=
|
|
2153
|
+
//# sourceMappingURL=app-loader-Cl4p5jBL.js.map
|
|
2154
|
+
//# debugId=f20d7330-c3fe-5c88-baef-ea4af0179c28
|