@meridianlabs/log-viewer 0.3.249 → 0.3.251

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 (142) hide show
  1. package/lib/{AsciinemaPlayerImpl-qGoigKMF.js → AsciinemaPlayerImpl-Dy5o19PX.js} +18 -4
  2. package/lib/{AsciinemaPlayerImpl-qGoigKMF.js.map → AsciinemaPlayerImpl-Dy5o19PX.js.map} +1 -1
  3. package/lib/e2e/fixtures/handlers.d.ts.map +1 -1
  4. package/lib/e2e/log-list-find.spec.d.ts +2 -0
  5. package/lib/e2e/log-list-find.spec.d.ts.map +1 -0
  6. package/lib/e2e/message-deeplink.spec.d.ts +2 -0
  7. package/lib/e2e/message-deeplink.spec.d.ts.map +1 -0
  8. package/lib/e2e/turn-navigation.spec.d.ts +2 -0
  9. package/lib/e2e/turn-navigation.spec.d.ts.map +1 -0
  10. package/lib/index.js +39481 -34229
  11. package/lib/index.js.map +1 -1
  12. package/lib/src/app/log-list/LogsPanel.d.ts.map +1 -1
  13. package/lib/src/app/log-list/ViewerOptionsPopover.d.ts.map +1 -1
  14. package/lib/src/app/log-list/fileLogItem.d.ts +37 -0
  15. package/lib/src/app/log-list/fileLogItem.d.ts.map +1 -0
  16. package/lib/src/app/log-list/grid/LogListGrid.d.ts +11 -0
  17. package/lib/src/app/log-list/grid/LogListGrid.d.ts.map +1 -1
  18. package/lib/src/app/log-list/grid/columns/hooks.d.ts +6 -0
  19. package/lib/src/app/log-list/grid/columns/hooks.d.ts.map +1 -1
  20. package/lib/src/app/log-list/grid/logListRow.d.ts +5 -0
  21. package/lib/src/app/log-list/grid/logListRow.d.ts.map +1 -0
  22. package/lib/src/app/log-list/grid/useLogListData.d.ts +29 -11
  23. package/lib/src/app/log-list/grid/useLogListData.d.ts.map +1 -1
  24. package/lib/src/app/log-list/listing/applyListingQuery.d.ts +8 -0
  25. package/lib/src/app/log-list/listing/applyListingQuery.d.ts.map +1 -1
  26. package/lib/src/app/log-list/listing/planner.d.ts +10 -0
  27. package/lib/src/app/log-list/listing/planner.d.ts.map +1 -0
  28. package/lib/src/app/log-list/listing/types.d.ts +1 -9
  29. package/lib/src/app/log-list/listing/types.d.ts.map +1 -1
  30. package/lib/src/app/log-list/listing/useLogsListingQuery.d.ts +92 -7
  31. package/lib/src/app/log-list/listing/useLogsListingQuery.d.ts.map +1 -1
  32. package/lib/src/app/log-list/useLogsOverview.d.ts +18 -0
  33. package/lib/src/app/log-list/useLogsOverview.d.ts.map +1 -0
  34. package/lib/src/app/log-view/tabs/ModelsTab.d.ts.map +1 -1
  35. package/lib/src/app/navbar/ApplicationNavbar.d.ts +2 -0
  36. package/lib/src/app/navbar/ApplicationNavbar.d.ts.map +1 -1
  37. package/lib/src/app/navbar/Navbar.d.ts +4 -0
  38. package/lib/src/app/navbar/Navbar.d.ts.map +1 -1
  39. package/lib/src/app/routing/AppRouter.d.ts.map +1 -1
  40. package/lib/src/app/routing/RouteDispatcher.d.ts +1 -0
  41. package/lib/src/app/routing/RouteDispatcher.d.ts.map +1 -1
  42. package/lib/src/app/routing/SamplesRouter.d.ts.map +1 -1
  43. package/lib/src/app/routing/TasksRouter.d.ts.map +1 -1
  44. package/lib/src/app/routing/sampleNavigation.d.ts +1 -0
  45. package/lib/src/app/routing/sampleNavigation.d.ts.map +1 -1
  46. package/lib/src/app/routing/url.d.ts +12 -0
  47. package/lib/src/app/routing/url.d.ts.map +1 -1
  48. package/lib/src/app/samples/InlineSampleDisplay.d.ts.map +1 -1
  49. package/lib/src/app/samples/SampleDetailComponent.d.ts +4 -26
  50. package/lib/src/app/samples/SampleDetailComponent.d.ts.map +1 -1
  51. package/lib/src/app/samples/SampleDisplay.d.ts.map +1 -1
  52. package/lib/src/app/samples/SampleNavbar.d.ts +34 -0
  53. package/lib/src/app/samples/SampleNavbar.d.ts.map +1 -0
  54. package/lib/src/app/samples/SampleRetriedErrors.d.ts +3 -1
  55. package/lib/src/app/samples/SampleRetriedErrors.d.ts.map +1 -1
  56. package/lib/src/app/samples/event/SampleEventView.d.ts +11 -0
  57. package/lib/src/app/samples/event/SampleEventView.d.ts.map +1 -0
  58. package/lib/src/app/samples/retry-display/RetryTerminalAnchor.d.ts +3 -0
  59. package/lib/src/app/samples/retry-display/RetryTerminalAnchor.d.ts.map +1 -1
  60. package/lib/src/app/samples/scans/scanReferencePreviews.d.ts.map +1 -1
  61. package/lib/src/app/samples/transcript/TranscriptPanel.d.ts +18 -1
  62. package/lib/src/app/samples/transcript/TranscriptPanel.d.ts.map +1 -1
  63. package/lib/src/app/samples/transcript/chunked/ChunkedRowView.d.ts +18 -0
  64. package/lib/src/app/samples/transcript/chunked/ChunkedRowView.d.ts.map +1 -0
  65. package/lib/src/app/samples/transcript/chunked/ChunkedTranscriptPanel.d.ts +25 -0
  66. package/lib/src/app/samples/transcript/chunked/ChunkedTranscriptPanel.d.ts.map +1 -0
  67. package/lib/src/app/samples/transcript/chunked/mainViewOutline.d.ts +46 -0
  68. package/lib/src/app/samples/transcript/chunked/mainViewOutline.d.ts.map +1 -0
  69. package/lib/src/app/samples/transcript/chunked/useChunkedRows.d.ts +21 -0
  70. package/lib/src/app/samples/transcript/chunked/useChunkedRows.d.ts.map +1 -0
  71. package/lib/src/app/shared/data-grid/findMatches.d.ts +8 -4
  72. package/lib/src/app/shared/data-grid/findMatches.d.ts.map +1 -1
  73. package/lib/src/client/api/client-api.d.ts.map +1 -1
  74. package/lib/src/client/api/types.d.ts +7 -0
  75. package/lib/src/client/api/types.d.ts.map +1 -1
  76. package/lib/src/client/api/view-server/api-view-server.d.ts.map +1 -1
  77. package/lib/src/client/database/listing.d.ts +23 -0
  78. package/lib/src/client/database/listing.d.ts.map +1 -0
  79. package/lib/src/client/remote/remoteLogFile.d.ts +13 -0
  80. package/lib/src/client/remote/remoteLogFile.d.ts.map +1 -1
  81. package/lib/src/client/remote/remotePendingSampleData.d.ts.map +1 -1
  82. package/lib/src/components/DownloadButton.d.ts.map +1 -1
  83. package/lib/src/components/LinkButton.d.ts.map +1 -1
  84. package/lib/src/components/MessageBand.d.ts.map +1 -1
  85. package/lib/src/constants.d.ts +1 -0
  86. package/lib/src/constants.d.ts.map +1 -1
  87. package/lib/src/log_data/chunked/chunkStore.d.ts +85 -0
  88. package/lib/src/log_data/chunked/chunkStore.d.ts.map +1 -0
  89. package/lib/src/log_data/chunked/chunkedSample.d.ts +30 -0
  90. package/lib/src/log_data/chunked/chunkedSample.d.ts.map +1 -0
  91. package/lib/src/log_data/chunked/cursor.d.ts +35 -0
  92. package/lib/src/log_data/chunked/cursor.d.ts.map +1 -0
  93. package/lib/src/log_data/chunked/decode.d.ts +55 -0
  94. package/lib/src/log_data/chunked/decode.d.ts.map +1 -0
  95. package/lib/src/log_data/chunked/format.d.ts +39 -0
  96. package/lib/src/log_data/chunked/format.d.ts.map +1 -0
  97. package/lib/src/log_data/chunked/index.d.ts +17 -0
  98. package/lib/src/log_data/chunked/index.d.ts.map +1 -0
  99. package/lib/src/log_data/chunked/log.d.ts +14 -0
  100. package/lib/src/log_data/chunked/log.d.ts.map +1 -0
  101. package/lib/src/log_data/chunked/outlineRows.d.ts +33 -0
  102. package/lib/src/log_data/chunked/outlineRows.d.ts.map +1 -0
  103. package/lib/src/log_data/chunked/pyTimestamp.d.ts +23 -0
  104. package/lib/src/log_data/chunked/pyTimestamp.d.ts.map +1 -0
  105. package/lib/src/log_data/chunked/rowSpace.d.ts +53 -0
  106. package/lib/src/log_data/chunked/rowSpace.d.ts.map +1 -0
  107. package/lib/src/log_data/chunked/skeleton.d.ts +49 -0
  108. package/lib/src/log_data/chunked/skeleton.d.ts.map +1 -0
  109. package/lib/src/log_data/chunked/skeletonIndex.d.ts +23 -0
  110. package/lib/src/log_data/chunked/skeletonIndex.d.ts.map +1 -0
  111. package/lib/src/log_data/chunked/syntheticEvents.d.ts +9 -0
  112. package/lib/src/log_data/chunked/syntheticEvents.d.ts.map +1 -0
  113. package/lib/src/log_data/chunked/types.d.ts +104 -0
  114. package/lib/src/log_data/chunked/types.d.ts.map +1 -0
  115. package/lib/src/log_data/chunkedAttachments.d.ts +20 -0
  116. package/lib/src/log_data/chunkedAttachments.d.ts.map +1 -0
  117. package/lib/src/log_data/chunkedHydrate.d.ts +25 -0
  118. package/lib/src/log_data/chunkedHydrate.d.ts.map +1 -0
  119. package/lib/src/log_data/chunkedMessages.d.ts +28 -0
  120. package/lib/src/log_data/chunkedMessages.d.ts.map +1 -0
  121. package/lib/src/log_data/chunkedSampleQuery.d.ts +40 -0
  122. package/lib/src/log_data/chunkedSampleQuery.d.ts.map +1 -0
  123. package/lib/src/log_data/databaseListings.d.ts +14 -0
  124. package/lib/src/log_data/databaseListings.d.ts.map +1 -0
  125. package/lib/src/log_data/index.d.ts +6 -0
  126. package/lib/src/log_data/index.d.ts.map +1 -1
  127. package/lib/src/log_data/logsContent.d.ts +12 -4
  128. package/lib/src/log_data/logsContent.d.ts.map +1 -1
  129. package/lib/src/log_data/logsListingRead.d.ts +59 -0
  130. package/lib/src/log_data/logsListingRead.d.ts.map +1 -0
  131. package/lib/src/log_data/sampleData.d.ts +11 -1
  132. package/lib/src/log_data/sampleData.d.ts.map +1 -1
  133. package/lib/src/state/sampleSlice.d.ts +0 -1
  134. package/lib/src/state/sampleSlice.d.ts.map +1 -1
  135. package/lib/src/utils/uri.d.ts +2 -0
  136. package/lib/src/utils/uri.d.ts.map +1 -1
  137. package/lib/styles/index.css +4278 -3474
  138. package/package.json +13 -16
  139. package/lib/src/components/LargeModal.d.ts +0 -30
  140. package/lib/src/components/LargeModal.d.ts.map +0 -1
  141. package/lib/src/utils/json-worker.d.ts +0 -13
  142. package/lib/src/utils/json-worker.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../../../src/app/log-list/LogsPanel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAA6C,MAAM,OAAO,CAAC;AAsCtE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7C,UAAU,cAAc;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAgZxC,CAAC"}
1
+ {"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../../../src/app/log-list/LogsPanel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAA6C,MAAM,OAAO,CAAC;AA4CtE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7C,UAAU,cAAc;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA2VxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewerOptionsPopover.d.ts","sourceRoot":"","sources":["../../../../src/app/log-list/ViewerOptionsPopover.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAUrC,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CAiI9D,CAAC"}
1
+ {"version":3,"file":"ViewerOptionsPopover.d.ts","sourceRoot":"","sources":["../../../../src/app/log-list/ViewerOptionsPopover.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAUrC,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CAkI9D,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { LogListingRow } from '../../log_data';
2
+ import { FileLogItem } from './LogItem';
3
+ import { LogsPanelMode } from './LogsPanel';
4
+ /** The view inputs that determine a log's file item (and whether it has one). */
5
+ export interface FileLogItemView {
6
+ mode: LogsPanelMode;
7
+ logDir: string;
8
+ /** The directory being listed (folder mode lists it; tasks mode ignores it
9
+ * and lists the whole `logDir`). */
10
+ currentDir: string;
11
+ showRetriedLogs: boolean;
12
+ }
13
+ /**
14
+ * The path-derived part of a file item — id, display name, and url — or
15
+ * `undefined` when the path isn't a file row of the view (folder mode: not
16
+ * directly in the current directory; it displays through its folder
17
+ * instead). Pure path logic: display toggles like retried-hiding live in
18
+ * {@link fileLogItem}, so overview facts that need pre-hide membership (and
19
+ * URL derivations that have only a name) can use this directly.
20
+ */
21
+ export declare const fileLogIdentity: (name: string, view: FileLogItemView) => {
22
+ id: string;
23
+ name: string;
24
+ url: string;
25
+ } | undefined;
26
+ /**
27
+ * Map a listing row to the file item it displays as under `view`, or
28
+ * `undefined` when the view has no file row for it: a retried run while
29
+ * retried logs are hidden, or (folder mode) a file that isn't directly in
30
+ * the current directory.
31
+ *
32
+ * This is the row-universe membership + identity function for the log list:
33
+ * LogsPanel builds its items through it, and the listing query applies it to
34
+ * database records, so the two can never disagree about which files are rows.
35
+ */
36
+ export declare const fileLogItem: (logFile: LogListingRow, view: FileLogItemView) => FileLogItem | undefined;
37
+ //# sourceMappingURL=fileLogItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileLogItem.d.ts","sourceRoot":"","sources":["../../../../src/app/log-list/fileLogItem.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf;yCACqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,MAAM,eAAe,KACpB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAyB9C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GACtB,SAAS,aAAa,EACtB,MAAM,eAAe,KACpB,WAAW,GAAG,SAMhB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { SortingState } from '@tanstack/react-table';
2
2
  import { FC } from 'react';
3
+ import { Condition, OrderByModel } from '@tsmono/inspect-common/query';
3
4
  import { ColumnFilter } from '@tsmono/inspect-components/columnFilter';
5
+ import { LogsListingDescriptor } from '../listing/useLogsListingQuery';
4
6
  import { LogListMode } from './columns/hooks';
5
7
  import { LogListRow } from './columns/types';
6
8
  interface LogListGridProps {
@@ -14,12 +16,21 @@ interface LogListGridProps {
14
16
  * state; changes persist via `setGridState`). */
15
17
  sorting: SortingState;
16
18
  columnFilters?: Record<string, ColumnFilter>;
19
+ /** The compiled query inputs the rows were produced under (from
20
+ * `useLogListData`) — the find band's match query runs under the same
21
+ * ones rather than re-deriving them. */
22
+ filter?: Condition;
23
+ orderBy?: OrderByModel[];
17
24
  currentPath?: string;
18
25
  scopeKey?: string;
19
26
  mode?: LogListMode;
20
27
  /** The listing is still being brought up to date (drives the empty-state
21
28
  * loading indicator). */
22
29
  busy: boolean;
30
+ /** The listing source the rows were queried from — the find band runs its
31
+ * match query against the same universe (so matches cover rows beyond
32
+ * the loaded page once the listing paginates). */
33
+ listing: LogsListingDescriptor<LogListRow>;
23
34
  }
24
35
  export declare const LogListGrid: FC<LogListGridProps>;
25
36
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"LogListGrid.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/grid/LogListGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EACL,EAAE,EAOH,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,yCAAyC,CAAC;AAYjD,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,UAAU,gBAAgB;IACxB;4BACwB;IACxB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB;+DAC2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB;sDACkD;IAClD,OAAO,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;8BAC0B;IAC1B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAgQ5C,CAAC"}
1
+ {"version":3,"file":"LogListGrid.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/grid/LogListGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EACL,EAAE,EAOH,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,yCAAyC,CAAC;AAYjD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,UAAU,gBAAgB;IACxB;4BACwB;IACxB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB;+DAC2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB;sDACkD;IAClD,OAAO,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C;;6CAEyC;IACzC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;8BAC0B;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd;;uDAEmD;IACnD,OAAO,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAmT5C,CAAC"}
@@ -35,6 +35,12 @@ viewMode?: ScoresViewMode) => {
35
35
  getComparator: (columnId: string) => ColumnComparator | undefined;
36
36
  /** Per-column filter type (from column meta) for client-side filtering. */
37
37
  getFilterType: (columnId: string) => FilterType | undefined;
38
+ /** Cache identity of the accessors above: the scorer schema they're built
39
+ * from. The schema arrives asynchronously, so a query that closes over
40
+ * the accessors must carry this in its key — score-column semantics
41
+ * (by-metric accessors, numeric comparators/filter types) change when it
42
+ * lands, with no other query input changing. */
43
+ accessorsKey: string;
38
44
  setColumnVisibility: (visibility: Record<string, boolean>) => void;
39
45
  };
40
46
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../../../src/app/log-list/grid/columns/hooks.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAgB1E,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,KAAK,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AA8BnD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,YAAY,CAAC;AAExD,eAAO,MAAM,iBAAiB,GAC5B,OAAM,WAAoB;AAC1B;;;;GAIG;AACH,WAAW,MAAM;AACjB;;;;;GAKG;AACH,WAAU,cAA4B,KACrC;IACD;;8EAE0E;IAC1E,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC;;4DAEwD;IACxD,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACzD,2EAA2E;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,gBAAgB,GAAG,SAAS,CAAC;IAClE,2EAA2E;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;IAC5D,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAkxBpE,CAAC"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../../../src/app/log-list/grid/columns/hooks.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAgB1E,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,KAAK,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AA8BnD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,YAAY,CAAC;AAExD,eAAO,MAAM,iBAAiB,GAC5B,OAAM,WAAoB;AAC1B;;;;GAIG;AACH,WAAW,MAAM;AACjB;;;;;GAKG;AACH,WAAU,cAA4B,KACrC;IACD;;8EAE0E;IAC1E,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC;;4DAEwD;IACxD,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACzD,2EAA2E;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,gBAAgB,GAAG,SAAS,CAAC;IAClE,2EAA2E;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;IAC5D;;;;qDAIiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CA+xBpE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FileLogItem, FolderLogItem, PendingTaskItem } from '../LogItem';
2
+ import { LogListRow } from './columns/types';
3
+ export type LogListItem = FileLogItem | FolderLogItem | PendingTaskItem;
4
+ export declare const buildLogListRow: (item: LogListItem) => LogListRow;
5
+ //# sourceMappingURL=logListRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logListRow.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/grid/logListRow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAQxE,eAAO,MAAM,eAAe,GAAI,MAAM,WAAW,KAAG,UAyDnD,CAAC"}
@@ -1,24 +1,31 @@
1
1
  import { SortingState } from '@tanstack/react-table';
2
+ import { Condition, OrderByModel } from '@tsmono/inspect-common/query';
2
3
  import { ColumnFilter } from '@tsmono/inspect-components/columnFilter';
3
4
  import { FilterTypeAccessor, ValueAccessor, ValueComparator } from '../listing/types';
4
- import { FileLogItem, FolderLogItem, PendingTaskItem } from '../LogItem';
5
+ import { LogsListingDescriptor } from '../listing/useLogsListingQuery';
6
+ import { FolderLogItem, PendingTaskItem } from '../LogItem';
5
7
  import { LogListRow } from './columns/types';
6
- export type LogListItem = FileLogItem | FolderLogItem | PendingTaskItem;
8
+ /** Pending rows minus the tasks that already have a file row in `fileRows`
9
+ * (pending row ids are task ids; file rows carry their record's task_id). */
10
+ export declare const dropSettledPendingRows: (pendingRows: LogListRow[], fileRows: LogListRow[]) => LogListRow[];
7
11
  interface UseLogListDataParams {
8
- items: LogListItem[];
12
+ /** Presentation rows with no database record: folders (pinned) and
13
+ * pending tasks (merged into the queried page as a sorted overlay).
14
+ * File rows come from the listing query below. */
15
+ overlayItems: Array<FolderLogItem | PendingTaskItem>;
9
16
  /** Per-scope sorting/filters are read under this key (`undefined` while
10
17
  * logDir is still hydrating — defaults apply, nothing is written). */
11
18
  scopeKey?: string;
12
19
  getValue: ValueAccessor<LogListRow>;
13
20
  getComparator: (columnId: string) => ValueComparator | undefined;
14
21
  getFilterType?: FilterTypeAccessor;
22
+ /** Cache identity of the accessors (see `useLogListColumns`). */
23
+ accessorsKey: string;
24
+ listing: LogsListingDescriptor<LogListRow>;
15
25
  }
16
26
  export interface LogListData {
17
27
  /** Display rows: folders pinned on top, then the filtered+sorted files. */
18
28
  rows: LogListRow[];
19
- /** Pre-filter row count — distinguishes "no items yet" (loading
20
- * empty-state) from "filters matched nothing". */
21
- totalRowCount: number;
22
29
  /** Folders + matching files (reflects any active filter) — the footer
23
30
  * count. */
24
31
  filteredCount: number;
@@ -26,13 +33,24 @@ export interface LogListData {
26
33
  * passed through so grid and query can't diverge. */
27
34
  sorting: SortingState;
28
35
  columnFilters?: Record<string, ColumnFilter>;
36
+ /** The compiled query inputs derived from them — passed through for the
37
+ * find band's match query, so its membership can't drift from the rows
38
+ * via a second derivation. */
39
+ filter?: Condition;
40
+ orderBy: OrderByModel[];
41
+ /** The listing query has no result to show yet (first read in flight). */
42
+ pending: boolean;
43
+ /** The listing read failed — `rows` carries only the overlay items, so
44
+ * render this rather than an empty-looking list. */
45
+ error: Error | undefined;
29
46
  }
30
47
  /**
31
- * The log-list data pipeline: shape items into rows, apply the scope's
32
- * persisted sorting/filters via the listing query, and pin folders on top.
33
- * Called by LogsPanel (the panel owns shaping — see `useLogsListingQuery`);
34
- * the grid just renders the result.
48
+ * The log-list data pipeline: run the scope's persisted sorting/filters as a
49
+ * listing query against the listing source (IndexedDB in dir mode), shape the
50
+ * resulting records into grid rows, merge in transient rows (pending tasks),
51
+ * and pin folders on top. Called by LogsPanel; the grid just renders the
52
+ * result.
35
53
  */
36
- export declare const useLogListData: ({ items, scopeKey, getValue, getComparator, getFilterType, }: UseLogListDataParams) => LogListData;
54
+ export declare const useLogListData: ({ overlayItems, scopeKey, getValue, getComparator, getFilterType, accessorsKey, listing, }: UseLogListDataParams) => LogListData;
37
55
  export {};
38
56
  //# sourceMappingURL=useLogListData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLogListData.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/grid/useLogListData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAM5E,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAmExE,UAAU,oBAAoB;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;2EACuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IACjE,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB;uDACmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB;iBACa;IACb,aAAa,EAAE,MAAM,CAAC;IACtB;0DACsD;IACtD,OAAO,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,8DAM5B,oBAAoB,KAAG,WAsEzB,CAAC"}
1
+ {"version":3,"file":"useLogListData.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/grid/useLogListData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAU5E,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C;8EAC8E;AAC9E,eAAO,MAAM,sBAAsB,GACjC,aAAa,UAAU,EAAE,EACzB,UAAU,UAAU,EAAE,KACrB,UAAU,EASZ,CAAC;AAEF,UAAU,oBAAoB;IAC5B;;uDAEmD;IACnD,YAAY,EAAE,KAAK,CAAC,aAAa,GAAG,eAAe,CAAC,CAAC;IACrD;2EACuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IACjE,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB;iBACa;IACb,aAAa,EAAE,MAAM,CAAC;IACtB;0DACsD;IACtD,OAAO,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C;;mCAE+B;IAC/B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB;yDACqD;IACrD,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,4FAQ5B,oBAAoB,KAAG,WAoHzB,CAAC"}
@@ -1,4 +1,12 @@
1
1
  import { ListingQuery, LogsListingResult } from './types';
2
+ /**
3
+ * Merge two individually-sorted row lists into one sorted list; ties place
4
+ * `base` rows first. Without a comparator the overlay is appended (the
5
+ * unsorted listing shows transient rows after files). This is how transient
6
+ * rows (e.g. pending tasks, which have no database record) join a
7
+ * database-produced page without forcing the whole listing back into memory.
8
+ */
9
+ export declare function mergeSortedRows<TRow>(base: TRow[], overlay: TRow[], compare?: (a: TRow, b: TRow) => number): TRow[];
2
10
  /**
3
11
  * TRANSITIONAL client-side stand-in for a server `getLogsListing(dir, filter,
4
12
  * orderBy, pagination)`. Filters → sorts → paginates the in-memory rows and
@@ -1 +1 @@
1
- {"version":3,"file":"applyListingQuery.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/listing/applyListingQuery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAmBvE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EACpC,IAAI,EAAE,IAAI,EAAE,EACZ,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,GACxB,iBAAiB,CAAC,IAAI,CAAC,CA4BzB"}
1
+ {"version":3,"file":"applyListingQuery.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/listing/applyListingQuery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAClC,IAAI,EAAE,IAAI,EAAE,EACZ,OAAO,EAAE,IAAI,EAAE,EACf,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,KAAK,MAAM,GACrC,IAAI,EAAE,CAcR;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EACpC,IAAI,EAAE,IAAI,EAAE,EACZ,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,GACxB,iBAAiB,CAAC,IAAI,CAAC,CAOzB"}
@@ -0,0 +1,10 @@
1
+ import { DatabaseListingPlan } from '../../../client/database/listing';
2
+ import { ListingQuery } from './types';
3
+ /**
4
+ * Compile the wire filter and ordering into record-level listing operations.
5
+ *
6
+ * `compare` has no position tiebreak: executors sort stably over the
7
+ * source's listing order, so ties (and the unsorted listing) keep it.
8
+ */
9
+ export declare const createListingPlan: <TRow>(query: ListingQuery<TRow>) => DatabaseListingPlan<TRow>;
10
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/listing/planner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,IAAI,EACpC,OAAO,YAAY,CAAC,IAAI,CAAC,KACxB,mBAAmB,CAAC,IAAI,CAkB1B,CAAC"}
@@ -1,14 +1,6 @@
1
1
  import { Condition, OrderByModel, Pagination } from '@tsmono/inspect-common/query';
2
2
  import { FilterType } from '@tsmono/inspect-components/columnFilter';
3
- /**
4
- * Opaque pagination cursor for the client-side listing query. Mirrors scout's
5
- * cursor shape (`Pagination.cursor` is `{ [k]: unknown } | null`); we store a
6
- * simple offset.
7
- */
8
- export interface Cursor {
9
- offset: number;
10
- [key: string]: unknown;
11
- }
3
+ import { Cursor } from '../../../client/database/listing';
12
4
  /**
13
5
  * Result of a listing query — mirrors scout's `TranscriptsResponse`
14
6
  * (`{ items, total_count, next_cursor }`). Named `*Result` to avoid colliding
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/listing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IAGf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,IAAI;IACrC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;kFAIkF;AAClF,MAAM,MAAM,eAAe,GAAG,CAC5B,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,YAAY,EAAE,OAAO,KAClB,MAAM,CAAC;AAEZ,wEAAwE;AACxE,MAAM,MAAM,aAAa,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAE3E,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,YAAY,CAAC,IAAI;IAChC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,oEAAoE;IACpE,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IACjE,0EAA0E;IAC1E,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/listing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,IAAI;IACrC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;kFAIkF;AAClF,MAAM,MAAM,eAAe,GAAG,CAC5B,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,YAAY,EAAE,OAAO,KAClB,MAAM,CAAC;AAEZ,wEAAwE;AACxE,MAAM,MAAM,aAAa,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAE3E,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,YAAY,CAAC,IAAI;IAChC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,oEAAoE;IACpE,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IACjE,0EAA0E;IAC1E,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC"}
@@ -1,5 +1,7 @@
1
1
  import { SortingState } from '@tanstack/react-table';
2
2
  import { Condition, OrderByModel, Pagination } from '@tsmono/inspect-common/query';
3
+ import { AsyncData } from '@tsmono/util';
4
+ import { LogListingRow } from '../../../log_data';
3
5
  import { FilterTypeAccessor, LogsListingResult, ValueAccessor, ValueComparator } from './types';
4
6
  /** TanStack `SortingState` → API `OrderBy[]`. Mirrors scout's helper. */
5
7
  export declare const sortingStateToOrderBy: (sorting: SortingState) => OrderByModel[];
@@ -14,14 +16,97 @@ interface UseLogsListingParams<TRow> {
14
16
  getFilterType?: FilterTypeAccessor;
15
17
  }
16
18
  /**
17
- * The log listing query: filter + sort + paginate over the rows. Mirrors
18
- * scout's `getTranscripts(filter, orderBy, pagination)` tail and response shape.
19
- *
20
- * Client-side for now — a derived `useMemo` over the (reactive) rows. The async
21
- * data source already lives in the react-query logs-content cache; when inspect
22
- * moves filter/sort server-side this hook becomes a `useQuery` that fetches a
23
- * filtered/sorted page instead.
19
+ * The generic in-memory listing query: filter + sort + paginate over the
20
+ * rows. Mirrors scout's `getTranscripts(filter, orderBy, pagination)` tail
21
+ * and response shape. Retained for samples listings, which don't have a
22
+ * database-backed path yet — the log list uses
23
+ * {@link useDatabaseLogsListingQuery}.
24
24
  */
25
25
  export declare function useLogsListingQuery<TRow>({ rows, filter, orderBy, pagination, getValue, getComparator, getFilterType, }: UseLogsListingParams<TRow>): LogsListingResult<TRow>;
26
+ /** The listing source a view queries — shared by the row query, the find
27
+ * band's match query, and (eventually) the offset lookup, so they can
28
+ * never disagree about the row universe. */
29
+ export interface LogsListingDescriptor<TRow> {
30
+ /** The synced directory whose rows are the source (see `readLogsListing`
31
+ * for where they're read from). */
32
+ logDir: string;
33
+ /** Row-universe scan prefix (folder mode lists a subdirectory). */
34
+ prefix: string;
35
+ /** Cache identity of the row universe: everything `toRow` reads beyond
36
+ * the record itself (view mode, directory, display toggles).
37
+ * `undefined` while the scope is still hydrating — disables queries. */
38
+ universe: string | undefined;
39
+ /** Shape a source record into the view's row, or `undefined` when the
40
+ * view has no row for it (row-universe membership). */
41
+ toRow: (log: LogListingRow) => TRow | undefined;
42
+ }
43
+ interface UseDatabaseLogsListingParams<TRow> {
44
+ filter?: Condition;
45
+ orderBy?: OrderByModel[];
46
+ pagination?: Pagination;
47
+ getValue: ValueAccessor<TRow>;
48
+ getComparator: (columnId: string) => ValueComparator | undefined;
49
+ getFilterType?: FilterTypeAccessor;
50
+ /** Cache identity of the accessors above (see `useLogListColumns`) — the
51
+ * score-column schema lands asynchronously and changes what the plan
52
+ * computes, so it must key the query alongside filter/orderBy. */
53
+ accessorsKey: string;
54
+ listing: LogsListingDescriptor<TRow>;
55
+ }
56
+ /**
57
+ * The log listing query: rows are read from the listing source (IndexedDB
58
+ * in dir mode — see `readLogsListing`) and shaped per view inside the
59
+ * queryFn, so the full row list never has to live in memory for the grid's
60
+ * sake. Results are asynchronous by design: the first read shows whatever
61
+ * has replicated so far, and the write path's throttled invalidation
62
+ * streams further rows in as they land. `loading` covers hydration and the
63
+ * universe's first read; within one universe a re-filter/sort reports the
64
+ * previous result as `data` (no loading flash) until the new read lands.
65
+ */
66
+ export declare function useDatabaseLogsListingQuery<TRow>({ filter, orderBy, pagination, getValue, getComparator, getFilterType, accessorsKey, listing, }: UseDatabaseLogsListingParams<TRow>): AsyncData<LogsListingResult<TRow>>;
67
+ interface UseLogsListingMatchesParams<TRow> {
68
+ /** The same query inputs the row query ran under (pass them through from
69
+ * `useLogListData` rather than re-deriving — the match membership must
70
+ * never disagree with the rendered rows). */
71
+ filter?: Condition;
72
+ orderBy?: OrderByModel[];
73
+ getValue: ValueAccessor<TRow>;
74
+ getComparator: (columnId: string) => ValueComparator | undefined;
75
+ getFilterType?: FilterTypeAccessor;
76
+ accessorsKey: string;
77
+ listing: LogsListingDescriptor<TRow>;
78
+ /** The live find term. The query runs under a debounced copy: every
79
+ * distinct term is a fresh scan of the listing source, so keystrokes
80
+ * coalesce here while the input (and cheap overlay matching) stay live. */
81
+ term: string;
82
+ /** Whether the find band is open — the query never runs while closed. */
83
+ enabled: boolean;
84
+ getRowId: (row: TRow) => string;
85
+ /** A row's searchable text, already lowercased (see `rowSearchText`). */
86
+ rowText: (row: TRow) => string;
87
+ /** Cache identity of `rowText` — the searchable (visible) column ids. */
88
+ searchKey: readonly string[];
89
+ }
90
+ export interface LogsListingMatches {
91
+ /** Ids of the file rows matching the debounced term — membership only;
92
+ * display order comes from the rendered rows. */
93
+ ids: string[] | undefined;
94
+ /** `ids` is a real result for the live term under the current universe —
95
+ * debounce flushed, not pending, not another key's placeholder, not an
96
+ * error. Only then may the UI claim "no results". */
97
+ settled: boolean;
98
+ /** Cancel the pending debounce and clear the match term (band closed). */
99
+ reset: () => void;
100
+ }
101
+ /**
102
+ * The find band's data-level match query, beside the row query so the two
103
+ * share key shape and universe semantics: the key is the row query's key
104
+ * (same universe slot, so `listingKeyUniverse` and the root invalidation
105
+ * cover both) extended with the find-only inputs, and the placeholder keeps
106
+ * previous matches only within one universe — folder-mode row ids are
107
+ * basenames, so another directory's ids could otherwise mark unrelated
108
+ * same-named rows as matches while a scope change's refetch is in flight.
109
+ */
110
+ export declare function useLogsListingMatches<TRow>({ filter, orderBy, getValue, getComparator, getFilterType, accessorsKey, listing, term, enabled, getRowId, rowText, searchKey, }: UseLogsListingMatchesParams<TRow>): LogsListingMatches;
26
111
  export {};
27
112
  //# sourceMappingURL=useLogsListingQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLogsListingQuery.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/listing/useLogsListingQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACX,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,GAAI,SAAS,YAAY,KAAG,YAAY,EACE,CAAC;AAE7E,UAAU,oBAAoB,CAAC,IAAI;IACjC,iFAAiF;IACjF,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IACjE,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EACxC,IAAI,EACJ,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACb,aAAa,GACd,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAatD"}
1
+ {"version":3,"file":"useLogsListingQuery.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-list/listing/useLogsListingQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { AsyncData } from '@tsmono/util';
2
+ import { LogsOverview, LogsOverviewView } from '../../log_data';
3
+ interface UseLogsOverviewParams {
4
+ logDir: string;
5
+ /** Cache identity of the view (see `useDatabaseLogsListingQuery`'s
6
+ * `universe`) — everything `view` reads beyond the records. `undefined`
7
+ * while the scope is hydrating (disables the query). */
8
+ universe: string | undefined;
9
+ view: LogsOverviewView;
10
+ }
11
+ /**
12
+ * The page-level aggregates beside the row query (see `readLogsOverview`).
13
+ * Keyed under the listing root so the write path's throttled invalidation
14
+ * refreshes it alongside the row queries.
15
+ */
16
+ export declare const useLogsOverview: ({ logDir, universe, view, }: UseLogsOverviewParams) => AsyncData<LogsOverview>;
17
+ export {};
18
+ //# sourceMappingURL=useLogsOverview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogsOverview.d.ts","sourceRoot":"","sources":["../../../../src/app/log-list/useLogsOverview.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAExB,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf;;6DAEyD;IACzD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,6BAI7B,qBAAqB,KAAG,SAAS,CAAC,YAAY,CAShD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModelsTab.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-view/tabs/ModelsTab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAYnE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAI7D,eAAO,MAAM,YAAY,GACvB,UAAU,QAAQ,GAAG,SAAS,EAC9B,WAAW,SAAS,GAAG,SAAS,EAChC,aAAa,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAe3B,CAAC;AAEF,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAwFtC,CAAC"}
1
+ {"version":3,"file":"ModelsTab.d.ts","sourceRoot":"","sources":["../../../../../src/app/log-view/tabs/ModelsTab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAYnE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAI7D,eAAO,MAAM,YAAY,GACvB,UAAU,QAAQ,GAAG,SAAS,EAC9B,WAAW,SAAS,GAAG,SAAS,EAChC,aAAa,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAe3B,CAAC;AAEF,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CA2FtC,CAAC"}
@@ -2,6 +2,8 @@ import { FC, ReactNode } from 'react';
2
2
  interface ApplicationNavbarProps {
3
3
  currentPath: string | undefined;
4
4
  fnNavigationUrl: (file: string, log_dir?: string) => string;
5
+ backUrl?: string;
6
+ homeUrl?: string;
5
7
  bordered?: boolean;
6
8
  children?: ReactNode;
7
9
  breadcrumbsEnabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationNavbar.d.ts","sourceRoot":"","sources":["../../../../src/app/navbar/ApplicationNavbar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAiBhD,UAAU,sBAAsB;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;oEACgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAgDxD,CAAC"}
1
+ {"version":3,"file":"ApplicationNavbar.d.ts","sourceRoot":"","sources":["../../../../src/app/navbar/ApplicationNavbar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAiBhD,UAAU,sBAAsB;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;oEACgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAoDxD,CAAC"}
@@ -4,6 +4,10 @@ interface NavbarProps {
4
4
  bordered?: boolean;
5
5
  fnNavigationUrl: (file: string, log_dir?: string) => string;
6
6
  currentPath: string | undefined;
7
+ /** Override the back button's target (default: parent of currentPath). */
8
+ backUrl?: string;
9
+ /** Override the home button's target (default: root listing). */
10
+ homeUrl?: string;
7
11
  breadcrumbsEnabled?: boolean;
8
12
  }
9
13
  export declare const Navbar: FC<NavbarProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../../../src/app/navbar/Navbar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,SAAS,EAAmB,MAAM,OAAO,CAAC;AAYjE,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAsHlC,CAAC"}
1
+ {"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../../../src/app/navbar/Navbar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,SAAS,EAAmB,MAAM,OAAO,CAAC;AAYjE,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAuHlC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppRouter.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/AppRouter.tsx"],"names":[],"mappings":"AA+EA,eAAO,MAAM,SAAS,uCAwCrB,CAAC"}
1
+ {"version":3,"file":"AppRouter.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/AppRouter.tsx"],"names":[],"mappings":"AAyFA,eAAO,MAAM,SAAS,uCAwCrB,CAAC"}
@@ -4,6 +4,7 @@ import { FC } from 'react';
4
4
  *
5
5
  * Routes to:
6
6
  * - SamplePrintView: for print URLs (/logs/path/samples/sample/id/epoch/print)
7
+ * - SampleEventView: for single-event URLs (/logs/path/samples/sample/id/epoch/event?event=<id>)
7
8
  * - LogSampleDetailView: for sample detail URLs (/logs/path/samples/sample/id/epoch)
8
9
  * - FlowPanel: for flow files (.yaml/.yml)
9
10
  * - LogViewContainer: for log files (.eval/.json)
@@ -1 +1 @@
1
- {"version":3,"file":"RouteDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/RouteDispatcher.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAU3B;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,EAqC7B,CAAC"}
1
+ {"version":3,"file":"RouteDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/RouteDispatcher.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAY3B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,EA0C7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SamplesRouter.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/SamplesRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAS3B;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,EA0B3B,CAAC"}
1
+ {"version":3,"file":"SamplesRouter.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/SamplesRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAW3B;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,EA6B3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TasksRouter.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/TasksRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAU3B;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,EA2BzB,CAAC"}
1
+ {"version":3,"file":"TasksRouter.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/TasksRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAY3B;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,EA+BzB,CAAC"}
@@ -33,6 +33,7 @@ export declare const useSampleNavigationActions: () => {
33
33
  export declare const useSampleDetailNavigation: () => {
34
34
  message: string | null;
35
35
  event: string | null;
36
+ follow: boolean;
36
37
  };
37
38
  /**
38
39
  * Hook for navigating to sample details from the samples grid.
@@ -1 +1 @@
1
- {"version":3,"file":"sampleNavigation.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/sampleNavigation.ts"],"names":[],"mappings":"AAcA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AAEf;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,MAAM;IAC7C,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;CACrB,KAAG,MAAM,GAAG,SAQZ,CAAC;AAEF,eAAO,MAAM,YAAY,mBAyBT,MAAM,GAAG,MAAM,SAClB,MAAM,wBACS,MAAM,uBAmBjC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;qBA8C9B,MAAM,GAAG,MAAM,SAAS,MAAM,yBAAyB,MAAM;;;;;;;6BAiEtD,MAAM,GAAG,MAAM,SAClB,MAAM,wBACS,MAAM;;CAwCjC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;CAQrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;sCAM5B,MAAM,YACL,MAAM,GAAG,MAAM,SAClB,MAAM;CAqBlB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B;;;;;CA+FzC,CAAC"}
1
+ {"version":3,"file":"sampleNavigation.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/sampleNavigation.ts"],"names":[],"mappings":"AAgBA,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AAEf;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,MAAM;IAC7C,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;CACrB,KAAG,MAAM,GAAG,SAQZ,CAAC;AAEF,eAAO,MAAM,YAAY,mBAyBT,MAAM,GAAG,MAAM,SAClB,MAAM,wBACS,MAAM,uBAmBjC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;qBA8C9B,MAAM,GAAG,MAAM,SAAS,MAAM,yBAAyB,MAAM;;;;;;;6BAgEtD,MAAM,GAAG,MAAM,SAClB,MAAM,wBACS,MAAM;;CAuCjC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;CAYrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;sCAM5B,MAAM,YACL,MAAM,GAAG,MAAM,SAClB,MAAM;CAoBlB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B;;;;;CA0HzC,CAAC"}
@@ -80,6 +80,18 @@ export declare const logSamplesUrl: (logPath: string, sampleId?: string | number
80
80
  export declare const printSampleUrl: (logPath: string, sampleId: string | number, epoch: string | number, view: string, prefix?: RoutePrefix) => string;
81
81
  export declare const samplesSampleUrl: (logPath: string, sampleId: string | number, epoch: string | number, sampleTabId?: string) => string;
82
82
  export declare const sampleEventUrl: (builder: SampleUrlBuilder, eventId: string, logPath: string, sampleId?: string | number, sampleEpoch?: string | number) => string;
83
+ /**
84
+ * Builder for the focus-mode entry href: a `#`-prefixed hash-route URL for the
85
+ * single-event focus page. Relative `#…` so a ctrl/cmd- or middle-click opens
86
+ * it in a new browser tab of the same SPA, while a plain click is intercepted
87
+ * for in-window navigation (see `TranscriptLayout.onOpenEventFocus`). The
88
+ * VS Code webview has no browser-tab model, but in-window focus mode works
89
+ * there like any hash navigation, so the control is no longer suppressed.
90
+ *
91
+ * Returns undefined (hiding the control) when the log path / sample can't be
92
+ * resolved.
93
+ */
94
+ export declare const useSampleEventFocusUrlBuilder: () => ((eventId: string, selectedTab?: string) => string | undefined);
83
95
  export declare const useSampleMessageUrl: (messageId: string | null | undefined, sampleId?: string | number, sampleEpoch?: string | number) => string | undefined;
84
96
  export declare const useSampleEventUrl: (eventId: string, sampleId?: string | number, sampleEpoch?: string | number) => string | undefined;
85
97
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/url.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/app/routing/url.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InlineSampleDisplay.d.ts","sourceRoot":"","sources":["../../../../src/app/samples/InlineSampleDisplay.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAU,MAAM,OAAO,CAAC;AAW9C,UAAU,wBAAwB;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B;kEAC8D;IAC9D,SAAS,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAmC5D,CAAC"}
1
+ {"version":3,"file":"InlineSampleDisplay.d.ts","sourceRoot":"","sources":["../../../../src/app/samples/InlineSampleDisplay.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AAazD,UAAU,wBAAwB;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B;kEAC8D;IAC9D,SAAS,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CA6E5D,CAAC"}
@@ -1,29 +1,6 @@
1
1
  import { FC } from 'react';
2
- /**
3
- * Configuration for sample navigation (prev/next)
4
- */
5
- export interface SampleNavigationConfig {
6
- /** Handler for navigating to previous sample */
7
- onPrevious: () => void;
8
- /** Handler for navigating to next sample */
9
- onNext: () => void;
10
- /** Whether there is a previous sample to navigate to */
11
- hasPrevious: boolean;
12
- /** Whether there is a next sample to navigate to */
13
- hasNext: boolean;
14
- }
15
- /**
16
- * Configuration for the application navbar
17
- */
18
- export interface NavbarConfig {
19
- /** The current path to display in breadcrumb */
20
- currentPath: string | undefined;
21
- /** Function to build navigation URLs for breadcrumb segments */
22
- fnNavigationUrl: (file: string, log_dir?: string) => string;
23
- /** Whether to show a border on the navbar */
24
- bordered?: boolean;
25
- breadcrumbsEnabled?: boolean;
26
- }
2
+ import { NavbarConfig, SampleNavigationConfig } from './SampleNavbar';
3
+ export type { NavbarConfig, SampleNavigationConfig };
27
4
  /**
28
5
  * Props for the SampleDetailComponent
29
6
  */
@@ -44,7 +21,8 @@ export interface SampleDetailComponentProps {
44
21
  * Used by both SampleDetailView (for /samples route) and LogSampleDetailView (for /logs route).
45
22
  *
46
23
  * This component handles:
47
- * - Keyboard shortcuts (arrow keys for nav, Ctrl+F for find)
24
+ * - Keyboard shortcuts (Ctrl+F for find; arrow-key sample nav lives in
25
+ * SampleNavbar)
48
26
  * - Find band integration
49
27
  * - Sample tab synchronization (URL → state)
50
28
  * - Navigation controls UI (prev/next buttons + sample info)
@@ -1 +1 @@
1
- {"version":3,"file":"SampleDetailComponent.d.ts","sourceRoot":"","sources":["../../../../src/app/samples/SampleDetailComponent.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAkBnE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,wDAAwD;IACxD,WAAW,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,oCAAoC;IACpC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,gCAAgC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,mFAAmF;IACnF,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,oDAAoD;IACpD,UAAU,EAAE,sBAAsB,CAAC;IACnC,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CA6IhE,CAAC"}
1
+ {"version":3,"file":"SampleDetailComponent.d.ts","sourceRoot":"","sources":["../../../../src/app/samples/SampleDetailComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAc5D,OAAO,EACL,YAAY,EAEZ,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,oCAAoC;IACpC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,gCAAgC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,mFAAmF;IACnF,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,oDAAoD;IACpD,UAAU,EAAE,sBAAsB,CAAC;IACnC,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CA+DhE,CAAC"}