@powerhousedao/connect 1.0.18-staging.1 → 1.0.19-dev.1

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.
Files changed (34) hide show
  1. package/dist/.env +1 -1
  2. package/dist/assets/{app-yRMY-3GF.js → app-0PUokYXm.js} +8717 -3618
  3. package/dist/assets/app-0PUokYXm.js.map +1 -0
  4. package/dist/assets/{app-CDOWlDp2.css → app-b1jkE5Vo.css} +115 -0
  5. package/dist/assets/{app-loader-DiF8OhX3.css → app-loader-B74nopv_.css} +130 -0
  6. package/dist/assets/{app-loader-CdvqY3K1.js → app-loader-CVII2DYj.js} +507 -245
  7. package/dist/assets/app-loader-CVII2DYj.js.map +1 -0
  8. package/dist/assets/browser-DaWhu_1T.js +27234 -0
  9. package/dist/assets/browser-DaWhu_1T.js.map +1 -0
  10. package/dist/assets/{ccip-Cy9LlCUm.js → ccip-BiEUOhIy.js} +4 -3
  11. package/dist/assets/ccip-BiEUOhIy.js.map +1 -0
  12. package/dist/assets/{content-BOeknRry.js → content-D_3kBNR7.js} +1012 -372
  13. package/dist/assets/content-D_3kBNR7.js.map +1 -0
  14. package/dist/assets/{index--Ym8GkzB.js → index-3a_rYGU1.js} +23 -17
  15. package/dist/assets/index-3a_rYGU1.js.map +1 -0
  16. package/dist/assets/{index-Cdh4BzLk.js → index-C30XfZqk.js} +4 -3
  17. package/dist/assets/index-C30XfZqk.js.map +1 -0
  18. package/dist/assets/{index-BcowCCAB.js → index-DiejwhaO.js} +4 -3
  19. package/dist/assets/index-DiejwhaO.js.map +1 -0
  20. package/dist/assets/{main.m37VWnwf.js → main.y7csLjWq.js} +2 -1
  21. package/dist/assets/main.y7csLjWq.js.map +1 -0
  22. package/dist/assets/reactor-analytics-DDw23exh.js +15 -0
  23. package/dist/assets/reactor-analytics-DDw23exh.js.map +1 -0
  24. package/dist/assets/router-D1e0l-Bx.js +2178 -0
  25. package/dist/assets/router-D1e0l-Bx.js.map +1 -0
  26. package/dist/external-packages.js +1 -0
  27. package/dist/external-packages.js.map +1 -0
  28. package/dist/hmr.js +1 -0
  29. package/dist/hmr.js.map +1 -0
  30. package/dist/index.html +1 -1
  31. package/dist/service-worker.js +1 -0
  32. package/dist/service-worker.js.map +1 -0
  33. package/dist/vite-envs.sh +1 -1
  34. package/package.json +10 -9
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-yRMY-3GF.js","assets/main.m37VWnwf.js","assets/app-CDOWlDp2.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-0PUokYXm.js","assets/main.y7csLjWq.js","assets/app-b1jkE5Vo.css"])))=>i.map(i=>d[i]);
2
2
  var __defProp = Object.defineProperty;
3
3
  var __typeError = (msg) => {
4
4
  throw TypeError(msg);
@@ -11,7 +11,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
11
11
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
12
12
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
13
13
  var _tags, _levelString, _errorHandler, _ConsoleLogger_instances, levelValue_get, _getDocumentModelModule, _drives, _ReadModeService_instances, parseGraphQLErrors_fn, fetchDrive_fn, _a, _ServiceWorkerManager_instances, handleServiceWorkerMessage_fn, handleServiceWorker_fn;
14
- import { _ as __vitePreload } from "./main.m37VWnwf.js";
14
+ import { _ as __vitePreload } from "./main.y7csLjWq.js";
15
15
  import { jsx, jsxs } from "react/jsx-runtime";
16
16
  import { useState, useEffect, Suspense, lazy } from "react";
17
17
  function _mergeNamespaces(n, m) {
@@ -7534,21 +7534,186 @@ function UpdateStateExampleInputSchema() {
7534
7534
  newExample: z.string()
7535
7535
  });
7536
7536
  }
7537
+ var dist = {};
7538
+ var hasRequiredDist;
7539
+ function requireDist() {
7540
+ if (hasRequiredDist) return dist;
7541
+ hasRequiredDist = 1;
7542
+ (function(exports) {
7543
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
7544
+ function getDefaultExportFromCjs2(x) {
7545
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
7546
+ }
7547
+ var browser = { exports: {} };
7548
+ var process2 = browser.exports = {};
7549
+ var cachedSetTimeout;
7550
+ var cachedClearTimeout;
7551
+ function defaultSetTimout() {
7552
+ throw new Error("setTimeout has not been defined");
7553
+ }
7554
+ function defaultClearTimeout() {
7555
+ throw new Error("clearTimeout has not been defined");
7556
+ }
7557
+ (function() {
7558
+ try {
7559
+ if (typeof setTimeout === "function") {
7560
+ cachedSetTimeout = setTimeout;
7561
+ } else {
7562
+ cachedSetTimeout = defaultSetTimout;
7563
+ }
7564
+ } catch (e) {
7565
+ cachedSetTimeout = defaultSetTimout;
7566
+ }
7567
+ try {
7568
+ if (typeof clearTimeout === "function") {
7569
+ cachedClearTimeout = clearTimeout;
7570
+ } else {
7571
+ cachedClearTimeout = defaultClearTimeout;
7572
+ }
7573
+ } catch (e) {
7574
+ cachedClearTimeout = defaultClearTimeout;
7575
+ }
7576
+ })();
7577
+ function runTimeout(fun) {
7578
+ if (cachedSetTimeout === setTimeout) {
7579
+ return setTimeout(fun, 0);
7580
+ }
7581
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
7582
+ cachedSetTimeout = setTimeout;
7583
+ return setTimeout(fun, 0);
7584
+ }
7585
+ try {
7586
+ return cachedSetTimeout(fun, 0);
7587
+ } catch (e) {
7588
+ try {
7589
+ return cachedSetTimeout.call(null, fun, 0);
7590
+ } catch (e2) {
7591
+ return cachedSetTimeout.call(this, fun, 0);
7592
+ }
7593
+ }
7594
+ }
7595
+ function runClearTimeout(marker) {
7596
+ if (cachedClearTimeout === clearTimeout) {
7597
+ return clearTimeout(marker);
7598
+ }
7599
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
7600
+ cachedClearTimeout = clearTimeout;
7601
+ return clearTimeout(marker);
7602
+ }
7603
+ try {
7604
+ return cachedClearTimeout(marker);
7605
+ } catch (e) {
7606
+ try {
7607
+ return cachedClearTimeout.call(null, marker);
7608
+ } catch (e2) {
7609
+ return cachedClearTimeout.call(this, marker);
7610
+ }
7611
+ }
7612
+ }
7613
+ var queue = [];
7614
+ var draining = false;
7615
+ var currentQueue;
7616
+ var queueIndex = -1;
7617
+ function cleanUpNextTick() {
7618
+ if (!draining || !currentQueue) {
7619
+ return;
7620
+ }
7621
+ draining = false;
7622
+ if (currentQueue.length) {
7623
+ queue = currentQueue.concat(queue);
7624
+ } else {
7625
+ queueIndex = -1;
7626
+ }
7627
+ if (queue.length) {
7628
+ drainQueue();
7629
+ }
7630
+ }
7631
+ function drainQueue() {
7632
+ if (draining) {
7633
+ return;
7634
+ }
7635
+ var timeout = runTimeout(cleanUpNextTick);
7636
+ draining = true;
7637
+ var len = queue.length;
7638
+ while (len) {
7639
+ currentQueue = queue;
7640
+ queue = [];
7641
+ while (++queueIndex < len) {
7642
+ if (currentQueue) {
7643
+ currentQueue[queueIndex].run();
7644
+ }
7645
+ }
7646
+ queueIndex = -1;
7647
+ len = queue.length;
7648
+ }
7649
+ currentQueue = null;
7650
+ draining = false;
7651
+ runClearTimeout(timeout);
7652
+ }
7653
+ process2.nextTick = function(fun) {
7654
+ var args = new Array(arguments.length - 1);
7655
+ if (arguments.length > 1) {
7656
+ for (var i = 1; i < arguments.length; i++) {
7657
+ args[i - 1] = arguments[i];
7658
+ }
7659
+ }
7660
+ queue.push(new Item(fun, args));
7661
+ if (queue.length === 1 && !draining) {
7662
+ runTimeout(drainQueue);
7663
+ }
7664
+ };
7665
+ function Item(fun, array) {
7666
+ this.fun = fun;
7667
+ this.array = array;
7668
+ }
7669
+ Item.prototype.run = function() {
7670
+ this.fun.apply(null, this.array);
7671
+ };
7672
+ process2.title = "browser";
7673
+ process2.browser = true;
7674
+ process2.env = {};
7675
+ process2.argv = [];
7676
+ process2.version = "";
7677
+ process2.versions = {};
7678
+ function noop2() {
7679
+ }
7680
+ process2.on = noop2;
7681
+ process2.addListener = noop2;
7682
+ process2.once = noop2;
7683
+ process2.off = noop2;
7684
+ process2.removeListener = noop2;
7685
+ process2.removeAllListeners = noop2;
7686
+ process2.emit = noop2;
7687
+ process2.prependListener = noop2;
7688
+ process2.prependOnceListener = noop2;
7689
+ process2.listeners = function(name2) {
7690
+ return [];
7691
+ };
7692
+ process2.binding = function(name2) {
7693
+ throw new Error("process.binding is not supported");
7694
+ };
7695
+ process2.cwd = function() {
7696
+ return "/";
7697
+ };
7698
+ process2.chdir = function(dir) {
7699
+ throw new Error("process.chdir is not supported");
7700
+ };
7701
+ process2.umask = function() {
7702
+ return 0;
7703
+ };
7704
+ var browserExports = browser.exports;
7705
+ const process$1 = /* @__PURE__ */ getDefaultExportFromCjs2(browserExports);
7706
+ exports.default = process$1;
7707
+ exports.process = process$1;
7708
+ })(dist);
7709
+ return dist;
7710
+ }
7711
+ var distExports = requireDist();
7712
+ const process = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
7537
7713
  function commonjsRequire(path) {
7538
7714
  throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
7539
7715
  }
7540
7716
  var jszip_min = { exports: {} };
7541
- /*!
7542
-
7543
- JSZip v3.10.1 - A JavaScript class for generating and reading zip files
7544
- <http://stuartk.com/jszip>
7545
-
7546
- (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
7547
- Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
7548
-
7549
- JSZip uses the library pako released under the MIT license :
7550
- https://github.com/nodeca/pako/blob/main/LICENSE
7551
- */
7552
7717
  var hasRequiredJszip_min;
7553
7718
  function requireJszip_min() {
7554
7719
  if (hasRequiredJszip_min) return jszip_min.exports;
@@ -11495,7 +11660,7 @@ _errorHandler = new WeakMap();
11495
11660
  _ConsoleLogger_instances = new WeakSet();
11496
11661
  levelValue_get = function() {
11497
11662
  if (__privateGet(this, _levelString) === "env") {
11498
- const envLevel = typeof process !== "undefined" ? define_process_env_default.LOG_LEVEL : void 0;
11663
+ const envLevel = typeof process !== "undefined" && "env" in process ? define_process_env_default.LOG_LEVEL : void 0;
11499
11664
  if (!envLevel) {
11500
11665
  return LEVELS.debug;
11501
11666
  }
@@ -11549,7 +11714,7 @@ class ConflictOperationError extends OperationError {
11549
11714
  }
11550
11715
  class DocumentAlreadyExistsError extends Error {
11551
11716
  constructor(documentId) {
11552
- super(`Document with id ${documentId} already exists`);
11717
+ super(`Document with id ${documentId} uses id or slug that already exists`);
11553
11718
  __publicField(this, "documentId");
11554
11719
  this.documentId = documentId;
11555
11720
  }
@@ -23376,17 +23541,13 @@ class BaseDocumentDriveServer {
23376
23541
  if (!id) {
23377
23542
  throw new Error("Invalid Drive Id");
23378
23543
  }
23379
- const drives = await this.legacyStorage.getDrives();
23380
- if (drives.includes(id)) {
23381
- throw new DocumentAlreadyExistsError(id);
23382
- }
23383
23544
  const document = createDocument({
23384
23545
  state: input
23385
23546
  });
23386
23547
  document.meta = {
23387
23548
  preferredEditor
23388
23549
  };
23389
- await this.legacyStorage.createDrive(id, document);
23550
+ await this.documentStorage.create(id, document);
23390
23551
  if (input.global.slug) {
23391
23552
  await this.cache.deleteDriveBySlug(input.global.slug);
23392
23553
  }
@@ -23421,16 +23582,25 @@ class BaseDocumentDriveServer {
23421
23582
  this.stopSyncRemoteDrive(driveId),
23422
23583
  this.listenerManager.removeDrive(driveId),
23423
23584
  this.cache.deleteDrive(driveId),
23424
- this.legacyStorage.deleteDrive(driveId)
23585
+ this.documentStorage.delete(driveId)
23425
23586
  ]);
23587
+ this.eventEmitter.emit("driveDeleted", driveId);
23426
23588
  result.forEach((r) => {
23427
23589
  if (r.status === "rejected") {
23428
23590
  throw r.reason;
23429
23591
  }
23430
23592
  });
23431
23593
  }
23432
- getDrives() {
23433
- return this.legacyStorage.getDrives();
23594
+ // TODO: paginate
23595
+ async getDrives() {
23596
+ const drives = [];
23597
+ let cursor;
23598
+ do {
23599
+ const { documents, nextCursor } = await this.documentStorage.findByType("powerhouse/document-drive", 100, cursor);
23600
+ drives.push(...documents);
23601
+ cursor = nextCursor;
23602
+ } while (cursor);
23603
+ return drives;
23434
23604
  }
23435
23605
  async getDrive(driveId, options) {
23436
23606
  let document;
@@ -23916,13 +24086,6 @@ class BaseDocumentDriveServer {
23916
24086
  addDriveOperation(driveId, operation, options) {
23917
24087
  return this.addDriveOperations(driveId, [operation], options);
23918
24088
  }
23919
- async clearStorage() {
23920
- var _a2, _b;
23921
- for (const drive of await this.getDrives()) {
23922
- await this.deleteDrive(drive);
23923
- }
23924
- await ((_b = (_a2 = this.legacyStorage).clearStorage) == null ? void 0 : _b.call(_a2));
23925
- }
23926
24089
  async _addDriveOperations(driveId, callback) {
23927
24090
  if (!this.legacyStorage.addDriveOperationsWithTransaction) {
23928
24091
  const documentStorage = await this.documentStorage.get(driveId);
@@ -24197,17 +24360,25 @@ class MemoryStorage {
24197
24360
  exists(documentId) {
24198
24361
  return Promise.resolve(!!this.documents[documentId]);
24199
24362
  }
24200
- // TODO: this should throw an error if the document already exists.
24201
24363
  create(documentId, document) {
24202
24364
  var _a2;
24365
+ if (this.documents[documentId]) {
24366
+ throw new DocumentAlreadyExistsError(documentId);
24367
+ }
24368
+ const slug = ((_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug) ?? documentId;
24369
+ if (slug && this.slugToDocumentId[slug]) {
24370
+ throw new DocumentAlreadyExistsError(documentId);
24371
+ }
24203
24372
  this.documents[documentId] = document;
24204
- const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24205
24373
  if (slug) {
24206
24374
  if (this.slugToDocumentId[slug]) {
24207
- throw new Error(`Document with slug ${slug} already exists`);
24375
+ throw new DocumentAlreadyExistsError(documentId);
24208
24376
  }
24209
24377
  this.slugToDocumentId[slug] = documentId;
24210
24378
  }
24379
+ if (document.documentType === "powerhouse/document-drive") {
24380
+ this.updateDriveManifest(documentId, { documentIds: /* @__PURE__ */ new Set() });
24381
+ }
24211
24382
  return Promise.resolve();
24212
24383
  }
24213
24384
  get(documentId) {
@@ -24224,6 +24395,38 @@ class MemoryStorage {
24224
24395
  }
24225
24396
  return this.get(documentId);
24226
24397
  }
24398
+ async findByType(documentModelType, limit = 100, cursor) {
24399
+ const documentsAndIds = Object.entries(this.documents).filter(([_, doc]) => doc.documentType === documentModelType).map(([id, doc]) => ({
24400
+ id,
24401
+ document: doc
24402
+ }));
24403
+ documentsAndIds.sort((a, b) => {
24404
+ const aDate = new Date(a.document.created);
24405
+ const bDate = new Date(b.document.created);
24406
+ if (aDate.getTime() === bDate.getTime()) {
24407
+ const aId = a.id;
24408
+ const bId = b.id;
24409
+ return aId.localeCompare(bId);
24410
+ }
24411
+ return aDate.getTime() - bDate.getTime();
24412
+ });
24413
+ let startIndex = 0;
24414
+ if (cursor) {
24415
+ const index = documentsAndIds.findIndex(({ id }) => id === cursor);
24416
+ if (index !== -1) {
24417
+ startIndex = index;
24418
+ }
24419
+ }
24420
+ const endIndex = Math.min(startIndex + limit, documentsAndIds.length);
24421
+ let nextCursor;
24422
+ if (endIndex < documentsAndIds.length) {
24423
+ nextCursor = documentsAndIds[endIndex].id;
24424
+ }
24425
+ return {
24426
+ documents: documentsAndIds.slice(startIndex, endIndex).map(({ id }) => id),
24427
+ nextCursor
24428
+ };
24429
+ }
24227
24430
  async delete(documentId) {
24228
24431
  var _a2;
24229
24432
  const document = this.documents[documentId];
@@ -24233,11 +24436,16 @@ class MemoryStorage {
24233
24436
  delete this.slugToDocumentId[slug];
24234
24437
  }
24235
24438
  }
24236
- const drives = await this.getDrives();
24237
- for (const driveId of drives) {
24238
- if (driveId === documentId)
24239
- continue;
24240
- await this.removeChild(driveId, documentId);
24439
+ const parents = await this.getParents(documentId);
24440
+ for (const parent of parents) {
24441
+ await this.removeChild(parent, documentId);
24442
+ }
24443
+ const children = await this.getChildren(documentId);
24444
+ for (const child of children) {
24445
+ const childParents = await this.getParents(child);
24446
+ if (childParents.length === 1) {
24447
+ await this.delete(child);
24448
+ }
24241
24449
  }
24242
24450
  delete this.driveManifests[documentId];
24243
24451
  if (this.documents[documentId]) {
@@ -24271,14 +24479,26 @@ class MemoryStorage {
24271
24479
  const manifest = this.getManifest(parentId);
24272
24480
  return [...manifest.documentIds];
24273
24481
  }
24482
+ async getParents(childId) {
24483
+ const parents = [];
24484
+ for (const [driveId, manifest] of Object.entries(this.driveManifests)) {
24485
+ if (manifest.documentIds.has(childId)) {
24486
+ parents.push(driveId);
24487
+ }
24488
+ }
24489
+ return parents;
24490
+ }
24274
24491
  ////////////////////////////////
24275
- // IDriveStorage
24492
+ // IDocumentAdminStorage
24276
24493
  ////////////////////////////////
24277
- async clearStorage() {
24494
+ async clear() {
24278
24495
  this.documents = {};
24279
24496
  this.driveManifests = {};
24280
24497
  this.slugToDocumentId = {};
24281
24498
  }
24499
+ ////////////////////////////////
24500
+ // IDriveStorage
24501
+ ////////////////////////////////
24282
24502
  async addDocumentOperations(drive, id, operations, header) {
24283
24503
  const document = await this.get(id);
24284
24504
  if (!document) {
@@ -24291,13 +24511,6 @@ class MemoryStorage {
24291
24511
  operations: mergedOperations
24292
24512
  };
24293
24513
  }
24294
- async getDrives() {
24295
- return Object.keys(this.driveManifests);
24296
- }
24297
- async createDrive(id, drive) {
24298
- await this.create(id, drive);
24299
- this.updateDriveManifest(id, { documentIds: /* @__PURE__ */ new Set() });
24300
- }
24301
24514
  async addDriveOperations(id, operations, header) {
24302
24515
  const drive = await this.get(id);
24303
24516
  const mergedOperations = mergeOperations(drive.operations, operations);
@@ -24307,32 +24520,6 @@ class MemoryStorage {
24307
24520
  operations: mergedOperations
24308
24521
  };
24309
24522
  }
24310
- async deleteDrive(id) {
24311
- const manifest = this.getManifest(id);
24312
- const drives = await this.getDrives();
24313
- await Promise.all([...manifest.documentIds].map((docId) => {
24314
- var _a2;
24315
- for (const driveId of drives) {
24316
- if (driveId === id) {
24317
- continue;
24318
- }
24319
- const manifest2 = this.getManifest(driveId);
24320
- if (manifest2.documentIds.has(docId)) {
24321
- return;
24322
- }
24323
- }
24324
- const document = this.documents[docId];
24325
- if (document) {
24326
- const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24327
- if (slug && this.slugToDocumentId[slug] === docId) {
24328
- delete this.slugToDocumentId[slug];
24329
- }
24330
- }
24331
- delete this.documents[docId];
24332
- }));
24333
- delete this.driveManifests[id];
24334
- delete this.documents[id];
24335
- }
24336
24523
  async getSynchronizationUnitsRevision(units) {
24337
24524
  const results = await Promise.allSettled(units.map(async (unit) => {
24338
24525
  try {
@@ -25535,6 +25722,9 @@ function Syncing(props) {
25535
25722
  function Tabler(props) {
25536
25723
  return jsxs("svg", { ...props, width: "18", height: "18", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { d: "M4.5 9V7.5C4.5 6.30653 4.97411 5.16193 5.81802 4.31802C6.66193 3.47411 7.80653 3 9 3C10.1935 3 11.3381 3.47411 12.182 4.31802C13.0259 5.16193 13.5 6.30653 13.5 7.5V9M3 13.5C3 13.8978 3.15804 14.2794 3.43934 14.5607C3.72064 14.842 4.10218 15 4.5 15C4.89782 15 5.27936 14.842 5.56066 14.5607C5.84196 14.2794 6 13.8978 6 13.5C6 13.1022 5.84196 12.7206 5.56066 12.4393C5.27936 12.158 4.89782 12 4.5 12C4.10218 12 3.72064 12.158 3.43934 12.4393C3.15804 12.7206 3 13.1022 3 13.5ZM12 13.5C12 13.8978 12.158 14.2794 12.4393 14.5607C12.7206 14.842 13.1022 15 13.5 15C13.8978 15 14.2794 14.842 14.5607 14.5607C14.842 14.2794 15 13.8978 15 13.5C15 13.1022 14.842 12.7206 14.5607 12.4393C14.2794 12.158 13.8978 12 13.5 12C13.1022 12 12.7206 12.158 12.4393 12.4393C12.158 12.7206 12 13.1022 12 13.5Z", stroke: "currentcolor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M11.25 6.75L13.5 9L15.75 6.75", stroke: "currentcolor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] });
25537
25724
  }
25725
+ function TimelineCaret(props) {
25726
+ return jsx("svg", { ...props, width: "10", height: "7", viewBox: "0 0 10 7", fill: "currentcolor", children: jsx("path", { d: "M0.539174 0.830403L0.539396 0.830693L4.81717 6.41675L0.539174 0.830403ZM0.539174 0.830403C0.492941 0.770121 0.486776 0.69618 0.524599 0.622069C0.562768 0.547277 0.632849 0.5 0.721373 0.5L9.27711 0.5C9.36895 0.5 9.44336 0.552912 9.47789 0.620069C9.51177 0.686686 9.50789 0.767089 9.45938 0.830307L9.45889 0.83095M0.539174 0.830403L9.45889 0.83095M9.45889 0.83095C9.05222 1.36269 7.09357 3.91999 5.94678 5.41729C5.588 5.88573 5.30868 6.25042 5.18122 6.41687M9.45889 0.83095L5.18122 6.41687M5.18122 6.41687C5.1428 6.46691 5.07824 6.5 4.99924 6.5M5.18122 6.41687L4.99924 6.5M4.99924 6.5C4.92023 6.5 4.85567 6.46691 4.81726 6.41687L4.99924 6.5Z", fill: "currentcolor", stroke: "currentcolor" }) });
25727
+ }
25538
25728
  function Timeline(props) {
25539
25729
  return jsxs("svg", { ...props, width: "16", height: "16", viewBox: "0 0 16 16", fill: "currentcolor", children: [jsx("rect", { width: "16", height: "16", fill: "url(#pattern0_1256_1508)" }), jsxs("defs", { children: [jsx("pattern", { id: "pattern0_1256_1508", patternContentUnits: "objectBoundingBox", width: "1", height: "1", children: jsx("use", { href: "#image0_1256_1508", transform: "scale(0.00195312)" }) }), jsx("image", { id: "image0_1256_1508", width: "512", height: "512", preserveAspectRatio: "none", href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzt3Xm0XmV96PHvyUASCEmYQsIcJpkhzJOASLWK89KrtS6r7RLtba1Xl73qte1VOzm2asVeUMTSah3QAgoqk6gI4gACgowSCFMgCRAyD+fcP573lMPhnOS8797P+9vD97PWb53U1cV+ht9+9vPu/exngyRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiSpFwPRBZDUs62BPYDdgF2BHYAdgbkj/j0DmAVs1fk7A5g+zn/vSWBo1N+ngOUjYimwBFgMPNL5u7r0mknKzgmAVG07APsDB3T+7g/syzMX/Cp4EvgdcE8n7u78vZ00aZBUQU4ApGqYDOwHHNGJhZ2/cyMLVYLFwC2duBm4CbgrtESSACcAUpRZwAnAiZ04Dtg2tET9swy4Afh55+/1pEcNkvrICYDUH9sApwJnAKcDh5B+9Qs2ATcCP+zET4BVoSWSWsAJgJTPQuBM0kX/BNJCPG3ZBtJdgUs7cVtscSRJ2rypwAuBzwKLSCvpjeJxH3A28CJgykQ7Q5KknCaTLkznk1a8R18smx5LgXOB38PJgCSpzwZIt/Q/CzxK/EWxrfEY6c7AsZvvLkmSitkOOAu4lfiLn/Hs+C3wIWDP8TpPkqRuTAJeDHwTWEf8hc7YfGwELun02aQx+lOSpM3alvRr/3biL2pGb3EP8D6qs2OiJKnC9gE+TdqYJvoCZpQTq0hrBfZBkqRRFgIXkjalib5gGXliI/B14CgkSa13ImmzmUHiL1BG/+JK4BQkSa3zfOBq4i9ERmxcQZoESpIa7gjSL/7oC49RrfgecAySpMbZEziH9Bw4+mJjVDe+g4sFJakR5gAfBdYSf3Ex6hHrSZPFnZAk1c5k4O2k7WKjLyhGPWMZ8Of42WZJqo1TgJuIv4AYzYgbgeORJFXWHOAz+C6/UX4MAhcAc5EkVcqbgCXEXyiMZsdSUq5JkoLtBVxO/IXBaFd8B9gVSVKINwMriL8YGO2Mp0gfjBpAktQXOwMXE38BMIwh0h2oXZAkZfU60utZ0YO+YYyMJcDLkCSVbjpphX/0QG8Ym4sLgG2QasBnV6qDg0ifcT0kuiDSBNwGvBa4I7og0uZMii6AtAVvBX6BF3/Vx8GknH1DdEEkqY6mkPbwj76laxhF4hxgK6QK8hGAqmg+cCF+p13NcAPwGuDh6IJIIzkBUNWcSLr4z48uSI2sBhYB93X+LiW9KbGs8+/HSe+sD3b+Qvri3arOvycBszv/ngrM6vzfczr/3oW0Be68TiwA9sbFbt14CHgV8MvogkjDnACoSt4EfBGYFl2QinoEuBW4GbgFuJt00X8sqDxzSROBA0kLNQ/t/N09qDxVt4a0puXr0QWRpKoYAD5E+oUa/cy2KvEEcBnwV8ALgR17bdwAOwEvBf4v8F1gOfHtWZUYBD6CP74kiWnAfxA/MEfHctIvw7eT3nho0hs6k4AjgHcB/0Wa3ES3d3T8O+lxiyS10hzgx8QPxhExSHoe/HfAScDkgm1ZJ1OAU4B/BH5NfF9ExeXAtgXbUpJqZ2fgJuIH4X7HbcD7cO/4kfYk3R24lvY9BroFvyooqUX2Bu4hfvDtV9wAvBsXx03E7qQJ0m3E91u/4l7SOSFJjXYo6X3o6EE3dywHPtupr3pzDPA52vHJ5weB55XTbJJUPQtp/pf8fkx6nXF6SW2mtBfBu0ivPUb3b854FCeMkhpoIWlTmuhBNkdsAr4DHF9aa2ksk4AzSG3d1LUCy4Fjy2owSYp2NM18F/wp4FOkRWzqrwOBfyXtZhidB2XHE8CR5TWVJMU4mua9970C+FvSa4yKNZ+0TmAd8XlRZizFxwGSamx/YAnxg2lZsQr4DOkVRlXLHqQv720gPk/KiiWkrZUlqVYWkFY2Rw+iZcR60op+L/zVdwBpR8WmrBF4EF8RlFQj82nOe/7fIz1vVr0cQdppLzp/yoh7SV9hlKRKm0Pa3Sx60Cwad5A+aKN6ewPN2HfiV7htsKQK2wq4ivjBskisBt5P8z7UMgv4A+ALwM9JnxBe34nHOv/buaQLZtMuNLOBfwE2Ep9fReIHNC8vJTXAAHAB8YNkkfghsF/ZDRNsf+A8untdbhXwRZrXFkeTPsAUnWdF4gL8lLCkivkI8YNjr/EE8DaaNbDOAD5JsVXx64GP06xdDScD7yTt4RCdd73GR0pvFUnq0R8RPyj2GlfQvK+x7QfcSnltdD1pYWeT7AVcQ3z+9RKDwOvLbhBJ6tZxwFriB8VuYy3wHpr1qx/SlsuPUX57LQYO62M9+mES8F7qmb+rgaPKbxJJmpj5wEPED4bdxm+AwzO0R7T9yHPxHzkJaOLraIeT3vqIzstu40Gad2dGUg1MA64jfhDsNs4jPR9vmhmUe9t/vLie1PdNsy3wFeLzs5f+2CpDe0jSuM4lfvDrJtYCZ2VpiWr4JP1ryw/3qU4RzqJ+jwQ+m6UlJGkMbyJ+0OsmFpPWKjTV/vR3D/ynaeajgGEnk/dRSo5wUaCk7A4gXQCiB7yJxo+BuVlaojrOo//t+vm+1CzOAtJakej8nWisIJ2bkpTFDOq1ze9/0Mzn1SPNortNfsqKlcDMPtQv0izgMuLzeKLxG2DrLC0hqfW+QPwgN9H4W5r3it9Y/oC4Nm7DbefJwKeJz+eJxtl5mkFSm72K+MFtIrEeeGumNqiiyEnZOX2oX1W8nf6us+g1BoGXZWoDSS20M/VYFLUaeEmmNqiqnxPX3j/rQ/2q5NXAOuLzfEuxhHTOSlJhlxA/qG0pngZekKsBKuxxYi80bXMmsIb4fN9SXEo7HoFJyuhtxA9mW4ongBNzNUDFRf4iXduH+lXRqdTjTZg/ydUAkppvd6r/1bTHgSNzNUANRLd/W51G9ScBT9C8D11J6pOLiB/ENhdPkr7x3mbRfdBmxwDLiO+DzcV3s9VeUmNFvl42kXgaOCFb7esjuh/a7hjSRDS6HzYXb8xWe0mNswNpgVf0wDVerKadC/7GEt0XSmsCqrww8HHSOS1JW3Q+8YPWeLGe9r3qtznR/aHkFVR7n4A27dkgqUcnkjYTiR6wxos2bfIzEdH9oWe8heqeO5uAY7PVXFLtTSJ2Y5ktxUfyVb22ovtEz/Zh4vtkvPglaWtjSXqOdxA/SI0X/4Ebm4wlul/0bAPAV4jvl/HiT/NVXVJd7QAsJX6AGit+RPO/6ter6L7Rc00DfkJ834wVjwNz8lVdUh19hvjBaax4GJifsd51F90/GtvOwGLi+2es+HjGekuqmQWkbV2jB6bRsR44KWO9myC6jzS+46jmebUO2CdjvSXVyH8SPyiNFWflrHRDRPeRNq+q39L4as5KS6qHo6nmq0tfzFnpBonuJ23ZBcT30+gYxG20pda7kvjBaHT8BpiRs9INEt1X2rKZwJ3E99XouCxnpSVV20nED0KjYy1wRM5KN0x0f2liDiVtYR3dX6Pj5JyVllRdVfz1/56sNW6e6P7SxL2b+P4aHT/IWmNJlXQi8YPP6LiCtBuhJi66zzRxk4AfEt9no+OUnJWWVD2XEz/wjIwngF2z1riZovtN3dmb9Cnr6H4bGd4FkFrkOOIHndHxtqw1bq7oflP3qrjltutupJb4JvEDzsi4Bvf571V036l7A8DVxPfdyPhK1hpLqoQFwEbiB5zhWAsckLXGzRbdf+rN86jWLoEbcXfA1nHBVfu8h2p9EvRDwB3RhZD67E7gY9GFGGEy8K7oQkjKZwdgJfG/NobjDmBq1ho3X3QfqnfTgXuJ78PheBqYnbXGqhTvALTLnwDbRBdihHcDG6ILIQVZC7w3uhAjzATeHF0ISeUbAO4i/lfGcFyRt7qtEd2PKu4HxPfjcNyFC3Klxnkx8YPLcKwHDsxb3daI7ksVdyjVWph7Rt7qSuq3/yJ+YBmOz2aua5tE96XKcT7xfTkc385cV0l9tBvpWXv0wDJEWoS4c97qtkp0f6oce1Kd1wLX4znaCi4CbIc3A1OiC9FxNrAkuhBSxdwP/Gt0ITqmAn8YXQhJ5fgt8b8qhoAVwI6Z69o20X2q8sylOq/p3pq5rpL6oEr7/n8kc13bKLpPVa5/Ir5Ph+OozHWVlNnZxA8kQ8BTwJzMdW2j6H5VuXYB1hDfr0PAv2Suq6SMtgKWEj+QDAGfylzXtoruV5Xv88T36xBprU6Vtg2X1IWXEj+IDJHeQNgzc13bKrpvVb69qc6+AKdnrqsC+RZAs702ugAd3yCtcpa0Zb8DLokuRMfrogsgqXtTgMeJ/wUxBBybua5tFt23yuNU4vt2iDSGVOUVYkkTdAbxg8cQ8OPcFW256P5VPjcS379DwAtzV1QxfATQXK+JLkDHudEFkGrq7OgCdLwiugCSunM/8b8cngC2zl3RlovuY+WzDen12eg+vjd3RRXDOwDNdBiwR3QhgAuA1dGFkGpqFfD16EKQ3ko4ILoQKp8TgGZ6aXQBOr4UXQCp5r4YXYCOM6MLIGlifkT8bcMbstdSEN/Pyu824vv56uy1VN95B6B5ZgMnRhcC+Fp0AaSGqMK5dCKu52kcJwDNcyrx7+0OAd8KLoPUFF8l/m7LNKrxw0IlcgLQPKdGFwD4KfBAdCGkhrgX+GV0IYAXRBdA5XIC0DxVmAB8M7oAUsNU4ZxyQyCpwmYT/xGRQdInTdUf0YvD1B/PI76vNwCzcldU/eMdgGY5ifjPd94IPBxcBqlp7gTuCC7DFOC44DKoRE4AmuWk6AIA34sugNRQVfhC4PHRBVB5nAA0y9HRBQC+H10AqaEuiy4A3gFolIHoAqg0A8BSYPvAMjwBzCWtQ1B/RD+Hdwzpn62AZcDMwDIsA3YiPu9UAu8ANMe+xF78Aa7Ai7+Uy3riP6+9A7BPcBlUEicAzXFsdAGAq6ILIDXcldEFAI6MLoDK4QSgORZGFwC4ProAUsP9MLoApK+NqgGcADTHIcHHf5L00RJJ+dwKrAgugxOAhnAC0BwHBx//OtImQJLy2QT8PLgMTgAawglAM8wGdg0uw3XBx5faIvpc2wOYE1wGlcAJQDMcTPzrWD8LPr7UFtF3AAaAA4LLoBI4AWiGA6MLANwSXQCpJW6KLgCwX3QBVJwTgGaIfi/3YeDx4DJIbfEwsCS4DNFjjkrgBKAZ9g4+vr/+pf66Ofj43gFoACcAzRA9Abg1+PhS20Sfc04AGsAJQDM4AZDa5c7g4y8IPr5K4ASg/maR9ueOFD0YSW0Tfc7tAEwPLoMKcgJQf7tFFwC4L7oAUsvcFXz8AWCX4DKoICcA9bdz8PFXkT5DLKl/HgWeDi5D9OZjKsgJQP3NDz7+Ivw2uBRhcfDxnQDUnBOA+psbfPxFwceX2uqB4OP7CKDmnADU37zg498ffHypraLvAEQvPlZBTgDqb8fg47sDoBTjoeDjbx98fBXkBKD+or/K5QJAKUb0ubdd8PFVkBOA+psVfPzoQUhqq+hzzzsANecEoP6iJwDLg48vtdWy4OM7Aag5JwD1Nzv4+NG/QhTL78LHiZ58bx18fBXkBKD+tg0+/lPBx1esHwIHRheipVYFH9+tgGvOCUD9TQs+/trg4yvWPOAa4JDgcrTR6uDjOwGoOScA9Tc1+Pjrg4+veHOBq3AS0G9OAFSIE4D6mxJ8/A3Bx1c1DE8CDo4uSIusCT7+jODjqyAnAPUXfQdgXfDxVR1zSWsCDo0uSEtEj9/Rx1dBdmD9Rd8B8BGARtqJdCfgsOiCtED0ua+acwJQf9Ff4os+fttV8RHMTqSFgUcFl6PpJgcf33O/5pwA1F/0L/DoRxBttzK6AOPYDvg+cHh0QRos+g6AE4CacwJQf9ETgOhfIW23KLoAm7EjaU3A0dEFaSgnACrECUD9RS/C2yr4+G13c3QBtmD4TsDC6II0UPTke2Pw8VWQE4D6i74DEL0RUdtdE12ACdgBuBI4MrogDRM9AYjeh0AFOQGov+g7ANEfI2q7S4ifBE7E9sAVuDCwTNHrb5wA1JwTgPqLHvyjP0bUdk8AF0YXYoKGJwGuCShH9Nf4nADUnBOA+oveDcw7APE+BgxGF2KCtiNNAo6JLkgDzA0+vhOAmnMCUH/RnwSdE3x8wS3AF6IL0YU5wOXAsdEFqbmdg49f1VdQNUFOAOpvWfDx5wUfX8l7gbuiC9GF4UnA8dEFqbHoCcDS4OOrICcA9Rd9EkYPQkpWAv8DWBFdkC7MJr0i6CSgN9GPAKLvPqogJwD15x0ADbsZeCX1ejY7G/gBcEJ0QWooegIQPfaoICcA9Rd9Es4PPr6e7Rrg5dRrEjCLdCfgxOiC1Ez03bfou48qyAlA/UWfhHsFH1/PdTX1nQScFF2QGom+AxA99qggJwD1F30SLgg+vsZWx0nAtsD3gJOjC1IDA8CewWV4KPj4UusdRPooR2RE/xLR+J4PPE18jnQTK4EX5GiMBtmV+H7aN3stJW3W1qRNYCIHAldxV9vpwCriLxjdxNPAKTkaoyFOI7Z/BoHpuSupvHwEUH+rgceCy3Bg8PG1eXV8HDATuAwnAeOJ/vX9OLA2uAwqyAlAM9wXfPyDg4+vLavjJGAb0iTgtOByVNFBwcdfHHx8lcAJQDMsCj6+E4B6uBr4feq1hes2wKXAC6MLUjGHBx//nuDjqwROAJphUfDxnQDUx0+o32ZBW5M+e3xacDmq5NDg498dfHyVwAlAM0Q/Atgd2Cm4DJq4Oj4O2Bq4GDgyuiAVMI/48+3O4OOrBE4AmuGO6ALg513rpo6PA2YBFwE7RBckWBXeunEC0ABOAJrh1ugC4ASgjur4OGB34FPRhQhWhY2SfAQgVcgDxL4X/N38VVQmddsnYBA4NktL1MPPiG1/dwCUKua7xA4Ky/GOUp3VbRJwSZ5mqLxtgPXEtr2T/YZwwG6OW4KPvx3xK5PVu7qtCTgT2C26EAGOB6YGl+Gm4OOrJE4AmqMK6wBOiy6ACqnTmoBJwGuiCxGgCs//b44ugMrhBKA5ou8AAJwaXQAVVqdXBE+PLkCA50cXAO8ASJUzhfivvj3RKYfqrw5rAu7LVvtqmkp6RBN9jg/krqj6wzsAzbERuCG4DHOAE4PLoHLU4U7AHrRrwnkqaRFgpOE3ENQATgCa5afRBSAtJFMzVH1h4CRg2+hC9FEV1jxUYYyRNIYXE39b1gVCzVPlxwHbZax3lQwADxLf3m1cdyHVwmzSo4DoQWLv3BVV31VxErCJ9jwCOJb49t4AzMxdUfWPjwCa5SngN9GFoBq3KlWuKq4JeIA04W2DV0cXgHR3r6qPg9QDJwDNc110AYDXRhdAWVRtEvDr6AL00auiCwBcFV0ASZv3WuJvFQ6SPtqiZqrK44B35q5oRRxIfFsPAb+Xu6KSiplDelYXPVi8L3dFFSp6ErAJ2DV7Lavhg8Sfz2uAGbkrKqm4HxM/YNyWvZaKFjkJuLgP9auCAeAe4s/nK3JXVFI5PkD8gDEEHJO7ogoXMQkYpD25dQbx5/EQ8L9zV1RSOY4gfsAYAj6Xu6KqhH5PAr7Un2pVwteJP4+HgINzV1RSOQaAh4gfNFaQ9iZQ8z2f/nyL4n5g+z7VKdqOwFriz+N7cldUMXwNsJmGgB9EF4K0TetboguhvujHp4RXdI6xPOMxquStwLToQtCe9RZSY7yM+F8OQ8DdONFsk9NIG1KVnUdP0a7PTQ8AdxJ//g7RrnaXGmEr0qc7owePIdJkRO1xJLCI8vLnd6R1LW1yGvHn7RCwFJict6qScjif+AFkCLg8d0VVOdsBXyat2O81bwZJC/7m9LfolfBt4s/bIeALuSsqKY+XED+ADA/kB2auq6rpWOAS0sY9E82XTaTnzm151W+0Qyg2cSoz/PqfVFNTSbfwogeRIeDzmeuqatsV+AvgIuA+nj0h2NT53y4ibe/blh3+xvNV4s/XIdKbRK7fkWrsC8QPJEOk98TnZ66r6mMy6THBdviMeaT9qMYnvYeAf8pcV0mZvZD4gWQ43BhI2rwvEX+eDkdbH8FIjVGVvcSHgPXA3nmrK9XWHsA64s/TIeAO0tihBvP5TvMNkd4GqIKpwF9FF0KqqPeTXt+tgnNJY4ekmtuFanwieIj0fPOAvNWVamc30id3o8/PIdJdiJ3yVldSP11M/MAyHF/PXFepbr5M/Hnp+Sk1VFW2Bh4iveO8MG91pdo4nO72ScgdL8pbXUn9NhlYTPzgMhzuDiglVxJ/Pg6H3+6QGuqDxA8wI+P1easrVd6riD8PR8Y781ZXUpTt6c832ycaj9DOfd4lgBmkDx1Fn4fD8RQwK2uNJYX6HPEDzcj4bN7qSpX1D8SffyPjE3mrKynaPlRnq9GhTlmOzlpjqXoOoDqb/gyfh3vlrLCkariQ+AFnZPwS94NXe0wCriX+vBsZX8taY0mVcQzxA87ocPGR2uJdxJ9vI2MQOCxrjSVVyk+IH3hGxlN4C1LNtwBYSfz5NjIuzlpjSZXzAuIHntFxDb6DrOaaBPyI+PNsdByXs9KSqulq4gef0fHerDWW4ryf+PNrdFyRtcaSKusk4geg0bGWtDWq1CRHUa1V/8NxYs5KS6q27xE/CI2OO4Btc1Za6qOZpJyOPq9Gh8/+pZY7irQKOHowGh2+lqSmuID482l0bMI7bZKAi4gfkMaKs3JWWuqDPyP+PBorLshZaUn1sT/VfD65Fjg5Y72lnI6jmufVOtLriJIEwKeIH5jGiqXAvhnrLeUwn2p9fntkfDRjvSXV0CzS1/miB6ex4nb8aqDqYzrwM+LPm7FiCTA7X9Ul1dVZxA9Q48X3gSn5qi6VYgD4CvHny3jxx/mqLqnOJpE+zBM9SI0X/5yv6lIp/o7482S8uBF32pS0GadSzdcCh+Pt+aouFfIO4s+P8WITbvojaQK+RPyANV6sB16dr+pST14JbCT+/Bgv/l++qktqku2BR4kftMaLdcCZ2Wovdec0YDXx58V48TAuopXUhdcTP3BtaRLw0my1lybmeGAF8efD5uK12WovqbEuJn7w2lysIv36kiIcCTxB/HmwufhOttpLarTdgKeIH8Q2F0/j4ib131GkTaqi839zsRzYNVcDSGq+txM/kG0pngSOzdUA0ignUP1f/kPAm3I1gKT2uIT4wWxL8TRwRq4GkDpOofrP/IdIH/iSpMLmUt1tgkfGGuAVmdpAeiXVXu0/HEtI56wkleIlVHuDoOHYALwlTxOoxd5Btd/zH45BnARLyuCzxA9wEx0EP0zal10qYgD4W+JzeqLxmTzNIKntpgE3Ez/ITTS+AczI0hJqg2nAvxGfxxONm0lfIpSkLA4mLbiLHuwmGj8B5mVpCTXZLsDPic/ficYKYL8sLSFJI1R9l8DR8SBwXJaWUBMdBzxEfN52E2/M0hKSNIZPET/odRNrgbdlaQk1yZ+TtpmOztduwuf+kvpqCvBD4ge/buObwOwM7aF6mwl8lfj87DZ+CmyVoT0kabN2Jt1ejx4Eu407gYUZ2kP1dBRwB/F52W0sJp2DkhTieNIGPNGDYbexFngPMKn8JlFNTALeD6wnPh+7jTW4rkVSBbyeemwSNFb8CNi7/CZRxS0g9X10/vUSg8Abym8SSerN+4kfGHuNp0k7vblxUPNNAv4CWEl83vUaHyy9VSSpoHOJHxyLxI+BA0tvFVXFAcC1xOdZkTi/9FaRpBJMAb5P/CBZJNaRthF2R7Xm2Br4e+r3et/ouApX/EuqsFnAr4kfLIvGvcCrS24b9d+rgEXE51PR+CXp3JKkSpsL3E78oFlGXA0cXm7zqA8OAi4lPn/KiLvxdT9JNbI7zfjlNUT6DOz5wJ5lNpCy2A34MrCJ+LwpIxYDe5TZQJLUD/tQvz3VNxdrgU8DO5XZSCrFnsDZ1HNPivHiMVyUKqnG9gceJX4wLTNWkvZf363EdlJvFpD6Yi3xeVH2xf/QEttJkkIsBJ4gflAtO9YCnyddhNRfhwBfIT2eic6DsuNx4LDymkqSYi0k/aqJHlxzxEbgW8CppbWWxjIAnAZ8m+Y84x/r4u+iU0mNcxDNWhMwVtwI/Anp63Iqx07Ae0kfcYru35zxKP7yl9RgewH3ED/Y5o4VwAXAGaW0WvsMACcD5wCrie/P3HE/ab2MJDXa7jT/19zIuA34a2DfMhqv4Q4k7XXfhknicNxBOickqRXm0YwdA7uNG4C/xF97wwaAY4F/BH5LfP/0O24kbZwlSa2yLfX/dkCRuAP4GGnxYJv2eJ9KejRyNvAg8f0QFd8nnQOS1EpTSM95owfj6FhJ2rr23cARwOQijVox2wCnA/8XuJJ6f4q3rDiXlPuS1HrvAwaJH5irEiuAK0hfJjwT2KX3pu27ecArgU8CPwM2EN+eVYlB4AO9N61UnoHoAkgjvJ60j7uf4h3bY6R1E7cAd3XiDmBJUHl2BfYjLW48iPQK22G4VfJ4VgNvBb4RXRAJnACoeo4DLsRtdruxEnigE4tJz9WXdWIpaRfGFcD6zt9NPPcRwzY8sw5hEukivhNpgdq8Ef+e3/n3XsDWmerTRPeTPi99U3RBpGFOAFRFOwL/ie/QqxmuBV5L3J0aaUxNWmik5lhNmgBsA5yAE1XV1+eAN5LuvEiSuvBK4EniF28ZRjexAngDkqRCDiItfIse1A1jIvEr3PVRNeAjANXB48D5pE1TjsNHAqqmIdLnoV9PyllJUonOoPlfFDTqF0uAVyBJympH4CLiB33DGAIuI70qKUnqk7NwgaARF0+SNvaRJAWYT9o4KPpiYLQrvoOf8JWkSng57f6ynNGfeBR4M5KkStkOOA8/KmSUH5tIX/BSbQqmAAAQ9ElEQVTbDklSZZ0C3Ej8RcNoRvwMOAZJUi1MIt2qfYT4C4hRz1gGvAv3S5GkWpoFfBxYR/wFxahHrCHlzBwkSbW3L/AtXB9gjB+bgC8DeyBJapyjgO8Sf7ExqhXfBQ5DktR4x5He5Y6+8BixcQUpFyRJLXMKcA3xFyKjv3EpcCySpNY7FvgGsJH4i5ORJ9YDXwGORJKkUfYCPorfGGhSrAA+g4v7JEkTsD3wf4AHiL+AGb3F7cBfkF4FlSSpK5OAM0iPB9YTf1EzNh8bSYs7zwAGxuhPSZK6Nh/4AHAP8Rc649lxC/BeYN64vSdJUkEDwGnAOcDjxF/82hqPAv8MLNxsb0mSlMFk4GTSIrMlxF8Umx5LgQtIn3+eOoH+kSQpu62AM4EvAg8Sf7FsSiwCPke66+KHeaSSuEhGymdv0i/VlwHPB6bFFqc2NgI3kBbzXckzn3aWVCInAFJ/bAu8EDgdOIm07/yU0BJVxwbgl8CPOnEtsDK0RFILOAGQYswEjidNBk7q/Hvb0BL1z+PALzrxU+A6YFVoiaQWcgIgVcNk4HnAoaS7A4d2Yq/AMhU1/Pz+tk78inTRXxRXJEnDnABI1TabNBE4gDQZ2AtY0In5YaV6tkeB+zrxu87f3wC/BZ4OLJekzXACINXXdNKEYDdgJ2CHcWJGJyBNKCaRXqGb2fnfNvDsZ+4rSLfkn+r8ewXwBOnW/WPAI6SL/hJgMbAmQ90kSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZJUAQPRBdAWzQAWALt3Ymdg287/Pr3z/7MWWAM8DSwBFgMPAIs6/7vay/xRr2YBh5PyZy9gD2AXYCtgDjAVmEzKnxXABuBRUt48ANwP/BpY2t9ia6KcAFTLZOAY4GRgIXAksD8wqcf/3iBwF3BjJ34K/ALYVLikqiLzR0XsC7wYeD4pd/alnGvEA6T8uR74AXALMFTCf1eqvTnAW4GvA8tIJ0bOWNY51ls6x1a9mT/q1QBwIvAvwD3kz53heBj4EvD7pEmr1CpTgVcBF5JusfbrxBsda4BvAK/olEn1YP6oiD2AD9Pfi/548Qjwz8DBWWssVcC2wLtIt8SiT7yxTsQPAdvlqrwKM39UxOHABcB64vNlrLgWeDk+mlbDbAd8jLRQJvok21I8Bfwj3t6tEvNHRRwOfI/43Jho/Bw4PUtLSH00HXgv/Xk2W3YsBd4DTCu9VTRR5o+K2B34N9Kizeh86CUuBQ4pvVWkPjgDuJf4k6ho3IOz8Qjmj3o1ifSoaCXx/V80NpDuKA2/sipV2nbAeaRXqKJPnrJiEPgi3tbtB/NHRRxIel0zus/LjjtIr7dKlXUyaROV6JMlVywmvTakPMwfFfFWYBXx/ZwrNgJ/Q+/7WkhZDJBuuVV1dW2ZsYG02tuTsDzmj4qYDpxDfN/2K64G5pXSclJBM4BvE39S9Du+ic/lymD+qIh5wK+I789+xyLgoOLNJ/Vue+AnxJ8MUXE9sFPhVmwv88f8KWIf4G7i+zEqlgOnFG5FqQd7AXcSfxJEx29JO4upO3th/pg/vTuG9KpldP9FxxrSTpRS3+xGM17RKivuBnYt1KLtYv6YP0Uchhf/kbEOeFmhFpUmaGfgduKTvmpxFzC/QLu2hflj/hTxPNInd6P7q2qxDnhJgXaVtmgW8Bvik72qcTNpv3qNzfwxf4rYFXiI+H6qaqwEjui5daXNmAR8h/gkr3pchp/4HIv5Y/4UMR24gfj+qXo8BOzSYxtL4/oU8cldl/hEj23cZOaP+dOrAeCrxPdLXeI6/AaFSvQ64pO6bvGanlq6mcwf86eI/0l8f9QtPtNTS0uj7EY9v8YWHcvx9S4wf8yfYg6k2dv75opB4KU9tLf03yYB1xCfzHWNq2j3lq/mj/lTxFbAjcT3Q13jYWDHrltd6vhz4pO47vGOrlu9Ocwf86eIDxLf/nWP87tudQmYS7oNGZ3AdY/ltHO7V/PH/Clid9JrbdHtX/cYxO2C1YPziU/epsQXu2z7JjB/zJ8iLiS+3ZsStwBTumt+tdmRpJljdOI2JTbRrg06zB/zp4iTiG/zpsUfd9UDarVLiE/YpsW3u+qBejN/zJ8iriC+vZsW9+JdAE2Av97yxCBwdBf9UFfmj/lTxAnEt3VT4y0T7wa11UXEJ2pT41td9ENdmT/mTxGXEt/OTY27aPdrpc8xEF2AitkduA/3Is9lE7APcH90QTIxf/Jqev7sAfwO8yenF5EesQhnQ6OdhSdfTpNp9mIc8yevpufP2zF/cnt7dAGqxDsAz5hC+mXhl6TyegTYE9gQXZCSmT/9Yf6oiI2k/Hk4uiBVUKcJwCzgTOB04HBgL2AOMDWwTP20grQ16uWk91oXAY8Cs0lt8DzgYNItrt8HZoSUUlVl/qgI82dsG4AnSe3xa+Bq0jqOpwPL1Cj7A+fR3g9i3A38GbBNF202E/hT4IEKlN8wf4z6hvnTfawibV61XxdtplFmAJ8kzbCiOzQi1gB/TfogSK+mAR8A1lWgPob5Y9QnzJ/isR74ODC9QBu20n7ArcR3YFTcDxxauBWfcSRwTwXqZZg/RvXD/Ck3rgfmF27FllgIPEZ8p0XFzeRZCDQfuK0C9TPMH6O6Yf7kicXAYYVbseH2o90X/9yrgOeSFqtE19Mwf4zqhfmTNxYD84o2YlPNoN23/ddQ7m238RzdOVZ0fQ3zx6hOmD/9ietJayMqoUqbTnwUeFV0IQJ9BPhmH47zMGlf9Rf24VjqH/NHRZg//bEbqf7XBJcDqM4+APuTng+19WtN95DeoV3fp+NNB35L2ktB9Wf+qAjzp79Wkh53PxpdkKpsBfw+2nvxB/g0/Tv5ANaSXk9RM5g/KsL86a+ZwN9EFwKqcQdgFml7z62jCxJkBWnhzao+H3c26XZcW9u9KcwfFWH+xFhFWhC4MrIQVbgDcCbtTQJI22v2++QDeAq4LOC4Kpf5oyLMnxjbkK59oaowATg9ugDBLg889rWBx1Y5zB8VYf7ECb/2VWECcHh0AYLdEnjsGwKPrXKYPyrC/IkTfu2rwgRgQXQBgi0KPPZDgcdWORYFHtv8qb9Fgcdue/6EX/uqsAhwHcU+OFF300ltEGFrYp7/qTzmj4owf+KsI/hDQVW4A9B2ka8/bgo8tsph/qgI86fFqjABWBFdgGDdfGe7bLMDj61ymD8qwvyJ81R0AaowAbgvugDB9g889t6Bx1Y5zB8VYf7E+V10AaowAfh1dAGCHRJ47PBVqCrM/FER5k+cm6MLUIUJwNXRBQj2osBjt/WDHE1i/qgI8yfOVdEFqMJbADNJH0WIfBYVaS2wM/1fC7ENqd1n9vm4Kpf5oyLMnxhuBdyxEvhadCECTQf+MOC4b6S9J1+TmD8qwvyJ8VWCL/5QjTsAkD6NeBswNbogQRaT2qBf7+NuRfocZ9sX4TSF+aMizJ/+Wg8cSAUWAU6OLkDHcmBb4KToggSZDaymf3tj/yXwuj4dS/mZPyrC/OmvTwAXRheiaqYD1wNDLY31wDGFW3HLTiA994uur2H+GNUJ86c/cR0wrXArNtR80u2o6E6KintI3+bOZXfgkQrU0zB/jOqF+ZM3HiAt/NNmHEa7JwG3AXMLt+Jz7U768ld0/Qzzx6humD954gHg0MKt2BI7AT8ivtOiYjFwXOFWfMYJtHvm3bYwfwzzpzpxHf7y79o04MOkVyWiOzAi1gAfoNjXorbq/Dfa/MytrWH+GOZPbKwD/gGf+RcyD/g87Z0ILAL+lO4+nLENcBZwbwXKb5g/Rn1jEeZPt7ESOIcavOZYlX0AJmImcCbwAuAIYAEwhzTLbIPVwGWkV3VuAB4ClgEbSe2wAFhIap+X0u5NNvRc5o+KMH/Gth54kvRRu5uAH5LaKXyTn4mo0wQgtymk2e6uweVoukeAPYEN0QUpmfnTH03On/vJuwpfacKyJ/BwdEGqoApbAVfFRuBL0YVogS/QvMEbzJ9+aXL+fDm6EC1wMV78/5t3AJ5td9KtnKrskNg0m4B9SL90msj8yavp+bMHaXtY8yefFwFXRBeiKrwD8GyLgUuiC9FgF9HcwRvMn9yanj8PAN+LLkSD3QVcGV0IVdtCYJD4laRNi0Hg8C76oa7MH/OniOOJb+umxpu76Ae12MXEJ2vT4ltd9UC9mT/mTxE/IL69mxb3kBZaSlvkr7hyYxPt+PU2zPwxf4o4kfg2b1q8pZsOkM4jPmmbEud22fZNYP6YP0V8g/h2b0rciAsr1aUdgKXEJ2/dYxnp2w5tY/6YP0XsBjxNfPvXPQZJ3yLQGJwVjW8NaTenM6MLUnP/C/hJdCECmD/laGv+rCBdwM6ILkjNfRk4O7oQqqdJwFXEz2LrGlfQ7ldNzR/zp4ippG13o/uhrvEQ6U6c1LNd8VZuL7GctDFO25k/5k8R++KjgF5iEHhJD+0tPcdriU/ousWre2rpZjJ/zJ8i3kF8f9Qt/qmnlpbG8Unik7ou8bEe27jJzB/zp4h/J75f6hI/Bab11szS2CaRtnmNTu6qx2W4uHQs5o/5U8R04Hri+6fqsQiY21sTS5s3C7iF+CSvatxEe74D3gvzx/wpYj7pexPR/VTVWAEc1nPrShMwF7id+GSvWtwJzCvQrm1h/pg/RewPPEJ8f1UtVgMvKNCu0oTtStpbOjrpqxJ3A7sUatF2MX/MnyIOxTdLRsY63G9DfbYncAfxyR8dt+PrWr0wf8yfIo4CHiO+/6JjNfCygm0p9WQ74MfEnwRRcR2wY+FWbC/zx/wpYm/SN+6j+zEqlgPPL9yKUgEzgG8SfzL0O75GWpmsYswfFbEz8Avi+7PfcR9wQAntJxU2ALyL9Cwq+sTIHRuA93XqrHKYPypiOvAZ4vu2X3EVaeIjVcqJNPs1nQfwy1o5mT8q4o+AVcT3c67YCPw17f4+hCpuDvAF0l7U0SdMWTFI+ib7nBLbSWMzf1TEAcC1xPd52fFb4KQS20nK6nTS603RJ07RuAs4rdym0QSYP+rVJOCdNOMjQuuBv8f1IqqhacC7qec7u4+TnktvVXqraKLMHxWxG/Al0q3z6HzoJS4BDiq9VaQ+mwP8A/Ak8SfVluJJ4O+A2VlaQr0wf1TEocClxOfGRONnwKlZWkIKNJP0q2gR8SfZ6LiPtDrb57TVZf6oiMOAc4A1xOfL6BgErgBenq32UkVMIe1e9XXSTlZRJ91q4D9J22j6Bbb6MH9UxK7A31CNTYQeAj6B7/SrpWYDbyYNpI+T/4R7HPhq55iz+lA/5WX+qIjjSXsI9HMy8CBwHvAinDiGcjOOaplE2uP7JODIzr+fR+8nySbSfvM3Ar8Cftr592DhkqqKzB8VsTfwYuBkUu7sRznv3C8i5c/1wOXArSX8N1UCJwDVN5304Zg9SB9N2Zn0q286aRtZSLdi15EWYD1G2nBlMXA/sLbP5VW1mD/q1bbA4aSJwR6d2IX0dsoc0hsek3gmd9YDS0h580Dn76+BZf0uuCRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJOf1/TBeQ5OE/WfQAAAAASUVORK5CYII=" })] })] });
25540
25730
  }
@@ -25675,6 +25865,7 @@ const iconComponents = {
25675
25865
  Synced,
25676
25866
  Syncing,
25677
25867
  Tabler,
25868
+ TimelineCaret,
25678
25869
  Timeline,
25679
25870
  TrashFill,
25680
25871
  Trash,
@@ -25737,7 +25928,12 @@ const ADD_TRIGGER = "ADD_TRIGGER";
25737
25928
  const ADD_INVALID_TRIGGER = "ADD_INVALID_TRIGGER";
25738
25929
  const defaultDriveOptions = [NEW_FOLDER, RENAME, SETTINGS];
25739
25930
  const defaultFileOptions = [RENAME, DELETE, DUPLICATE];
25740
- const defaultFolderOptions = [RENAME, DELETE, DUPLICATE];
25931
+ const defaultFolderOptions = [
25932
+ NEW_FOLDER,
25933
+ RENAME,
25934
+ DELETE,
25935
+ DUPLICATE
25936
+ ];
25741
25937
  const debugNodeOptions = [
25742
25938
  ADD_TRIGGER,
25743
25939
  REMOVE_TRIGGER,
@@ -25817,7 +26013,7 @@ const nodeOptionsMap = {
25817
26013
  };
25818
26014
  const name = "@powerhousedao/connect";
25819
26015
  const productName = "Powerhouse-Connect";
25820
- const version$1 = "1.0.18-staging.1";
26016
+ const version$1 = "1.0.19-dev.1";
25821
26017
  const description = "Powerhouse Connect";
25822
26018
  const main = "./dist/index.html";
25823
26019
  const type = "module";
@@ -25829,7 +26025,7 @@ const repository = { "type": "git", "url": "git+https://github.com/powerhouse-in
25829
26025
  const bugs = { "url": "https://github.com/powerhouse-inc/document-model-electron/issues" };
25830
26026
  const homepage = "https://github.com/powerhouse-inc/document-model-electron#readme";
25831
26027
  const scripts = { "build:tsc": "tsc --build", "start": "electron-forge start", "package": "electron-forge package", "make": "PH_CONNECT_BASE_HREF=./ electron-forge make", "make:mac": "PH_CONNECT_BASE_HREF=./ electron-forge make -p darwin", "make:linux": "PH_CONNECT_BASE_HREF=./ electron-forge make -p linux", "make:windows": "PH_CONNECT_BASE_HREF=./ electron-forge make -p win32", "publish:electron": "electron-forge publish", "prepublishOnly": "npm run build", "lint": "eslint .", "lint:fix": "eslint --fix .", "lint:nx": "eslint --quiet --fix .", "format": 'prettier --write "**/*.+(js|ts|jsx|tsx|json)"', "dev": "vite -c vite.renderer.config.mts", "dev:nocache": "rm -rf node_modules/.vite && rm -rf node_modules/.cache && npm run dev", "prebuild": "tsc --build --noEmit", "build": "NODE_OPTIONS=--max-old-space-size=6144 vite build -c vite.renderer.config.mts", "preview:web": "vite preview -c vite.renderer.config.mts", "e2e": "playwright test", "cy:open": "cypress open", "build:service-worker": "tsc --build ./tsconfig.sw.json", "clean": "rimraf dist", "clean:node_modules": "rimraf node_modules" };
25832
- const devDependencies = { "@electron-forge/cli": "^6.1.1", "@electron-forge/maker-deb": "^6.1.1", "@electron-forge/maker-rpm": "^6.1.1", "@electron-forge/maker-squirrel": "^6.1.1", "@electron-forge/maker-zip": "^6.1.1", "@electron-forge/plugin-vite": "^6.1.1", "@electron-forge/publisher-electron-release-server": "^6.2.1", "@electron-forge/publisher-github": "^7.2.0", "@electron-forge/shared-types": "^7.7.0", "@playwright/test": "^1.41.2", "@powerhousedao/builder-tools": "workspace:*", "@powerhousedao/common": "workspace:*", "@powerhousedao/config": "workspace:*", "@powerhousedao/design-system": "workspace:*", "@powerhousedao/reactor-browser": "workspace:*", "@powerhousedao/scalars": "workspace:*", "@rollup/plugin-node-resolve": "^15.2.3", "@sentry/browser": "^9.1.0", "@sentry/react": "^7.109.0", "@sentry/vite-plugin": "^2.22.2", "@tailwindcss/vite": "^4.0.9", "@tanstack/react-virtual": "^3.8.1", "@types/node": "^22.13.10", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.18", "@types/uuid": "^9.0.7", "@types/wicg-file-system-access": "^2020.9.6", "@vitejs/plugin-basic-ssl": "^1.2.0", "@vitejs/plugin-react": "^4.2.1", "asar": "^3.2.0", "did-key-creator": "^1.2.0", "document-drive": "workspace:*", "document-model": "workspace:*", "electron": "30.0.0", "electron-is-dev": "^3.0.1", "electron-playwright-helpers": "^1.7.1", "electron-squirrel-startup": "^1.0.0", "electron-store": "^8.1.0", "esbuild": "^0.24.0", "graphql": "^16.8.1", "graphql-request": "^6.1.0", "i18next": "^23.7.6", "jotai": "^2.1.0", "jotai-effect": "^1.1.6", "localforage": "^1.10.0", "lz-string": "^1.5.0", "playwright": "^1.41.2", "playwright-core": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.11", "react-hotkeys-hook": "^4.5.0", "react-i18next": "^13.5.0", "react-router-dom": "^6.11.2", "tailwind-merge": "^3.0.2", "tailwindcss": "^4.0.9", "uuid": "^9.0.1", "viem": "^2.8.13", "vite": "^6.2.2", "vite-envs": "^4.4.11", "vite-plugin-html": "^3.2.2", "vite-plugin-node-polyfills": "^0.23.0", "vite-plugin-svgr": "^4.2.0", "vite-tsconfig-paths": "^4.3.2", "xvfb-maybe": "^0.2.1" };
26028
+ const devDependencies = { "@electron-forge/cli": "^6.1.1", "@electron-forge/maker-deb": "^6.1.1", "@electron-forge/maker-rpm": "^6.1.1", "@electron-forge/maker-squirrel": "^6.1.1", "@electron-forge/maker-zip": "^6.1.1", "@electron-forge/plugin-vite": "^6.1.1", "@electron-forge/publisher-electron-release-server": "^6.2.1", "@electron-forge/publisher-github": "^7.2.0", "@electron-forge/shared-types": "^7.7.0", "@playwright/test": "^1.41.2", "@powerhousedao/builder-tools": "workspace:*", "@powerhousedao/common": "workspace:*", "@powerhousedao/config": "workspace:*", "@powerhousedao/design-system": "workspace:*", "@powerhousedao/diff-analyzer": "^0.0.0-dev.4", "@powerhousedao/reactor-browser": "workspace:*", "@powerhousedao/scalars": "workspace:*", "@rollup/plugin-node-resolve": "^15.2.3", "@sentry/browser": "^9.1.0", "@sentry/react": "^7.109.0", "@sentry/vite-plugin": "^2.22.2", "@tailwindcss/vite": "^4.0.9", "@tanstack/react-virtual": "^3.8.1", "@types/node": "^22.13.10", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.18", "@types/uuid": "^9.0.7", "@types/wicg-file-system-access": "^2020.9.6", "@vitejs/plugin-basic-ssl": "^1.2.0", "@vitejs/plugin-react": "^4.2.1", "asar": "^3.2.0", "did-key-creator": "^1.2.0", "document-drive": "workspace:*", "document-model": "workspace:*", "electron": "30.0.0", "electron-is-dev": "^3.0.1", "electron-playwright-helpers": "^1.7.1", "electron-squirrel-startup": "^1.0.0", "electron-store": "^8.1.0", "esbuild": "^0.24.0", "graphql": "^16.8.1", "graphql-request": "^6.1.0", "i18next": "^23.7.6", "jotai": "^2.1.0", "jotai-effect": "^1.1.6", "localforage": "^1.10.0", "lz-string": "^1.5.0", "playwright": "^1.41.2", "playwright-core": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.11", "react-hotkeys-hook": "^4.5.0", "react-i18next": "^13.5.0", "react-router-dom": "^6.11.2", "tailwind-merge": "^3.0.2", "tailwindcss": "^4.0.9", "uuid": "^9.0.1", "viem": "^2.8.13", "vite": "^6.2.2", "vite-envs": "^4.4.11", "vite-plugin-html": "^3.2.2", "vite-plugin-node-polyfills": "^0.23.0", "vite-plugin-svgr": "^4.2.0", "vite-tsconfig-paths": "^4.3.2", "xvfb-maybe": "^0.2.1" };
25833
26029
  const optionalDependencies = { "@esbuild/linux-x64": "^0.21.4", "@rollup/rollup-linux-x64-musl": "4.14.3" };
25834
26030
  const packageJson = {
25835
26031
  name,
@@ -28610,6 +28806,9 @@ const _BrowserStorage = class _BrowserStorage {
28610
28806
  name: namespace ? `${namespace}:${_BrowserStorage.DBName}` : _BrowserStorage.DBName
28611
28807
  }));
28612
28808
  }
28809
+ ////////////////////////////////
28810
+ // IDocumentAdminStorage
28811
+ ////////////////////////////////
28613
28812
  async clear() {
28614
28813
  const db = await this.db;
28615
28814
  await db.clear();
@@ -28622,12 +28821,20 @@ const _BrowserStorage = class _BrowserStorage {
28622
28821
  const document = await db.getItem(this.buildDocumentKey(documentId));
28623
28822
  return !!document;
28624
28823
  }
28625
- // TODO: this should throw an error if the document already exists.
28626
28824
  async create(documentId, document) {
28627
28825
  var _a2;
28628
28826
  const db = await this.db;
28629
- await db.setItem(this.buildDocumentKey(documentId), document);
28827
+ if (await this.exists(documentId)) {
28828
+ throw new DocumentAlreadyExistsError(documentId);
28829
+ }
28630
28830
  const slug = ((_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug) ?? documentId;
28831
+ if (slug) {
28832
+ const slugManifest = await this.getSlugManifest();
28833
+ if (slugManifest.slugToId[slug]) {
28834
+ throw new DocumentAlreadyExistsError(documentId);
28835
+ }
28836
+ }
28837
+ await db.setItem(this.buildDocumentKey(documentId), document);
28631
28838
  if (slug) {
28632
28839
  const slugManifest = await this.getSlugManifest();
28633
28840
  if (slugManifest.slugToId[slug]) {
@@ -28636,6 +28843,9 @@ const _BrowserStorage = class _BrowserStorage {
28636
28843
  slugManifest.slugToId[slug] = documentId;
28637
28844
  await this.updateSlugManifest(slugManifest);
28638
28845
  }
28846
+ if (document.documentType === "powerhouse/document-drive") {
28847
+ this.updateDriveManifest(documentId, { documentIds: [] });
28848
+ }
28639
28849
  }
28640
28850
  async get(documentId) {
28641
28851
  const db = await this.db;
@@ -28653,6 +28863,48 @@ const _BrowserStorage = class _BrowserStorage {
28653
28863
  }
28654
28864
  return this.get(documentId);
28655
28865
  }
28866
+ async findByType(documentModelType, limit = 100, cursor) {
28867
+ const db = await this.db;
28868
+ const keys = await db.keys();
28869
+ const documentKeys = keys.filter((key) => key.startsWith(`${_BrowserStorage.DOCUMENT_KEY}${_BrowserStorage.SEP}`));
28870
+ const documentsAndIds = [];
28871
+ for (const key of documentKeys) {
28872
+ const documentId = key.slice(_BrowserStorage.DOCUMENT_KEY.length + _BrowserStorage.SEP.length);
28873
+ try {
28874
+ const document = await db.getItem(key);
28875
+ if (!document || document.documentType !== documentModelType) {
28876
+ continue;
28877
+ }
28878
+ documentsAndIds.push({ id: documentId, document });
28879
+ } catch (error) {
28880
+ continue;
28881
+ }
28882
+ }
28883
+ documentsAndIds.sort((a, b) => {
28884
+ const aDate = new Date(a.document.created);
28885
+ const bDate = new Date(b.document.created);
28886
+ if (aDate.getTime() === bDate.getTime()) {
28887
+ return a.id.localeCompare(b.id);
28888
+ }
28889
+ return aDate.getTime() - bDate.getTime();
28890
+ });
28891
+ let startIndex = 0;
28892
+ if (cursor) {
28893
+ const index = documentsAndIds.findIndex(({ id }) => id === cursor);
28894
+ if (index !== -1) {
28895
+ startIndex = index;
28896
+ }
28897
+ }
28898
+ const endIndex = Math.min(startIndex + limit, documentsAndIds.length);
28899
+ let nextCursor;
28900
+ if (endIndex < documentsAndIds.length) {
28901
+ nextCursor = documentsAndIds[endIndex].id;
28902
+ }
28903
+ return {
28904
+ documents: documentsAndIds.slice(startIndex, endIndex).map(({ id }) => id),
28905
+ nextCursor
28906
+ };
28907
+ }
28656
28908
  async delete(documentId) {
28657
28909
  var _a2;
28658
28910
  const db = await this.db;
@@ -28671,11 +28923,16 @@ const _BrowserStorage = class _BrowserStorage {
28671
28923
  }
28672
28924
  } catch (error) {
28673
28925
  }
28674
- const drives = await this.getDrives();
28675
- for (const driveId of drives) {
28676
- if (driveId === documentId)
28677
- continue;
28678
- await this.removeChild(driveId, documentId);
28926
+ const parents = await this.getParents(documentId);
28927
+ for (const parent of parents) {
28928
+ await this.removeChild(parent, documentId);
28929
+ }
28930
+ const children = await this.getChildren(documentId);
28931
+ for (const child of children) {
28932
+ const childParents = await this.getParents(child);
28933
+ if (childParents.length === 1 && childParents[0] === documentId) {
28934
+ await this.delete(child);
28935
+ }
28679
28936
  }
28680
28937
  await db.removeItem(this.buildManifestKey(documentId));
28681
28938
  await db.removeItem(this.buildDocumentKey(documentId));
@@ -28709,6 +28966,20 @@ const _BrowserStorage = class _BrowserStorage {
28709
28966
  const manifest = await this.getManifest(parentId);
28710
28967
  return manifest.documentIds;
28711
28968
  }
28969
+ async getParents(childId) {
28970
+ const db = await this.db;
28971
+ const keys = await db.keys();
28972
+ const parents = [];
28973
+ const manifestKeys = keys.filter((key) => key.startsWith(`${_BrowserStorage.MANIFEST_KEY}${_BrowserStorage.SEP}`));
28974
+ for (const key of manifestKeys) {
28975
+ const driveId = key.slice(_BrowserStorage.MANIFEST_KEY.length + _BrowserStorage.SEP.length);
28976
+ const manifest = await this.getManifest(driveId);
28977
+ if (manifest.documentIds.includes(childId)) {
28978
+ parents.push(driveId);
28979
+ }
28980
+ }
28981
+ return parents;
28982
+ }
28712
28983
  ////////////////////////////////
28713
28984
  // IDriveStorage
28714
28985
  ////////////////////////////////
@@ -28730,9 +29001,6 @@ const _BrowserStorage = class _BrowserStorage {
28730
29001
  const db = await this.db;
28731
29002
  await db.setItem(_BrowserStorage.SLUG_MANIFEST_KEY, manifest);
28732
29003
  }
28733
- async clearStorage() {
28734
- return (await this.db).clear();
28735
- }
28736
29004
  async addDocumentOperations(drive, id, operations, header) {
28737
29005
  const document = await this.get(id);
28738
29006
  if (!document) {
@@ -28746,22 +29014,6 @@ const _BrowserStorage = class _BrowserStorage {
28746
29014
  operations: mergedOperations
28747
29015
  });
28748
29016
  }
28749
- async getDrives() {
28750
- const db = await this.db;
28751
- const keys = await db.keys();
28752
- return keys.filter((key) => key.startsWith(_BrowserStorage.MANIFEST_KEY)).map((key) => key.slice(_BrowserStorage.MANIFEST_KEY.length + _BrowserStorage.SEP.length));
28753
- }
28754
- async createDrive(id, drive) {
28755
- await this.create(id, drive);
28756
- await this.updateDriveManifest(id, { documentIds: [] });
28757
- }
28758
- async deleteDrive(id) {
28759
- const documents = await this.getChildren(id);
28760
- await Promise.all(documents.map((doc) => this.delete(doc)));
28761
- const db = await this.db;
28762
- await db.removeItem(this.buildManifestKey(id));
28763
- return db.removeItem(this.buildDocumentKey(id));
28764
- }
28765
29017
  async addDriveOperations(id, operations, header) {
28766
29018
  const drive = await this.get(id);
28767
29019
  const mergedOperations = mergeOperations(drive.operations, operations);
@@ -28802,12 +29054,16 @@ const _BrowserStorage = class _BrowserStorage {
28802
29054
  }
28803
29055
  // migrates all stored operations from legacy signature to signatures array
28804
29056
  async migrateOperationSignatures() {
28805
- const drives = await this.getDrives();
28806
- for (const drive of drives) {
28807
- await this.migrateDrive(drive);
28808
- const documents = await this.getChildren(drive);
28809
- await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
28810
- }
29057
+ let cursor;
29058
+ do {
29059
+ const { documents: drives, nextCursor } = await this.findByType("powerhouse/document-drive", 100, cursor);
29060
+ for (const drive of drives) {
29061
+ await this.migrateDrive(drive);
29062
+ const documents = await this.getChildren(drive);
29063
+ await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
29064
+ }
29065
+ cursor = nextCursor;
29066
+ } while (cursor);
28811
29067
  }
28812
29068
  async migrateDrive(driveId) {
28813
29069
  const drive = await this.get(driveId);
@@ -28881,8 +29137,11 @@ const getReactorDefaultDrivesConfig = () => {
28881
29137
  }
28882
29138
  };
28883
29139
  };
28884
- function createBrowserDocumentDriveServer(documentModels, routerBasename) {
28885
- return new ReactorBuilder(documentModels).withStorage(new BrowserStorage(routerBasename)).withCache(new InMemoryCache()).withQueueManager(new BaseQueueManager(1, 10)).withOptions({ ...getReactorDefaultDrivesConfig() }).build();
29140
+ function createBrowserStorage(routerBasename) {
29141
+ return new BrowserStorage(routerBasename);
29142
+ }
29143
+ function createBrowserDocumentDriveServer(documentModels, storage) {
29144
+ return new ReactorBuilder(documentModels).withStorage(storage).withCache(new InMemoryCache()).withQueueManager(new BaseQueueManager(1, 10)).withOptions({ ...getReactorDefaultDrivesConfig() }).build();
28886
29145
  }
28887
29146
  const VERSION_CHECK_INTERVAL = parseInt(window.__VITE_ENVS.PH_CONNECT_VERSION_CHECK_INTERVAL) || 60 * 60 * 1e3;
28888
29147
  const basePath = connectConfig.routerBasename;
@@ -31441,14 +31700,14 @@ if (window.__VITE_ENVS.MODE === "development") {
31441
31700
  } else {
31442
31701
  serviceWorkerManager.registerServiceWorker(false);
31443
31702
  }
31444
- const App = lazy(() => __vitePreload(() => import("./app-yRMY-3GF.js").then((n) => n.aY), true ? __vite__mapDeps([0,1,2]) : void 0));
31703
+ const App = lazy(() => __vitePreload(() => import("./app-0PUokYXm.js").then((n) => n.bG), true ? __vite__mapDeps([0,1,2]) : void 0));
31445
31704
  const AppLoader = /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(App, {}) });
31446
31705
  const appLoader = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
31447
31706
  __proto__: null,
31448
31707
  default: AppLoader
31449
31708
  }, Symbol.toStringTag, { value: "Module" }));
31450
31709
  export {
31451
- getDefaultExportFromCjs as $,
31710
+ Icon as $,
31452
31711
  AddStateExampleInputSchema as A,
31453
31712
  SetModuleDescriptionInputSchema as B,
31454
31713
  SetModuleNameInputSchema as C,
@@ -31475,49 +31734,49 @@ export {
31475
31734
  baseLoadFromFile as X,
31476
31735
  baseLoadFromInput as Y,
31477
31736
  pascalCase as Z,
31478
- Icon as _,
31737
+ logger$1 as _,
31479
31738
  createReducer as a,
31480
- DELETE as a$,
31481
- LOCAL as a0,
31482
- commonjsGlobal as a1,
31483
- PUBLIC as a2,
31484
- SWITCHBOARD as a3,
31485
- locationInfoByLocation as a4,
31486
- sharingTypeOptions as a5,
31487
- objectType as a6,
31488
- recordType as a7,
31489
- stringType as a8,
31490
- capitalCase as a9,
31491
- moveNode as aA,
31492
- generateNodesCopy as aB,
31493
- copyNode as aC,
31494
- createState as aD,
31495
- setDriveName as aE,
31496
- setAvailableOffline as aF,
31497
- setSharingType as aG,
31498
- SynchronizationUnitNotFoundError as aH,
31499
- removeTrigger as aI,
31500
- generateUUID as aJ,
31501
- PullResponderTransmitter as aK,
31502
- addTrigger as aL,
31503
- ReadDriveNotFoundError as aM,
31504
- openUrl as aN,
31505
- getNodeOptions as aO,
31506
- DRIVE as aP,
31507
- FOLDER as aQ,
31508
- requestPublicDrive as aR,
31509
- serviceWorkerManager as aS,
31510
- packageJson as aT,
31511
- t as aU,
31512
- gql as aV,
31513
- request as aW,
31514
- getDimensions as aX,
31515
- READ as aY,
31516
- nodeOptionsMap as aZ,
31517
- defaultFileOptions as a_,
31518
- CLOUD as aa,
31519
- createZip as ab,
31520
- logger$1 as ac,
31739
+ GraphQLError as a$,
31740
+ getDefaultExportFromCjs as a0,
31741
+ LOCAL as a1,
31742
+ commonjsGlobal as a2,
31743
+ PUBLIC as a3,
31744
+ SWITCHBOARD as a4,
31745
+ locationInfoByLocation as a5,
31746
+ sharingTypeOptions as a6,
31747
+ objectType as a7,
31748
+ recordType as a8,
31749
+ stringType as a9,
31750
+ updateNode as aA,
31751
+ FILE as aB,
31752
+ moveNode as aC,
31753
+ generateNodesCopy as aD,
31754
+ copyNode as aE,
31755
+ createState as aF,
31756
+ setDriveName as aG,
31757
+ setAvailableOffline as aH,
31758
+ setSharingType as aI,
31759
+ SynchronizationUnitNotFoundError as aJ,
31760
+ removeTrigger as aK,
31761
+ generateUUID as aL,
31762
+ PullResponderTransmitter as aM,
31763
+ addTrigger as aN,
31764
+ ReadDriveNotFoundError as aO,
31765
+ openUrl as aP,
31766
+ getNodeOptions as aQ,
31767
+ DRIVE as aR,
31768
+ FOLDER as aS,
31769
+ requestPublicDrive as aT,
31770
+ serviceWorkerManager as aU,
31771
+ packageJson as aV,
31772
+ t as aW,
31773
+ generateId as aX,
31774
+ gql as aY,
31775
+ request as aZ,
31776
+ inspect as a_,
31777
+ capitalCase as aa,
31778
+ CLOUD as ab,
31779
+ createZip as ac,
31521
31780
  LZString as ad,
31522
31781
  buildSignedOperation as ae,
31523
31782
  getI18n as af,
@@ -31525,99 +31784,101 @@ export {
31525
31784
  connectConfig as ah,
31526
31785
  hashDocumentStateForScope as ai,
31527
31786
  getAugmentedNamespace as aj,
31528
- setErrorHandler as ak,
31529
- driveDocumentModelModule as al,
31530
- createBrowserDocumentDriveServer as am,
31531
- hashKey as an,
31532
- childLogger as ao,
31533
- reducer as ap,
31534
- isDocumentDrive as aq,
31535
- generateAddNodeAction as ar,
31536
- isFileNode as as,
31537
- uploadDocumentOperations as at,
31538
- updateFile as au,
31539
- addFolder as av,
31540
- isFolderNode as aw,
31541
- deleteNode as ax,
31542
- updateNode as ay,
31543
- FILE as az,
31787
+ process as ak,
31788
+ setErrorHandler as al,
31789
+ driveDocumentModelModule as am,
31790
+ createBrowserStorage as an,
31791
+ createBrowserDocumentDriveServer as ao,
31792
+ hashKey as ap,
31793
+ childLogger as aq,
31794
+ reducer as ar,
31795
+ isDocumentDrive as as,
31796
+ generateAddNodeAction as at,
31797
+ isFileNode as au,
31798
+ uploadDocumentOperations as av,
31799
+ updateFile as aw,
31800
+ addFolder as ax,
31801
+ isFolderNode as ay,
31802
+ deleteNode as az,
31544
31803
  SetStateSchemaInputSchema as b,
31545
- GraphQLFloat as b$,
31546
- RENAME as b0,
31547
- WRITE as b1,
31548
- DUPLICATE as b2,
31549
- defaultFolderOptions as b3,
31550
- garbageCollect as b4,
31551
- sortOperations as b5,
31552
- UI_NODE as b6,
31553
- generateId as b7,
31554
- undo as b8,
31555
- redo as b9,
31556
- isListType as bA,
31557
- snakeCase as bB,
31558
- constantCase as bC,
31559
- isAbstractType as bD,
31560
- BREAK as bE,
31561
- GraphQLInputObjectType as bF,
31562
- GraphQLList as bG,
31563
- GraphQLEnumType as bH,
31564
- GraphQLObjectType as bI,
31565
- GraphQLInterfaceType as bJ,
31566
- SchemaMetaFieldDef as bK,
31567
- TypeMetaFieldDef as bL,
31568
- TypeNameMetaFieldDef as bM,
31569
- isCompositeType as bN,
31570
- isOutputType as bO,
31571
- isInputType as bP,
31572
- GraphQLBoolean as bQ,
31573
- assertAbstractType as bR,
31574
- doTypesOverlap as bS,
31575
- DirectiveLocation as bT,
31576
- specifiedRules as bU,
31577
- NoUnusedFragmentsRule as bV,
31578
- ExecutableDefinitionsRule as bW,
31579
- validate as bX,
31580
- validateSchema as bY,
31581
- GraphQLID as bZ,
31582
- GraphQLString as b_,
31583
- useDocumentDispatch as ba,
31584
- inspect as bb,
31585
- GraphQLError as bc,
31586
- getNamedType as bd,
31587
- invariant as be,
31588
- isInputObjectType as bf,
31589
- isScalarType as bg,
31590
- isObjectType as bh,
31591
- isInterfaceType as bi,
31592
- isUnionType as bj,
31593
- isEnumType as bk,
31594
- print as bl,
31595
- isPrintableAsBlockString as bm,
31596
- Kind as bn,
31597
- astFromValue as bo,
31598
- DEFAULT_DEPRECATION_REASON as bp,
31599
- isSpecifiedDirective as bq,
31600
- isSpecifiedScalarType as br,
31601
- isIntrospectionType as bs,
31602
- z as bt,
31603
- GraphQLScalarType as bu,
31604
- parse as bv,
31605
- visit as bw,
31606
- buildASTSchema as bx,
31607
- extendSchema as by,
31608
- getNullableType as bz,
31804
+ nodeOptionsMap as b$,
31805
+ getNamedType as b0,
31806
+ invariant as b1,
31807
+ isInputObjectType as b2,
31808
+ isScalarType as b3,
31809
+ isObjectType as b4,
31810
+ isInterfaceType as b5,
31811
+ isUnionType as b6,
31812
+ isEnumType as b7,
31813
+ print as b8,
31814
+ isPrintableAsBlockString as b9,
31815
+ isCompositeType as bA,
31816
+ isOutputType as bB,
31817
+ isInputType as bC,
31818
+ GraphQLBoolean as bD,
31819
+ assertAbstractType as bE,
31820
+ doTypesOverlap as bF,
31821
+ DirectiveLocation as bG,
31822
+ specifiedRules as bH,
31823
+ NoUnusedFragmentsRule as bI,
31824
+ ExecutableDefinitionsRule as bJ,
31825
+ validate as bK,
31826
+ validateSchema as bL,
31827
+ GraphQLID as bM,
31828
+ GraphQLString as bN,
31829
+ GraphQLFloat as bO,
31830
+ GraphQLInt as bP,
31831
+ GraphQLDirective as bQ,
31832
+ GraphQLUnionType as bR,
31833
+ isNonNullType as bS,
31834
+ GraphQLNonNull as bT,
31835
+ isNamedType as bU,
31836
+ isLeafType as bV,
31837
+ GraphQLSchema as bW,
31838
+ buildSchema as bX,
31839
+ sentenceCase as bY,
31840
+ getDimensions as bZ,
31841
+ READ as b_,
31842
+ Kind as ba,
31843
+ astFromValue as bb,
31844
+ DEFAULT_DEPRECATION_REASON as bc,
31845
+ isSpecifiedDirective as bd,
31846
+ isSpecifiedScalarType as be,
31847
+ isIntrospectionType as bf,
31848
+ z as bg,
31849
+ GraphQLScalarType as bh,
31850
+ parse as bi,
31851
+ visit as bj,
31852
+ buildASTSchema as bk,
31853
+ extendSchema as bl,
31854
+ getNullableType as bm,
31855
+ isListType as bn,
31856
+ snakeCase as bo,
31857
+ constantCase as bp,
31858
+ isAbstractType as bq,
31859
+ BREAK as br,
31860
+ GraphQLInputObjectType as bs,
31861
+ GraphQLList as bt,
31862
+ GraphQLEnumType as bu,
31863
+ GraphQLObjectType as bv,
31864
+ GraphQLInterfaceType as bw,
31865
+ SchemaMetaFieldDef as bx,
31866
+ TypeMetaFieldDef as by,
31867
+ TypeNameMetaFieldDef as bz,
31609
31868
  createAction as c,
31610
- GraphQLInt as c0,
31611
- GraphQLDirective as c1,
31612
- GraphQLUnionType as c2,
31613
- isNonNullType as c3,
31614
- GraphQLNonNull as c4,
31615
- isNamedType as c5,
31616
- isLeafType as c6,
31617
- GraphQLSchema as c7,
31618
- buildSchema as c8,
31619
- sentenceCase as c9,
31620
- appLoader as ca,
31869
+ defaultFileOptions as c0,
31870
+ DELETE as c1,
31871
+ RENAME as c2,
31872
+ WRITE as c3,
31873
+ DUPLICATE as c4,
31874
+ defaultFolderOptions as c5,
31875
+ garbageCollect as c6,
31876
+ sortOperations as c7,
31877
+ UI_NODE as c8,
31878
+ undo as c9,
31879
+ redo as ca,
31880
+ useDocumentDispatch as cb,
31881
+ appLoader as cc,
31621
31882
  ReorderModuleOperationsInputSchema as d,
31622
31883
  DeleteOperationInputSchema as e,
31623
31884
  SetOperationReducerInputSchema as f,
@@ -31642,3 +31903,4 @@ export {
31642
31903
  ReorderModulesInputSchema as y,
31643
31904
  DeleteModuleInputSchema as z
31644
31905
  };
31906
+ //# sourceMappingURL=app-loader-CVII2DYj.js.map