@powerhousedao/connect-core 6.2.3-dev.71 → 6.2.3-dev.73
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/connect-router-11uRIT3z.d.ts.map +1 -1
- package/dist/{index-CL4fj0Pl.d.ts → index-Cm8rYUhs.d.ts} +17 -2
- package/dist/index-Cm8rYUhs.d.ts.map +1 -0
- package/dist/{index-DP1NfCUn.d.ts → index-DQ0nbYne.d.ts} +3 -2
- package/dist/{index-DP1NfCUn.d.ts.map → index-DQ0nbYne.d.ts.map} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +9 -9
- package/dist/{plugin-host-DVwFg7-D.js → plugin-host-BSFfhXpz.js} +2 -2
- package/dist/{plugin-host-DVwFg7-D.js.map → plugin-host-BSFfhXpz.js.map} +1 -1
- package/dist/{plugin-ui-Br91idOH.js → plugin-ui-sO7AJLHj.js} +4 -4
- package/dist/{plugin-ui-Br91idOH.js.map → plugin-ui-sO7AJLHj.js.map} +1 -1
- package/dist/plugins.js +2 -2
- package/dist/{route-tree-91OurkPS.js → route-tree-D0aszMrk.js} +3 -6
- package/dist/route-tree-D0aszMrk.js.map +1 -0
- package/dist/{router-uK9fOfed.js → router-8pekwJsk.js} +6 -6
- package/dist/router-8pekwJsk.js.map +1 -0
- package/dist/router.d.ts +2 -2
- package/dist/router.js +5 -5
- package/dist/{runtime-CYADuBKe.js → runtime-Y9B9UJK1.js} +2 -2
- package/dist/{runtime-CYADuBKe.js.map → runtime-Y9B9UJK1.js.map} +1 -1
- package/dist/runtime-config-D3YPhYyj.d.ts.map +1 -1
- package/dist/runtime-config.js +5 -5
- package/dist/runtime-config.js.map +1 -1
- package/dist/{runtime-flag-JJ_8aMvi.js → runtime-flag-CJWngtxE.js} +2 -2
- package/dist/{runtime-flag-JJ_8aMvi.js.map → runtime-flag-CJWngtxE.js.map} +1 -1
- package/dist/runtime.js +2 -2
- package/dist/{sidebar-C0RvssAJ.js → sidebar-DVQCwBYR.js} +22 -4
- package/dist/sidebar-DVQCwBYR.js.map +1 -0
- package/dist/{views-BOajEGgQ.js → views-CAbBIFzO.js} +40 -13
- package/dist/views-CAbBIFzO.js.map +1 -0
- package/dist/views.d.ts +1 -1
- package/dist/views.js +1 -1
- package/package.json +8 -8
- package/src/router/app-router.ts +1 -1
- package/src/router/create-target.ts +33 -0
- package/src/router/index.ts +2 -0
- package/src/router/modal-frame.tsx +2 -1
- package/src/router/perf-marks.ts +1 -1
- package/src/router/route-tree.ts +2 -5
- package/src/runtime/runtime-config.ts +2 -1
- package/src/views/modals.tsx +41 -5
- package/dist/index-CL4fj0Pl.d.ts.map +0 -1
- package/dist/route-tree-91OurkPS.js.map +0 -1
- package/dist/router-uK9fOfed.js.map +0 -1
- package/dist/sidebar-C0RvssAJ.js.map +0 -1
- package/dist/views-BOajEGgQ.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-router-11uRIT3z.d.ts","names":[],"sources":["../src/router/modals.tsx","../src/plugins/types.ts","../src/router/drive-route-loader.ts","../src/router/route-data.ts","../src/router/route-tree.ts","../src/registry.ts","../src/plugins/plugin-ui.ts","../src/router/connect-router.ts"],"mappings":";;;;;;;;;;;KAUY,gBAAgB,QAAQ,OAAO,iBAAiB;;YAGhD;;IAER,SAAS;;;;;cAMA;WACK;WACT;WACK;WACY;WACI;WACA;WACT;;;;iBA6BL,cAAc;EAAY,QAAQ;gCAAe,IAAA;;;;;;;;;;UCtChD;;EAEf,aAAa;;UAGE;EACf,yBACE,QAAQ,wBACR,KAAK,yBACF;EACL,aAAa,KAAK,gCAAgC;;KAGxC,gBAAgB,WAAW;;;KAI3B,wBACV,QAAQ,4BACL;;KAGO;EACV,YAAY;EACZ,mBAAmB;EACnB,iBAAiB;EACjB,oBAAoB;EACpB,aAAa,QAAQ;;;KAIX;;;EAGV,SAAS,eAAe;;EAExB,YAAY;;EAEZ,SAAS;;EAET,OAAO;;EAEP,iBAAiB;;EAEjB;;EAEA;;;;KAKU;EACV,QAAQ;EACR,cAAc,QAAQ,2BAA2B;;EAEjD,WAAW,QAAQ;;EAEnB;;;;KClEU;EACV,OAAO;;EAEP,WAAW;;EAEX;;EAEA;;;KAIU;EAAsB;;iBAElB,gBAAgB,gBAAgB,QAAQ;;KAS5C;EAAmB;EAAiB;;KAEpC;EAAqB;EAAmB;;KAExC;EACV,QAAQ;EACR,SAAS;EACT,iBAAiB;EACjB;;;iBAuBoB,UACpB,SAAS,qBACR;EAAU;;;;iBAYS,SACpB,SAAS,qBACR,QAAQ;;;;cCtEE;;cAEA;;;KAID;EACV,OAAO;;EAEP,QAAQ;;EAER;;;iBAIc,oBAAoB;;iBASpB,qBAAqB;;;;cCTxB;;cAEA;cACP;KAgBM,0BAA0B;KAC1B;EACV,WAAW;EACX,WAAW;EACX,UAAU,sBAAsB;EAChC,WAAW,sBAAsB;;EAEjC,YAAY,sBAAsB;;EAElC,WAAW,sBAAsB;EACjC,eAAe,sBAAsB;;;;iBAKvB,cAAc,WAAW,WAAW;;;iBAsBpC,iBAAiB,iBAAiB;;
|
|
1
|
+
{"version":3,"file":"connect-router-11uRIT3z.d.ts","names":[],"sources":["../src/router/modals.tsx","../src/plugins/types.ts","../src/router/drive-route-loader.ts","../src/router/route-data.ts","../src/router/route-tree.ts","../src/registry.ts","../src/plugins/plugin-ui.ts","../src/router/connect-router.ts"],"mappings":";;;;;;;;;;;KAUY,gBAAgB,QAAQ,OAAO,iBAAiB;;YAGhD;;IAER,SAAS;;;;;cAMA;WACK;WACT;WACK;WACY;WACI;WACA;WACT;;;;iBA6BL,cAAc;EAAY,QAAQ;gCAAe,IAAA;;;;;;;;;;UCtChD;;EAEf,aAAa;;UAGE;EACf,yBACE,QAAQ,wBACR,KAAK,yBACF;EACL,aAAa,KAAK,gCAAgC;;KAGxC,gBAAgB,WAAW;;;KAI3B,wBACV,QAAQ,4BACL;;KAGO;EACV,YAAY;EACZ,mBAAmB;EACnB,iBAAiB;EACjB,oBAAoB;EACpB,aAAa,QAAQ;;;KAIX;;;EAGV,SAAS,eAAe;;EAExB,YAAY;;EAEZ,SAAS;;EAET,OAAO;;EAEP,iBAAiB;;EAEjB;;EAEA;;;;KAKU;EACV,QAAQ;EACR,cAAc,QAAQ,2BAA2B;;EAEjD,WAAW,QAAQ;;EAEnB;;;;KClEU;EACV,OAAO;;EAEP,WAAW;;EAEX;;EAEA;;;KAIU;EAAsB;;iBAElB,gBAAgB,gBAAgB,QAAQ;;KAS5C;EAAmB;EAAiB;;KAEpC;EAAqB;EAAmB;;KAExC;EACV,QAAQ;EACR,SAAS;EACT,iBAAiB;EACjB;;;iBAuBoB,UACpB,SAAS,qBACR;EAAU;;;;iBAYS,SACpB,SAAS,qBACR,QAAQ;;;;cCtEE;;cAEA;;;KAID;EACV,OAAO;;EAEP,QAAQ;;EAER;;;iBAIc,oBAAoB;;iBASpB,qBAAqB;;;;cCTxB;;cAEA;cACP;KAgBM,0BAA0B;KAC1B;EACV,WAAW;EACX,WAAW;EACX,UAAU,sBAAsB;EAChC,WAAW,sBAAsB;;EAEjC,YAAY,sBAAsB;;EAElC,WAAW,sBAAsB;EACjC,eAAe,sBAAsB;;;;iBAKvB,cAAc,WAAW,WAAW;;;iBAsBpC,iBAAiB,iBAAiB;;iBAqBlC,oBAAoB,iBAAiB;;;iBAsBrC,sBACd,cAAc;;;KAkCJ;EACV,OAAO;;EAEP;;EAEA;;EAEA;;;;iBAgCc;;iBAeA,qBAAqB,qBAAkB;;;iBAgBvC,sBAAsB,iBAAiB;;;KC1N3C,2BAA2B,eAAe;;KAG1C,oCACC,eACP,QAAQ,2BAA2B;;;;KCA7B;EACV,QAAQ,eAAe;EACvB,WAAW;EACX,QAAQ;EACR,OAAO;EACP,iBAAiB;EACjB;EACA;;iBAYc,qBACd,cAAc,oBACb;;;iBAyBmB,oBACpB;EAAwB;kBACvB,QAAQ;;iBAkBK,sBAAsB;;;iBA8BtB,qBACd,WAAW,UACX,KAAI;;iBA+BU,qBAAqB,WAAW;;;KClHpC;EACV,OAAO;EACP,WAAW;EACX;EACA,UAAU;EACV,aAAa,OAAO,sBAAsB;;EAE1C,mBAAmB;;EAEnB,iBAAiB;;EAEjB,WAAW;;EAEX,oBAAoB;;EAEpB,WAAW;;;EAGX,kBACa,eACP,QAAQ,2BAA2B;;EAEzC,WAAW,gBAAgB,OAAO;;EAElC;;EAEA;;;KAQU,iBAAiB,mBAAmB,YAAY,OAC1D,4BAGA,eACA;KAGU,gBAAgB,iBAAiB;KACjC,sBAAsB,KAChC;EAEI,QAAQ;;iBAEE,oBACd,SAAS,uBACR;;iBA6Ca,kBACd,eAAe,qBACf,OAAO"}
|
|
@@ -3,6 +3,21 @@ import "./route-components-1XyfosoL.js";
|
|
|
3
3
|
import { FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, PHNavigation, PHStore } from "@powerhousedao/reactor-browser";
|
|
4
4
|
import { AnyRoute, AnyRouter, ErrorRouteComponent, HistoryState, NotFoundRouteProps, ParsedLocation, RouteComponent, RouterHistory, SearchMiddleware, StaticDataRouteOption } from "@tanstack/react-router";
|
|
5
5
|
import { ComponentType, ReactNode } from "react";
|
|
6
|
+
import { DocumentDriveDocument } from "@powerhousedao/shared/document-drive";
|
|
7
|
+
//#region src/router/create-target.d.ts
|
|
8
|
+
type CreateDocumentTarget = {
|
|
9
|
+
/** The drive the document goes in; undefined until one is picked. */
|
|
10
|
+
drive: DocumentDriveDocument | undefined;
|
|
11
|
+
/** The drives to pick from, or undefined when the drive is given. */
|
|
12
|
+
choices: DocumentDriveDocument[] | undefined;
|
|
13
|
+
pick: (driveId: string) => void;
|
|
14
|
+
/** Whether it is the open drive, whose open folder the document goes in. */
|
|
15
|
+
isOpenDrive: boolean;
|
|
16
|
+
};
|
|
17
|
+
/** Where a new document goes: the modal's `driveId`, else the open drive, else
|
|
18
|
+
* one the user picks, the only drive preselected. */
|
|
19
|
+
declare function useCreateDocumentTarget(driveId: string | undefined): CreateDocumentTarget;
|
|
20
|
+
//#endregion
|
|
6
21
|
//#region src/router/cold-start.d.ts
|
|
7
22
|
/** True until the router has resolved its first location. */
|
|
8
23
|
declare function useIsColdStart(): boolean;
|
|
@@ -210,6 +225,6 @@ declare function notFoundTitle(appName?: string): string;
|
|
|
210
225
|
/** `<node> · <drive> · <app>`, from the store so renames show. */
|
|
211
226
|
declare function driveTitle(store: PHStore, data: DriveRouteData | undefined, appName?: string): string;
|
|
212
227
|
//#endregion
|
|
213
|
-
export { validateDriveSearch as A, coreView as B, FEATURE_FLAG_PARAM_PREFIX as C, parseConnectSearch as D, definedSearch as E, useModalFrame as F, markRouterNavigations as G, PERF_STORAGE_KEY as H, ConnectCoreApp as I, ConnectAppRouterOptions as J, routerPerfEnabled as K, CoreError as L, connectScrollRestoration as M, ModalDialog as N, stringifyConnectSearch as O, ModalFrameProps as P, CoreNotFound as R, ConnectSearch as S, connectSearchMiddlewares as T, ROUTER_MEASURES as U, isCoreView as V, markNavigationClick as W, getConnectAppRouter as X, disposeConnectAppRouter as Y, useIsColdStart as Z, NavRouteEntry as _, SETTINGS_ROUTE_ID as a, useNavRoutes as b, redirectToSettingsTab as c, settingsTabsOf as d, settingsTitle as f, ConnectNavItem as g, useSettingsTabs as h, ConnectSettingsTab as i, bindConnectScroll as j, validateConnectSearch as k, setSettingsRoute as l, useForgetSettingsOpenedFrom as m, driveTitle as n, SettingsTabEntry as o, showsSettingsTab as p, createConnectNavigation as q, notFoundTitle as r, keepOpenedFrom as s, appTitle as t, settingsTabs as u, SidebarMode as v, GLOBAL_SEARCH_PARAMS as w, useSidebarMode as x, navRoutes as y, coreModals as z };
|
|
228
|
+
export { useCreateDocumentTarget as $, validateDriveSearch as A, coreView as B, FEATURE_FLAG_PARAM_PREFIX as C, parseConnectSearch as D, definedSearch as E, useModalFrame as F, markRouterNavigations as G, PERF_STORAGE_KEY as H, ConnectCoreApp as I, ConnectAppRouterOptions as J, routerPerfEnabled as K, CoreError as L, connectScrollRestoration as M, ModalDialog as N, stringifyConnectSearch as O, ModalFrameProps as P, CreateDocumentTarget as Q, CoreNotFound as R, ConnectSearch as S, connectSearchMiddlewares as T, ROUTER_MEASURES as U, isCoreView as V, markNavigationClick as W, getConnectAppRouter as X, disposeConnectAppRouter as Y, useIsColdStart as Z, NavRouteEntry as _, SETTINGS_ROUTE_ID as a, useNavRoutes as b, redirectToSettingsTab as c, settingsTabsOf as d, settingsTitle as f, ConnectNavItem as g, useSettingsTabs as h, ConnectSettingsTab as i, bindConnectScroll as j, validateConnectSearch as k, setSettingsRoute as l, useForgetSettingsOpenedFrom as m, driveTitle as n, SettingsTabEntry as o, showsSettingsTab as p, createConnectNavigation as q, notFoundTitle as r, keepOpenedFrom as s, appTitle as t, settingsTabs as u, SidebarMode as v, GLOBAL_SEARCH_PARAMS as w, useSidebarMode as x, navRoutes as y, coreModals as z };
|
|
214
229
|
export {};
|
|
215
|
-
//# sourceMappingURL=index-
|
|
230
|
+
//# sourceMappingURL=index-Cm8rYUhs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Cm8rYUhs.d.ts","names":[],"sources":["../src/router/create-target.ts","../src/router/cold-start.ts","../src/router/app-router.ts","../src/router/navigation.ts","../src/router/perf-marks.ts","../src/router/core-views.tsx","../src/router/core-app.tsx","../src/router/modal-frame.tsx","../src/router/scroll.ts","../src/router/search.ts","../src/router/sidebar.ts","../src/router/settings.ts","../src/router/titles.ts"],"mappings":";;;;;;;KAKY;;EAEV,OAAO;;EAEP,SAAS;EACT,OAAO;;EAEP;;;;iBAKc,wBACd,8BACC;;;;iBChBa;;;KCQJ,0BAA0B,KACpC;;;iBAMc,oBACd,OAAO,SACP,eAAe,0BACd;;iBA8Ba;;;;;iBClBA,wBACd,eAAe,sBACd;EAAiB;;;;;cChCP;;cAGA;;WAEX;;WAEA;;WAEA;;WAEA;;;iBAYc,kBAAkB;;iBAalB;;iBAYA,sBACd,QAAQ,KAAK,yBACb;;;cCvCI,aAAK;;iBAKK,SAAS,YAAY,QAAQ,kBAAkB,UAGvD;;iBAIQ,WAAW;;iBAaX,eAAe,QAAQ,QAAQ,kDAAmB,IAAA;;cASrD,WAA0C;;cAG1C,YAAY;;;;iBC3CT,eAAe;EAC7B,OAAO;EACP,WAAW;EACX;EACA,gBAAgB,KAAK;gCACtB,IAAA;;;;KCRW;EACV;;EAEA;EACA,SAAS;EACT,UAAU;;;YAIA;;IAER,aAAa,cAAc;;;;iBASf,iBAAa,cAAA;;;iBAMb,YAAY;EAC1B;EACA;EACA,UAAU;gCACX,IAAA;;;KC7BI,eAAe,KAAK;EACvB,SAAS;;;;iBAQK,+BAAwB;EAGL,UAAU;;;iBAO7B,kBAAkB,QAAQ,cAAc;;;;KCV5C,gBAAgB;;cAgBf,0BAA0B,iBAAiB;;iBAMxC,sBACd,QAAQ,0BACP;;iBAKa,mBAAmB,oBAAoB;;iBAKvC,uBAAuB,QAAQ;;;iBAY/B,oBACd,QAAQ,0BACP;;iBAYa,cAAc,iBAAiB;;;;KCnEnC;EACV;EACA,OAAO;IAAgB;IAAe;;;EAEtC;;;KAIU;;YAGA;IACR,MAAM;IACN,UAAU;;;KAIF,gBAAgB;EAAmB;EAAiB;;;iBAGhD,UAAU,QAAQ,YAAY;iBAe9B,gBAAY;;iBAOZ,kBAAkB;;;;KC/BtB;EACV;;EAEA;EACA,OAAO;IAAgB;IAAe;;;EAEtC;;EAEA,WAAW,SAAS;;;YAIV;IACR,WAAW;;;;cAKF;KAGR;EAAkB;EAAiB,YAAY;;;KAGxC,mBAAmB;EAC7B;EACA;EACA;;;iBAIc,eACd,eAAe,UACf,SAAS,uBACR;;iBAoBa,aAAa,QAAQ,YAAY;iBAWjC,mBAAe;;iBAOf,iBACd,kBAAkB,iBAClB,SAAS;;iBAUK,iBAAiB,QAAQ;;iBAKzB,wBACd,SACA;EAEA,kBAAkB;EAClB,SAAS;;;iBAYK,cAAc,8BAA8B;;;iBAM5C,qCAA2B;;iBAc3B,eAAe,gBAE0B;;;;iBC3IzC,SAAS;;iBAKT,cAAc;;iBAKd,WACd,OAAO,SACP,MAAM,4BACN"}
|
|
@@ -74,7 +74,8 @@ declare function DriveNotFoundPage({ driveSlug }: {
|
|
|
74
74
|
}): import("react/jsx-runtime").JSX.Element;
|
|
75
75
|
//#endregion
|
|
76
76
|
//#region src/views/modals.d.ts
|
|
77
|
-
/** A new document of the modal's type
|
|
77
|
+
/** A new document of the modal's type: in its `driveId`, else the open drive
|
|
78
|
+
* and folder, else a drive picked here. */
|
|
78
79
|
declare function CreateDocumentModal(): import("react/jsx-runtime").JSX.Element;
|
|
79
80
|
/** Signs in with Renown: the configured methods, else its portal. */
|
|
80
81
|
declare function LoginModal(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -111,4 +112,4 @@ declare function ThemeToggle({ className }: {
|
|
|
111
112
|
//#endregion
|
|
112
113
|
export { DocumentJson as C, DocumentView as D, DirectoryListing as E, DriveLayout as O, EditorHostProps as S, HISTORY_PAGE_SIZE as T, CoreRoot as _, CoreRouteError as a, DocumentEditorProps as b, DeleteItemModal as c, DriveAuthRequiredModal as d, LoginModal as f, CoreLayout as g, CoreHeader as h, CoreSettingsPage as i, NodeView as k, DocumentVersionUnsupportedModal as l, NotFoundPage as m, PackagesTab as n, ConfirmDocumentUpgradeModal as o, DriveNotFoundPage as p, AppearanceTab as r, CreateDocumentModal as s, ThemeToggle as t, DownloadDocumentWithErrorsModal as u, formatModified as v, DocumentHistory as w, EditorHost as x, DriveIndex as y };
|
|
113
114
|
export {};
|
|
114
|
-
//# sourceMappingURL=index-
|
|
115
|
+
//# sourceMappingURL=index-DQ0nbYne.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-DQ0nbYne.d.ts","names":[],"sources":["../src/views/content.tsx","../src/views/directory-listing.tsx","../src/views/document-history.tsx","../src/views/document-json.tsx","../src/views/editor-host.tsx","../src/views/home.tsx","../src/views/index-table.tsx","../src/views/layout.tsx","../src/views/not-found-page.tsx","../src/views/modals.tsx","../src/views/route-views.tsx","../src/views/settings.tsx","../src/views/settings-packages.tsx","../src/views/theme-toggle.tsx"],"mappings":";;;;;;;iBAoBgB,eAAe;EAAc,UAAU;gCAAY,IAAA;;;iBAgCnD,2CAAW,IAAA;;iBAkCX,wCAAQ,IAAA;;;;iBCHR,mBAAmB,OAAO,QAAQ,YAAY,+EAAc,IAAA,UAAA,SAAA,aAAA,6CAAA,SAAA,6BAAA,+CAAA,8CAAA;;;;cCrE/D;;iBAmHG,kBAAkB,YAAY,gDAAiB,IAAA;;;;iBC1F/C,eAAe,YAAY,gDAAiB,IAAA;;;;KClChD,sBAAsB;EAChC;EACA;IAAY;IAAoB;;;KA8CtB;;EAEV;;EAEA;EACA,UAAU;;;iBAII,aACd,WACA,OACA,YACC,8CAAe,IAAA;;;;iBC1BF,0CAAU,IAAA;;;;iBCrCV,eAAe;;;;iBCuBf,wCAAQ,IAAA;;iBAgBR,0CAAU,IAAA;;;iBA8BV,0CAAU,IAAA;;;;iBCpEV,eAAe;EAAe;gCAAoB,IAAA;iBAyBlD,oBAAoB;EAAe;gCAAmB,IAAA;;;;;iBCmEtD,mDAAmB,IAAA;;iBAiGnB,0CAAU,IAAA;;iBAuCV,+CAAe,IAAA;;iBAqCf,2DAA2B,IAAA;;iBA0C3B,+DAA+B,IAAA;;iBAiC/B,+DAA+B,IAAA;;iBAgC/B,sDAAsB,IAAA;;;;iBCrXtB,iBAAiB,OAAO,SAAS,kDAAmB,IAAA;;;;iBC2BpD,gDAAgB,IAAA;;iBA+ChB,6CAAa,IAAA;;;;iBCyDb,2CAAW,IAAA;;;;iBCnIX,cAAc;EAAe;gCAAoB,IAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { C as resolveReactorWorkerEnabled, D as isRuntimeFlagEnabled, E as RuntimeFlagKeys, O as resolveRuntimeFlag, S as isReactorWorkerEnabled, T as RuntimeFlagInput, _ as ReactorClientMode, a as getConnectPHStore, b as REACTOR_WORKER_STORAGE_KEY, c as LocalReactorFactory, d as getAppDrives, f as planReactorClient, g as LocalReactorModule, h as LoadedDocumentModels, i as loadLocalPackage, l as ReactorClientPlan, m as selectAppReactorClient, n as LocalPackageSource, o as AppReactorClientParams, p as refreshAppDrives, r as ModuleNamespace, s as CreateAppReactorClientOptions, t as LocalPackage, u as createAppReactorClient, v as resolveReactorClientMode, w as isMultiReactorEnabled, x as ReactorWorkerFlagInput, y as REACTOR_WORKER_QUERY_KEY } from "./index-DaI9iBEb.js";
|
|
2
2
|
import { A as useDriveRouteData, B as ConnectConfigHooks, C as holdConnectRoutes, D as DRIVE_ROUTE_ID, E as removeConnectRoutes, F as DriveRouteData, G as ConnectPluginUi, H as ConnectPluginContext, I as DriveRouteParams, J as ConnectModals, K as ConnectRouteUi, L as isDriveNotFound, M as ConnectRouterContext, N as DriveLoaderOptions, O as DriveRouteView, P as DriveNotFoundData, R as loadDrive, S as connectRoutesSettled, T as registerPackageRoutes, U as ConnectPluginDefinition, V as ConnectPlugin, W as ConnectPluginFactory, Y as ModalOutlet, _ as ConnectRoutes, a as bindConnectRouter, b as addConnectRoutes, c as applyConnectPluginUi, d as mergeConnectPluginUi, f as resetConnectPluginUi, g as ConnectRootRoute, h as APP_ROUTE_ID, i as ConnectRouterOptions, j as useDriveRouteIds, k as NODE_ROUTE_ID, l as getConnectPluginUi, m as ConnectRouteRegistration, n as ConnectRouterBundle, o as createConnectRouter, q as CORE_MODAL_VIEWS, r as ConnectRouterFor, s as ConnectPluginUiSet, t as ConnectRouter, u as loadConnectPluginUi, v as HOME_ROUTE_ID, w as registerConnectRoutes, x as connectRoutes, y as PackageRoute, z as loadNode } from "./connect-router-11uRIT3z.js";
|
|
3
3
|
import { a as DrivePending, i as DocumentViewProps, n as ContentOutlet, o as DriveViewProps, r as DRIVE_PENDING_MS, t as CONTENT_VIEW_ID } from "./route-components-1XyfosoL.js";
|
|
4
|
-
import { A as validateDriveSearch, B as coreView, C as FEATURE_FLAG_PARAM_PREFIX, D as parseConnectSearch, E as definedSearch, F as useModalFrame, G as markRouterNavigations, H as PERF_STORAGE_KEY, I as ConnectCoreApp, J as ConnectAppRouterOptions, K as routerPerfEnabled, L as CoreError, M as connectScrollRestoration, N as ModalDialog, O as stringifyConnectSearch, P as ModalFrameProps, R as CoreNotFound, S as ConnectSearch, T as connectSearchMiddlewares, U as ROUTER_MEASURES, V as isCoreView, W as markNavigationClick, X as getConnectAppRouter, Y as disposeConnectAppRouter, Z as useIsColdStart, _ as NavRouteEntry, a as SETTINGS_ROUTE_ID, b as useNavRoutes, c as redirectToSettingsTab, d as settingsTabsOf, f as settingsTitle, g as ConnectNavItem, h as useSettingsTabs, i as ConnectSettingsTab, j as bindConnectScroll, k as validateConnectSearch, l as setSettingsRoute, m as useForgetSettingsOpenedFrom, n as driveTitle, o as SettingsTabEntry, p as showsSettingsTab, q as createConnectNavigation, r as notFoundTitle, s as keepOpenedFrom, t as appTitle, u as settingsTabs, v as SidebarMode, w as GLOBAL_SEARCH_PARAMS, x as useSidebarMode, y as navRoutes, z as coreModals } from "./index-
|
|
4
|
+
import { $ as useCreateDocumentTarget, A as validateDriveSearch, B as coreView, C as FEATURE_FLAG_PARAM_PREFIX, D as parseConnectSearch, E as definedSearch, F as useModalFrame, G as markRouterNavigations, H as PERF_STORAGE_KEY, I as ConnectCoreApp, J as ConnectAppRouterOptions, K as routerPerfEnabled, L as CoreError, M as connectScrollRestoration, N as ModalDialog, O as stringifyConnectSearch, P as ModalFrameProps, Q as CreateDocumentTarget, R as CoreNotFound, S as ConnectSearch, T as connectSearchMiddlewares, U as ROUTER_MEASURES, V as isCoreView, W as markNavigationClick, X as getConnectAppRouter, Y as disposeConnectAppRouter, Z as useIsColdStart, _ as NavRouteEntry, a as SETTINGS_ROUTE_ID, b as useNavRoutes, c as redirectToSettingsTab, d as settingsTabsOf, f as settingsTitle, g as ConnectNavItem, h as useSettingsTabs, i as ConnectSettingsTab, j as bindConnectScroll, k as validateConnectSearch, l as setSettingsRoute, m as useForgetSettingsOpenedFrom, n as driveTitle, o as SettingsTabEntry, p as showsSettingsTab, q as createConnectNavigation, r as notFoundTitle, s as keepOpenedFrom, t as appTitle, u as settingsTabs, v as SidebarMode, w as GLOBAL_SEARCH_PARAMS, x as useSidebarMode, y as navRoutes, z as coreModals } from "./index-Cm8rYUhs.js";
|
|
5
5
|
import { a as registerConnectPlugins, i as knownPlugins, n as isPluginActive, r as applyComposition, t as getActivePluginModules } from "./index-xKGW_46_.js";
|
|
6
6
|
import { i as primeRuntimeConfig, n as getRuntimeConfig, r as loadRuntimeConfig } from "./runtime-config-D3YPhYyj.js";
|
|
7
7
|
import { n as useIsEmbedded, t as getIsEmbedded } from "./embedded-DT1C47F0.js";
|
|
8
|
-
import { C as DocumentJson, D as DocumentView, E as DirectoryListing, O as DriveLayout, S as EditorHostProps, T as HISTORY_PAGE_SIZE, _ as CoreRoot, a as CoreRouteError, b as DocumentEditorProps, c as DeleteItemModal, d as DriveAuthRequiredModal, f as LoginModal, g as CoreLayout, h as CoreHeader, i as CoreSettingsPage, k as NodeView, l as DocumentVersionUnsupportedModal, m as NotFoundPage, n as PackagesTab, o as ConfirmDocumentUpgradeModal, p as DriveNotFoundPage, r as AppearanceTab, s as CreateDocumentModal, t as ThemeToggle, u as DownloadDocumentWithErrorsModal, v as formatModified, w as DocumentHistory, x as EditorHost, y as DriveIndex } from "./index-
|
|
9
|
-
export { APP_ROUTE_ID, type AppReactorClientParams, AppearanceTab, CONTENT_VIEW_ID, CORE_MODAL_VIEWS, ConfirmDocumentUpgradeModal, type ConnectAppRouterOptions, type ConnectConfigHooks, ConnectCoreApp, type ConnectModals, type ConnectNavItem, type ConnectPlugin, type ConnectPluginContext, type ConnectPluginDefinition, type ConnectPluginFactory, type ConnectPluginUi, type ConnectPluginUiSet, type ConnectRootRoute, type ConnectRouteRegistration, type ConnectRouteUi, type ConnectRouter, type ConnectRouterBundle, type ConnectRouterContext, type ConnectRouterFor, type ConnectRouterOptions, type ConnectRoutes, type ConnectSearch, type ConnectSettingsTab, ContentOutlet, CoreError, CoreHeader, CoreLayout, CoreNotFound, CoreRoot, CoreRouteError, CoreSettingsPage, type CreateAppReactorClientOptions, CreateDocumentModal, DRIVE_PENDING_MS, DRIVE_ROUTE_ID, DeleteItemModal, DirectoryListing, type DocumentEditorProps, DocumentHistory, DocumentJson, DocumentVersionUnsupportedModal, DocumentView, type DocumentViewProps, DownloadDocumentWithErrorsModal, DriveAuthRequiredModal, DriveIndex, DriveLayout, type DriveLoaderOptions, type DriveNotFoundData, DriveNotFoundPage, DrivePending, type DriveRouteData, type DriveRouteParams, type DriveRouteView, type DriveViewProps, EditorHost, type EditorHostProps, FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, HISTORY_PAGE_SIZE, HOME_ROUTE_ID, type LoadedDocumentModels, type LocalPackage, type LocalPackageSource, type LocalReactorFactory, type LocalReactorModule, LoginModal, ModalDialog, type ModalFrameProps, ModalOutlet, type ModuleNamespace, NODE_ROUTE_ID, type NavRouteEntry, NodeView, NotFoundPage, PERF_STORAGE_KEY, type PackageRoute, PackagesTab, REACTOR_WORKER_QUERY_KEY, REACTOR_WORKER_STORAGE_KEY, ROUTER_MEASURES, type ReactorClientMode, type ReactorClientPlan, type ReactorWorkerFlagInput, type RuntimeFlagInput, type RuntimeFlagKeys, SETTINGS_ROUTE_ID, type SettingsTabEntry, type SidebarMode, ThemeToggle, addConnectRoutes, appTitle, applyComposition, applyConnectPluginUi, bindConnectRouter, bindConnectScroll, connectRoutes, connectRoutesSettled, connectScrollRestoration, connectSearchMiddlewares, coreModals, coreView, createAppReactorClient, createConnectNavigation, createConnectRouter, definedSearch, disposeConnectAppRouter, driveTitle, formatModified, getActivePluginModules, getAppDrives, getConnectAppRouter, getConnectPHStore, getConnectPluginUi, getIsEmbedded, getRuntimeConfig, holdConnectRoutes, isCoreView, isDriveNotFound, isMultiReactorEnabled, isPluginActive, isReactorWorkerEnabled, isRuntimeFlagEnabled, keepOpenedFrom, knownPlugins, loadConnectPluginUi, loadDrive, loadLocalPackage, loadNode, loadRuntimeConfig, markNavigationClick, markRouterNavigations, mergeConnectPluginUi, navRoutes, notFoundTitle, parseConnectSearch, planReactorClient, primeRuntimeConfig, redirectToSettingsTab, refreshAppDrives, registerConnectPlugins, registerConnectRoutes, registerPackageRoutes, removeConnectRoutes, resetConnectPluginUi, resolveReactorClientMode, resolveReactorWorkerEnabled, resolveRuntimeFlag, routerPerfEnabled, selectAppReactorClient, setSettingsRoute, settingsTabs, settingsTabsOf, settingsTitle, showsSettingsTab, stringifyConnectSearch, useDriveRouteData, useDriveRouteIds, useForgetSettingsOpenedFrom, useIsColdStart, useIsEmbedded, useModalFrame, useNavRoutes, useSettingsTabs, useSidebarMode, validateConnectSearch, validateDriveSearch };
|
|
8
|
+
import { C as DocumentJson, D as DocumentView, E as DirectoryListing, O as DriveLayout, S as EditorHostProps, T as HISTORY_PAGE_SIZE, _ as CoreRoot, a as CoreRouteError, b as DocumentEditorProps, c as DeleteItemModal, d as DriveAuthRequiredModal, f as LoginModal, g as CoreLayout, h as CoreHeader, i as CoreSettingsPage, k as NodeView, l as DocumentVersionUnsupportedModal, m as NotFoundPage, n as PackagesTab, o as ConfirmDocumentUpgradeModal, p as DriveNotFoundPage, r as AppearanceTab, s as CreateDocumentModal, t as ThemeToggle, u as DownloadDocumentWithErrorsModal, v as formatModified, w as DocumentHistory, x as EditorHost, y as DriveIndex } from "./index-DQ0nbYne.js";
|
|
9
|
+
export { APP_ROUTE_ID, type AppReactorClientParams, AppearanceTab, CONTENT_VIEW_ID, CORE_MODAL_VIEWS, ConfirmDocumentUpgradeModal, type ConnectAppRouterOptions, type ConnectConfigHooks, ConnectCoreApp, type ConnectModals, type ConnectNavItem, type ConnectPlugin, type ConnectPluginContext, type ConnectPluginDefinition, type ConnectPluginFactory, type ConnectPluginUi, type ConnectPluginUiSet, type ConnectRootRoute, type ConnectRouteRegistration, type ConnectRouteUi, type ConnectRouter, type ConnectRouterBundle, type ConnectRouterContext, type ConnectRouterFor, type ConnectRouterOptions, type ConnectRoutes, type ConnectSearch, type ConnectSettingsTab, ContentOutlet, CoreError, CoreHeader, CoreLayout, CoreNotFound, CoreRoot, CoreRouteError, CoreSettingsPage, type CreateAppReactorClientOptions, CreateDocumentModal, type CreateDocumentTarget, DRIVE_PENDING_MS, DRIVE_ROUTE_ID, DeleteItemModal, DirectoryListing, type DocumentEditorProps, DocumentHistory, DocumentJson, DocumentVersionUnsupportedModal, DocumentView, type DocumentViewProps, DownloadDocumentWithErrorsModal, DriveAuthRequiredModal, DriveIndex, DriveLayout, type DriveLoaderOptions, type DriveNotFoundData, DriveNotFoundPage, DrivePending, type DriveRouteData, type DriveRouteParams, type DriveRouteView, type DriveViewProps, EditorHost, type EditorHostProps, FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, HISTORY_PAGE_SIZE, HOME_ROUTE_ID, type LoadedDocumentModels, type LocalPackage, type LocalPackageSource, type LocalReactorFactory, type LocalReactorModule, LoginModal, ModalDialog, type ModalFrameProps, ModalOutlet, type ModuleNamespace, NODE_ROUTE_ID, type NavRouteEntry, NodeView, NotFoundPage, PERF_STORAGE_KEY, type PackageRoute, PackagesTab, REACTOR_WORKER_QUERY_KEY, REACTOR_WORKER_STORAGE_KEY, ROUTER_MEASURES, type ReactorClientMode, type ReactorClientPlan, type ReactorWorkerFlagInput, type RuntimeFlagInput, type RuntimeFlagKeys, SETTINGS_ROUTE_ID, type SettingsTabEntry, type SidebarMode, ThemeToggle, addConnectRoutes, appTitle, applyComposition, applyConnectPluginUi, bindConnectRouter, bindConnectScroll, connectRoutes, connectRoutesSettled, connectScrollRestoration, connectSearchMiddlewares, coreModals, coreView, createAppReactorClient, createConnectNavigation, createConnectRouter, definedSearch, disposeConnectAppRouter, driveTitle, formatModified, getActivePluginModules, getAppDrives, getConnectAppRouter, getConnectPHStore, getConnectPluginUi, getIsEmbedded, getRuntimeConfig, holdConnectRoutes, isCoreView, isDriveNotFound, isMultiReactorEnabled, isPluginActive, isReactorWorkerEnabled, isRuntimeFlagEnabled, keepOpenedFrom, knownPlugins, loadConnectPluginUi, loadDrive, loadLocalPackage, loadNode, loadRuntimeConfig, markNavigationClick, markRouterNavigations, mergeConnectPluginUi, navRoutes, notFoundTitle, parseConnectSearch, planReactorClient, primeRuntimeConfig, redirectToSettingsTab, refreshAppDrives, registerConnectPlugins, registerConnectRoutes, registerPackageRoutes, removeConnectRoutes, resetConnectPluginUi, resolveReactorClientMode, resolveReactorWorkerEnabled, resolveRuntimeFlag, routerPerfEnabled, selectAppReactorClient, setSettingsRoute, settingsTabs, settingsTabsOf, settingsTitle, showsSettingsTab, stringifyConnectSearch, useCreateDocumentTarget, useDriveRouteData, useDriveRouteIds, useForgetSettingsOpenedFrom, useIsColdStart, useIsEmbedded, useModalFrame, useNavRoutes, useSettingsTabs, useSidebarMode, validateConnectSearch, validateDriveSearch };
|
|
10
10
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { C as DocumentJson, D as formatModified, E as DirectoryListing, S as EditorHost, T as HISTORY_PAGE_SIZE, _ as ThemeToggle, a as DriveNotFoundPage, b as DriveLayout, c as CoreLayout, d as CreateDocumentModal, f as DeleteItemModal, g as LoginModal, h as DriveAuthRequiredModal, i as CoreRouteError, l as CoreRoot, m as DownloadDocumentWithErrorsModal, n as AppearanceTab, o as NotFoundPage, p as DocumentVersionUnsupportedModal, r as CoreSettingsPage, s as CoreHeader, t as PackagesTab, u as ConfirmDocumentUpgradeModal, v as DriveIndex, w as DocumentHistory, x as NodeView, y as DocumentView } from "./views-
|
|
2
|
-
import { c as CoreNotFound, d as isCoreView, f as isDriveNotFound, i as mergeConnectPluginUi, l as coreModals, m as loadNode, n as getConnectPluginUi, o as resetConnectPluginUi, p as loadDrive, r as loadConnectPluginUi, s as CoreError, t as applyConnectPluginUi, u as coreView } from "./plugin-ui-
|
|
3
|
-
import { a as connectRoutesSettled, c as registerPackageRoutes, f as CORE_MODAL_VIEWS, h as useModalFrame, i as connectRoutes, l as removeConnectRoutes, m as ModalDialog, n as HOME_ROUTE_ID, o as holdConnectRoutes, p as ModalOutlet, r as addConnectRoutes, s as registerConnectRoutes, t as APP_ROUTE_ID } from "./route-tree-
|
|
4
|
-
import { C as
|
|
5
|
-
import { i as registerConnectPlugins, n as knownPlugins, t as applyComposition } from "./plugin-host-
|
|
6
|
-
import { _ as PERF_STORAGE_KEY, a as createConnectRouter, b as markRouterNavigations, c as GLOBAL_SEARCH_PARAMS, d as parseConnectSearch, f as stringifyConnectSearch, g as connectScrollRestoration, h as bindConnectScroll, i as bindConnectRouter, l as connectSearchMiddlewares, m as validateDriveSearch, n as disposeConnectAppRouter, o as createConnectNavigation, p as validateConnectSearch, r as getConnectAppRouter, s as FEATURE_FLAG_PARAM_PREFIX, t as ConnectCoreApp, u as definedSearch, v as ROUTER_MEASURES, x as routerPerfEnabled, y as markNavigationClick } from "./router-
|
|
1
|
+
import { C as DocumentJson, D as formatModified, E as DirectoryListing, S as EditorHost, T as HISTORY_PAGE_SIZE, _ as ThemeToggle, a as DriveNotFoundPage, b as DriveLayout, c as CoreLayout, d as CreateDocumentModal, f as DeleteItemModal, g as LoginModal, h as DriveAuthRequiredModal, i as CoreRouteError, l as CoreRoot, m as DownloadDocumentWithErrorsModal, n as AppearanceTab, o as NotFoundPage, p as DocumentVersionUnsupportedModal, r as CoreSettingsPage, s as CoreHeader, t as PackagesTab, u as ConfirmDocumentUpgradeModal, v as DriveIndex, w as DocumentHistory, x as NodeView, y as DocumentView } from "./views-CAbBIFzO.js";
|
|
2
|
+
import { c as CoreNotFound, d as isCoreView, f as isDriveNotFound, i as mergeConnectPluginUi, l as coreModals, m as loadNode, n as getConnectPluginUi, o as resetConnectPluginUi, p as loadDrive, r as loadConnectPluginUi, s as CoreError, t as applyConnectPluginUi, u as coreView } from "./plugin-ui-sO7AJLHj.js";
|
|
3
|
+
import { a as connectRoutesSettled, c as registerPackageRoutes, f as CORE_MODAL_VIEWS, h as useModalFrame, i as connectRoutes, l as removeConnectRoutes, m as ModalDialog, n as HOME_ROUTE_ID, o as holdConnectRoutes, p as ModalOutlet, r as addConnectRoutes, s as registerConnectRoutes, t as APP_ROUTE_ID } from "./route-tree-D0aszMrk.js";
|
|
4
|
+
import { C as ContentOutlet, E as useIsColdStart, S as CONTENT_VIEW_ID, T as DrivePending, _ as useForgetSettingsOpenedFrom, a as DRIVE_ROUTE_ID, b as driveTitle, c as useDriveRouteIds, d as redirectToSettingsTab, f as setSettingsRoute, g as showsSettingsTab, h as settingsTitle, i as useCreateDocumentTarget, l as SETTINGS_ROUTE_ID, m as settingsTabsOf, n as useNavRoutes, o as NODE_ROUTE_ID, p as settingsTabs, r as useSidebarMode, s as useDriveRouteData, t as navRoutes, u as keepOpenedFrom, v as useSettingsTabs, w as DRIVE_PENDING_MS, x as notFoundTitle, y as appTitle } from "./sidebar-DVQCwBYR.js";
|
|
5
|
+
import { i as registerConnectPlugins, n as knownPlugins, t as applyComposition } from "./plugin-host-BSFfhXpz.js";
|
|
6
|
+
import { _ as PERF_STORAGE_KEY, a as createConnectRouter, b as markRouterNavigations, c as GLOBAL_SEARCH_PARAMS, d as parseConnectSearch, f as stringifyConnectSearch, g as connectScrollRestoration, h as bindConnectScroll, i as bindConnectRouter, l as connectSearchMiddlewares, m as validateDriveSearch, n as disposeConnectAppRouter, o as createConnectNavigation, p as validateConnectSearch, r as getConnectAppRouter, s as FEATURE_FLAG_PARAM_PREFIX, t as ConnectCoreApp, u as definedSearch, v as ROUTER_MEASURES, x as routerPerfEnabled, y as markNavigationClick } from "./router-8pekwJsk.js";
|
|
7
7
|
import { getRuntimeConfig, loadRuntimeConfig, primeRuntimeConfig } from "./runtime-config.js";
|
|
8
8
|
import { n as isPluginActive, t as getActivePluginModules } from "./plugins-x1XqLPzp.js";
|
|
9
|
-
import { n as resolveRuntimeFlag, t as isRuntimeFlagEnabled } from "./runtime-flag-
|
|
10
|
-
import { a as planReactorClient, c as resolveReactorClientMode, d as isReactorWorkerEnabled, f as resolveReactorWorkerEnabled, i as getAppDrives, l as REACTOR_WORKER_QUERY_KEY, n as getConnectPHStore, o as refreshAppDrives, p as isMultiReactorEnabled, r as createAppReactorClient, s as selectAppReactorClient, t as loadLocalPackage, u as REACTOR_WORKER_STORAGE_KEY } from "./runtime-
|
|
9
|
+
import { n as resolveRuntimeFlag, t as isRuntimeFlagEnabled } from "./runtime-flag-CJWngtxE.js";
|
|
10
|
+
import { a as planReactorClient, c as resolveReactorClientMode, d as isReactorWorkerEnabled, f as resolveReactorWorkerEnabled, i as getAppDrives, l as REACTOR_WORKER_QUERY_KEY, n as getConnectPHStore, o as refreshAppDrives, p as isMultiReactorEnabled, r as createAppReactorClient, s as selectAppReactorClient, t as loadLocalPackage, u as REACTOR_WORKER_STORAGE_KEY } from "./runtime-Y9B9UJK1.js";
|
|
11
11
|
import { getIsEmbedded, useIsEmbedded } from "./embedded.js";
|
|
12
|
-
export { APP_ROUTE_ID, AppearanceTab, CONTENT_VIEW_ID, CORE_MODAL_VIEWS, ConfirmDocumentUpgradeModal, ConnectCoreApp, ContentOutlet, CoreError, CoreHeader, CoreLayout, CoreNotFound, CoreRoot, CoreRouteError, CoreSettingsPage, CreateDocumentModal, DRIVE_PENDING_MS, DRIVE_ROUTE_ID, DeleteItemModal, DirectoryListing, DocumentHistory, DocumentJson, DocumentVersionUnsupportedModal, DocumentView, DownloadDocumentWithErrorsModal, DriveAuthRequiredModal, DriveIndex, DriveLayout, DriveNotFoundPage, DrivePending, EditorHost, FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, HISTORY_PAGE_SIZE, HOME_ROUTE_ID, LoginModal, ModalDialog, ModalOutlet, NODE_ROUTE_ID, NodeView, NotFoundPage, PERF_STORAGE_KEY, PackagesTab, REACTOR_WORKER_QUERY_KEY, REACTOR_WORKER_STORAGE_KEY, ROUTER_MEASURES, SETTINGS_ROUTE_ID, ThemeToggle, addConnectRoutes, appTitle, applyComposition, applyConnectPluginUi, bindConnectRouter, bindConnectScroll, connectRoutes, connectRoutesSettled, connectScrollRestoration, connectSearchMiddlewares, coreModals, coreView, createAppReactorClient, createConnectNavigation, createConnectRouter, definedSearch, disposeConnectAppRouter, driveTitle, formatModified, getActivePluginModules, getAppDrives, getConnectAppRouter, getConnectPHStore, getConnectPluginUi, getIsEmbedded, getRuntimeConfig, holdConnectRoutes, isCoreView, isDriveNotFound, isMultiReactorEnabled, isPluginActive, isReactorWorkerEnabled, isRuntimeFlagEnabled, keepOpenedFrom, knownPlugins, loadConnectPluginUi, loadDrive, loadLocalPackage, loadNode, loadRuntimeConfig, markNavigationClick, markRouterNavigations, mergeConnectPluginUi, navRoutes, notFoundTitle, parseConnectSearch, planReactorClient, primeRuntimeConfig, redirectToSettingsTab, refreshAppDrives, registerConnectPlugins, registerConnectRoutes, registerPackageRoutes, removeConnectRoutes, resetConnectPluginUi, resolveReactorClientMode, resolveReactorWorkerEnabled, resolveRuntimeFlag, routerPerfEnabled, selectAppReactorClient, setSettingsRoute, settingsTabs, settingsTabsOf, settingsTitle, showsSettingsTab, stringifyConnectSearch, useDriveRouteData, useDriveRouteIds, useForgetSettingsOpenedFrom, useIsColdStart, useIsEmbedded, useModalFrame, useNavRoutes, useSettingsTabs, useSidebarMode, validateConnectSearch, validateDriveSearch };
|
|
12
|
+
export { APP_ROUTE_ID, AppearanceTab, CONTENT_VIEW_ID, CORE_MODAL_VIEWS, ConfirmDocumentUpgradeModal, ConnectCoreApp, ContentOutlet, CoreError, CoreHeader, CoreLayout, CoreNotFound, CoreRoot, CoreRouteError, CoreSettingsPage, CreateDocumentModal, DRIVE_PENDING_MS, DRIVE_ROUTE_ID, DeleteItemModal, DirectoryListing, DocumentHistory, DocumentJson, DocumentVersionUnsupportedModal, DocumentView, DownloadDocumentWithErrorsModal, DriveAuthRequiredModal, DriveIndex, DriveLayout, DriveNotFoundPage, DrivePending, EditorHost, FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, HISTORY_PAGE_SIZE, HOME_ROUTE_ID, LoginModal, ModalDialog, ModalOutlet, NODE_ROUTE_ID, NodeView, NotFoundPage, PERF_STORAGE_KEY, PackagesTab, REACTOR_WORKER_QUERY_KEY, REACTOR_WORKER_STORAGE_KEY, ROUTER_MEASURES, SETTINGS_ROUTE_ID, ThemeToggle, addConnectRoutes, appTitle, applyComposition, applyConnectPluginUi, bindConnectRouter, bindConnectScroll, connectRoutes, connectRoutesSettled, connectScrollRestoration, connectSearchMiddlewares, coreModals, coreView, createAppReactorClient, createConnectNavigation, createConnectRouter, definedSearch, disposeConnectAppRouter, driveTitle, formatModified, getActivePluginModules, getAppDrives, getConnectAppRouter, getConnectPHStore, getConnectPluginUi, getIsEmbedded, getRuntimeConfig, holdConnectRoutes, isCoreView, isDriveNotFound, isMultiReactorEnabled, isPluginActive, isReactorWorkerEnabled, isRuntimeFlagEnabled, keepOpenedFrom, knownPlugins, loadConnectPluginUi, loadDrive, loadLocalPackage, loadNode, loadRuntimeConfig, markNavigationClick, markRouterNavigations, mergeConnectPluginUi, navRoutes, notFoundTitle, parseConnectSearch, planReactorClient, primeRuntimeConfig, redirectToSettingsTab, refreshAppDrives, registerConnectPlugins, registerConnectRoutes, registerPackageRoutes, removeConnectRoutes, resetConnectPluginUi, resolveReactorClientMode, resolveReactorWorkerEnabled, resolveRuntimeFlag, routerPerfEnabled, selectAppReactorClient, setSettingsRoute, settingsTabs, settingsTabsOf, settingsTitle, showsSettingsTab, stringifyConnectSearch, useCreateDocumentTarget, useDriveRouteData, useDriveRouteIds, useForgetSettingsOpenedFrom, useIsColdStart, useIsEmbedded, useModalFrame, useNavRoutes, useSettingsTabs, useSidebarMode, validateConnectSearch, validateDriveSearch };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { O as __exportAll } from "./views-
|
|
1
|
+
import { O as __exportAll } from "./views-CAbBIFzO.js";
|
|
2
2
|
import { t as getConnectRegistry } from "./registry-DCZHBP7M.js";
|
|
3
3
|
import { resolveOrder, runTransformHook } from "@powerhousedao/host-core/plugins";
|
|
4
4
|
//#region src/plugins/plugin-host.ts
|
|
@@ -57,4 +57,4 @@ async function applyComposition(config) {
|
|
|
57
57
|
//#endregion
|
|
58
58
|
export { registerConnectPlugins as i, knownPlugins as n, plugin_host_exports as r, applyComposition as t };
|
|
59
59
|
|
|
60
|
-
//# sourceMappingURL=plugin-host-
|
|
60
|
+
//# sourceMappingURL=plugin-host-BSFfhXpz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-host-
|
|
1
|
+
{"version":3,"file":"plugin-host-BSFfhXpz.js","names":[],"sources":["../src/plugins/plugin-host.ts"],"sourcesContent":["import {\n resolveOrder,\n runTransformHook,\n} from \"@powerhousedao/host-core/plugins\";\nimport type { PHConnectRuntimeConfig } from \"@powerhousedao/shared/clis\";\nimport type { ConnectPluginDefinitions } from \"../registry.js\";\nimport { getConnectRegistry } from \"../registry.js\";\nimport type {\n ConnectPlugin,\n ConnectPluginContext,\n ConnectPluginDefinition,\n} from \"./types.js\";\n\nexport type { ConnectPluginContext } from \"./types.js\";\n\n// ConnectCore's plugin pipeline (rewire plan R3). It runs only when the served\n// config carries a `composition`; presence is activation.\n\ntype PluginDefinitions = ConnectPluginDefinitions;\ntype PluginLoader = () => Promise<PluginDefinitions>;\n\n/** Makes plugin modules known by specifier; a loader runs when a composition applies. */\nexport function registerConnectPlugins(\n plugins: PluginDefinitions | PluginLoader,\n) {\n const registry = getConnectRegistry();\n if (typeof plugins === \"function\") registry.pluginLoaders.push(plugins);\n else Object.assign(registry.plugins, plugins);\n}\n\n/** Every plugin module made known, its loaders run. */\nexport async function knownPlugins(): Promise<PluginDefinitions> {\n const registry = getConnectRegistry();\n const pending = registry.pluginLoaders;\n registry.pluginLoaders = [];\n for (const loaded of await Promise.all(pending.map((load) => load()))) {\n Object.assign(registry.plugins, loaded);\n }\n return registry.plugins;\n}\n\n/** The slices of known plugins absent from the composition, zeroed. */\nfunction zeroAbsentSlices(\n config: PHConnectRuntimeConfig,\n present: ReadonlySet<string>,\n plugins: PluginDefinitions,\n): PHConnectRuntimeConfig {\n let out = { ...config };\n for (const [module, definition] of Object.entries(plugins)) {\n if (!present.has(module) && definition.whenAbsent) {\n out = definition.whenAbsent(out);\n }\n }\n return out;\n}\n\nconst LOG = \"[connect:plugins]\";\n\n/** Applies the composition to the served config; pure, and logs the plan and\n * each hook it fires to the console. */\nexport async function applyComposition(\n config: PHConnectRuntimeConfig,\n): Promise<PHConnectRuntimeConfig> {\n const composition = config.composition;\n if (!composition) return config;\n\n const definitions = await knownPlugins();\n const present = new Set(composition.map((entry) => entry.module));\n const plugins: ConnectPlugin[] = [];\n\n console.info(\n `${LOG} resolving composition — ${composition.length} entr${composition.length === 1 ? \"y\" : \"ies\"}`,\n );\n for (const entry of composition) {\n const definition: ConnectPluginDefinition | undefined =\n definitions[entry.module];\n if (!definition) {\n console.warn(\n `${LOG} ✗ ${entry.module} — unknown (external plugin loading not wired); SKIPPED`,\n );\n continue;\n }\n const plugin = definition.create(entry.config ?? {});\n plugins.push(plugin);\n const cfgKeys = Object.keys(entry.config ?? {});\n console.info(\n `${LOG} ✓ ${plugin.name} (${entry.module})` +\n (cfgKeys.length ? ` config: {${cfgKeys.join(\", \")}}` : \"\"),\n );\n }\n\n const ordered = resolveOrder(plugins);\n const ctx: ConnectPluginContext = { entryConfig: {} };\n const ran = ordered\n .filter((p) => p.hooks?.transformConnectConfig)\n .map((p) => p.name);\n console.info(\n `${LOG} hook transformConnectConfig → ${ran.length ? ran.join(\", \") : \"(none)\"}`,\n );\n return runTransformHook<PHConnectRuntimeConfig, ConnectPluginContext>(\n \"transformConnectConfig\",\n ordered,\n ctx,\n zeroAbsentSlices(config, present, definitions),\n );\n}\n"],"mappings":";;;;;;;;;;AAsBA,SAAgB,uBACd,SACA;CACA,MAAM,WAAW,mBAAmB;CACpC,IAAI,OAAO,YAAY,YAAY,SAAS,cAAc,KAAK,OAAO;MACjE,OAAO,OAAO,SAAS,SAAS,OAAO;AAC9C;;AAGA,eAAsB,eAA2C;CAC/D,MAAM,WAAW,mBAAmB;CACpC,MAAM,UAAU,SAAS;CACzB,SAAS,gBAAgB,CAAC;CAC1B,KAAK,MAAM,UAAU,MAAM,QAAQ,IAAI,QAAQ,KAAK,SAAS,KAAK,CAAC,CAAC,GAClE,OAAO,OAAO,SAAS,SAAS,MAAM;CAExC,OAAO,SAAS;AAClB;;AAGA,SAAS,iBACP,QACA,SACA,SACwB;CACxB,IAAI,MAAM,EAAE,GAAG,OAAO;CACtB,KAAK,MAAM,CAAC,QAAQ,eAAe,OAAO,QAAQ,OAAO,GACvD,IAAI,CAAC,QAAQ,IAAI,MAAM,KAAK,WAAW,YACrC,MAAM,WAAW,WAAW,GAAG;CAGnC,OAAO;AACT;AAEA,MAAM,MAAM;;;AAIZ,eAAsB,iBACpB,QACiC;CACjC,MAAM,cAAc,OAAO;CAC3B,IAAI,CAAC,aAAa,OAAO;CAEzB,MAAM,cAAc,MAAM,aAAa;CACvC,MAAM,UAAU,IAAI,IAAI,YAAY,KAAK,UAAU,MAAM,MAAM,CAAC;CAChE,MAAM,UAA2B,CAAC;CAElC,QAAQ,KACN,GAAG,IAAI,2BAA2B,YAAY,OAAO,OAAO,YAAY,WAAW,IAAI,MAAM,OAC/F;CACA,KAAK,MAAM,SAAS,aAAa;EAC/B,MAAM,aACJ,YAAY,MAAM;EACpB,IAAI,CAAC,YAAY;GACf,QAAQ,KACN,GAAG,IAAI,OAAO,MAAM,OAAO,wDAC7B;GACA;EACF;EACA,MAAM,SAAS,WAAW,OAAO,MAAM,UAAU,CAAC,CAAC;EACnD,QAAQ,KAAK,MAAM;EACnB,MAAM,UAAU,OAAO,KAAK,MAAM,UAAU,CAAC,CAAC;EAC9C,QAAQ,KACN,GAAG,IAAI,OAAO,OAAO,KAAK,IAAI,MAAM,OAAO,MACxC,QAAQ,SAAS,aAAa,QAAQ,KAAK,IAAI,EAAE,KAAK,GAC3D;CACF;CAEA,MAAM,UAAU,aAAa,OAAO;CACpC,MAAM,MAA4B,EAAE,aAAa,CAAC,EAAE;CACpD,MAAM,MAAM,QACT,QAAQ,MAAM,EAAE,OAAO,sBAAsB,CAAC,CAC9C,KAAK,MAAM,EAAE,IAAI;CACpB,QAAQ,KACN,GAAG,IAAI,iCAAiC,IAAI,SAAS,IAAI,KAAK,IAAI,IAAI,UACxE;CACA,OAAO,iBACL,0BACA,SACA,KACA,iBAAiB,QAAQ,SAAS,WAAW,CAC/C;AACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { O as __exportAll } from "./views-
|
|
1
|
+
import { O as __exportAll } from "./views-CAbBIFzO.js";
|
|
2
2
|
import { t as getConnectRegistry } from "./registry-DCZHBP7M.js";
|
|
3
|
-
import { f as CORE_MODAL_VIEWS, l as removeConnectRoutes, r as addConnectRoutes, u as resolveConnectRoutes } from "./route-tree-
|
|
4
|
-
import { n as knownPlugins } from "./plugin-host-
|
|
3
|
+
import { f as CORE_MODAL_VIEWS, l as removeConnectRoutes, r as addConnectRoutes, u as resolveConnectRoutes } from "./route-tree-D0aszMrk.js";
|
|
4
|
+
import { n as knownPlugins } from "./plugin-host-BSFfhXpz.js";
|
|
5
5
|
import { findDriveBySlugOrId, makeDriveSlug, makeNodeSlug, resolveDriveRoute } from "@powerhousedao/reactor-browser";
|
|
6
6
|
import { lazyRouteComponent, notFound, redirect } from "@tanstack/react-router";
|
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -197,4 +197,4 @@ function resetConnectPluginUi(routeTree) {
|
|
|
197
197
|
//#endregion
|
|
198
198
|
export { plugin_ui_exports as a, CoreNotFound as c, isCoreView as d, isDriveNotFound as f, mergeConnectPluginUi as i, coreModals as l, loadNode as m, getConnectPluginUi as n, resetConnectPluginUi as o, loadDrive as p, loadConnectPluginUi as r, CoreError as s, applyConnectPluginUi as t, coreView as u };
|
|
199
199
|
|
|
200
|
-
//# sourceMappingURL=plugin-ui-
|
|
200
|
+
//# sourceMappingURL=plugin-ui-sO7AJLHj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-ui-Br91idOH.js","names":[],"sources":["../src/router/drive-route-loader.ts","../src/router/core-views.tsx","../src/plugins/plugin-ui.ts"],"sourcesContent":["// The drive routes' loaders. Server-safe: they read everything from router context.\nimport type { DriveArrivals, PHStore } from \"@powerhousedao/reactor-browser\";\nimport {\n findDriveBySlugOrId,\n makeDriveSlug,\n makeNodeSlug,\n resolveDriveRoute,\n} from \"@powerhousedao/reactor-browser\";\nimport { notFound, redirect } from \"@tanstack/react-router\";\n\nexport type ConnectRouterContext = {\n store: PHStore;\n /** Without it the drive route never waits for drives to arrive. */\n arrivals?: DriveArrivals;\n /** Ends every document title; \"Connect\" without one. */\n appName?: string;\n /** Rendering the loading shell: a layout shows its pendingComponent in place of its page. */\n shell?: boolean;\n};\n\n/** A missing drive's not-found data. */\nexport type DriveNotFoundData = { driveSlug: string };\n\nexport function isDriveNotFound(data: unknown): data is DriveNotFoundData {\n return (\n typeof data === \"object\" &&\n data !== null &&\n typeof (data as { driveSlug?: unknown }).driveSlug === \"string\"\n );\n}\n\n/** What the drive routes resolved their params to. */\nexport type DriveRouteData = { driveId: string; nodeId?: string };\n\nexport type DriveRouteParams = { driveSlug: string; nodeSlug?: string };\n\nexport type DriveLoaderOptions = {\n params: DriveRouteParams;\n context: ConnectRouterContext;\n abortController: AbortController;\n preload: boolean;\n};\n\nfunction resolve(options: DriveLoaderOptions, params: DriveRouteParams) {\n return resolveDriveRoute({\n store: options.context.store,\n arrivals: options.context.arrivals,\n driveSlug: params.driveSlug,\n nodeSlug: params.nodeSlug,\n signal: options.abortController.signal,\n preload: options.preload,\n });\n}\n\n// At the drive layout, so the 404 takes the drive's place in the layout.\nfunction driveNotFound(driveSlug: string) {\n return notFound({\n routeId: \"/_app/d/$driveSlug\" as never,\n data: { driveSlug } satisfies DriveNotFoundData,\n });\n}\n\n/** The drive layout's loader: the drive, or not found once arrivals settle. */\nexport async function loadDrive(\n options: DriveLoaderOptions,\n): Promise<{ driveId: string }> {\n const { driveSlug } = options.params;\n const result = await resolve(options, { driveSlug });\n if (result.kind === \"drive-not-found\") {\n // oxlint-disable-next-line typescript/only-throw-error -- router control flow\n throw driveNotFound(driveSlug);\n }\n return { driveId: result.driveId };\n}\n\n/** The node route's loader: the drive and the open node. An id or an old name\n * in the URL becomes the current slugs; a missing node leads to its drive. */\nexport async function loadNode(\n options: DriveLoaderOptions,\n): Promise<DriveRouteData> {\n const { params, context, preload } = options;\n const result = await resolve(options, params);\n switch (result.kind) {\n case \"drive\": {\n const data: DriveRouteData = result.nodeId\n ? { driveId: result.driveId, nodeId: result.nodeId }\n : { driveId: result.driveId };\n const canonical = canonicalParams(context.store, data);\n // An id, an old name or an old drive id in the URL becomes the current slugs.\n if (\n !preload &&\n canonical &&\n (canonical.driveSlug !== params.driveSlug ||\n canonical.nodeSlug !== (params.nodeSlug || undefined))\n ) {\n // oxlint-disable-next-line typescript/only-throw-error -- router control flow\n throw redirectTo(canonical);\n }\n return data;\n }\n case \"drive-not-found\":\n // oxlint-disable-next-line typescript/only-throw-error -- router control flow\n throw driveNotFound(params.driveSlug);\n case \"node-not-found\":\n // oxlint-disable-next-line typescript/only-throw-error -- router control flow\n throw redirectTo({\n driveSlug:\n canonicalParams(context.store, { driveId: result.driveId })\n ?.driveSlug ?? params.driveSlug,\n nodeSlug: undefined,\n });\n }\n}\n\n// The slugs links write for `data`; unknown while the drive is unlisted.\nfunction canonicalParams(\n store: PHStore,\n data: DriveRouteData,\n): DriveRouteParams | undefined {\n const drive = findDriveBySlugOrId(store, data.driveId);\n if (!drive) return undefined;\n if (!data.nodeId) return { driveSlug: makeDriveSlug(drive) };\n const node = drive.state.global.nodes.find((n) => n.id === data.nodeId);\n if (!node) return undefined;\n return { driveSlug: makeDriveSlug(drive), nodeSlug: makeNodeSlug(node) };\n}\n\n// In place, with the URL's search params and history state (the opened-from index).\nfunction redirectTo(params: DriveRouteParams) {\n return redirect({\n to: \"/d/$driveSlug/{-$nodeSlug}\",\n params,\n search: true,\n state: true,\n replace: true,\n });\n}\n","// The router's one edge to core's views: views never import this module, so\n// loading them lazily makes no import cycle.\nimport type {\n ErrorRouteComponent,\n NotFoundRouteProps,\n RouteComponent,\n} from \"@tanstack/react-router\";\nimport { lazyRouteComponent } from \"@tanstack/react-router\";\nimport type { ComponentType } from \"react\";\nimport { isDriveNotFound } from \"./drive-route-loader.js\";\nimport type { ConnectModals } from \"./modals.js\";\nimport { CORE_MODAL_VIEWS } from \"./modals.js\";\n\n// Core's views load only when a page shows one.\nconst views = () => import(\"@powerhousedao/connect-core/views\");\n\nconst CORE_VIEW = Symbol.for(\"@powerhousedao/connect-core/core-view\");\n\n/** One of core's views, loaded with the route that shows it. */\nexport function coreView(name: keyof Awaited<ReturnType<typeof views>>) {\n return Object.assign(lazyRouteComponent(views, name), {\n [CORE_VIEW]: true,\n }) as RouteComponent;\n}\n\n/** Whether a route's component is one of core's views, which a plugin's UI replaces. */\nexport function isCoreView(component: unknown) {\n return (\n typeof component === \"function\" &&\n (component as { [CORE_VIEW]?: true })[CORE_VIEW] === true\n );\n}\n\nconst NotFoundPage = coreView(\"NotFoundPage\");\nconst DriveNotFoundPage = coreView(\"DriveNotFoundPage\") as ComponentType<{\n driveSlug: string;\n}>;\n\n/** Core's not-found page; a missing drive's names the drive. */\nexport function CoreNotFound({ data }: Partial<NotFoundRouteProps>) {\n return isDriveNotFound(data) ? (\n <DriveNotFoundPage driveSlug={data.driveSlug} />\n ) : (\n <NotFoundPage />\n );\n}\n\n/** Core's view of a route's loader or render error. */\nexport const CoreError = coreView(\"CoreRouteError\") as ErrorRouteComponent;\n\n/** Core's modals, loaded when one opens. */\nexport const coreModals: ConnectModals = Object.fromEntries(\n Object.entries(CORE_MODAL_VIEWS).map(([type, name]) => [\n type,\n coreView(name),\n ]),\n);\n","import type { AnyRoute, ErrorRouteComponent } from \"@tanstack/react-router\";\nimport type { ComponentType } from \"react\";\nimport type { ConnectRouteRegistration } from \"../registry.js\";\nimport { getConnectRegistry } from \"../registry.js\";\nimport type { ConnectModals } from \"../router/modals.js\";\nimport { isCoreView } from \"../router/core-views.js\";\nimport {\n addConnectRoutes,\n removeConnectRoutes,\n resolveConnectRoutes,\n} from \"../router/route-tree.js\";\nimport { knownPlugins } from \"./plugin-host.js\";\nimport type { ConnectPluginUi, ConnectRouteUi } from \"./types.js\";\n\n/** The active plugins' UI; a later plugin's routes and modals win. */\nexport type ConnectPluginUiSet = {\n routes: Record<string, ConnectRouteUi>;\n addRoutes: ConnectRouteRegistration[];\n modals: ConnectModals;\n roots: ComponentType[];\n errorComponent?: ErrorRouteComponent;\n commonEditors: boolean;\n consent: boolean;\n};\n\nconst NO_UI: ConnectPluginUiSet = {\n routes: {},\n addRoutes: [],\n modals: {},\n roots: [],\n commonEditors: false,\n consent: false,\n};\n\nexport function mergeConnectPluginUi(\n uis: readonly ConnectPluginUi[],\n): ConnectPluginUiSet {\n const set: ConnectPluginUiSet = {\n routes: {},\n addRoutes: [],\n modals: {},\n roots: [],\n commonEditors: false,\n consent: false,\n };\n for (const ui of uis) {\n for (const [id, route] of Object.entries(ui.routes ?? {})) {\n set.routes[id] = { ...set.routes[id], ...route };\n }\n if (ui.addRoutes) set.addRoutes.push(ui.addRoutes);\n Object.assign(set.modals, ui.modals);\n if (ui.Root) set.roots.push(ui.Root);\n set.errorComponent = ui.errorComponent ?? set.errorComponent;\n set.commonEditors ||= ui.commonEditors ?? false;\n set.consent ||= ui.consent ?? false;\n }\n return set;\n}\n\n/** Loads the UI of the plugins `composition` names, or of every known plugin\n * without one (classic Connect), and keeps it for `getConnectPluginUi`. */\nexport async function loadConnectPluginUi(\n composition: readonly { module: string }[] | undefined,\n): Promise<ConnectPluginUiSet> {\n const definitions = await knownPlugins();\n const modules = composition\n ? composition.map((entry) => entry.module)\n : Object.keys(definitions);\n const uis = await Promise.all(\n modules.map(\n (module) => definitions[module]?.ui?.() ?? Promise.resolve(undefined),\n ),\n );\n const set = mergeConnectPluginUi(\n uis.filter((ui): ui is ConnectPluginUi => !!ui),\n );\n getConnectRegistry().ui = set;\n return set;\n}\n\n/** The active plugins' UI; none until `loadRuntimeConfig` has loaded it. */\nexport function getConnectPluginUi(): ConnectPluginUiSet {\n return getConnectRegistry().ui ?? NO_UI;\n}\n\ntype RouteOptions = Record<string, unknown> & { id?: string; path?: string };\n\nconst ROOT_ID = \"__root__\";\n\nfunction forEachRoute(\n route: AnyRoute,\n visit: (route: AnyRoute, id: string) => void,\n parentId?: string,\n) {\n const options = route.options as unknown as RouteOptions;\n const segment = options.id ?? options.path;\n const own =\n parentId === undefined || segment === undefined\n ? ROOT_ID\n : `${parentId === ROOT_ID ? \"\" : parentId}/${segment.replace(/^\\//, \"\")}`;\n visit(route, own);\n for (const child of (route.children ?? []) as AnyRoute[]) {\n forEachRoute(child, visit, own);\n }\n}\n\ntype Applied = { originals: Map<AnyRoute, RouteOptions>; added: AnyRoute[] };\nconst appliedTo = new WeakMap<AnyRoute, Applied>();\n\n/** Sets `ui`'s route options on the tree's routes that still show core's view,\n * and adds its routes; `resetConnectPluginUi` undoes both. */\nexport function applyConnectPluginUi(\n routeTree: AnyRoute,\n ui: ConnectPluginUiSet = getConnectPluginUi(),\n) {\n resetConnectPluginUi(routeTree);\n const applied: Applied = { originals: new Map(), added: [] };\n forEachRoute(routeTree, (route, id) => {\n const routeUi = ui.routes[id];\n const options = route.options as unknown as RouteOptions;\n if (!routeUi || !isCoreView(options.component)) return;\n const { staticData, ...views } = routeUi;\n const keys = [...Object.keys(views), ...(staticData ? [\"staticData\"] : [])];\n applied.originals.set(\n route,\n Object.fromEntries(keys.map((key) => [key, options[key]])),\n );\n Object.assign(options, views);\n if (staticData) {\n options.staticData = {\n ...(options.staticData as object | undefined),\n ...staticData,\n };\n }\n });\n for (const registration of ui.addRoutes) {\n const routes = resolveConnectRoutes(registration, routeTree);\n addConnectRoutes(routes);\n applied.added.push(...routes);\n }\n appliedTo.set(routeTree, applied);\n}\n\n/** Restores the routes `applyConnectPluginUi` changed and removes the ones it added. */\nexport function resetConnectPluginUi(routeTree: AnyRoute) {\n const applied = appliedTo.get(routeTree);\n if (!applied) return;\n for (const [route, originals] of applied.originals) {\n Object.assign(route.options, originals);\n }\n removeConnectRoutes(applied.added);\n appliedTo.delete(routeTree);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-ui-sO7AJLHj.js","names":[],"sources":["../src/router/drive-route-loader.ts","../src/router/core-views.tsx","../src/plugins/plugin-ui.ts"],"sourcesContent":["// The drive routes' loaders. Server-safe: they read everything from router context.\nimport type { DriveArrivals, PHStore } from \"@powerhousedao/reactor-browser\";\nimport {\n findDriveBySlugOrId,\n makeDriveSlug,\n makeNodeSlug,\n resolveDriveRoute,\n} from \"@powerhousedao/reactor-browser\";\nimport { notFound, redirect } from \"@tanstack/react-router\";\n\nexport type ConnectRouterContext = {\n store: PHStore;\n /** Without it the drive route never waits for drives to arrive. */\n arrivals?: DriveArrivals;\n /** Ends every document title; \"Connect\" without one. */\n appName?: string;\n /** Rendering the loading shell: a layout shows its pendingComponent in place of its page. */\n shell?: boolean;\n};\n\n/** A missing drive's not-found data. */\nexport type DriveNotFoundData = { driveSlug: string };\n\nexport function isDriveNotFound(data: unknown): data is DriveNotFoundData {\n return (\n typeof data === \"object\" &&\n data !== null &&\n typeof (data as { driveSlug?: unknown }).driveSlug === \"string\"\n );\n}\n\n/** What the drive routes resolved their params to. */\nexport type DriveRouteData = { driveId: string; nodeId?: string };\n\nexport type DriveRouteParams = { driveSlug: string; nodeSlug?: string };\n\nexport type DriveLoaderOptions = {\n params: DriveRouteParams;\n context: ConnectRouterContext;\n abortController: AbortController;\n preload: boolean;\n};\n\nfunction resolve(options: DriveLoaderOptions, params: DriveRouteParams) {\n return resolveDriveRoute({\n store: options.context.store,\n arrivals: options.context.arrivals,\n driveSlug: params.driveSlug,\n nodeSlug: params.nodeSlug,\n signal: options.abortController.signal,\n preload: options.preload,\n });\n}\n\n// At the drive layout, so the 404 takes the drive's place in the layout.\nfunction driveNotFound(driveSlug: string) {\n return notFound({\n routeId: \"/_app/d/$driveSlug\" as never,\n data: { driveSlug } satisfies DriveNotFoundData,\n });\n}\n\n/** The drive layout's loader: the drive, or not found once arrivals settle. */\nexport async function loadDrive(\n options: DriveLoaderOptions,\n): Promise<{ driveId: string }> {\n const { driveSlug } = options.params;\n const result = await resolve(options, { driveSlug });\n if (result.kind === \"drive-not-found\") {\n // oxlint-disable-next-line typescript/only-throw-error -- router control flow\n throw driveNotFound(driveSlug);\n }\n return { driveId: result.driveId };\n}\n\n/** The node route's loader: the drive and the open node. An id or an old name\n * in the URL becomes the current slugs; a missing node leads to its drive. */\nexport async function loadNode(\n options: DriveLoaderOptions,\n): Promise<DriveRouteData> {\n const { params, context, preload } = options;\n const result = await resolve(options, params);\n switch (result.kind) {\n case \"drive\": {\n const data: DriveRouteData = result.nodeId\n ? { driveId: result.driveId, nodeId: result.nodeId }\n : { driveId: result.driveId };\n const canonical = canonicalParams(context.store, data);\n // An id, an old name or an old drive id in the URL becomes the current slugs.\n if (\n !preload &&\n canonical &&\n (canonical.driveSlug !== params.driveSlug ||\n canonical.nodeSlug !== (params.nodeSlug || undefined))\n ) {\n // oxlint-disable-next-line typescript/only-throw-error -- router control flow\n throw redirectTo(canonical);\n }\n return data;\n }\n case \"drive-not-found\":\n // oxlint-disable-next-line typescript/only-throw-error -- router control flow\n throw driveNotFound(params.driveSlug);\n case \"node-not-found\":\n // oxlint-disable-next-line typescript/only-throw-error -- router control flow\n throw redirectTo({\n driveSlug:\n canonicalParams(context.store, { driveId: result.driveId })\n ?.driveSlug ?? params.driveSlug,\n nodeSlug: undefined,\n });\n }\n}\n\n// The slugs links write for `data`; unknown while the drive is unlisted.\nfunction canonicalParams(\n store: PHStore,\n data: DriveRouteData,\n): DriveRouteParams | undefined {\n const drive = findDriveBySlugOrId(store, data.driveId);\n if (!drive) return undefined;\n if (!data.nodeId) return { driveSlug: makeDriveSlug(drive) };\n const node = drive.state.global.nodes.find((n) => n.id === data.nodeId);\n if (!node) return undefined;\n return { driveSlug: makeDriveSlug(drive), nodeSlug: makeNodeSlug(node) };\n}\n\n// In place, with the URL's search params and history state (the opened-from index).\nfunction redirectTo(params: DriveRouteParams) {\n return redirect({\n to: \"/d/$driveSlug/{-$nodeSlug}\",\n params,\n search: true,\n state: true,\n replace: true,\n });\n}\n","// The router's one edge to core's views: views never import this module, so\n// loading them lazily makes no import cycle.\nimport type {\n ErrorRouteComponent,\n NotFoundRouteProps,\n RouteComponent,\n} from \"@tanstack/react-router\";\nimport { lazyRouteComponent } from \"@tanstack/react-router\";\nimport type { ComponentType } from \"react\";\nimport { isDriveNotFound } from \"./drive-route-loader.js\";\nimport type { ConnectModals } from \"./modals.js\";\nimport { CORE_MODAL_VIEWS } from \"./modals.js\";\n\n// Core's views load only when a page shows one.\nconst views = () => import(\"@powerhousedao/connect-core/views\");\n\nconst CORE_VIEW = Symbol.for(\"@powerhousedao/connect-core/core-view\");\n\n/** One of core's views, loaded with the route that shows it. */\nexport function coreView(name: keyof Awaited<ReturnType<typeof views>>) {\n return Object.assign(lazyRouteComponent(views, name), {\n [CORE_VIEW]: true,\n }) as RouteComponent;\n}\n\n/** Whether a route's component is one of core's views, which a plugin's UI replaces. */\nexport function isCoreView(component: unknown) {\n return (\n typeof component === \"function\" &&\n (component as { [CORE_VIEW]?: true })[CORE_VIEW] === true\n );\n}\n\nconst NotFoundPage = coreView(\"NotFoundPage\");\nconst DriveNotFoundPage = coreView(\"DriveNotFoundPage\") as ComponentType<{\n driveSlug: string;\n}>;\n\n/** Core's not-found page; a missing drive's names the drive. */\nexport function CoreNotFound({ data }: Partial<NotFoundRouteProps>) {\n return isDriveNotFound(data) ? (\n <DriveNotFoundPage driveSlug={data.driveSlug} />\n ) : (\n <NotFoundPage />\n );\n}\n\n/** Core's view of a route's loader or render error. */\nexport const CoreError = coreView(\"CoreRouteError\") as ErrorRouteComponent;\n\n/** Core's modals, loaded when one opens. */\nexport const coreModals: ConnectModals = Object.fromEntries(\n Object.entries(CORE_MODAL_VIEWS).map(([type, name]) => [\n type,\n coreView(name),\n ]),\n);\n","import type { AnyRoute, ErrorRouteComponent } from \"@tanstack/react-router\";\nimport type { ComponentType } from \"react\";\nimport type { ConnectRouteRegistration } from \"../registry.js\";\nimport { getConnectRegistry } from \"../registry.js\";\nimport type { ConnectModals } from \"../router/modals.js\";\nimport { isCoreView } from \"../router/core-views.js\";\nimport {\n addConnectRoutes,\n removeConnectRoutes,\n resolveConnectRoutes,\n} from \"../router/route-tree.js\";\nimport { knownPlugins } from \"./plugin-host.js\";\nimport type { ConnectPluginUi, ConnectRouteUi } from \"./types.js\";\n\n/** The active plugins' UI; a later plugin's routes and modals win. */\nexport type ConnectPluginUiSet = {\n routes: Record<string, ConnectRouteUi>;\n addRoutes: ConnectRouteRegistration[];\n modals: ConnectModals;\n roots: ComponentType[];\n errorComponent?: ErrorRouteComponent;\n commonEditors: boolean;\n consent: boolean;\n};\n\nconst NO_UI: ConnectPluginUiSet = {\n routes: {},\n addRoutes: [],\n modals: {},\n roots: [],\n commonEditors: false,\n consent: false,\n};\n\nexport function mergeConnectPluginUi(\n uis: readonly ConnectPluginUi[],\n): ConnectPluginUiSet {\n const set: ConnectPluginUiSet = {\n routes: {},\n addRoutes: [],\n modals: {},\n roots: [],\n commonEditors: false,\n consent: false,\n };\n for (const ui of uis) {\n for (const [id, route] of Object.entries(ui.routes ?? {})) {\n set.routes[id] = { ...set.routes[id], ...route };\n }\n if (ui.addRoutes) set.addRoutes.push(ui.addRoutes);\n Object.assign(set.modals, ui.modals);\n if (ui.Root) set.roots.push(ui.Root);\n set.errorComponent = ui.errorComponent ?? set.errorComponent;\n set.commonEditors ||= ui.commonEditors ?? false;\n set.consent ||= ui.consent ?? false;\n }\n return set;\n}\n\n/** Loads the UI of the plugins `composition` names, or of every known plugin\n * without one (classic Connect), and keeps it for `getConnectPluginUi`. */\nexport async function loadConnectPluginUi(\n composition: readonly { module: string }[] | undefined,\n): Promise<ConnectPluginUiSet> {\n const definitions = await knownPlugins();\n const modules = composition\n ? composition.map((entry) => entry.module)\n : Object.keys(definitions);\n const uis = await Promise.all(\n modules.map(\n (module) => definitions[module]?.ui?.() ?? Promise.resolve(undefined),\n ),\n );\n const set = mergeConnectPluginUi(\n uis.filter((ui): ui is ConnectPluginUi => !!ui),\n );\n getConnectRegistry().ui = set;\n return set;\n}\n\n/** The active plugins' UI; none until `loadRuntimeConfig` has loaded it. */\nexport function getConnectPluginUi(): ConnectPluginUiSet {\n return getConnectRegistry().ui ?? NO_UI;\n}\n\ntype RouteOptions = Record<string, unknown> & { id?: string; path?: string };\n\nconst ROOT_ID = \"__root__\";\n\nfunction forEachRoute(\n route: AnyRoute,\n visit: (route: AnyRoute, id: string) => void,\n parentId?: string,\n) {\n const options = route.options as unknown as RouteOptions;\n const segment = options.id ?? options.path;\n const own =\n parentId === undefined || segment === undefined\n ? ROOT_ID\n : `${parentId === ROOT_ID ? \"\" : parentId}/${segment.replace(/^\\//, \"\")}`;\n visit(route, own);\n for (const child of (route.children ?? []) as AnyRoute[]) {\n forEachRoute(child, visit, own);\n }\n}\n\ntype Applied = { originals: Map<AnyRoute, RouteOptions>; added: AnyRoute[] };\nconst appliedTo = new WeakMap<AnyRoute, Applied>();\n\n/** Sets `ui`'s route options on the tree's routes that still show core's view,\n * and adds its routes; `resetConnectPluginUi` undoes both. */\nexport function applyConnectPluginUi(\n routeTree: AnyRoute,\n ui: ConnectPluginUiSet = getConnectPluginUi(),\n) {\n resetConnectPluginUi(routeTree);\n const applied: Applied = { originals: new Map(), added: [] };\n forEachRoute(routeTree, (route, id) => {\n const routeUi = ui.routes[id];\n const options = route.options as unknown as RouteOptions;\n if (!routeUi || !isCoreView(options.component)) return;\n const { staticData, ...views } = routeUi;\n const keys = [...Object.keys(views), ...(staticData ? [\"staticData\"] : [])];\n applied.originals.set(\n route,\n Object.fromEntries(keys.map((key) => [key, options[key]])),\n );\n Object.assign(options, views);\n if (staticData) {\n options.staticData = {\n ...(options.staticData as object | undefined),\n ...staticData,\n };\n }\n });\n for (const registration of ui.addRoutes) {\n const routes = resolveConnectRoutes(registration, routeTree);\n addConnectRoutes(routes);\n applied.added.push(...routes);\n }\n appliedTo.set(routeTree, applied);\n}\n\n/** Restores the routes `applyConnectPluginUi` changed and removes the ones it added. */\nexport function resetConnectPluginUi(routeTree: AnyRoute) {\n const applied = appliedTo.get(routeTree);\n if (!applied) return;\n for (const [route, originals] of applied.originals) {\n Object.assign(route.options, originals);\n }\n removeConnectRoutes(applied.added);\n appliedTo.delete(routeTree);\n}\n"],"mappings":"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"}
|
package/dist/plugins.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as mergeConnectPluginUi, n as getConnectPluginUi, o as resetConnectPluginUi, r as loadConnectPluginUi, t as applyConnectPluginUi } from "./plugin-ui-
|
|
2
|
-
import { i as registerConnectPlugins, n as knownPlugins, t as applyComposition } from "./plugin-host-
|
|
1
|
+
import { i as mergeConnectPluginUi, n as getConnectPluginUi, o as resetConnectPluginUi, r as loadConnectPluginUi, t as applyConnectPluginUi } from "./plugin-ui-sO7AJLHj.js";
|
|
2
|
+
import { i as registerConnectPlugins, n as knownPlugins, t as applyComposition } from "./plugin-host-BSFfhXpz.js";
|
|
3
3
|
import { n as isPluginActive, t as getActivePluginModules } from "./plugins-x1XqLPzp.js";
|
|
4
4
|
export { applyComposition, applyConnectPluginUi, getActivePluginModules, getConnectPluginUi, isPluginActive, knownPlugins, loadConnectPluginUi, mergeConnectPluginUi, registerConnectPlugins, resetConnectPluginUi };
|
|
@@ -27,7 +27,7 @@ function ModalDialog(props) {
|
|
|
27
27
|
onClick: (event) => {
|
|
28
28
|
if (event.target === event.currentTarget) closePHModal();
|
|
29
29
|
},
|
|
30
|
-
className: props.className,
|
|
30
|
+
className: props.className ? `m-auto ${props.className}` : "m-auto",
|
|
31
31
|
children: props.children
|
|
32
32
|
});
|
|
33
33
|
}
|
|
@@ -114,10 +114,7 @@ function addConnectRoutes(routes) {
|
|
|
114
114
|
const children = parent.children ?? [];
|
|
115
115
|
if (children.includes(route)) continue;
|
|
116
116
|
const path = route.options.path;
|
|
117
|
-
if (path && children.some((child) => samePath(child, path)))
|
|
118
|
-
console.warn(`[connect] a route already serves "${path}"; skipping`);
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
117
|
+
if (path && children.some((child) => samePath(child, path))) continue;
|
|
121
118
|
parent.addChildren([...children, route]);
|
|
122
119
|
}
|
|
123
120
|
}
|
|
@@ -265,4 +262,4 @@ function useRoutesById() {
|
|
|
265
262
|
//#endregion
|
|
266
263
|
export { connectRoutesSettled as a, registerPackageRoutes as c, useRoutesById as d, CORE_MODAL_VIEWS as f, useModalFrame as h, connectRoutes as i, removeConnectRoutes as l, ModalDialog as m, HOME_ROUTE_ID as n, holdConnectRoutes as o, ModalOutlet as p, addConnectRoutes as r, registerConnectRoutes as s, APP_ROUTE_ID as t, resolveConnectRoutes as u };
|
|
267
264
|
|
|
268
|
-
//# sourceMappingURL=route-tree-
|
|
265
|
+
//# sourceMappingURL=route-tree-D0aszMrk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-tree-D0aszMrk.js","names":[],"sources":["../src/router/modal-frame.tsx","../src/router/modals.tsx","../src/router/route-tree.ts"],"sourcesContent":["import { closePHModal } from \"@powerhousedao/reactor-browser\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport { createContext, useContext, useEffect, useRef } from \"react\";\n\n/** What a modal frame lays out: the modal's title, its content and its buttons. */\nexport type ModalFrameProps = {\n title: string;\n /** The title element's id, for the dialog's `aria-labelledby`. */\n titleId: string;\n actions: ReactNode;\n children: ReactNode;\n};\n\ndeclare module \"@tanstack/react-router\" {\n interface StaticDataRouteOption {\n /** Frames every core modal while the route matches; the deepest wins. */\n modalFrame?: ComponentType<ModalFrameProps>;\n }\n}\n\nexport const ModalFrameContext = createContext<\n ComponentType<ModalFrameProps> | undefined\n>(undefined);\n\n/** The frame the matched routes set, if any. */\nexport function useModalFrame() {\n return useContext(ModalFrameContext);\n}\n\n/** A modal `<dialog>`: it opens as a modal, and Escape or a click on the\n * backdrop closes the open modal. */\nexport function ModalDialog(props: {\n labelledBy: string;\n className?: string;\n children: ReactNode;\n}) {\n const ref = useRef<HTMLDialogElement>(null);\n useEffect(() => {\n const dialog = ref.current;\n if (dialog && !dialog.open) dialog.showModal();\n }, []);\n return (\n <dialog\n ref={ref}\n aria-labelledby={props.labelledBy}\n onCancel={(event) => {\n event.preventDefault();\n closePHModal();\n }}\n onClick={(event) => {\n if (event.target === event.currentTarget) closePHModal();\n }}\n // Tailwind's reset drops the margin that centres a modal dialog.\n className={props.className ? `m-auto ${props.className}` : \"m-auto\"}\n >\n {props.children}\n </dialog>\n );\n}\n","import type { PHModal } from \"@powerhousedao/reactor-browser\";\nimport { usePHModal } from \"@powerhousedao/reactor-browser\";\nimport { useMatches } from \"@tanstack/react-router\";\nimport type { ComponentType, ErrorInfo, ReactNode } from \"react\";\nimport { Component, createElement, Suspense } from \"react\";\nimport type * as ModalViews from \"../views/modals.js\";\nimport type { ModalFrameProps } from \"./modal-frame.js\";\nimport { ModalFrameContext } from \"./modal-frame.js\";\n\n/** Modal views by modal type. Each reads the open modal with `usePHModal()`. */\nexport type ConnectModals = Partial<Record<PHModal[\"type\"], ComponentType>>;\n\ndeclare module \"@tanstack/react-router\" {\n interface StaticDataRouteOption {\n /** Replaces the host's view of these modals while the route matches. */\n modals?: ConnectModals;\n }\n}\n\n/** Core's modals: the ones editors, drive apps and the reactor open, so every\n * host has them. Each names its view in `@powerhousedao/connect-core/views`. */\nexport const CORE_MODAL_VIEWS = {\n createDocument: \"CreateDocumentModal\",\n login: \"LoginModal\",\n deleteItem: \"DeleteItemModal\",\n confirmDocumentUpgrade: \"ConfirmDocumentUpgradeModal\",\n downloadDocumentWithErrors: \"DownloadDocumentWithErrorsModal\",\n documentVersionUnsupported: \"DocumentVersionUnsupportedModal\",\n driveAuthRequired: \"DriveAuthRequiredModal\",\n} as const satisfies Partial<Record<PHModal[\"type\"], keyof typeof ModalViews>>;\n\ntype BoundaryProps = { modal: string; children: ReactNode };\n\n// A broken modal closes quietly instead of taking the page down; keyed by\n// modal, so the next one gets a fresh try.\nclass ModalErrorBoundary extends Component<BoundaryProps, { failed: boolean }> {\n state = { failed: false };\n\n static getDerivedStateFromError() {\n return { failed: true };\n }\n\n componentDidCatch(error: unknown, info: ErrorInfo) {\n console.error(\n `[connect] the ${this.props.modal} modal failed:`,\n error,\n info,\n );\n }\n\n render() {\n return this.state.failed ? null : this.props.children;\n }\n}\n\n/** The open modal's view: the deepest matched route's `staticData.modals`\n * entry for it, else `modals`', in the deepest `staticData.modalFrame`. */\nexport function ModalOutlet({ modals }: { modals: ConnectModals }) {\n const type = usePHModal()?.type;\n const routed = useMatches({\n select: (matches) =>\n type &&\n matches.reduce<ComponentType | undefined>(\n (found, match) => match.staticData.modals?.[type] ?? found,\n undefined,\n ),\n });\n const frame = useMatches({\n select: (matches) =>\n matches.reduce<ComponentType<ModalFrameProps> | undefined>(\n (found, match) => match.staticData.modalFrame ?? found,\n undefined,\n ),\n });\n const View = routed || (type && modals[type]);\n if (!type || !View) return null;\n return (\n <ModalErrorBoundary key={type} modal={type}>\n <ModalFrameContext.Provider value={frame}>\n <Suspense name=\"Modal\" fallback={null}>\n {/* A registered view, not one made here. */}\n {createElement(View)}\n </Suspense>\n </ModalFrameContext.Provider>\n </ModalErrorBoundary>\n );\n}\n","// The app's route tree: core's own, or a project's generated one when its\n// tsconfig maps this specifier to the tree.\nimport type { AnyRoute } from \"@tanstack/react-router\";\nimport { useRouter } from \"@tanstack/react-router\";\nimport { useSyncExternalStore } from \"react\";\nimport type {\n FileRoutesById,\n routeTree as appRouteTree,\n} from \"@powerhousedao/connect-core/route-tree\";\nimport type {\n ConnectRouteEntry,\n ConnectRouteRegistration,\n} from \"../registry.js\";\nimport {\n getConnectRegistry,\n notifyConnectRegistry,\n subscribeConnectRegistry,\n} from \"../registry.js\";\nimport type { DRIVE_ROUTE_ID, NODE_ROUTE_ID } from \"./route-data.js\";\n\nexport { DRIVE_PENDING_MS } from \"./route-components.js\";\nexport type { ConnectRouteRegistration } from \"../registry.js\";\n\n/** The home route's id; a tree change that moves it is a type error here. */\nexport const HOME_ROUTE_ID = \"/_app/\" satisfies keyof FileRoutesById;\n/** The `_app` layout's id; a project's _app/ routes nest in it. */\nexport const APP_ROUTE_ID = \"/_app\";\nconst SETTINGS_ROUTE_ID = \"/_app/settings\";\n\ntype RouteOptions = { id?: string; path?: string };\n\n// Generated routes carry their full id only once a router initialises them.\nfunction findChild(parent: AnyRoute, idOrPath: string) {\n const children = (parent.children ?? []) as AnyRoute[];\n const child = children.find((route) => {\n const options = route.options as RouteOptions;\n return options.id === idOrPath || options.path === idOrPath;\n });\n if (!child) throw new Error(`Connect's route tree lacks ${idOrPath}`);\n return child;\n}\n\n// Named, so declarations name the tree instead of inlining its type.\nexport type ConnectRootRoute = typeof appRouteTree;\nexport type ConnectRoutes = {\n routeTree: ConnectRootRoute;\n rootRoute: ConnectRootRoute;\n appRoute: FileRoutesById[typeof APP_ROUTE_ID];\n homeRoute: FileRoutesById[typeof HOME_ROUTE_ID];\n /** The drive layout, around the node route. */\n driveRoute: FileRoutesById[typeof DRIVE_ROUTE_ID];\n /** The open folder or document; the drive's root without a node. */\n nodeRoute: FileRoutesById[typeof NODE_ROUTE_ID];\n settingsRoute: FileRoutesById[typeof SETTINGS_ROUTE_ID];\n};\n\n/** Connect's routes in `routeTree`, core's or a project's generated one, which\n * holds the same routes. Deployment routes attach to these. */\nexport function connectRoutes(routeTree: AnyRoute): ConnectRoutes {\n const appRoute = findChild(routeTree, APP_ROUTE_ID);\n const driveRoute = findChild(appRoute, \"/d/$driveSlug\");\n return {\n routeTree: routeTree as ConnectRootRoute,\n rootRoute: routeTree as ConnectRootRoute,\n appRoute: appRoute as ConnectRoutes[\"appRoute\"],\n homeRoute: findChild(appRoute, \"/\") as ConnectRoutes[\"homeRoute\"],\n driveRoute: driveRoute as ConnectRoutes[\"driveRoute\"],\n nodeRoute: findChild(\n driveRoute,\n \"/{-$nodeSlug}\",\n ) as ConnectRoutes[\"nodeRoute\"],\n settingsRoute: findChild(\n appRoute,\n \"/settings\",\n ) as ConnectRoutes[\"settingsRoute\"],\n };\n}\n\n/** Code routes, e.g. `createRoute({ getParentRoute: () => rootRoute })`, join\n * their parent's file routes; an embedding app without the router plugin adds routes so. */\nexport function addConnectRoutes(routes: readonly AnyRoute[]) {\n for (const route of routes) {\n const parent = route.options.getParentRoute() as AnyRoute | undefined;\n if (!parent) throw new Error(\"A Connect route needs getParentRoute\");\n const children = (parent.children ?? []) as AnyRoute[];\n if (children.includes(route)) continue;\n // A project's file route at its path replaces it, as documented: no warning.\n const path = (route.options as RouteOptions).path;\n if (path && children.some((child) => samePath(child, path))) continue;\n parent.addChildren([...children, route]);\n }\n}\n\nconst trimSlashes = (path: string) => path.replace(/^\\/+|\\/+$/g, \"\");\n\nfunction samePath(route: AnyRoute, path: string) {\n const own = (route.options as RouteOptions).path;\n return own !== undefined && trimSlashes(own) === trimSlashes(path);\n}\n\n/** Takes `routes` out of their parents, e.g. when the module that made them is replaced. */\nexport function removeConnectRoutes(routes: readonly AnyRoute[]) {\n for (const route of routes) {\n const parent = route.options.getParentRoute() as AnyRoute | undefined;\n const children = (parent?.children ?? []) as AnyRoute[];\n if (children.includes(route)) {\n parent?.addChildren(children.filter((child) => child !== route));\n }\n }\n}\n\n/** The routes `registration` gives for `tree`'s core routes. */\nexport function resolveConnectRoutes(\n registration: ConnectRouteRegistration,\n tree: AnyRoute,\n): readonly AnyRoute[] {\n return typeof registration === \"function\"\n ? registration(connectRoutes(tree))\n : registration;\n}\n\n/** Adds code routes to the app's router, e.g. a package's settings tab below\n * `settingsRoute`; a running router takes them in. Returns the unregister. */\nexport function registerConnectRoutes(\n registration: ConnectRouteRegistration,\n): () => void {\n const registry = getConnectRegistry();\n const entry: ConnectRouteEntry = { registration, added: [] };\n registry.routes = [...registry.routes, entry];\n const bound = registry.app;\n if (bound) {\n const tree = bound.bundle.router.routeTree;\n entry.added = [...resolveConnectRoutes(registration, tree)];\n addConnectRoutes(entry.added);\n rebuildRoutes(bound.bundle.router);\n }\n return () => {\n registry.routes = registry.routes.filter((other) => other !== entry);\n const router = registry.app?.bundle.router;\n const ids = new Set<string>(entry.added.map((route) => route.id as string));\n const remove = () => {\n // The router reads a cached match's route later; those go with them.\n router?.clearCache({ filter: (match) => ids.has(match.routeId) });\n removeConnectRoutes(entry.added);\n if (router) rebuildRoutes(router);\n };\n // Leaving a route needs it: from one of these, go home before they go.\n const open = router?.state.matches.some((match) => ids.has(match.routeId));\n if (router && open) {\n void router.navigate({ to: \"/\", replace: true }).then(remove);\n } else {\n remove();\n }\n };\n}\n\n/** A file route a package offers to other Connects; `ph build` generates the\n * list from its hosts/connect/routes, parents before children. */\nexport type PackageRoute = {\n route: AnyRoute;\n /** The route's full id, e.g. `/_app/reports`. */\n id: string;\n /** Its path below its parent, e.g. `/reports`; none for a pathless layout. */\n path?: string;\n /** Its parent's full id: a Connect route's, or one of the package's. */\n parentId: string;\n};\n\nconst ROOT_ID = \"__root__\";\n\n// Before a router initialises a tree, its ids are only in the routes' options.\nfunction findRouteById(tree: AnyRoute, id: string): AnyRoute | undefined {\n if (id === ROOT_ID) return tree;\n const walk = (route: AnyRoute, routeId: string): AnyRoute | undefined => {\n for (const child of (route.children ?? []) as AnyRoute[]) {\n const options = child.options as RouteOptions;\n const own = options.id ?? options.path ?? \"\";\n const childId = `${routeId}${own.startsWith(\"/\") ? \"\" : \"/\"}${own}`;\n if (childId === id) return child;\n if (id.startsWith(childId)) {\n const found = walk(child, childId);\n if (found) return found;\n }\n }\n return undefined;\n };\n return walk(tree, \"\");\n}\n\nfunction routeHolds() {\n const registry = getConnectRegistry();\n registry.routeHolds ??= { count: 0, settled: new Set() };\n return registry.routeHolds;\n}\n\n/** Marks routes as still loading, e.g. a package's; unknown paths wait for\n * them before showing not found. Returns the release. */\nexport function holdConnectRoutes() {\n const holds = routeHolds();\n holds.count++;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n holds.count--;\n if (holds.count > 0) return;\n for (const settle of holds.settled) settle();\n holds.settled.clear();\n };\n}\n\n/** Resolves once no routes are loading, or after `timeoutMs`. */\nexport function connectRoutesSettled(timeoutMs = 10_000) {\n const holds = routeHolds();\n if (holds.count === 0) return Promise.resolve();\n return new Promise<void>((resolve) => {\n const settle = () => {\n clearTimeout(timer);\n holds.settled.delete(settle);\n resolve();\n };\n const timer = setTimeout(settle, timeoutMs);\n holds.settled.add(settle);\n });\n}\n\n/** Adds a package's file routes below the app's routes with the same ids; a\n * route whose id the app already serves is skipped. Returns the unregister. */\nexport function registerPackageRoutes(routes: readonly PackageRoute[]) {\n return registerConnectRoutes(({ routeTree }) => {\n const own = new Map<string, AnyRoute>();\n for (const entry of routes) {\n const parent =\n own.get(entry.parentId) ?? findRouteById(routeTree, entry.parentId);\n if (!parent) {\n console.warn(\n `[connect] no route \"${entry.parentId}\" for \"${entry.id}\"`,\n );\n continue;\n }\n if (findRouteById(routeTree, entry.id)) {\n console.warn(\n `[connect] a route already serves \"${entry.id}\"; skipping`,\n );\n continue;\n }\n const relativeId = entry.path ?? entry.id.slice(entry.parentId.length);\n entry.route.update({\n id: relativeId,\n path: entry.path,\n getParentRoute: () => parent,\n } as never);\n own.set(entry.id, entry.route);\n }\n return [...own.values()];\n });\n}\n\ntype RebuildableRouter = {\n buildRouteTree(): unknown;\n setRoutes(caches: never): void;\n invalidate(): Promise<unknown>;\n};\n\nfunction rebuildRoutes(router: RebuildableRouter) {\n router.setRoutes(router.buildRouteTree() as never);\n void router.invalidate();\n // For views that list routes, e.g. the nav and the settings tabs.\n notifyConnectRegistry();\n}\n\n/** The router's routes by id, read again when routes are added or removed. */\nexport function useRoutesById() {\n const router = useRouter();\n const routesById = () => router.routesById;\n // The server snapshot too: the loading shell is prerendered.\n return useSyncExternalStore(subscribeConnectRegistry, routesById, routesById);\n}\n"],"mappings":";;;;;;AAoBA,MAAa,oBAAoB,cAE/B,KAAA,CAAS;;AAGX,SAAgB,gBAAgB;CAC9B,OAAO,WAAW,iBAAiB;AACrC;;;AAIA,SAAgB,YAAY,OAIzB;CACD,MAAM,MAAM,OAA0B,IAAI;CAC1C,gBAAgB;EACd,MAAM,SAAS,IAAI;EACnB,IAAI,UAAU,CAAC,OAAO,MAAM,OAAO,UAAU;CAC/C,GAAG,CAAC,CAAC;CACL,OACE,oBAAC,UAAD;EACO;EACL,mBAAiB,MAAM;EACvB,WAAW,UAAU;GACnB,MAAM,eAAe;GACrB,aAAa;EACf;EACA,UAAU,UAAU;GAClB,IAAI,MAAM,WAAW,MAAM,eAAe,aAAa;EACzD;EAEA,WAAW,MAAM,YAAY,UAAU,MAAM,cAAc;EAE1D,UAAA,MAAM;CACD,CAAA;AAEZ;;;;;ACrCA,MAAa,mBAAmB;CAC9B,gBAAgB;CAChB,OAAO;CACP,YAAY;CACZ,wBAAwB;CACxB,4BAA4B;CAC5B,4BAA4B;CAC5B,mBAAmB;AACrB;AAMA,IAAM,qBAAN,cAAiC,UAA8C;CAC7E,QAAQ,EAAE,QAAQ,MAAM;CAExB,OAAO,2BAA2B;EAChC,OAAO,EAAE,QAAQ,KAAK;CACxB;CAEA,kBAAkB,OAAgB,MAAiB;EACjD,QAAQ,MACN,iBAAiB,KAAK,MAAM,MAAM,iBAClC,OACA,IACF;CACF;CAEA,SAAS;EACP,OAAO,KAAK,MAAM,SAAS,OAAO,KAAK,MAAM;CAC/C;AACF;;;AAIA,SAAgB,YAAY,EAAE,UAAqC;CACjE,MAAM,OAAO,WAAW,CAAC,EAAE;CAC3B,MAAM,SAAS,WAAW,EACxB,SAAS,YACP,QACA,QAAQ,QACL,OAAO,UAAU,MAAM,WAAW,SAAS,SAAS,OACrD,KAAA,CACF,EACJ,CAAC;CACD,MAAM,QAAQ,WAAW,EACvB,SAAS,YACP,QAAQ,QACL,OAAO,UAAU,MAAM,WAAW,cAAc,OACjD,KAAA,CACF,EACJ,CAAC;CACD,MAAM,OAAO,UAAW,QAAQ,OAAO;CACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,OAAO;CAC3B,OACE,oBAAC,oBAAD;EAA+B,OAAO;EACpC,UAAA,oBAAC,kBAAkB,UAAnB;GAA4B,OAAO;GACjC,UAAA,oBAAC,UAAD;IAAU,MAAK;IAAQ,UAAU;IAE9B,UAAA,cAAc,IAAI;GACX,CAAA;EACgB,CAAA;CACV,GAPK,IAOL;AAExB;;;;AC9DA,MAAa,gBAAgB;;AAE7B,MAAa,eAAe;AAM5B,SAAS,UAAU,QAAkB,UAAkB;CAErD,MAAM,SADY,OAAO,YAAY,CAAC,EAAA,CACf,MAAM,UAAU;EACrC,MAAM,UAAU,MAAM;EACtB,OAAO,QAAQ,OAAO,YAAY,QAAQ,SAAS;CACrD,CAAC;CACD,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,8BAA8B,UAAU;CACpE,OAAO;AACT;;;AAkBA,SAAgB,cAAc,WAAoC;CAChE,MAAM,WAAW,UAAU,WAAW,YAAY;CAClD,MAAM,aAAa,UAAU,UAAU,eAAe;CACtD,OAAO;EACM;EACX,WAAW;EACD;EACV,WAAW,UAAU,UAAU,GAAG;EACtB;EACZ,WAAW,UACT,YACA,eACF;EACA,eAAe,UACb,UACA,WACF;CACF;AACF;;;AAIA,SAAgB,iBAAiB,QAA6B;CAC5D,KAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,SAAS,MAAM,QAAQ,eAAe;EAC5C,IAAI,CAAC,QAAQ,MAAM,IAAI,MAAM,sCAAsC;EACnE,MAAM,WAAY,OAAO,YAAY,CAAC;EACtC,IAAI,SAAS,SAAS,KAAK,GAAG;EAE9B,MAAM,OAAQ,MAAM,QAAyB;EAC7C,IAAI,QAAQ,SAAS,MAAM,UAAU,SAAS,OAAO,IAAI,CAAC,GAAG;EAC7D,OAAO,YAAY,CAAC,GAAG,UAAU,KAAK,CAAC;CACzC;AACF;AAEA,MAAM,eAAe,SAAiB,KAAK,QAAQ,cAAc,EAAE;AAEnE,SAAS,SAAS,OAAiB,MAAc;CAC/C,MAAM,MAAO,MAAM,QAAyB;CAC5C,OAAO,QAAQ,KAAA,KAAa,YAAY,GAAG,MAAM,YAAY,IAAI;AACnE;;AAGA,SAAgB,oBAAoB,QAA6B;CAC/D,KAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,SAAS,MAAM,QAAQ,eAAe;EAC5C,MAAM,WAAY,QAAQ,YAAY,CAAC;EACvC,IAAI,SAAS,SAAS,KAAK,GACzB,QAAQ,YAAY,SAAS,QAAQ,UAAU,UAAU,KAAK,CAAC;CAEnE;AACF;;AAGA,SAAgB,qBACd,cACA,MACqB;CACrB,OAAO,OAAO,iBAAiB,aAC3B,aAAa,cAAc,IAAI,CAAC,IAChC;AACN;;;AAIA,SAAgB,sBACd,cACY;CACZ,MAAM,WAAW,mBAAmB;CACpC,MAAM,QAA2B;EAAE;EAAc,OAAO,CAAC;CAAE;CAC3D,SAAS,SAAS,CAAC,GAAG,SAAS,QAAQ,KAAK;CAC5C,MAAM,QAAQ,SAAS;CACvB,IAAI,OAAO;EACT,MAAM,OAAO,MAAM,OAAO,OAAO;EACjC,MAAM,QAAQ,CAAC,GAAG,qBAAqB,cAAc,IAAI,CAAC;EAC1D,iBAAiB,MAAM,KAAK;EAC5B,cAAc,MAAM,OAAO,MAAM;CACnC;CACA,aAAa;EACX,SAAS,SAAS,SAAS,OAAO,QAAQ,UAAU,UAAU,KAAK;EACnE,MAAM,SAAS,SAAS,KAAK,OAAO;EACpC,MAAM,MAAM,IAAI,IAAY,MAAM,MAAM,KAAK,UAAU,MAAM,EAAY,CAAC;EAC1E,MAAM,eAAe;GAEnB,QAAQ,WAAW,EAAE,SAAS,UAAU,IAAI,IAAI,MAAM,OAAO,EAAE,CAAC;GAChE,oBAAoB,MAAM,KAAK;GAC/B,IAAI,QAAQ,cAAc,MAAM;EAClC;EAEA,MAAM,OAAO,QAAQ,MAAM,QAAQ,MAAM,UAAU,IAAI,IAAI,MAAM,OAAO,CAAC;EACzE,IAAI,UAAU,MACZ,OAAY,SAAS;GAAE,IAAI;GAAK,SAAS;EAAK,CAAC,CAAC,CAAC,KAAK,MAAM;OAE5D,OAAO;CAEX;AACF;AAcA,MAAM,UAAU;AAGhB,SAAS,cAAc,MAAgB,IAAkC;CACvE,IAAI,OAAO,SAAS,OAAO;CAC3B,MAAM,QAAQ,OAAiB,YAA0C;EACvE,KAAK,MAAM,SAAU,MAAM,YAAY,CAAC,GAAkB;GACxD,MAAM,UAAU,MAAM;GACtB,MAAM,MAAM,QAAQ,MAAM,QAAQ,QAAQ;GAC1C,MAAM,UAAU,GAAG,UAAU,IAAI,WAAW,GAAG,IAAI,KAAK,MAAM;GAC9D,IAAI,YAAY,IAAI,OAAO;GAC3B,IAAI,GAAG,WAAW,OAAO,GAAG;IAC1B,MAAM,QAAQ,KAAK,OAAO,OAAO;IACjC,IAAI,OAAO,OAAO;GACpB;EACF;CAEF;CACA,OAAO,KAAK,MAAM,EAAE;AACtB;AAEA,SAAS,aAAa;CACpB,MAAM,WAAW,mBAAmB;CACpC,SAAS,eAAe;EAAE,OAAO;EAAG,yBAAS,IAAI,IAAI;CAAE;CACvD,OAAO,SAAS;AAClB;;;AAIA,SAAgB,oBAAoB;CAClC,MAAM,QAAQ,WAAW;CACzB,MAAM;CACN,IAAI,WAAW;CACf,aAAa;EACX,IAAI,UAAU;EACd,WAAW;EACX,MAAM;EACN,IAAI,MAAM,QAAQ,GAAG;EACrB,KAAK,MAAM,UAAU,MAAM,SAAS,OAAO;EAC3C,MAAM,QAAQ,MAAM;CACtB;AACF;;AAGA,SAAgB,qBAAqB,YAAY,KAAQ;CACvD,MAAM,QAAQ,WAAW;CACzB,IAAI,MAAM,UAAU,GAAG,OAAO,QAAQ,QAAQ;CAC9C,OAAO,IAAI,SAAe,YAAY;EACpC,MAAM,eAAe;GACnB,aAAa,KAAK;GAClB,MAAM,QAAQ,OAAO,MAAM;GAC3B,QAAQ;EACV;EACA,MAAM,QAAQ,WAAW,QAAQ,SAAS;EAC1C,MAAM,QAAQ,IAAI,MAAM;CAC1B,CAAC;AACH;;;AAIA,SAAgB,sBAAsB,QAAiC;CACrE,OAAO,uBAAuB,EAAE,gBAAgB;EAC9C,MAAM,sBAAM,IAAI,IAAsB;EACtC,KAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,SACJ,IAAI,IAAI,MAAM,QAAQ,KAAK,cAAc,WAAW,MAAM,QAAQ;GACpE,IAAI,CAAC,QAAQ;IACX,QAAQ,KACN,uBAAuB,MAAM,SAAS,SAAS,MAAM,GAAG,EAC1D;IACA;GACF;GACA,IAAI,cAAc,WAAW,MAAM,EAAE,GAAG;IACtC,QAAQ,KACN,qCAAqC,MAAM,GAAG,YAChD;IACA;GACF;GACA,MAAM,aAAa,MAAM,QAAQ,MAAM,GAAG,MAAM,MAAM,SAAS,MAAM;GACrE,MAAM,MAAM,OAAO;IACjB,IAAI;IACJ,MAAM,MAAM;IACZ,sBAAsB;GACxB,CAAU;GACV,IAAI,IAAI,MAAM,IAAI,MAAM,KAAK;EAC/B;EACA,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC;CACzB,CAAC;AACH;AAQA,SAAS,cAAc,QAA2B;CAChD,OAAO,UAAU,OAAO,eAAe,CAAU;CACjD,OAAY,WAAW;CAEvB,sBAAsB;AACxB;;AAGA,SAAgB,gBAAgB;CAC9B,MAAM,SAAS,UAAU;CACzB,MAAM,mBAAmB,OAAO;CAEhC,OAAO,qBAAqB,0BAA0B,YAAY,UAAU;AAC9E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as getConnectRegistry } from "./registry-DCZHBP7M.js";
|
|
2
|
-
import { c as CoreNotFound, n as getConnectPluginUi, s as CoreError, t as applyConnectPluginUi } from "./plugin-ui-
|
|
3
|
-
import { i as connectRoutes, r as addConnectRoutes, u as resolveConnectRoutes } from "./route-tree-
|
|
4
|
-
import {
|
|
2
|
+
import { c as CoreNotFound, n as getConnectPluginUi, s as CoreError, t as applyConnectPluginUi } from "./plugin-ui-sO7AJLHj.js";
|
|
3
|
+
import { i as connectRoutes, r as addConnectRoutes, u as resolveConnectRoutes } from "./route-tree-D0aszMrk.js";
|
|
4
|
+
import { S as CONTENT_VIEW_ID, b as driveTitle, f as setSettingsRoute, p as settingsTabs, u as keepOpenedFrom } from "./sidebar-DVQCwBYR.js";
|
|
5
5
|
import { FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, OPENED_FROM_STATE_KEY, PHStoreProvider, REVISION_HISTORY_PAGE_PARAM, REVISION_HISTORY_PARAM, applySearchUpdate, createDriveArrivals, findDriveBySlugOrId, getPHStoreSubscribe, isRoutedModal, isSettingsTarget, makeDriveSlug, modalFromSearch, openedFromIndex, parseRevisionHistoryPage, resolveSearchUpdate, searchParamsToString } from "@powerhousedao/reactor-browser";
|
|
6
6
|
import { RouterProvider, createRouter, retainSearchParams, useRouterState } from "@tanstack/react-router";
|
|
7
7
|
import { useMemo } from "react";
|
|
@@ -28,7 +28,7 @@ const DETAIL = { devtools: {
|
|
|
28
28
|
let marking = 0;
|
|
29
29
|
let clickedAt;
|
|
30
30
|
/** On in dev builds; elsewhere only with the runtime flag. */
|
|
31
|
-
function routerPerfEnabled(dev = import.meta.env
|
|
31
|
+
function routerPerfEnabled(dev = !!import.meta.env?.DEV) {
|
|
32
32
|
if (dev) return true;
|
|
33
33
|
try {
|
|
34
34
|
return new URLSearchParams(location.search).get("perf") === "1" || localStorage.getItem("ph:perf") === "1";
|
|
@@ -444,7 +444,7 @@ function getConnectAppRouter(store, options) {
|
|
|
444
444
|
const registry = getConnectRegistry();
|
|
445
445
|
const current = registry.app;
|
|
446
446
|
if (current) {
|
|
447
|
-
if (import.meta.env
|
|
447
|
+
if (import.meta.env?.DEV && current.store !== store) throw new Error("Connect's router is already bound to another PH store");
|
|
448
448
|
return current.bundle;
|
|
449
449
|
}
|
|
450
450
|
const { routes, ...rest } = options();
|
|
@@ -488,4 +488,4 @@ function ConnectCoreApp(props) {
|
|
|
488
488
|
//#endregion
|
|
489
489
|
export { PERF_STORAGE_KEY as _, createConnectRouter as a, markRouterNavigations as b, GLOBAL_SEARCH_PARAMS as c, parseConnectSearch as d, stringifyConnectSearch as f, connectScrollRestoration as g, bindConnectScroll as h, bindConnectRouter as i, connectSearchMiddlewares as l, validateDriveSearch as m, disposeConnectAppRouter as n, createConnectNavigation as o, validateConnectSearch as p, getConnectAppRouter as r, FEATURE_FLAG_PARAM_PREFIX as s, ConnectCoreApp as t, definedSearch as u, ROUTER_MEASURES as v, routerPerfEnabled as x, markNavigationClick as y };
|
|
490
490
|
|
|
491
|
-
//# sourceMappingURL=router-
|
|
491
|
+
//# sourceMappingURL=router-8pekwJsk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-8pekwJsk.js","names":[],"sources":["../src/router/perf-marks.ts","../src/router/scroll.ts","../src/router/search.ts","../src/router/navigation.ts","../src/router/connect-router.ts","../src/router/app-router.ts","../src/router/core-app.tsx"],"sourcesContent":["import type { AnyRouter } from \"@tanstack/react-router\";\n\n/** `localStorage[PERF_STORAGE_KEY] = \"1\"` or `?perf=1` turns the marks on in production. */\nexport const PERF_STORAGE_KEY = \"ph:perf\";\n\n/** The measures each navigation writes, as the bench reads them. */\nexport const ROUTER_MEASURES = {\n /** `navigation.open` to the router starting the navigation. */\n click: \"nav click\",\n /** Route loaders, until the router commits the matches. */\n loader: \"nav loader\",\n /** The commit until React has rendered it. */\n commit: \"nav commit\",\n /** The click (or the navigation's start) to the next frame after render. */\n total: \"nav total\",\n} as const;\n\n// Chrome's Performance panel shows these as \"Connect › Router\".\nconst DETAIL = {\n devtools: { dataType: \"track-entry\", track: \"Router\", trackGroup: \"Connect\" },\n} as const;\n\nlet marking = 0;\nlet clickedAt: number | undefined;\n\n/** On in dev builds; elsewhere only with the runtime flag. */\nexport function routerPerfEnabled(dev = !!import.meta.env?.DEV) {\n if (dev) return true;\n try {\n return (\n new URLSearchParams(location.search).get(\"perf\") === \"1\" ||\n localStorage.getItem(PERF_STORAGE_KEY) === \"1\"\n );\n } catch {\n return false;\n }\n}\n\n/** Marks a navigation's click; a no-op unless a router is being marked. */\nexport function markNavigationClick() {\n if (!marking) return;\n clickedAt = performance.now();\n performance.mark(\"nav:click\", { detail: DETAIL });\n}\n\nfunction measure(name: string, start: number | undefined, end: number) {\n if (start === undefined) return;\n performance.measure(name, { start, end, detail: DETAIL });\n}\n\n/** Writes each navigation's phases as performance measures; returns the unsubscribe. */\nexport function markRouterNavigations(\n router: Pick<AnyRouter, \"subscribe\">,\n enabled = routerPerfEnabled(),\n) {\n if (!enabled) return () => {};\n marking++;\n let generation = 0;\n let clicked: number | undefined;\n let navigated: number | undefined;\n let loading: number | undefined;\n let loaded: number | undefined;\n const unsubscribes = [\n router.subscribe(\"onBeforeNavigate\", () => {\n generation++;\n navigated = performance.now();\n clicked = clickedAt;\n clickedAt = undefined;\n measure(ROUTER_MEASURES.click, clicked, navigated);\n loading = loaded = undefined;\n }),\n router.subscribe(\"onBeforeLoad\", () => {\n loading = performance.now();\n }),\n router.subscribe(\"onLoad\", () => {\n loaded = performance.now();\n measure(ROUTER_MEASURES.loader, loading, loaded);\n }),\n router.subscribe(\"onRendered\", () => {\n measure(ROUTER_MEASURES.commit, loaded, performance.now());\n const current = generation;\n const start = clicked ?? navigated;\n // The frame after render, as close to paint as a script sees.\n requestAnimationFrame(() =>\n setTimeout(() => {\n if (current === generation) {\n measure(ROUTER_MEASURES.total, start, performance.now());\n }\n }),\n );\n }),\n ];\n return () => {\n marking--;\n for (const unsubscribe of unsubscribes) unsubscribe();\n };\n}\n","import type {\n AnyRouter,\n ParsedLocation,\n RouterHistory,\n} from \"@tanstack/react-router\";\n\ntype ScrollRouter = Pick<AnyRouter, \"subscribe\" | \"_scroll\" | \"options\"> & {\n history: RouterHistory;\n};\n\nconst TRAVERSALS = new Set([\"BACK\", \"FORWARD\", \"GO\"]);\nconst traversals = new WeakMap<object, { traversal: boolean }>();\n\n/** The router's `scrollRestoration`: on for back/forward only; other\n * navigations reset the content view in `bindConnectScroll`. */\nexport function connectScrollRestoration() {\n // The first load restores a reloaded page's scroll.\n const state = { traversal: true };\n const restore = ({ location }: { location: ParsedLocation }) =>\n state.traversal || !!location.hash;\n traversals.set(restore, state);\n return restore;\n}\n\n/** Tracks history actions, and resets a scrolled content view on new views. */\nexport function bindConnectScroll(router: ScrollRouter, contentViewId: string) {\n const state = traversals.get(router.options.scrollRestoration as object);\n if (!state) return () => {};\n const unsubscribeHistory = router.history.subscribe(({ action }) => {\n state.traversal = TRAVERSALS.has(action.type);\n });\n if (typeof document === \"undefined\") return unsubscribeHistory;\n\n // Read in the scroll event, where layout is clean, not at navigation.\n let scrolledView: Element | undefined;\n let windowScrolled = false;\n const onScroll = (event: Event) => {\n const target = event.target;\n if (target === document) {\n windowScrolled = window.scrollY > 0 || window.scrollX > 0;\n } else if (target instanceof Element && target.id === contentViewId) {\n scrolledView = target.scrollTop > 0 ? target : undefined;\n }\n };\n document.addEventListener(\"scroll\", onScroll, {\n capture: true,\n passive: true,\n });\n\n let resetScroll = true;\n const unsubscribes = [\n unsubscribeHistory,\n // The navigation's `resetScroll`, before the router clears it on render.\n router.subscribe(\"onBeforeRouteMount\", () => {\n resetScroll = router._scroll.n;\n }),\n router.subscribe(\"onRendered\", ({ toLocation }) => {\n if (state.traversal || toLocation.hash || !resetScroll) return;\n if (scrolledView?.isConnected) scrolledView.scrollTo(0, 0);\n if (windowScrolled) window.scrollTo(0, 0);\n scrolledView = undefined;\n windowScrolled = false;\n }),\n ];\n return () => {\n document.removeEventListener(\"scroll\", onScroll, { capture: true });\n for (const unsubscribe of unsubscribes) unsubscribe();\n };\n}\n","import {\n FEATURE_FLAG_PARAM_PREFIX,\n GLOBAL_SEARCH_PARAMS,\n parseRevisionHistoryPage,\n REVISION_HISTORY_PAGE_PARAM,\n REVISION_HISTORY_PARAM,\n searchParamsToString,\n} from \"@powerhousedao/reactor-browser\";\nimport type { SearchMiddleware } from \"@tanstack/react-router\";\nimport { retainSearchParams } from \"@tanstack/react-router\";\n\n// Shared with reactor-browser's fallback navigation.\nexport { FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS };\n\n/** Connect's query params: plain strings, as in the URL. */\nexport type ConnectSearch = Record<string, string | undefined>;\n\nconst retainFeatureFlags: SearchMiddleware<ConnectSearch> = ({\n search,\n next,\n}) => {\n const result = { ...next(search) };\n for (const [key, value] of Object.entries(search)) {\n if (key.startsWith(FEATURE_FLAG_PARAM_PREFIX) && !(key in result)) {\n result[key] = value;\n }\n }\n return result;\n};\n\n/** The root route's middlewares; they apply to every navigation and redirect. */\nexport const connectSearchMiddlewares: SearchMiddleware<ConnectSearch>[] = [\n retainSearchParams<ConnectSearch>([...GLOBAL_SEARCH_PARAMS]),\n retainFeatureFlags,\n];\n\n/** Lets every param through; routes add none of their own. */\nexport function validateConnectSearch(\n search: Record<string, unknown>,\n): ConnectSearch {\n return search as ConnectSearch;\n}\n\n/** Parses a query string into plain string values, unlike the JSON default. */\nexport function parseConnectSearch(searchStr: string): ConnectSearch {\n return Object.fromEntries(new URLSearchParams(searchStr));\n}\n\n/** Writes plain `key=value` pairs, so other readers of the URL see strings. */\nexport function stringifyConnectSearch(search: Record<string, unknown>) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(search)) {\n if (value === undefined || value === null) continue;\n params.set(key, typeof value === \"string\" ? value : JSON.stringify(value));\n }\n const searchStr = searchParamsToString(params);\n return searchStr ? `?${searchStr}` : \"\";\n}\n\n/** The drive route's params: `?history` opens the document's revision history,\n * and `historyPage` (a positive integer; 1 is dropped) pages it. */\nexport function validateDriveSearch(\n search: Record<string, unknown>,\n): ConnectSearch {\n const result = { ...search } as ConnectSearch;\n if (result[REVISION_HISTORY_PARAM] === undefined) return result;\n result[REVISION_HISTORY_PARAM] = \"\";\n const page = parseRevisionHistoryPage(result[REVISION_HISTORY_PAGE_PARAM]);\n if (page > 1) result[REVISION_HISTORY_PAGE_PARAM] = String(page);\n // Undefined, not deleted: a route's search is merged over its parent's.\n else result[REVISION_HISTORY_PAGE_PARAM] = undefined;\n return result;\n}\n\n/** The defined values of `search`, for callers that take plain records. */\nexport function definedSearch(search: object): Record<string, string> {\n const record: Record<string, string> = {};\n for (const [key, value] of Object.entries(search)) {\n if (typeof value === \"string\") record[key] = value;\n else if (value !== undefined && value !== null) {\n record[key] = JSON.stringify(value);\n }\n }\n return record;\n}\n","import type {\n PHDriveTarget,\n PHNavigation,\n PHNavigationTarget,\n PHSettingsTarget,\n SetSearchParams,\n} from \"@powerhousedao/reactor-browser\";\nimport {\n applySearchUpdate,\n findDriveBySlugOrId,\n isSettingsTarget,\n makeDriveSlug,\n OPENED_FROM_STATE_KEY,\n openedFromIndex,\n resolveSearchUpdate,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n AnyRouter,\n HistoryState,\n MakeRouteMatchUnion,\n} from \"@tanstack/react-router\";\nimport { useRouterState } from \"@tanstack/react-router\";\nimport { useMemo } from \"react\";\nimport type { ConnectRouterBundle } from \"./connect-router.js\";\nimport { markNavigationClick } from \"./perf-marks.js\";\nimport { definedSearch } from \"./search.js\";\nimport { keepOpenedFrom, settingsTabs } from \"./settings.js\";\n\n// Hover intent: a pointer passing over cards doesn't preload each of them.\nconst PRELOAD_DELAY_MS = 50;\n\n/** The PH navigation backed by `router`; its hooks take the router directly,\n * so they work outside the RouterProvider. */\nexport function createConnectNavigation(\n connectRouter: ConnectRouterBundle,\n): PHNavigation & { dispose(): void } {\n const { router, homeRoute, nodeRoute, settingsRoute } = connectRouter;\n // Settings tabs can come from a project's routes, unknown to Connect's types.\n const anyRouter = router as unknown as AnyRouter;\n\n // A listed drive is addressed by its canonical slug, whatever form came in.\n const driveParams = (target: PHDriveTarget) => {\n const drive = findDriveBySlugOrId(\n router.options.context.store,\n target.driveSlug,\n );\n return {\n driveSlug: drive ? makeDriveSlug(drive) : target.driveSlug,\n nodeSlug: target.nodeSlug || undefined,\n };\n };\n\n // `true` is the first tab, so the URL names a tab without a redirect.\n const settingsPath = ({ settings }: PHSettingsTarget) => {\n const tab =\n settings === true ? settingsTabs(anyRouter).at(0)?.id : settings;\n return tab ? `${settingsRoute.fullPath}/${tab}` : settingsRoute.fullPath;\n };\n\n // In-document writes keep the entry's state, so its opened-from index too.\n const setSearch: PHNavigation[\"setSearch\"] = (update, options) => {\n void router.navigate({\n to: \".\",\n search: (prev) => applySearchUpdate({}, update(definedSearch(prev))),\n state: true,\n replace: options?.replace,\n resetScroll: false,\n });\n };\n\n const showsSettings = () =>\n router.state.matches.some((match) => match.routeId === settingsRoute.id);\n\n // A push remembers the entry it leaves; a replace keeps what that one had,\n // as does a move between settings tabs.\n const openedFromState = (\n replace: boolean | undefined,\n target: PHNavigationTarget | undefined,\n ) => {\n const { state } = router.history.location;\n const next =\n replace || (isSettingsTarget(target) && showsSettings())\n ? keepOpenedFrom(state)\n : ({\n [OPENED_FROM_STATE_KEY]: state.__TSR_index,\n } as unknown as HistoryState);\n return () => next;\n };\n\n const targetKey = (target: PHNavigationTarget | undefined) => {\n if (!target) return homeRoute.id;\n if (isSettingsTarget(target)) return settingsPath(target);\n const { driveSlug, nodeSlug } = driveParams(target);\n return JSON.stringify([driveSlug, nodeSlug ?? \"\"]);\n };\n let keyedMatches: readonly MakeRouteMatchUnion[] | undefined;\n let matchesKey: string | undefined;\n const currentKey = (matches: readonly MakeRouteMatchUnion[]) => {\n if (matches === keyedMatches) return matchesKey;\n keyedMatches = matches;\n const drive = matches.find((match) => match.routeId === nodeRoute.id);\n const settings = matches.some(\n (match) => match.routeId === settingsRoute.id,\n );\n if (drive) {\n matchesKey = targetKey(drive.params as PHDriveTarget);\n } else if (settings) {\n // A tab's key is its path, as settingsPath builds it.\n matchesKey = matches.at(-1)?.fullPath.replace(/\\/$/, \"\");\n } else {\n matchesKey = matches.find(\n (match) => match.routeId === homeRoute.id,\n )?.routeId;\n }\n return matchesKey;\n };\n\n // Hrefs depend only on the target and the global params of the current search.\n const hrefs = new Map<string, string>();\n let hrefsSearch: string | undefined;\n\n const setSearchParams: SetSearchParams = (update, options) =>\n setSearch((prev) => resolveSearchUpdate(prev, update), options);\n\n let preloadTimer: ReturnType<typeof setTimeout> | undefined;\n return {\n location: () => router.history.location,\n // The root route's middlewares add the global params to `search`.\n open: (target, options) => {\n markNavigationClick();\n const search = applySearchUpdate({}, options?.search ?? {});\n const replace = options?.replace;\n const state = openedFromState(replace, target);\n if (!target) {\n void router.navigate({\n to: homeRoute.fullPath,\n search,\n replace,\n state,\n });\n return;\n }\n if (isSettingsTarget(target)) {\n void anyRouter.navigate({\n to: settingsPath(target),\n search,\n replace,\n state,\n });\n return;\n }\n void router.navigate({\n to: nodeRoute.fullPath,\n params: driveParams(target),\n search,\n replace,\n state,\n });\n },\n // The public href, base path included; global params as `open` keeps them.\n hrefFor: (target) => {\n const { searchStr } = router.latestLocation;\n if (searchStr !== hrefsSearch) {\n hrefs.clear();\n hrefsSearch = searchStr;\n }\n const key = targetKey(target);\n let href = hrefs.get(key);\n if (href === undefined) {\n const location = !target\n ? router.buildLocation({ to: homeRoute.fullPath, search: {} })\n : isSettingsTarget(target)\n ? anyRouter.buildLocation({ to: settingsPath(target), search: {} })\n : router.buildLocation({\n to: nodeRoute.fullPath,\n params: driveParams(target),\n search: {},\n });\n href = location.publicHref;\n hrefs.set(key, href);\n }\n return href;\n },\n // One key per shown matches, so each link's selector is a string compare.\n useIsCurrent: (target) => {\n // The settings page itself is current on any of its tabs.\n const anyTab = isSettingsTarget(target) && target.settings === true;\n const key = anyTab ? `${settingsRoute.fullPath}/` : targetKey(target);\n return useRouterState({\n router,\n select: (state) => {\n const current = currentKey(state.matches);\n return anyTab ? !!current?.startsWith(key) : current === key;\n },\n });\n },\n preload: (target) => {\n clearTimeout(preloadTimer);\n if (!target) return;\n preloadTimer = setTimeout(() => {\n const preloading = isSettingsTarget(target)\n ? anyRouter.preloadRoute({ to: settingsPath(target) })\n : router.preloadRoute({\n to: nodeRoute.fullPath,\n params: driveParams(target),\n });\n preloading.catch(() => undefined);\n }, PRELOAD_DELAY_MS);\n },\n setSearch,\n // The presented matches' params, else the location's.\n useSearchParams() {\n const search = useRouterState({\n router,\n select: (state) =>\n state.matches.at(-1)?.search ?? state.location.search,\n });\n return useMemo(() => definedSearch(search), [search]);\n },\n useSetSearchParams: () => setSearchParams,\n closeOpened: () => {\n const { state } = router.history.location;\n const from = openedFromIndex(state, state.__TSR_index);\n if (from === undefined) return false;\n router.history.go(from - state.__TSR_index);\n return true;\n },\n dispose: () => clearTimeout(preloadTimer),\n };\n}\n","import type { DriveArrivals, PHStore } from \"@powerhousedao/reactor-browser\";\nimport {\n getPHStoreSubscribe,\n isRoutedModal,\n modalFromSearch,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n AnyRoute,\n ErrorRouteComponent,\n NotFoundRouteComponent,\n RouteComponent,\n Router,\n RouterHistory,\n} from \"@tanstack/react-router\";\nimport { createRouter } from \"@tanstack/react-router\";\nimport type { ErrorInfo, PropsWithChildren, ReactElement } from \"react\";\nimport type { ConnectPluginUiSet } from \"../plugins/plugin-ui.js\";\nimport { applyConnectPluginUi } from \"../plugins/plugin-ui.js\";\nimport { markRouterNavigations } from \"./perf-marks.js\";\nimport { bindConnectScroll, connectScrollRestoration } from \"./scroll.js\";\nimport type { DriveRouteData } from \"./drive-route-loader.js\";\nimport type { ConnectRootRoute, ConnectRoutes } from \"./route-tree.js\";\nimport { createConnectNavigation } from \"./navigation.js\";\nimport { CoreError, CoreNotFound } from \"./core-views.js\";\nimport { CONTENT_VIEW_ID } from \"./route-components.js\";\nimport { addConnectRoutes, connectRoutes } from \"./route-tree.js\";\nimport { setSettingsRoute } from \"./settings.js\";\nimport { parseConnectSearch, stringifyConnectSearch } from \"./search.js\";\nimport { driveTitle } from \"./titles.js\";\n\nexport type ConnectRouterOptions = {\n store: PHStore;\n arrivals?: DriveArrivals;\n basepath?: string;\n history?: RouterHistory;\n InnerWrap?: (props: PropsWithChildren) => ReactElement;\n /** Shown while a route's loader or chunks are pending, after the router's `pendingMs`. */\n pendingComponent?: RouteComponent;\n /** Any route's loader or render error; the plugins', else core's error view. */\n errorComponent?: ErrorRouteComponent;\n /** The active plugins' UI, set on the routes that show core's views. */\n pluginUi?: ConnectPluginUiSet;\n /** Loaders' notFound(), e.g. a missing drive's; core's page by default. */\n notFoundComponent?: NotFoundRouteComponent;\n /** The tree to route with: `@powerhousedao/connect/route-tree`, core's or a project's. */\n routeTree: AnyRoute;\n /** Code routes added to the file routes; see `addConnectRoutes`. A function\n * receives the tree's core routes to attach to. */\n routes?:\n | readonly AnyRoute[]\n | ((routes: ConnectRoutes) => readonly AnyRoute[]);\n /** Reports a route's loader or render error; logged by default. */\n onCatch?: (error: unknown, info?: ErrorInfo) => void;\n /** Ends every document title; \"Connect\" without one. */\n appName?: string;\n /** Renders the loading shell: layouts show their pendingComponent, not their page. */\n shell?: boolean;\n};\n\nfunction reportRouteError(error: unknown, info?: ErrorInfo) {\n console.error(error, info?.componentStack ?? \"\");\n}\n\n/** The router over `TRouteTree`; a project's generated tree registers its own. */\nexport type ConnectRouterFor<TRouteTree extends AnyRoute> = Router<\n TRouteTree,\n \"never\",\n false,\n RouterHistory,\n Record<string, any>\n>;\n// Written out, not inferred; see ConnectRootRoute.\nexport type ConnectRouter = ConnectRouterFor<ConnectRootRoute>;\nexport type ConnectRouterBundle = Pick<\n ConnectRoutes,\n \"homeRoute\" | \"driveRoute\" | \"nodeRoute\" | \"settingsRoute\"\n> & { router: ConnectRouter };\n\nexport function createConnectRouter(\n options: ConnectRouterOptions,\n): ConnectRouterBundle {\n const { routeTree, homeRoute, driveRoute, nodeRoute, settingsRoute } =\n connectRoutes(options.routeTree);\n if (options.pluginUi) applyConnectPluginUi(routeTree, options.pluginUi);\n if (options.routes) {\n addConnectRoutes(\n typeof options.routes === \"function\"\n ? options.routes(connectRoutes(routeTree))\n : options.routes,\n );\n }\n setSettingsRoute(settingsRoute);\n const router = createRouter({\n routeTree,\n basepath: options.basepath,\n history: options.history,\n context: {\n store: options.store,\n arrivals: options.arrivals,\n appName: options.appName,\n shell: options.shell,\n },\n parseSearch: parseConnectSearch,\n stringifySearch: stringifyConnectSearch,\n scrollRestoration: connectScrollRestoration(),\n scrollToTopSelectors: [`#${CONTENT_VIEW_ID}`],\n InnerWrap: options.InnerWrap,\n defaultPendingComponent: options.pendingComponent,\n defaultErrorComponent:\n options.errorComponent ?? options.pluginUi?.errorComponent ?? CoreError,\n // Not per route: a route's notFoundComponent mounts a boundary that\n // re-renders on every navigation.\n defaultNotFoundComponent: options.notFoundComponent ?? CoreNotFound,\n defaultOnCatch: options.onCatch ?? reportRouteError,\n });\n return { router, homeRoute, driveRoute, nodeRoute, settingsRoute };\n}\n\nfunction writeSelection(store: PHStore, data: DriveRouteData | undefined) {\n // Drive first: a new drive resets the node.\n store.selectedDriveId = data?.driveId;\n store.selectedNodeId = data?.nodeId;\n}\n\n/** Makes `router` the store's navigation and writes the selection it commits. */\nexport function bindConnectRouter(\n connectRouter: ConnectRouterBundle,\n store: PHStore,\n) {\n const { router, nodeRoute } = connectRouter;\n\n // Only committed matches select; pending ones keep the open view.\n const commitSelection = () => {\n const matches = router.state.matches;\n const drive = matches.find((match) => match.routeId === nodeRoute.id);\n if (drive) {\n if (drive.status === \"success\" && drive.loaderData) {\n writeSelection(store, drive.loaderData);\n } else if (matches.some((match) => match.status === \"notFound\")) {\n // The drive's 404 page shows no drive.\n writeSelection(store, undefined);\n }\n return;\n }\n // Any other page (home, settings, a project's, a 404) shows no drive.\n const shown = matches.at(-1)?.status;\n if (shown === \"success\" || shown === \"notFound\") {\n writeSelection(store, undefined);\n }\n };\n\n // A routed modal is the URL's: the store holds what the location names,\n // unless a confirmation is open over it.\n const syncModal = () => {\n const routed = modalFromSearch(router.state.location.search);\n if (store.modal && !isRoutedModal(store.modal)) return;\n if (routed) {\n if (JSON.stringify(store.modal) !== JSON.stringify(routed)) {\n store.modal = routed;\n }\n } else if (isRoutedModal(store.modal)) {\n store.modal = undefined;\n }\n };\n\n // Set once, before the first render; selection setters navigate from the start.\n const navigation = createConnectNavigation(connectRouter);\n store.navigation = navigation;\n\n // The node route's head reads names from the store; a rename re-runs it.\n const shownTitle = () => {\n const node = router.state.matches.find((m) => m.routeId === nodeRoute.id);\n return driveTitle(store, node?.loaderData, router.options.context.appName);\n };\n let title = shownTitle();\n const retitle = () => {\n const next = shownTitle();\n if (next === title) return;\n title = next;\n void router.invalidate({ filter: (m) => m.routeId === nodeRoute.id });\n };\n\n // Before mount, so the view and scroll restoration see the new selection.\n const unsubscribes = [\n router.subscribe(\"onBeforeRouteMount\", commitSelection),\n router.subscribe(\"onResolved\", commitSelection),\n router.subscribe(\"onResolved\", () => {\n title = shownTitle();\n }),\n router.subscribe(\"onResolved\", syncModal),\n getPHStoreSubscribe(store, \"drives\")(retitle),\n markRouterNavigations(router),\n ];\n const unbindScroll = bindConnectScroll(router, CONTENT_VIEW_ID);\n commitSelection();\n syncModal();\n\n return () => {\n navigation.dispose();\n unbindScroll();\n for (const unsubscribe of unsubscribes) unsubscribe();\n if (store.navigation === navigation) store.navigation = undefined;\n };\n}\n","import type { PHStore } from \"@powerhousedao/reactor-browser\";\nimport { createDriveArrivals } from \"@powerhousedao/reactor-browser\";\nimport { getConnectPluginUi } from \"../plugins/plugin-ui.js\";\nimport { getConnectRegistry } from \"../registry.js\";\nimport type {\n ConnectRouterBundle,\n ConnectRouterOptions,\n} from \"./connect-router.js\";\nimport { bindConnectRouter, createConnectRouter } from \"./connect-router.js\";\nimport { resolveConnectRoutes } from \"./route-tree.js\";\n\nexport type ConnectAppRouterOptions = Omit<\n ConnectRouterOptions,\n \"store\" | \"arrivals\"\n>;\n\n/** The app's one router over `store`; created, and made the store's navigation,\n * on first use. Registered routes join `options.routes`. */\nexport function getConnectAppRouter(\n store: PHStore,\n options: () => ConnectAppRouterOptions,\n): ConnectRouterBundle {\n const registry = getConnectRegistry();\n const current = registry.app;\n if (current) {\n if (import.meta.env?.DEV && current.store !== store) {\n throw new Error(\"Connect's router is already bound to another PH store\");\n }\n return current.bundle;\n }\n const { routes, ...rest } = options();\n const bundle = createConnectRouter({\n store,\n arrivals: createDriveArrivals(store),\n pluginUi: getConnectPluginUi(),\n ...rest,\n routes: (tree) => [\n ...(routes ? resolveConnectRoutes(routes, tree.routeTree) : []),\n ...registry.routes.flatMap((entry) => {\n entry.added = [\n ...resolveConnectRoutes(entry.registration, tree.routeTree),\n ];\n return entry.added;\n }),\n ],\n });\n registry.app = { store, bundle, unbind: bindConnectRouter(bundle, store) };\n return bundle;\n}\n\n/** Stops the app's router writing the selection, e.g. on HMR. */\nexport function disposeConnectAppRouter() {\n const registry = getConnectRegistry();\n registry.app?.unbind();\n registry.app = undefined;\n}\n","import type { PHStore } from \"@powerhousedao/reactor-browser\";\nimport { PHStoreProvider } from \"@powerhousedao/reactor-browser\";\nimport type { AnyRoute } from \"@tanstack/react-router\";\nimport { RouterProvider } from \"@tanstack/react-router\";\nimport type { ConnectAppRouterOptions } from \"./app-router.js\";\nimport { getConnectAppRouter } from \"./app-router.js\";\n\n/** A core-only app: `routeTree`'s views over `store`. */\nexport function ConnectCoreApp(props: {\n store: PHStore;\n routeTree: AnyRoute;\n basepath?: string;\n options?: () => Omit<ConnectAppRouterOptions, \"routeTree\">;\n}) {\n const { router } = getConnectAppRouter(props.store, () => ({\n basepath: props.basepath,\n ...props.options?.(),\n routeTree: props.routeTree,\n }));\n return (\n <PHStoreProvider store={props.store}>\n <RouterProvider router={router} />\n </PHStoreProvider>\n );\n}\n"],"mappings":"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"}
|
package/dist/router.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { A as useDriveRouteData, C as holdConnectRoutes, D as DRIVE_ROUTE_ID, E as removeConnectRoutes, F as DriveRouteData, I as DriveRouteParams, J as ConnectModals, L as isDriveNotFound, M as ConnectRouterContext, N as DriveLoaderOptions, O as DriveRouteView, P as DriveNotFoundData, R as loadDrive, S as connectRoutesSettled, T as registerPackageRoutes, Y as ModalOutlet, _ as ConnectRoutes, a as bindConnectRouter, b as addConnectRoutes, g as ConnectRootRoute, h as APP_ROUTE_ID, i as ConnectRouterOptions, j as useDriveRouteIds, k as NODE_ROUTE_ID, m as ConnectRouteRegistration, n as ConnectRouterBundle, o as createConnectRouter, q as CORE_MODAL_VIEWS, r as ConnectRouterFor, t as ConnectRouter, v as HOME_ROUTE_ID, w as registerConnectRoutes, x as connectRoutes, y as PackageRoute, z as loadNode } from "./connect-router-11uRIT3z.js";
|
|
2
2
|
import { a as DrivePending, i as DocumentViewProps, n as ContentOutlet, o as DriveViewProps, r as DRIVE_PENDING_MS, t as CONTENT_VIEW_ID } from "./route-components-1XyfosoL.js";
|
|
3
|
-
import { A as validateDriveSearch, B as coreView, C as FEATURE_FLAG_PARAM_PREFIX, D as parseConnectSearch, E as definedSearch, F as useModalFrame, G as markRouterNavigations, H as PERF_STORAGE_KEY, I as ConnectCoreApp, J as ConnectAppRouterOptions, K as routerPerfEnabled, L as CoreError, M as connectScrollRestoration, N as ModalDialog, O as stringifyConnectSearch, P as ModalFrameProps, R as CoreNotFound, S as ConnectSearch, T as connectSearchMiddlewares, U as ROUTER_MEASURES, V as isCoreView, W as markNavigationClick, X as getConnectAppRouter, Y as disposeConnectAppRouter, Z as useIsColdStart, _ as NavRouteEntry, a as SETTINGS_ROUTE_ID, b as useNavRoutes, c as redirectToSettingsTab, d as settingsTabsOf, f as settingsTitle, g as ConnectNavItem, h as useSettingsTabs, i as ConnectSettingsTab, j as bindConnectScroll, k as validateConnectSearch, l as setSettingsRoute, m as useForgetSettingsOpenedFrom, n as driveTitle, o as SettingsTabEntry, p as showsSettingsTab, q as createConnectNavigation, r as notFoundTitle, s as keepOpenedFrom, t as appTitle, u as settingsTabs, v as SidebarMode, w as GLOBAL_SEARCH_PARAMS, x as useSidebarMode, y as navRoutes, z as coreModals } from "./index-
|
|
4
|
-
export { APP_ROUTE_ID, CONTENT_VIEW_ID, CORE_MODAL_VIEWS, type ConnectAppRouterOptions, ConnectCoreApp, type ConnectModals, type ConnectNavItem, type ConnectRootRoute, type ConnectRouteRegistration, type ConnectRouter, type ConnectRouterBundle, type ConnectRouterContext, type ConnectRouterFor, type ConnectRouterOptions, type ConnectRoutes, type ConnectSearch, type ConnectSettingsTab, ContentOutlet, CoreError, CoreNotFound, DRIVE_PENDING_MS, DRIVE_ROUTE_ID, type DocumentViewProps, type DriveLoaderOptions, type DriveNotFoundData, DrivePending, type DriveRouteData, type DriveRouteParams, type DriveRouteView, type DriveViewProps, FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, HOME_ROUTE_ID, ModalDialog, type ModalFrameProps, ModalOutlet, NODE_ROUTE_ID, type NavRouteEntry, PERF_STORAGE_KEY, type PackageRoute, ROUTER_MEASURES, SETTINGS_ROUTE_ID, type SettingsTabEntry, type SidebarMode, addConnectRoutes, appTitle, bindConnectRouter, bindConnectScroll, connectRoutes, connectRoutesSettled, connectScrollRestoration, connectSearchMiddlewares, coreModals, coreView, createConnectNavigation, createConnectRouter, definedSearch, disposeConnectAppRouter, driveTitle, getConnectAppRouter, holdConnectRoutes, isCoreView, isDriveNotFound, keepOpenedFrom, loadDrive, loadNode, markNavigationClick, markRouterNavigations, navRoutes, notFoundTitle, parseConnectSearch, redirectToSettingsTab, registerConnectRoutes, registerPackageRoutes, removeConnectRoutes, routerPerfEnabled, setSettingsRoute, settingsTabs, settingsTabsOf, settingsTitle, showsSettingsTab, stringifyConnectSearch, useDriveRouteData, useDriveRouteIds, useForgetSettingsOpenedFrom, useIsColdStart, useModalFrame, useNavRoutes, useSettingsTabs, useSidebarMode, validateConnectSearch, validateDriveSearch };
|
|
3
|
+
import { $ as useCreateDocumentTarget, A as validateDriveSearch, B as coreView, C as FEATURE_FLAG_PARAM_PREFIX, D as parseConnectSearch, E as definedSearch, F as useModalFrame, G as markRouterNavigations, H as PERF_STORAGE_KEY, I as ConnectCoreApp, J as ConnectAppRouterOptions, K as routerPerfEnabled, L as CoreError, M as connectScrollRestoration, N as ModalDialog, O as stringifyConnectSearch, P as ModalFrameProps, Q as CreateDocumentTarget, R as CoreNotFound, S as ConnectSearch, T as connectSearchMiddlewares, U as ROUTER_MEASURES, V as isCoreView, W as markNavigationClick, X as getConnectAppRouter, Y as disposeConnectAppRouter, Z as useIsColdStart, _ as NavRouteEntry, a as SETTINGS_ROUTE_ID, b as useNavRoutes, c as redirectToSettingsTab, d as settingsTabsOf, f as settingsTitle, g as ConnectNavItem, h as useSettingsTabs, i as ConnectSettingsTab, j as bindConnectScroll, k as validateConnectSearch, l as setSettingsRoute, m as useForgetSettingsOpenedFrom, n as driveTitle, o as SettingsTabEntry, p as showsSettingsTab, q as createConnectNavigation, r as notFoundTitle, s as keepOpenedFrom, t as appTitle, u as settingsTabs, v as SidebarMode, w as GLOBAL_SEARCH_PARAMS, x as useSidebarMode, y as navRoutes, z as coreModals } from "./index-Cm8rYUhs.js";
|
|
4
|
+
export { APP_ROUTE_ID, CONTENT_VIEW_ID, CORE_MODAL_VIEWS, type ConnectAppRouterOptions, ConnectCoreApp, type ConnectModals, type ConnectNavItem, type ConnectRootRoute, type ConnectRouteRegistration, type ConnectRouter, type ConnectRouterBundle, type ConnectRouterContext, type ConnectRouterFor, type ConnectRouterOptions, type ConnectRoutes, type ConnectSearch, type ConnectSettingsTab, ContentOutlet, CoreError, CoreNotFound, type CreateDocumentTarget, DRIVE_PENDING_MS, DRIVE_ROUTE_ID, type DocumentViewProps, type DriveLoaderOptions, type DriveNotFoundData, DrivePending, type DriveRouteData, type DriveRouteParams, type DriveRouteView, type DriveViewProps, FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, HOME_ROUTE_ID, ModalDialog, type ModalFrameProps, ModalOutlet, NODE_ROUTE_ID, type NavRouteEntry, PERF_STORAGE_KEY, type PackageRoute, ROUTER_MEASURES, SETTINGS_ROUTE_ID, type SettingsTabEntry, type SidebarMode, addConnectRoutes, appTitle, bindConnectRouter, bindConnectScroll, connectRoutes, connectRoutesSettled, connectScrollRestoration, connectSearchMiddlewares, coreModals, coreView, createConnectNavigation, createConnectRouter, definedSearch, disposeConnectAppRouter, driveTitle, getConnectAppRouter, holdConnectRoutes, isCoreView, isDriveNotFound, keepOpenedFrom, loadDrive, loadNode, markNavigationClick, markRouterNavigations, navRoutes, notFoundTitle, parseConnectSearch, redirectToSettingsTab, registerConnectRoutes, registerPackageRoutes, removeConnectRoutes, routerPerfEnabled, setSettingsRoute, settingsTabs, settingsTabsOf, settingsTitle, showsSettingsTab, stringifyConnectSearch, useCreateDocumentTarget, useDriveRouteData, useDriveRouteIds, useForgetSettingsOpenedFrom, useIsColdStart, useModalFrame, useNavRoutes, useSettingsTabs, useSidebarMode, validateConnectSearch, validateDriveSearch };
|
|
5
5
|
export {};
|
package/dist/router.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as CoreNotFound, d as isCoreView, f as isDriveNotFound, l as coreModals, m as loadNode, p as loadDrive, s as CoreError, u as coreView } from "./plugin-ui-
|
|
2
|
-
import { a as connectRoutesSettled, c as registerPackageRoutes, f as CORE_MODAL_VIEWS, h as useModalFrame, i as connectRoutes, l as removeConnectRoutes, m as ModalDialog, n as HOME_ROUTE_ID, o as holdConnectRoutes, p as ModalOutlet, r as addConnectRoutes, s as registerConnectRoutes, t as APP_ROUTE_ID } from "./route-tree-
|
|
3
|
-
import { C as
|
|
4
|
-
import { _ as PERF_STORAGE_KEY, a as createConnectRouter, b as markRouterNavigations, c as GLOBAL_SEARCH_PARAMS, d as parseConnectSearch, f as stringifyConnectSearch, g as connectScrollRestoration, h as bindConnectScroll, i as bindConnectRouter, l as connectSearchMiddlewares, m as validateDriveSearch, n as disposeConnectAppRouter, o as createConnectNavigation, p as validateConnectSearch, r as getConnectAppRouter, s as FEATURE_FLAG_PARAM_PREFIX, t as ConnectCoreApp, u as definedSearch, v as ROUTER_MEASURES, x as routerPerfEnabled, y as markNavigationClick } from "./router-
|
|
5
|
-
export { APP_ROUTE_ID, CONTENT_VIEW_ID, CORE_MODAL_VIEWS, ConnectCoreApp, ContentOutlet, CoreError, CoreNotFound, DRIVE_PENDING_MS, DRIVE_ROUTE_ID, DrivePending, FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, HOME_ROUTE_ID, ModalDialog, ModalOutlet, NODE_ROUTE_ID, PERF_STORAGE_KEY, ROUTER_MEASURES, SETTINGS_ROUTE_ID, addConnectRoutes, appTitle, bindConnectRouter, bindConnectScroll, connectRoutes, connectRoutesSettled, connectScrollRestoration, connectSearchMiddlewares, coreModals, coreView, createConnectNavigation, createConnectRouter, definedSearch, disposeConnectAppRouter, driveTitle, getConnectAppRouter, holdConnectRoutes, isCoreView, isDriveNotFound, keepOpenedFrom, loadDrive, loadNode, markNavigationClick, markRouterNavigations, navRoutes, notFoundTitle, parseConnectSearch, redirectToSettingsTab, registerConnectRoutes, registerPackageRoutes, removeConnectRoutes, routerPerfEnabled, setSettingsRoute, settingsTabs, settingsTabsOf, settingsTitle, showsSettingsTab, stringifyConnectSearch, useDriveRouteData, useDriveRouteIds, useForgetSettingsOpenedFrom, useIsColdStart, useModalFrame, useNavRoutes, useSettingsTabs, useSidebarMode, validateConnectSearch, validateDriveSearch };
|
|
1
|
+
import { c as CoreNotFound, d as isCoreView, f as isDriveNotFound, l as coreModals, m as loadNode, p as loadDrive, s as CoreError, u as coreView } from "./plugin-ui-sO7AJLHj.js";
|
|
2
|
+
import { a as connectRoutesSettled, c as registerPackageRoutes, f as CORE_MODAL_VIEWS, h as useModalFrame, i as connectRoutes, l as removeConnectRoutes, m as ModalDialog, n as HOME_ROUTE_ID, o as holdConnectRoutes, p as ModalOutlet, r as addConnectRoutes, s as registerConnectRoutes, t as APP_ROUTE_ID } from "./route-tree-D0aszMrk.js";
|
|
3
|
+
import { C as ContentOutlet, E as useIsColdStart, S as CONTENT_VIEW_ID, T as DrivePending, _ as useForgetSettingsOpenedFrom, a as DRIVE_ROUTE_ID, b as driveTitle, c as useDriveRouteIds, d as redirectToSettingsTab, f as setSettingsRoute, g as showsSettingsTab, h as settingsTitle, i as useCreateDocumentTarget, l as SETTINGS_ROUTE_ID, m as settingsTabsOf, n as useNavRoutes, o as NODE_ROUTE_ID, p as settingsTabs, r as useSidebarMode, s as useDriveRouteData, t as navRoutes, u as keepOpenedFrom, v as useSettingsTabs, w as DRIVE_PENDING_MS, x as notFoundTitle, y as appTitle } from "./sidebar-DVQCwBYR.js";
|
|
4
|
+
import { _ as PERF_STORAGE_KEY, a as createConnectRouter, b as markRouterNavigations, c as GLOBAL_SEARCH_PARAMS, d as parseConnectSearch, f as stringifyConnectSearch, g as connectScrollRestoration, h as bindConnectScroll, i as bindConnectRouter, l as connectSearchMiddlewares, m as validateDriveSearch, n as disposeConnectAppRouter, o as createConnectNavigation, p as validateConnectSearch, r as getConnectAppRouter, s as FEATURE_FLAG_PARAM_PREFIX, t as ConnectCoreApp, u as definedSearch, v as ROUTER_MEASURES, x as routerPerfEnabled, y as markNavigationClick } from "./router-8pekwJsk.js";
|
|
5
|
+
export { APP_ROUTE_ID, CONTENT_VIEW_ID, CORE_MODAL_VIEWS, ConnectCoreApp, ContentOutlet, CoreError, CoreNotFound, DRIVE_PENDING_MS, DRIVE_ROUTE_ID, DrivePending, FEATURE_FLAG_PARAM_PREFIX, GLOBAL_SEARCH_PARAMS, HOME_ROUTE_ID, ModalDialog, ModalOutlet, NODE_ROUTE_ID, PERF_STORAGE_KEY, ROUTER_MEASURES, SETTINGS_ROUTE_ID, addConnectRoutes, appTitle, bindConnectRouter, bindConnectScroll, connectRoutes, connectRoutesSettled, connectScrollRestoration, connectSearchMiddlewares, coreModals, coreView, createConnectNavigation, createConnectRouter, definedSearch, disposeConnectAppRouter, driveTitle, getConnectAppRouter, holdConnectRoutes, isCoreView, isDriveNotFound, keepOpenedFrom, loadDrive, loadNode, markNavigationClick, markRouterNavigations, navRoutes, notFoundTitle, parseConnectSearch, redirectToSettingsTab, registerConnectRoutes, registerPackageRoutes, removeConnectRoutes, routerPerfEnabled, setSettingsRoute, settingsTabs, settingsTabsOf, settingsTitle, showsSettingsTab, stringifyConnectSearch, useCreateDocumentTarget, useDriveRouteData, useDriveRouteIds, useForgetSettingsOpenedFrom, useIsColdStart, useModalFrame, useNavRoutes, useSettingsTabs, useSidebarMode, validateConnectSearch, validateDriveSearch };
|