@pmelab/gtd 64.1.0 → 64.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/web/main.js CHANGED
@@ -1,11 +1,11 @@
1
- //#region \0rolldown/runtime.js
1
+ // \0rolldown/runtime.js
2
2
  var __create$3 = Object.create;
3
3
  var __defProp$3 = Object.defineProperty;
4
4
  var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames$3 = Object.getOwnPropertyNames;
6
6
  var __getProtoOf$3 = Object.getPrototypeOf;
7
7
  var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
8
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
8
+ var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod, mod.exports), cb = null), mod.exports);
9
9
  var __exportAll = (all, no_symbols) => {
10
10
  let target = {};
11
11
  for (var name in all) __defProp$3(target, name, {
@@ -25,12 +25,11 @@ var __copyProps$3 = (to, from, except, desc) => {
25
25
  }
26
26
  return to;
27
27
  };
28
- var __toESM$3 = (mod, isNodeMode, target) => (target = mod != null ? __create$3(__getProtoOf$3(mod)) : {}, __copyProps$3(isNodeMode || !mod || !mod.__esModule ? __defProp$3(target, "default", {
28
+ var __toESM$3 = (mod, isNodeMode, target) => (target = mod != null ? __create$3(__getProtoOf$3(mod)) : {}, __copyProps$3(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp$3.call(mod, "default") ? __defProp$3(target, "default", {
29
29
  value: mod,
30
30
  enumerable: true
31
31
  }) : target, mod));
32
- //#endregion
33
- //#region node_modules/react/cjs/react.production.js
32
+ // node_modules/react/cjs/react.production.js
34
33
  /**
35
34
  * @license React
36
35
  * react.production.js
@@ -405,13 +404,11 @@ var require_react_production = /* @__PURE__ */ __commonJSMin(((exports) => {
405
404
  };
406
405
  exports.version = "19.2.8";
407
406
  }));
408
- //#endregion
409
- //#region node_modules/react/index.js
407
+ // node_modules/react/index.js
410
408
  var require_react = /* @__PURE__ */ __commonJSMin(((exports, module) => {
411
409
  module.exports = require_react_production();
412
410
  }));
413
- //#endregion
414
- //#region node_modules/react/cjs/react-jsx-runtime.production.js
411
+ // node_modules/react/cjs/react-jsx-runtime.production.js
415
412
  /**
416
413
  * @license React
417
414
  * react-jsx-runtime.production.js
@@ -445,13 +442,11 @@ var require_react_jsx_runtime_production = /* @__PURE__ */ __commonJSMin(((expor
445
442
  exports.jsx = jsxProd;
446
443
  exports.jsxs = jsxProd;
447
444
  }));
448
- //#endregion
449
- //#region node_modules/react/jsx-runtime.js
445
+ // node_modules/react/jsx-runtime.js
450
446
  var require_jsx_runtime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
451
447
  module.exports = require_react_jsx_runtime_production();
452
448
  }));
453
- //#endregion
454
- //#region node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js
449
+ // node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js
455
450
  var import_react = /* @__PURE__ */ __toESM$3(require_react(), 1);
456
451
  var import_jsx_runtime = require_jsx_runtime();
457
452
  const QueryClientContext = import_react.createContext(void 0);
@@ -473,8 +468,7 @@ const QueryClientProvider = ({ client, children }) => {
473
468
  children
474
469
  });
475
470
  };
476
- //#endregion
477
- //#region node_modules/@tanstack/query-core/build/modern/timeoutManager.js
471
+ // node_modules/@tanstack/query-core/build/modern/timeoutManager.js
478
472
  const defaultTimeoutProvider = {
479
473
  setTimeout: (callback, delay) => setTimeout(callback, delay),
480
474
  clearTimeout: (timeoutId) => clearTimeout(timeoutId),
@@ -522,8 +516,7 @@ const timeoutManager = new TimeoutManager();
522
516
  function systemSetTimeoutZero(callback) {
523
517
  setTimeout(callback, 0);
524
518
  }
525
- //#endregion
526
- //#region node_modules/@tanstack/query-core/build/modern/utils.js
519
+ // node_modules/@tanstack/query-core/build/modern/utils.js
527
520
  /** @deprecated
528
521
  * use `environmentManager.isServer()` instead.
529
522
  */
@@ -695,15 +688,13 @@ function addConsumeAwareSignal(object, getSignal, onCancelled) {
695
688
  });
696
689
  return object;
697
690
  }
698
- //#endregion
699
- //#region node_modules/@tanstack/query-core/build/modern/environmentManager.js
691
+ // node_modules/@tanstack/query-core/build/modern/environmentManager.js
700
692
  let isServerFn = () => isServer$1;
701
693
  /**
702
694
  * Returns whether the current runtime should be treated as a server environment.
703
695
  */
704
696
  const isServer = () => isServerFn();
705
- //#endregion
706
- //#region node_modules/@tanstack/query-core/build/modern/subscribable.js
697
+ // node_modules/@tanstack/query-core/build/modern/subscribable.js
707
698
  var Subscribable = class {
708
699
  constructor() {
709
700
  this.listeners = /* @__PURE__ */ new Set();
@@ -723,8 +714,7 @@ var Subscribable = class {
723
714
  onSubscribe() {}
724
715
  onUnsubscribe() {}
725
716
  };
726
- //#endregion
727
- //#region node_modules/@tanstack/query-core/build/modern/focusManager.js
717
+ // node_modules/@tanstack/query-core/build/modern/focusManager.js
728
718
  var FocusManager = class extends Subscribable {
729
719
  #focused;
730
720
  #cleanup;
@@ -776,8 +766,7 @@ var FocusManager = class extends Subscribable {
776
766
  }
777
767
  };
778
768
  const focusManager = new FocusManager();
779
- //#endregion
780
- //#region node_modules/@tanstack/query-core/build/modern/notifyManager.js
769
+ // node_modules/@tanstack/query-core/build/modern/notifyManager.js
781
770
  const defaultScheduler = systemSetTimeoutZero;
782
771
  function createNotifyManager() {
783
772
  let queue = [];
@@ -849,8 +838,7 @@ function createNotifyManager() {
849
838
  };
850
839
  }
851
840
  const notifyManager = createNotifyManager();
852
- //#endregion
853
- //#region node_modules/@tanstack/query-core/build/modern/onlineManager.js
841
+ // node_modules/@tanstack/query-core/build/modern/onlineManager.js
854
842
  var OnlineManager = class extends Subscribable {
855
843
  #online = true;
856
844
  #cleanup;
@@ -897,8 +885,7 @@ var OnlineManager = class extends Subscribable {
897
885
  }
898
886
  };
899
887
  const onlineManager = new OnlineManager();
900
- //#endregion
901
- //#region node_modules/@tanstack/query-core/build/modern/retryer.js
888
+ // node_modules/@tanstack/query-core/build/modern/retryer.js
902
889
  function defaultRetryDelay(failureCount) {
903
890
  return Math.min(1e3 * 2 ** failureCount, 3e4);
904
891
  }
@@ -1012,8 +999,7 @@ function createRetryer(config) {
1012
999
  }
1013
1000
  };
1014
1001
  }
1015
- //#endregion
1016
- //#region node_modules/@tanstack/query-core/build/modern/removable.js
1002
+ // node_modules/@tanstack/query-core/build/modern/removable.js
1017
1003
  var Removable = class {
1018
1004
  #gcTimeout;
1019
1005
  destroy() {
@@ -1035,8 +1021,7 @@ var Removable = class {
1035
1021
  }
1036
1022
  }
1037
1023
  };
1038
- //#endregion
1039
- //#region node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js
1024
+ // node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js
1040
1025
  function infiniteQueryBehavior(pages) {
1041
1026
  return { onFetch: (context, query) => {
1042
1027
  const options = context.options;
@@ -1128,8 +1113,7 @@ function hasPreviousPage(options, data) {
1128
1113
  if (!data || !options.getPreviousPageParam) return false;
1129
1114
  return getPreviousPageParam(options, data) != null;
1130
1115
  }
1131
- //#endregion
1132
- //#region node_modules/@tanstack/query-core/build/modern/query.js
1116
+ // node_modules/@tanstack/query-core/build/modern/query.js
1133
1117
  var Query = class extends Removable {
1134
1118
  #queryType;
1135
1119
  #initialState;
@@ -1260,8 +1244,10 @@ var Query = class extends Removable {
1260
1244
  if (index !== -1) {
1261
1245
  this.observers.splice(index, 1);
1262
1246
  if (!this.observers.length) {
1263
- if (this.#retryer) if (this.#abortSignalConsumed || this.state.fetchStatus === "paused" && this.state.status === "pending") this.#retryer.cancel({ revert: true });
1264
- else this.#retryer.cancelRetry();
1247
+ if (this.#retryer) {
1248
+ if (this.#abortSignalConsumed || this.state.fetchStatus === "paused" && this.state.status === "pending") this.#retryer.cancel({ revert: true });
1249
+ else this.#retryer.cancelRetry();
1250
+ }
1265
1251
  this.scheduleGc();
1266
1252
  }
1267
1253
  this.#cache.notify({
@@ -1499,8 +1485,7 @@ function getDefaultState$1(options) {
1499
1485
  fetchStatus: "idle"
1500
1486
  };
1501
1487
  }
1502
- //#endregion
1503
- //#region node_modules/@tanstack/query-core/build/modern/queryObserver.js
1488
+ // node_modules/@tanstack/query-core/build/modern/queryObserver.js
1504
1489
  var QueryObserver = class extends Subscribable {
1505
1490
  #client;
1506
1491
  #currentQuery = void 0;
@@ -1710,17 +1695,18 @@ var QueryObserver = class extends Subscribable {
1710
1695
  isPlaceholderData = true;
1711
1696
  }
1712
1697
  }
1713
- if (options.select && data !== void 0 && !skipSelect) if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) data = this.#selectResult;
1714
- else try {
1715
- this.#selectFn = options.select;
1716
- data = options.select(data);
1717
- data = replaceData(prevResult?.data, data, options);
1718
- this.#selectResult = data;
1719
- this.#selectError = null;
1720
- } catch (selectError) {
1721
- this.#selectError = selectError;
1722
- }
1723
- else if (data === void 0) this.#selectError = null;
1698
+ if (options.select && data !== void 0 && !skipSelect) {
1699
+ if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) data = this.#selectResult;
1700
+ else try {
1701
+ this.#selectFn = options.select;
1702
+ data = options.select(data);
1703
+ data = replaceData(prevResult?.data, data, options);
1704
+ this.#selectResult = data;
1705
+ this.#selectError = null;
1706
+ } catch (selectError) {
1707
+ this.#selectError = selectError;
1708
+ }
1709
+ } else if (data === void 0) this.#selectError = null;
1724
1710
  if (this.#selectError) {
1725
1711
  error = this.#selectError;
1726
1712
  data = this.#selectResult;
@@ -1827,8 +1813,7 @@ function shouldFetchOptionally(query, prevQuery, options, prevOptions) {
1827
1813
  function isStale(query, options) {
1828
1814
  return resolveQueryValue(options.enabled, query) !== false && query.isStaleByTime(resolveQueryValue(options.staleTime, query));
1829
1815
  }
1830
- //#endregion
1831
- //#region node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.js
1816
+ // node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.js
1832
1817
  var InfiniteQueryObserver = class extends QueryObserver {
1833
1818
  constructor(client, options) {
1834
1819
  super(client, options);
@@ -1882,8 +1867,7 @@ var InfiniteQueryObserver = class extends QueryObserver {
1882
1867
  };
1883
1868
  }
1884
1869
  };
1885
- //#endregion
1886
- //#region node_modules/@tanstack/query-core/build/modern/mutation.js
1870
+ // node_modules/@tanstack/query-core/build/modern/mutation.js
1887
1871
  var Mutation = class extends Removable {
1888
1872
  #client;
1889
1873
  #observers;
@@ -1927,8 +1911,10 @@ var Mutation = class extends Removable {
1927
1911
  });
1928
1912
  }
1929
1913
  optionalRemove() {
1930
- if (!this.#observers.length) if (this.state.status === "pending") this.scheduleGc();
1931
- else this.#mutationCache.remove(this);
1914
+ if (!this.#observers.length) {
1915
+ if (this.state.status === "pending") this.scheduleGc();
1916
+ else this.#mutationCache.remove(this);
1917
+ }
1932
1918
  }
1933
1919
  continue() {
1934
1920
  return this.#retryer?.continue() ?? (this.state.status === "pending" ? this.execute(this.state.variables) : Promise.resolve());
@@ -2097,8 +2083,7 @@ function getDefaultState() {
2097
2083
  submittedAt: 0
2098
2084
  };
2099
2085
  }
2100
- //#endregion
2101
- //#region node_modules/@tanstack/query-core/build/modern/mutationCache.js
2086
+ // node_modules/@tanstack/query-core/build/modern/mutationCache.js
2102
2087
  var MutationCache = class extends Subscribable {
2103
2088
  #mutations;
2104
2089
  #scopes;
@@ -2204,8 +2189,7 @@ var MutationCache = class extends Subscribable {
2204
2189
  function scopeFor(mutation) {
2205
2190
  return mutation.options.scope?.id;
2206
2191
  }
2207
- //#endregion
2208
- //#region node_modules/@tanstack/query-core/build/modern/mutationObserver.js
2192
+ // node_modules/@tanstack/query-core/build/modern/mutationObserver.js
2209
2193
  var MutationObserver = class extends Subscribable {
2210
2194
  #client;
2211
2195
  #currentResult = void 0;
@@ -2314,8 +2298,7 @@ var MutationObserver = class extends Subscribable {
2314
2298
  });
2315
2299
  }
2316
2300
  };
2317
- //#endregion
2318
- //#region node_modules/@tanstack/query-core/build/modern/queriesObserver.js
2301
+ // node_modules/@tanstack/query-core/build/modern/queriesObserver.js
2319
2302
  function difference(array1, array2) {
2320
2303
  const excludeSet = new Set(array2);
2321
2304
  return array1.filter((x) => !excludeSet.has(x));
@@ -2489,8 +2472,7 @@ var QueriesObserver = class extends Subscribable {
2489
2472
  }
2490
2473
  }
2491
2474
  };
2492
- //#endregion
2493
- //#region node_modules/@tanstack/query-core/build/modern/queryCache.js
2475
+ // node_modules/@tanstack/query-core/build/modern/queryCache.js
2494
2476
  var QueryCache = class extends Subscribable {
2495
2477
  #queries;
2496
2478
  constructor(config = {}) {
@@ -2581,8 +2563,7 @@ var QueryCache = class extends Subscribable {
2581
2563
  });
2582
2564
  }
2583
2565
  };
2584
- //#endregion
2585
- //#region node_modules/@tanstack/query-core/build/modern/queryClient.js
2566
+ // node_modules/@tanstack/query-core/build/modern/queryClient.js
2586
2567
  var QueryClient = class {
2587
2568
  #queryCache;
2588
2569
  #mutationCache;
@@ -2855,13 +2836,11 @@ var QueryClient = class {
2855
2836
  this.#mutationCache.clear();
2856
2837
  }
2857
2838
  };
2858
- //#endregion
2859
- //#region node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js
2839
+ // node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js
2860
2840
  const IsRestoringContext = import_react.createContext(false);
2861
2841
  const useIsRestoring = () => import_react.useContext(IsRestoringContext);
2862
2842
  IsRestoringContext.Provider;
2863
- //#endregion
2864
- //#region node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js
2843
+ // node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js
2865
2844
  function createValue() {
2866
2845
  let isReset = false;
2867
2846
  return {
@@ -2878,8 +2857,7 @@ function createValue() {
2878
2857
  }
2879
2858
  const QueryErrorResetBoundaryContext = import_react.createContext(createValue());
2880
2859
  const useQueryErrorResetBoundary = () => import_react.useContext(QueryErrorResetBoundaryContext);
2881
- //#endregion
2882
- //#region node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js
2860
+ // node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js
2883
2861
  const ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {
2884
2862
  const throwOnError = query?.state.error && typeof options.throwOnError === "function" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;
2885
2863
  if (options.suspense || throwOnError) {
@@ -2894,8 +2872,7 @@ const useClearResetErrorBoundary = (errorResetBoundary) => {
2894
2872
  const getHasError = ({ result, errorResetBoundary, throwOnError, query, suspense }) => {
2895
2873
  return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));
2896
2874
  };
2897
- //#endregion
2898
- //#region node_modules/@tanstack/react-query/build/modern/suspense.js
2875
+ // node_modules/@tanstack/react-query/build/modern/suspense.js
2899
2876
  const defaultThrowOnError = (_error, query) => query.state.data === void 0;
2900
2877
  const ensureSuspenseTimers = (defaultedOptions) => {
2901
2878
  if (defaultedOptions.suspense) {
@@ -2910,8 +2887,7 @@ const shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense &
2910
2887
  const fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {
2911
2888
  errorResetBoundary.clearReset();
2912
2889
  });
2913
- //#endregion
2914
- //#region node_modules/@tanstack/react-query/build/modern/useQueries.js
2890
+ // node_modules/@tanstack/react-query/build/modern/useQueries.js
2915
2891
  function useQueries({ queries, ...options }, queryClient) {
2916
2892
  const client = useQueryClient(queryClient);
2917
2893
  const isRestoring = useIsRestoring();
@@ -2946,7 +2922,10 @@ function useQueries({ queries, ...options }, queryClient) {
2946
2922
  ]);
2947
2923
  const suspensePromises = optimisticResult.some((result, index) => shouldSuspend(defaultedQueries[index], result)) ? optimisticResult.flatMap((result, index) => {
2948
2924
  const opts = defaultedQueries[index];
2949
- if (opts && shouldSuspend(opts, result)) return fetchOptimistic(opts, new QueryObserver(client, opts), errorResetBoundary);
2925
+ if (opts && shouldSuspend(opts, result)) {
2926
+ const queryObserver = new QueryObserver(client, opts);
2927
+ return fetchOptimistic(opts, queryObserver, errorResetBoundary);
2928
+ }
2950
2929
  return [];
2951
2930
  }) : [];
2952
2931
  if (suspensePromises.length > 0) throw Promise.all(suspensePromises);
@@ -2963,8 +2942,7 @@ function useQueries({ queries, ...options }, queryClient) {
2963
2942
  if (firstSingleResultWhichShouldThrow) throw firstSingleResultWhichShouldThrow.error;
2964
2943
  return getCombinedResult(trackResult());
2965
2944
  }
2966
- //#endregion
2967
- //#region node_modules/@tanstack/react-query/build/modern/useBaseQuery.js
2945
+ // node_modules/@tanstack/react-query/build/modern/useBaseQuery.js
2968
2946
  function useBaseQuery(options, Observer, queryClient) {
2969
2947
  const isRestoring = useIsRestoring();
2970
2948
  const errorResetBoundary = useQueryErrorResetBoundary();
@@ -2997,13 +2975,11 @@ function useBaseQuery(options, Observer, queryClient) {
2997
2975
  })) throw result.error;
2998
2976
  return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;
2999
2977
  }
3000
- //#endregion
3001
- //#region node_modules/@tanstack/react-query/build/modern/useQuery.js
2978
+ // node_modules/@tanstack/react-query/build/modern/useQuery.js
3002
2979
  function useQuery(options, queryClient) {
3003
2980
  return useBaseQuery(options, QueryObserver, queryClient);
3004
2981
  }
3005
- //#endregion
3006
- //#region node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.js
2982
+ // node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.js
3007
2983
  function useSuspenseQuery(options, queryClient) {
3008
2984
  return useBaseQuery({
3009
2985
  ...options,
@@ -3013,8 +2989,7 @@ function useSuspenseQuery(options, queryClient) {
3013
2989
  placeholderData: void 0
3014
2990
  }, QueryObserver, queryClient);
3015
2991
  }
3016
- //#endregion
3017
- //#region node_modules/@tanstack/react-query/build/modern/useSuspenseInfiniteQuery.js
2992
+ // node_modules/@tanstack/react-query/build/modern/useSuspenseInfiniteQuery.js
3018
2993
  function useSuspenseInfiniteQuery(options, queryClient) {
3019
2994
  return useBaseQuery({
3020
2995
  ...options,
@@ -3024,8 +2999,7 @@ function useSuspenseInfiniteQuery(options, queryClient) {
3024
2999
  placeholderData: void 0
3025
3000
  }, InfiniteQueryObserver, queryClient);
3026
3001
  }
3027
- //#endregion
3028
- //#region node_modules/@tanstack/react-query/build/modern/useSuspenseQueries.js
3002
+ // node_modules/@tanstack/react-query/build/modern/useSuspenseQueries.js
3029
3003
  function useSuspenseQueries(options, queryClient) {
3030
3004
  return useQueries({
3031
3005
  ...options,
@@ -3040,30 +3014,25 @@ function useSuspenseQueries(options, queryClient) {
3040
3014
  })
3041
3015
  }, queryClient);
3042
3016
  }
3043
- //#endregion
3044
- //#region node_modules/@tanstack/react-query/build/modern/usePrefetchQuery.js
3017
+ // node_modules/@tanstack/react-query/build/modern/usePrefetchQuery.js
3045
3018
  function usePrefetchQuery(options, queryClient) {
3046
3019
  const client = useQueryClient(queryClient);
3047
3020
  if (!client.getQueryState(options.queryKey)) client.query(options).catch(noop$1);
3048
3021
  }
3049
- //#endregion
3050
- //#region node_modules/@tanstack/react-query/build/modern/usePrefetchInfiniteQuery.js
3022
+ // node_modules/@tanstack/react-query/build/modern/usePrefetchInfiniteQuery.js
3051
3023
  function usePrefetchInfiniteQuery(options, queryClient) {
3052
3024
  const client = useQueryClient(queryClient);
3053
3025
  if (!client.getQueryState(options.queryKey)) client.infiniteQuery(options).catch(noop$1);
3054
3026
  }
3055
- //#endregion
3056
- //#region node_modules/@tanstack/react-query/build/modern/queryOptions.js
3027
+ // node_modules/@tanstack/react-query/build/modern/queryOptions.js
3057
3028
  function queryOptions(options) {
3058
3029
  return options;
3059
3030
  }
3060
- //#endregion
3061
- //#region node_modules/@tanstack/react-query/build/modern/infiniteQueryOptions.js
3031
+ // node_modules/@tanstack/react-query/build/modern/infiniteQueryOptions.js
3062
3032
  function infiniteQueryOptions(options) {
3063
3033
  return options;
3064
3034
  }
3065
- //#endregion
3066
- //#region node_modules/@tanstack/react-query/build/modern/useMutation.js
3035
+ // node_modules/@tanstack/react-query/build/modern/useMutation.js
3067
3036
  function useMutation(options, queryClient) {
3068
3037
  const client = useQueryClient(queryClient);
3069
3038
  const [observer] = import_react.useState(() => new MutationObserver(client, options));
@@ -3081,13 +3050,11 @@ function useMutation(options, queryClient) {
3081
3050
  mutateAsync: result.mutate
3082
3051
  };
3083
3052
  }
3084
- //#endregion
3085
- //#region node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js
3053
+ // node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js
3086
3054
  function useInfiniteQuery(options, queryClient) {
3087
3055
  return useBaseQuery(options, InfiniteQueryObserver, queryClient);
3088
3056
  }
3089
- //#endregion
3090
- //#region node_modules/@trpc/client/dist/objectSpread2-BvkFp-_Y.mjs
3057
+ // node_modules/@trpc/client/dist/objectSpread2-BvkFp-_Y.mjs
3091
3058
  var __create$2 = Object.create;
3092
3059
  var __defProp$2 = Object.defineProperty;
3093
3060
  var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
@@ -3182,8 +3149,7 @@ var require_objectSpread2$2 = __commonJS$2({ "../../node_modules/.pnpm/@oxc-proj
3182
3149
  }
3183
3150
  module.exports = _objectSpread2, module.exports.__esModule = true, module.exports["default"] = module.exports;
3184
3151
  } });
3185
- //#endregion
3186
- //#region node_modules/@trpc/server/dist/observable-UMO3vUa_.mjs
3152
+ // node_modules/@trpc/server/dist/observable-UMO3vUa_.mjs
3187
3153
  /** @public */
3188
3154
  function observable(subscribe) {
3189
3155
  const self = {
@@ -3264,8 +3230,7 @@ function observableToPromise(observable$1) {
3264
3230
  });
3265
3231
  });
3266
3232
  }
3267
- //#endregion
3268
- //#region node_modules/@trpc/server/dist/observable-CUiPknO-.mjs
3233
+ // node_modules/@trpc/server/dist/observable-CUiPknO-.mjs
3269
3234
  function share(_opts) {
3270
3235
  return (source) => {
3271
3236
  let refCount = 0;
@@ -3343,8 +3308,7 @@ function behaviorSubject(initialValue) {
3343
3308
  obs.get = () => value;
3344
3309
  return obs;
3345
3310
  }
3346
- //#endregion
3347
- //#region node_modules/@trpc/client/dist/splitLink-B7Cuf2c_.mjs
3311
+ // node_modules/@trpc/client/dist/splitLink-B7Cuf2c_.mjs
3348
3312
  /** @internal */
3349
3313
  function createChain(opts) {
3350
3314
  return observable((observer) => {
@@ -3361,8 +3325,7 @@ function createChain(opts) {
3361
3325
  return execute().subscribe(observer);
3362
3326
  });
3363
3327
  }
3364
- //#endregion
3365
- //#region node_modules/@trpc/server/dist/codes-DagpWZLc.mjs
3328
+ // node_modules/@trpc/server/dist/codes-DagpWZLc.mjs
3366
3329
  /**
3367
3330
  * Check that value is object
3368
3331
  * @internal
@@ -3411,8 +3374,7 @@ const TRPC_ERROR_CODES_BY_KEY = {
3411
3374
  CLIENT_CLOSED_REQUEST: -32099
3412
3375
  };
3413
3376
  TRPC_ERROR_CODES_BY_KEY.BAD_GATEWAY, TRPC_ERROR_CODES_BY_KEY.SERVICE_UNAVAILABLE, TRPC_ERROR_CODES_BY_KEY.GATEWAY_TIMEOUT, TRPC_ERROR_CODES_BY_KEY.INTERNAL_SERVER_ERROR;
3414
- //#endregion
3415
- //#region node_modules/@trpc/server/dist/getErrorShape-BPSzUA7W.mjs
3377
+ // node_modules/@trpc/server/dist/getErrorShape-BPSzUA7W.mjs
3416
3378
  var __create$1 = Object.create;
3417
3379
  var __defProp$1 = Object.defineProperty;
3418
3380
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
@@ -3599,8 +3561,7 @@ function transformResult(response, transformer) {
3599
3561
  return result;
3600
3562
  }
3601
3563
  __toESM$1(require_objectSpread2$1(), 1);
3602
- //#endregion
3603
- //#region node_modules/@trpc/client/dist/TRPCClientError-apv8gw59.mjs
3564
+ // node_modules/@trpc/client/dist/TRPCClientError-apv8gw59.mjs
3604
3565
  var import_defineProperty$5 = __toESM$2(require_defineProperty$2(), 1);
3605
3566
  var import_objectSpread2$11 = __toESM$2(require_objectSpread2$2(), 1);
3606
3567
  function isTRPCClientError(cause) {
@@ -3643,8 +3604,7 @@ var TRPCClientError = class TRPCClientError extends Error {
3643
3604
  return new TRPCClientError(getMessageFromUnknownError(cause, "Unknown error"), (0, import_objectSpread2$11.default)((0, import_objectSpread2$11.default)({}, opts), {}, { cause }));
3644
3605
  }
3645
3606
  };
3646
- //#endregion
3647
- //#region node_modules/@trpc/client/dist/unstable-internals-Bg7n9BBj.mjs
3607
+ // node_modules/@trpc/client/dist/unstable-internals-Bg7n9BBj.mjs
3648
3608
  /**
3649
3609
  * @internal
3650
3610
  */
@@ -3669,8 +3629,7 @@ function getTransformer(transformer) {
3669
3629
  output: _transformer
3670
3630
  };
3671
3631
  }
3672
- //#endregion
3673
- //#region node_modules/@trpc/client/dist/httpUtils-BNq9QC3d.mjs
3632
+ // node_modules/@trpc/client/dist/httpUtils-BNq9QC3d.mjs
3674
3633
  const isFunction = (fn) => typeof fn === "function";
3675
3634
  function getFetch(customFetchImpl) {
3676
3635
  if (customFetchImpl) return customFetchImpl;
@@ -3689,7 +3648,10 @@ function resolveHTTPLinkOptions(opts) {
3689
3648
  }
3690
3649
  function arrayToDict(array) {
3691
3650
  const dict = {};
3692
- for (let index = 0; index < array.length; index++) dict[index] = array[index];
3651
+ for (let index = 0; index < array.length; index++) {
3652
+ const element = array[index];
3653
+ dict[index] = element;
3654
+ }
3693
3655
  return dict;
3694
3656
  }
3695
3657
  const METHOD = {
@@ -3779,8 +3741,7 @@ async function httpRequest(opts) {
3779
3741
  };
3780
3742
  }
3781
3743
  __toESM$2(require_objectSpread2$2(), 1);
3782
- //#endregion
3783
- //#region node_modules/@trpc/client/dist/httpBatchLink-CaWjh1oW.mjs
3744
+ // node_modules/@trpc/client/dist/httpBatchLink-CaWjh1oW.mjs
3784
3745
  /**
3785
3746
  * A function that should never be called unless we messed something up.
3786
3747
  */
@@ -3981,8 +3942,7 @@ function httpBatchLink(opts) {
3981
3942
  };
3982
3943
  }
3983
3944
  __toESM$2(require_objectSpread2$2(), 1);
3984
- //#endregion
3985
- //#region node_modules/@trpc/client/dist/wsLink-DSf4KOdW.mjs
3945
+ // node_modules/@trpc/client/dist/wsLink-DSf4KOdW.mjs
3986
3946
  /**
3987
3947
  * Get the result of a value or function that returns a value
3988
3948
  * It also optionally accepts typesafe arguments for the function
@@ -4156,8 +4116,7 @@ var WsConnection = class WsConnection {
4156
4116
  (0, import_defineProperty$1.default)(WsConnection, "connectCount", 0);
4157
4117
  __toESM$2(require_defineProperty$2(), 1);
4158
4118
  __toESM$2(require_objectSpread2$2(), 1);
4159
- //#endregion
4160
- //#region node_modules/@trpc/client/dist/index.mjs
4119
+ // node_modules/@trpc/client/dist/index.mjs
4161
4120
  var import_defineProperty = __toESM$2(require_defineProperty$2(), 1);
4162
4121
  var import_objectSpread2$4$1 = __toESM$2(require_objectSpread2$2(), 1);
4163
4122
  var TRPCUntypedClient = class {
@@ -4231,7 +4190,6 @@ var TRPCUntypedClient = class {
4231
4190
  case void 0:
4232
4191
  var _opts$onData;
4233
4192
  (_opts$onData = opts.onData) === null || _opts$onData === void 0 || _opts$onData.call(opts, envelope.result.data);
4234
- break;
4235
4193
  }
4236
4194
  },
4237
4195
  error(err) {
@@ -4469,8 +4427,7 @@ __toESM$2(require_usingCtx(), 1);
4469
4427
  __toESM$2(require_awaitAsyncGenerator(), 1);
4470
4428
  __toESM$2(require_wrapAsyncGenerator(), 1);
4471
4429
  __toESM$2(require_objectSpread2$2(), 1);
4472
- //#endregion
4473
- //#region node_modules/scheduler/cjs/scheduler.production.js
4430
+ // node_modules/scheduler/cjs/scheduler.production.js
4474
4431
  /**
4475
4432
  * @license React
4476
4433
  * scheduler.production.js
@@ -4724,13 +4681,11 @@ var require_scheduler_production = /* @__PURE__ */ __commonJSMin(((exports) => {
4724
4681
  };
4725
4682
  };
4726
4683
  }));
4727
- //#endregion
4728
- //#region node_modules/scheduler/index.js
4684
+ // node_modules/scheduler/index.js
4729
4685
  var require_scheduler = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4730
4686
  module.exports = require_scheduler_production();
4731
4687
  }));
4732
- //#endregion
4733
- //#region node_modules/react-dom/cjs/react-dom.production.js
4688
+ // node_modules/react-dom/cjs/react-dom.production.js
4734
4689
  /**
4735
4690
  * @license React
4736
4691
  * react-dom.production.js
@@ -4871,8 +4826,7 @@ var require_react_dom_production = /* @__PURE__ */ __commonJSMin(((exports) => {
4871
4826
  };
4872
4827
  exports.version = "19.2.8";
4873
4828
  }));
4874
- //#endregion
4875
- //#region node_modules/react-dom/index.js
4829
+ // node_modules/react-dom/index.js
4876
4830
  var require_react_dom = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4877
4831
  function checkDCE() {
4878
4832
  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") return;
@@ -4885,8 +4839,7 @@ var require_react_dom = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4885
4839
  checkDCE();
4886
4840
  module.exports = require_react_dom_production();
4887
4841
  }));
4888
- //#endregion
4889
- //#region node_modules/react-dom/cjs/react-dom-client.production.js
4842
+ // node_modules/react-dom/cjs/react-dom-client.production.js
4890
4843
  /**
4891
4844
  * @license React
4892
4845
  * react-dom-client.production.js
@@ -14168,8 +14121,7 @@ var require_react_dom_client_production = /* @__PURE__ */ __commonJSMin(((export
14168
14121
  return new ReactDOMRoot(options);
14169
14122
  };
14170
14123
  }));
14171
- //#endregion
14172
- //#region node_modules/@trpc/react-query/dist/getQueryKey-BY58RNzP.mjs
14124
+ // node_modules/@trpc/react-query/dist/getQueryKey-BY58RNzP.mjs
14173
14125
  var import_client = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
14174
14126
  function checkDCE() {
14175
14127
  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") return;
@@ -14324,8 +14276,7 @@ function getQueryKeyInternal(path, input, type) {
14324
14276
  function getMutationKeyInternal(path) {
14325
14277
  return getQueryKeyInternal(path, void 0, "any");
14326
14278
  }
14327
- //#endregion
14328
- //#region node_modules/@trpc/react-query/dist/shared-JtnEvJvB.mjs
14279
+ // node_modules/@trpc/react-query/dist/shared-JtnEvJvB.mjs
14329
14280
  /**
14330
14281
  * Create proxy for decorating procedures
14331
14282
  * @internal
@@ -15030,8 +14981,7 @@ function createRootHooks(config) {
15030
14981
  useSuspenseInfiniteQuery: useSuspenseInfiniteQuery$1
15031
14982
  };
15032
14983
  }
15033
- //#endregion
15034
- //#region node_modules/@trpc/react-query/dist/index.mjs
14984
+ // node_modules/@trpc/react-query/dist/index.mjs
15035
14985
  /**
15036
14986
  * @internal
15037
14987
  */
@@ -15051,8 +15001,7 @@ function createHooksInternal(trpc) {
15051
15001
  function createTRPCReact(opts) {
15052
15002
  return createHooksInternal(createRootHooks(opts));
15053
15003
  }
15054
- //#endregion
15055
- //#region src/web/api.ts
15004
+ // src/web/api.ts
15056
15005
  /**
15057
15006
  * Typed against `AppRouter` only — no hand-written duplicate of a procedure's
15058
15007
  * input/output shape lives here. A later task calls `trpc.someProcedure.useQuery()`
@@ -15098,8 +15047,7 @@ const readRefusalFrom = (error) => {
15098
15047
  if (typeof reason !== "string") return void 0;
15099
15048
  return { reason };
15100
15049
  };
15101
- //#endregion
15102
- //#region node_modules/tailwind-merge/dist/bundle-mjs.mjs
15050
+ // node_modules/tailwind-merge/dist/bundle-mjs.mjs
15103
15051
  /**
15104
15052
  * Concatenates two arrays faster than the array spread operator.
15105
15053
  */
@@ -18594,8 +18542,7 @@ const mergeArrayProperties = (baseObject, mergeObject, key) => {
18594
18542
  if (mergeValue !== void 0) baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;
18595
18543
  };
18596
18544
  const extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === "function" ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);
18597
- //#endregion
18598
- //#region src/web/cn.ts
18545
+ // src/web/cn.ts
18599
18546
  /**
18600
18547
  * Class merge for every component that takes a `className` override.
18601
18548
  * Without it a call site's `text-muted`/`text-small` silently LOSES to a
@@ -18636,8 +18583,7 @@ const cn = extendTailwindMerge({ extend: { classGroups: {
18636
18583
  "syntax-com"
18637
18584
  ] }]
18638
18585
  } } });
18639
- //#endregion
18640
- //#region src/web/Notice.tsx
18586
+ // src/web/Notice.tsx
18641
18587
  /**
18642
18588
  * One designed block for every text-only state (package 02 Task 7) — the
18643
18589
  * five `App.tsx` states and its read-error branch route through this rather
@@ -18656,8 +18602,7 @@ const Notice = ({ tone = "info", className, children, ...props }) => /* @__PURE_
18656
18602
  ...props,
18657
18603
  children
18658
18604
  });
18659
- //#endregion
18660
- //#region node_modules/mdast-util-to-string/lib/index.js
18605
+ // node_modules/mdast-util-to-string/lib/index.js
18661
18606
  /**
18662
18607
  * @typedef {import('mdast').Nodes} Nodes
18663
18608
  *
@@ -18738,8 +18683,7 @@ function all(values, includeImageAlt, includeHtml) {
18738
18683
  function node(value) {
18739
18684
  return Boolean(value && typeof value === "object");
18740
18685
  }
18741
- //#endregion
18742
- //#region node_modules/decode-named-character-reference/index.dom.js
18686
+ // node_modules/decode-named-character-reference/index.dom.js
18743
18687
  const element = document.createElement("i");
18744
18688
  /**
18745
18689
  * @param {string} value
@@ -18752,8 +18696,7 @@ function decodeNamedCharacterReference(value) {
18752
18696
  if (character.charCodeAt(character.length - 1) === 59 && value !== "semi") return false;
18753
18697
  return character === characterReference ? false : character;
18754
18698
  }
18755
- //#endregion
18756
- //#region node_modules/micromark-util-chunked/index.js
18699
+ // node_modules/micromark-util-chunked/index.js
18757
18700
  /**
18758
18701
  * Like `Array#splice`, but smarter for giant arrays.
18759
18702
  *
@@ -18822,8 +18765,7 @@ function push(list, items) {
18822
18765
  }
18823
18766
  return items;
18824
18767
  }
18825
- //#endregion
18826
- //#region node_modules/micromark-util-combine-extensions/index.js
18768
+ // node_modules/micromark-util-combine-extensions/index.js
18827
18769
  /**
18828
18770
  * @import {
18829
18771
  * Extension,
@@ -18893,8 +18835,7 @@ function constructs(existing, list) {
18893
18835
  while (++index < list.length) (list[index].add === "after" ? existing : before).push(list[index]);
18894
18836
  splice(existing, 0, 0, before);
18895
18837
  }
18896
- //#endregion
18897
- //#region node_modules/micromark-util-decode-numeric-character-reference/index.js
18838
+ // node_modules/micromark-util-decode-numeric-character-reference/index.js
18898
18839
  /**
18899
18840
  * Turn the number (in string form as either hexa- or plain decimal) coming from
18900
18841
  * a numeric character reference into a character.
@@ -18914,8 +18855,7 @@ function decodeNumericCharacterReference(value, base) {
18914
18855
  if (code < 9 || code === 11 || code > 13 && code < 32 || code > 126 && code < 160 || code > 55295 && code < 57344 || code > 64975 && code < 65008 || (code & 65535) === 65535 || (code & 65535) === 65534 || code > 1114111) return "�";
18915
18856
  return String.fromCodePoint(code);
18916
18857
  }
18917
- //#endregion
18918
- //#region node_modules/micromark-util-normalize-identifier/index.js
18858
+ // node_modules/micromark-util-normalize-identifier/index.js
18919
18859
  /**
18920
18860
  * Normalize an identifier (as found in references, definitions).
18921
18861
  *
@@ -18938,8 +18878,7 @@ function decodeNumericCharacterReference(value, base) {
18938
18878
  function normalizeIdentifier(value) {
18939
18879
  return value.replace(/[\t\n\r ]+/g, " ").replace(/^ | $/g, "").toLowerCase().toUpperCase();
18940
18880
  }
18941
- //#endregion
18942
- //#region node_modules/micromark-util-character/index.js
18881
+ // node_modules/micromark-util-character/index.js
18943
18882
  /**
18944
18883
  * @import {Code} from 'micromark-util-types'
18945
18884
  */
@@ -19166,8 +19105,7 @@ function regexCheck(regex) {
19166
19105
  return code !== null && code > -1 && regex.test(String.fromCharCode(code));
19167
19106
  }
19168
19107
  }
19169
- //#endregion
19170
- //#region node_modules/micromark-factory-space/index.js
19108
+ // node_modules/micromark-factory-space/index.js
19171
19109
  /**
19172
19110
  * @import {Effects, State, TokenType} from 'micromark-util-types'
19173
19111
  */
@@ -19225,8 +19163,7 @@ function factorySpace(effects, ok, type, max) {
19225
19163
  return ok(code);
19226
19164
  }
19227
19165
  }
19228
- //#endregion
19229
- //#region node_modules/micromark/lib/initialize/content.js
19166
+ // node_modules/micromark/lib/initialize/content.js
19230
19167
  /**
19231
19168
  * @import {
19232
19169
  * InitialConstruct,
@@ -19292,8 +19229,7 @@ function initializeContent(effects) {
19292
19229
  return data;
19293
19230
  }
19294
19231
  }
19295
- //#endregion
19296
- //#region node_modules/micromark/lib/initialize/document.js
19232
+ // node_modules/micromark/lib/initialize/document.js
19297
19233
  /**
19298
19234
  * @import {
19299
19235
  * Construct,
@@ -19508,8 +19444,7 @@ function initializeDocument(effects) {
19508
19444
  function tokenizeContainer(effects, ok, nok) {
19509
19445
  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), "linePrefix", this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4);
19510
19446
  }
19511
- //#endregion
19512
- //#region node_modules/micromark-util-classify-character/index.js
19447
+ // node_modules/micromark-util-classify-character/index.js
19513
19448
  /**
19514
19449
  * @import {Code} from 'micromark-util-types'
19515
19450
  */
@@ -19531,8 +19466,7 @@ function classifyCharacter(code) {
19531
19466
  if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) return 1;
19532
19467
  if (unicodePunctuation(code)) return 2;
19533
19468
  }
19534
- //#endregion
19535
- //#region node_modules/micromark-util-resolve-all/index.js
19469
+ // node_modules/micromark-util-resolve-all/index.js
19536
19470
  /**
19537
19471
  * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'
19538
19472
  */
@@ -19561,8 +19495,7 @@ function resolveAll(constructs, events, context) {
19561
19495
  }
19562
19496
  return events;
19563
19497
  }
19564
- //#endregion
19565
- //#region node_modules/micromark-core-commonmark/lib/attention.js
19498
+ // node_modules/micromark-core-commonmark/lib/attention.js
19566
19499
  /**
19567
19500
  * @import {
19568
19501
  * Code,
@@ -19781,8 +19714,7 @@ function movePoint(point, offset) {
19781
19714
  point.offset += offset;
19782
19715
  point._bufferIndex += offset;
19783
19716
  }
19784
- //#endregion
19785
- //#region node_modules/micromark-core-commonmark/lib/autolink.js
19717
+ // node_modules/micromark-core-commonmark/lib/autolink.js
19786
19718
  /**
19787
19719
  * @import {
19788
19720
  * Construct,
@@ -19992,8 +19924,7 @@ function tokenizeAutolink(effects, ok, nok) {
19992
19924
  return nok(code);
19993
19925
  }
19994
19926
  }
19995
- //#endregion
19996
- //#region node_modules/micromark-core-commonmark/lib/blank-line.js
19927
+ // node_modules/micromark-core-commonmark/lib/blank-line.js
19997
19928
  /**
19998
19929
  * @import {
19999
19930
  * Construct,
@@ -20049,8 +19980,7 @@ function tokenizeBlankLine(effects, ok, nok) {
20049
19980
  return code === null || markdownLineEnding(code) ? ok(code) : nok(code);
20050
19981
  }
20051
19982
  }
20052
- //#endregion
20053
- //#region node_modules/micromark-core-commonmark/lib/block-quote.js
19983
+ // node_modules/micromark-core-commonmark/lib/block-quote.js
20054
19984
  /**
20055
19985
  * @import {
20056
19986
  * Construct,
@@ -20176,8 +20106,7 @@ function tokenizeBlockQuoteContinuation(effects, ok, nok) {
20176
20106
  function exit(effects) {
20177
20107
  effects.exit("blockQuote");
20178
20108
  }
20179
- //#endregion
20180
- //#region node_modules/micromark-core-commonmark/lib/character-escape.js
20109
+ // node_modules/micromark-core-commonmark/lib/character-escape.js
20181
20110
  /**
20182
20111
  * @import {
20183
20112
  * Construct,
@@ -20236,8 +20165,7 @@ function tokenizeCharacterEscape(effects, ok, nok) {
20236
20165
  return nok(code);
20237
20166
  }
20238
20167
  }
20239
- //#endregion
20240
- //#region node_modules/micromark-core-commonmark/lib/character-reference.js
20168
+ // node_modules/micromark-core-commonmark/lib/character-reference.js
20241
20169
  /**
20242
20170
  * @import {
20243
20171
  * Code,
@@ -20374,8 +20302,7 @@ function tokenizeCharacterReference(effects, ok, nok) {
20374
20302
  return nok(code);
20375
20303
  }
20376
20304
  }
20377
- //#endregion
20378
- //#region node_modules/micromark-core-commonmark/lib/code-fenced.js
20305
+ // node_modules/micromark-core-commonmark/lib/code-fenced.js
20379
20306
  /**
20380
20307
  * @import {
20381
20308
  * Code,
@@ -20789,8 +20716,7 @@ function tokenizeNonLazyContinuation(effects, ok, nok) {
20789
20716
  return self.parser.lazy[self.now().line] ? nok(code) : ok(code);
20790
20717
  }
20791
20718
  }
20792
- //#endregion
20793
- //#region node_modules/micromark-core-commonmark/lib/code-indented.js
20719
+ // node_modules/micromark-core-commonmark/lib/code-indented.js
20794
20720
  /**
20795
20721
  * @import {
20796
20722
  * Construct,
@@ -20933,8 +20859,7 @@ function tokenizeFurtherStart(effects, ok, nok) {
20933
20859
  return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);
20934
20860
  }
20935
20861
  }
20936
- //#endregion
20937
- //#region node_modules/micromark-core-commonmark/lib/code-text.js
20862
+ // node_modules/micromark-core-commonmark/lib/code-text.js
20938
20863
  /**
20939
20864
  * @import {
20940
20865
  * Construct,
@@ -21118,8 +21043,7 @@ function tokenizeCodeText(effects, ok, nok) {
21118
21043
  return data(code);
21119
21044
  }
21120
21045
  }
21121
- //#endregion
21122
- //#region node_modules/micromark-util-subtokenize/lib/splice-buffer.js
21046
+ // node_modules/micromark-util-subtokenize/lib/splice-buffer.js
21123
21047
  /**
21124
21048
  * Some of the internal operations of micromark do lots of editing
21125
21049
  * operations on very large arrays. This runs into problems with two
@@ -21348,8 +21272,7 @@ function chunkedPush(list, right) {
21348
21272
  chunkStart += 1e4;
21349
21273
  }
21350
21274
  }
21351
- //#endregion
21352
- //#region node_modules/micromark-util-subtokenize/index.js
21275
+ // node_modules/micromark-util-subtokenize/index.js
21353
21276
  /**
21354
21277
  * @import {Chunk, Event, Token} from 'micromark-util-types'
21355
21278
  */
@@ -21503,8 +21426,7 @@ function subcontent(events, eventIndex) {
21503
21426
  }
21504
21427
  return gaps;
21505
21428
  }
21506
- //#endregion
21507
- //#region node_modules/micromark-core-commonmark/lib/content.js
21429
+ // node_modules/micromark-core-commonmark/lib/content.js
21508
21430
  /**
21509
21431
  * @import {
21510
21432
  * Construct,
@@ -21636,8 +21558,7 @@ function tokenizeContinuation(effects, ok, nok) {
21636
21558
  return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);
21637
21559
  }
21638
21560
  }
21639
- //#endregion
21640
- //#region node_modules/micromark-factory-destination/index.js
21561
+ // node_modules/micromark-factory-destination/index.js
21641
21562
  /**
21642
21563
  * @import {Effects, State, TokenType} from 'micromark-util-types'
21643
21564
  */
@@ -21820,8 +21741,7 @@ function factoryDestination(effects, ok, nok, type, literalType, literalMarkerTy
21820
21741
  return raw(code);
21821
21742
  }
21822
21743
  }
21823
- //#endregion
21824
- //#region node_modules/micromark-factory-label/index.js
21744
+ // node_modules/micromark-factory-label/index.js
21825
21745
  /**
21826
21746
  * @import {
21827
21747
  * Effects,
@@ -21896,7 +21816,9 @@ function factoryLabel(effects, ok, nok, type, markerType, stringType) {
21896
21816
  * @type {State}
21897
21817
  */
21898
21818
  function atBreak(code) {
21899
- if (size > 999 || code === null || code === 91 || code === 93 && !seen || code === 94 && !size && "_hiddenFootnoteSupport" in self.parser.constructs) return nok(code);
21819
+ if (size > 999 || code === null || code === 91 || code === 93 && !seen ||
21820
+ /* c8 ignore next 3 */
21821
+ code === 94 && !size && "_hiddenFootnoteSupport" in self.parser.constructs) return nok(code);
21900
21822
  if (code === 93) {
21901
21823
  effects.exit(stringType);
21902
21824
  effects.enter(markerType);
@@ -21952,8 +21874,7 @@ function factoryLabel(effects, ok, nok, type, markerType, stringType) {
21952
21874
  return labelInside(code);
21953
21875
  }
21954
21876
  }
21955
- //#endregion
21956
- //#region node_modules/micromark-factory-title/index.js
21877
+ // node_modules/micromark-factory-title/index.js
21957
21878
  /**
21958
21879
  * @import {
21959
21880
  * Code,
@@ -22097,8 +22018,7 @@ function factoryTitle(effects, ok, nok, type, markerType, stringType) {
22097
22018
  return inside(code);
22098
22019
  }
22099
22020
  }
22100
- //#endregion
22101
- //#region node_modules/micromark-factory-whitespace/index.js
22021
+ // node_modules/micromark-factory-whitespace/index.js
22102
22022
  /**
22103
22023
  * @import {Effects, State} from 'micromark-util-types'
22104
22024
  */
@@ -22137,8 +22057,7 @@ function factoryWhitespace(effects, ok) {
22137
22057
  return ok(code);
22138
22058
  }
22139
22059
  }
22140
- //#endregion
22141
- //#region node_modules/micromark-core-commonmark/lib/definition.js
22060
+ // node_modules/micromark-core-commonmark/lib/definition.js
22142
22061
  /**
22143
22062
  * @import {
22144
22063
  * Construct,
@@ -22352,8 +22271,7 @@ function tokenizeTitleBefore(effects, ok, nok) {
22352
22271
  return code === null || markdownLineEnding(code) ? ok(code) : nok(code);
22353
22272
  }
22354
22273
  }
22355
- //#endregion
22356
- //#region node_modules/micromark-core-commonmark/lib/hard-break-escape.js
22274
+ // node_modules/micromark-core-commonmark/lib/hard-break-escape.js
22357
22275
  /**
22358
22276
  * @import {
22359
22277
  * Construct,
@@ -22409,8 +22327,7 @@ function tokenizeHardBreakEscape(effects, ok, nok) {
22409
22327
  return nok(code);
22410
22328
  }
22411
22329
  }
22412
- //#endregion
22413
- //#region node_modules/micromark-core-commonmark/lib/heading-atx.js
22330
+ // node_modules/micromark-core-commonmark/lib/heading-atx.js
22414
22331
  /**
22415
22332
  * @import {
22416
22333
  * Construct,
@@ -22594,8 +22511,7 @@ function tokenizeHeadingAtx(effects, ok, nok) {
22594
22511
  return data;
22595
22512
  }
22596
22513
  }
22597
- //#endregion
22598
- //#region node_modules/micromark-util-html-tag-name/index.js
22514
+ // node_modules/micromark-util-html-tag-name/index.js
22599
22515
  /**
22600
22516
  * List of lowercase HTML “block” tag names.
22601
22517
  *
@@ -22693,8 +22609,7 @@ const htmlRawNames = [
22693
22609
  "style",
22694
22610
  "textarea"
22695
22611
  ];
22696
- //#endregion
22697
- //#region node_modules/micromark-core-commonmark/lib/html-flow.js
22612
+ // node_modules/micromark-core-commonmark/lib/html-flow.js
22698
22613
  /**
22699
22614
  * @import {
22700
22615
  * Code,
@@ -23466,8 +23381,7 @@ function tokenizeBlankLineBefore(effects, ok, nok) {
23466
23381
  return effects.attempt(blankLine, ok, nok);
23467
23382
  }
23468
23383
  }
23469
- //#endregion
23470
- //#region node_modules/micromark-core-commonmark/lib/html-text.js
23384
+ // node_modules/micromark-core-commonmark/lib/html-text.js
23471
23385
  /**
23472
23386
  * @import {
23473
23387
  * Code,
@@ -24080,8 +23994,7 @@ function tokenizeHtmlText(effects, ok, nok) {
24080
23994
  return returnState(code);
24081
23995
  }
24082
23996
  }
24083
- //#endregion
24084
- //#region node_modules/micromark-core-commonmark/lib/label-end.js
23997
+ // node_modules/micromark-core-commonmark/lib/label-end.js
24085
23998
  /**
24086
23999
  * @import {
24087
24000
  * Construct,
@@ -24550,8 +24463,7 @@ function tokenizeReferenceCollapsed(effects, ok, nok) {
24550
24463
  return nok(code);
24551
24464
  }
24552
24465
  }
24553
- //#endregion
24554
- //#region node_modules/micromark-core-commonmark/lib/label-start-image.js
24466
+ // node_modules/micromark-core-commonmark/lib/label-start-image.js
24555
24467
  /**
24556
24468
  * @import {
24557
24469
  * Construct,
@@ -24643,8 +24555,7 @@ function tokenizeLabelStartImage(effects, ok, nok) {
24643
24555
  return code === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code) : ok(code);
24644
24556
  }
24645
24557
  }
24646
- //#endregion
24647
- //#region node_modules/micromark-core-commonmark/lib/label-start-link.js
24558
+ // node_modules/micromark-core-commonmark/lib/label-start-link.js
24648
24559
  /**
24649
24560
  * @import {
24650
24561
  * Construct,
@@ -24691,8 +24602,7 @@ function tokenizeLabelStartLink(effects, ok, nok) {
24691
24602
  return code === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code) : ok(code);
24692
24603
  }
24693
24604
  }
24694
- //#endregion
24695
- //#region node_modules/micromark-core-commonmark/lib/line-ending.js
24605
+ // node_modules/micromark-core-commonmark/lib/line-ending.js
24696
24606
  /**
24697
24607
  * @import {
24698
24608
  * Construct,
@@ -24721,8 +24631,7 @@ function tokenizeLineEnding(effects, ok) {
24721
24631
  return factorySpace(effects, ok, "linePrefix");
24722
24632
  }
24723
24633
  }
24724
- //#endregion
24725
- //#region node_modules/micromark-core-commonmark/lib/thematic-break.js
24634
+ // node_modules/micromark-core-commonmark/lib/thematic-break.js
24726
24635
  /**
24727
24636
  * @import {
24728
24637
  * Code,
@@ -24816,8 +24725,7 @@ function tokenizeThematicBreak(effects, ok, nok) {
24816
24725
  return markdownSpace(code) ? factorySpace(effects, atBreak, "whitespace")(code) : atBreak(code);
24817
24726
  }
24818
24727
  }
24819
- //#endregion
24820
- //#region node_modules/micromark-core-commonmark/lib/list.js
24728
+ // node_modules/micromark-core-commonmark/lib/list.js
24821
24729
  /**
24822
24730
  * @import {
24823
24731
  * Code,
@@ -24988,8 +24896,7 @@ function tokenizeListItemPrefixWhitespace(effects, ok, nok) {
24988
24896
  return !markdownSpace(code) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok(code) : nok(code);
24989
24897
  }
24990
24898
  }
24991
- //#endregion
24992
- //#region node_modules/micromark-core-commonmark/lib/setext-underline.js
24899
+ // node_modules/micromark-core-commonmark/lib/setext-underline.js
24993
24900
  /**
24994
24901
  * @import {
24995
24902
  * Code,
@@ -25140,8 +25047,7 @@ function tokenizeSetextUnderline(effects, ok, nok) {
25140
25047
  return nok(code);
25141
25048
  }
25142
25049
  }
25143
- //#endregion
25144
- //#region node_modules/micromark/lib/initialize/flow.js
25050
+ // node_modules/micromark/lib/initialize/flow.js
25145
25051
  /**
25146
25052
  * @import {
25147
25053
  * InitialConstruct,
@@ -25187,8 +25093,7 @@ function initializeFlow(effects) {
25187
25093
  return initial;
25188
25094
  }
25189
25095
  }
25190
- //#endregion
25191
- //#region node_modules/micromark/lib/initialize/text.js
25096
+ // node_modules/micromark/lib/initialize/text.js
25192
25097
  /**
25193
25098
  * @import {
25194
25099
  * Code,
@@ -25364,8 +25269,7 @@ function resolveAllLineSuffixes(events, context) {
25364
25269
  }
25365
25270
  return events;
25366
25271
  }
25367
- //#endregion
25368
- //#region node_modules/micromark/lib/constructs.js
25272
+ // node_modules/micromark/lib/constructs.js
25369
25273
  /**
25370
25274
  * @import {Extension} from 'micromark-util-types'
25371
25275
  */
@@ -25442,8 +25346,7 @@ const insideSpan = { null: [attention, resolver] };
25442
25346
  const attentionMarkers = { null: [42, 95] };
25443
25347
  /** @satisfies {Extension['disable']} */
25444
25348
  const disable = { null: [] };
25445
- //#endregion
25446
- //#region node_modules/micromark/lib/create-tokenizer.js
25349
+ // node_modules/micromark/lib/create-tokenizer.js
25447
25350
  /**
25448
25351
  * @import {
25449
25352
  * Chunk,
@@ -25911,8 +25814,7 @@ function serializeChunks(chunks, expandTabs) {
25911
25814
  }
25912
25815
  return result.join("");
25913
25816
  }
25914
- //#endregion
25915
- //#region node_modules/micromark/lib/parse.js
25817
+ // node_modules/micromark/lib/parse.js
25916
25818
  /**
25917
25819
  * @import {
25918
25820
  * Create,
@@ -25955,8 +25857,7 @@ function parse$1(options) {
25955
25857
  }
25956
25858
  }
25957
25859
  }
25958
- //#endregion
25959
- //#region node_modules/micromark/lib/postprocess.js
25860
+ // node_modules/micromark/lib/postprocess.js
25960
25861
  /**
25961
25862
  * @import {Event} from 'micromark-util-types'
25962
25863
  */
@@ -25970,8 +25871,7 @@ function postprocess(events) {
25970
25871
  while (!subtokenize(events));
25971
25872
  return events;
25972
25873
  }
25973
- //#endregion
25974
- //#region node_modules/micromark/lib/preprocess.js
25874
+ // node_modules/micromark/lib/preprocess.js
25975
25875
  /**
25976
25876
  * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'
25977
25877
  */
@@ -26071,8 +25971,7 @@ function preprocess() {
26071
25971
  return chunks;
26072
25972
  }
26073
25973
  }
26074
- //#endregion
26075
- //#region node_modules/micromark-util-decode-string/index.js
25974
+ // node_modules/micromark-util-decode-string/index.js
26076
25975
  const characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
26077
25976
  /**
26078
25977
  * Decode markdown strings (which occur in places such as fenced code info
@@ -26108,8 +26007,7 @@ function decode($0, $1, $2) {
26108
26007
  }
26109
26008
  return decodeNamedCharacterReference($2) || $0;
26110
26009
  }
26111
- //#endregion
26112
- //#region node_modules/unist-util-stringify-position/lib/index.js
26010
+ // node_modules/unist-util-stringify-position/lib/index.js
26113
26011
  /**
26114
26012
  * @typedef {import('unist').Node} Node
26115
26013
  * @typedef {import('unist').Point} Point
@@ -26172,8 +26070,7 @@ function position(pos) {
26172
26070
  function index(value) {
26173
26071
  return value && typeof value === "number" ? value : 1;
26174
26072
  }
26175
- //#endregion
26176
- //#region node_modules/mdast-util-from-markdown/lib/index.js
26073
+ // node_modules/mdast-util-from-markdown/lib/index.js
26177
26074
  /**
26178
26075
  * @import {
26179
26076
  * Break,
@@ -26388,8 +26285,10 @@ function compiler(options) {
26388
26285
  /** @type {Array<number>} */
26389
26286
  const listStack = [];
26390
26287
  let index = -1;
26391
- while (++index < events.length) if (events[index][1].type === "listOrdered" || events[index][1].type === "listUnordered") if (events[index][0] === "enter") listStack.push(index);
26392
- else index = prepareList(events, listStack.pop(), index);
26288
+ while (++index < events.length) if (events[index][1].type === "listOrdered" || events[index][1].type === "listUnordered") {
26289
+ if (events[index][0] === "enter") listStack.push(index);
26290
+ else index = prepareList(events, listStack.pop(), index);
26291
+ }
26393
26292
  index = -1;
26394
26293
  while (++index < events.length) {
26395
26294
  const handler = config[events[index][0]];
@@ -26579,8 +26478,10 @@ function compiler(options) {
26579
26478
  start: token.start,
26580
26479
  end: token.end
26581
26480
  }) + "): it’s not open");
26582
- else if (open[0].type !== token.type) if (onExitError) onExitError.call(this, token, open[0]);
26583
- else (open[1] || defaultOnError).call(this, token, open[0]);
26481
+ else if (open[0].type !== token.type) {
26482
+ if (onExitError) onExitError.call(this, token, open[0]);
26483
+ else (open[1] || defaultOnError).call(this, token, open[0]);
26484
+ }
26584
26485
  node.position.end = point(token.end);
26585
26486
  }
26586
26487
  /**
@@ -27138,8 +27039,7 @@ function defaultOnError(left, right) {
27138
27039
  end: right.end
27139
27040
  }) + ") is still open");
27140
27041
  }
27141
- //#endregion
27142
- //#region node_modules/ccount/index.js
27042
+ // node_modules/ccount/index.js
27143
27043
  /**
27144
27044
  * Count how often a character (or substring) is used in a string.
27145
27045
  *
@@ -27161,14 +27061,12 @@ function ccount(value, character) {
27161
27061
  }
27162
27062
  return count;
27163
27063
  }
27164
- //#endregion
27165
- //#region node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js
27064
+ // node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js
27166
27065
  function escapeStringRegexp(string) {
27167
27066
  if (typeof string !== "string") throw new TypeError("Expected a string");
27168
27067
  return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
27169
27068
  }
27170
- //#endregion
27171
- //#region node_modules/unist-util-is/lib/index.js
27069
+ // node_modules/unist-util-is/lib/index.js
27172
27070
  /**
27173
27071
  * Generate an assertion from a test.
27174
27072
  *
@@ -27281,8 +27179,7 @@ function ok() {
27281
27179
  function looksLikeANode(value) {
27282
27180
  return value !== null && typeof value === "object" && "type" in value;
27283
27181
  }
27284
- //#endregion
27285
- //#region node_modules/unist-util-visit-parents/lib/color.js
27182
+ // node_modules/unist-util-visit-parents/lib/color.js
27286
27183
  /**
27287
27184
  * @param {string} d
27288
27185
  * @returns {string}
@@ -27290,8 +27187,7 @@ function looksLikeANode(value) {
27290
27187
  function color(d) {
27291
27188
  return d;
27292
27189
  }
27293
- //#endregion
27294
- //#region node_modules/unist-util-visit-parents/lib/index.js
27190
+ // node_modules/unist-util-visit-parents/lib/index.js
27295
27191
  /**
27296
27192
  * @import {Node as UnistNode, Parent as UnistParent} from 'unist'
27297
27193
  */
@@ -27611,8 +27507,7 @@ function toResult(value) {
27611
27507
  if (typeof value === "number") return [true, value];
27612
27508
  return value === null || value === void 0 ? empty : [value];
27613
27509
  }
27614
- //#endregion
27615
- //#region node_modules/mdast-util-find-and-replace/lib/index.js
27510
+ // node_modules/mdast-util-find-and-replace/lib/index.js
27616
27511
  /**
27617
27512
  * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'
27618
27513
  * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'
@@ -27806,8 +27701,7 @@ function toFunction(replace) {
27806
27701
  return replace;
27807
27702
  };
27808
27703
  }
27809
- //#endregion
27810
- //#region node_modules/mdast-util-gfm-autolink-literal/lib/index.js
27704
+ // node_modules/mdast-util-gfm-autolink-literal/lib/index.js
27811
27705
  /**
27812
27706
  * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'
27813
27707
  * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'
@@ -27986,8 +27880,7 @@ function previous(match, email) {
27986
27880
  const code = match.input.charCodeAt(match.index - 1);
27987
27881
  return (match.index === 0 || unicodeWhitespace(code) || unicodePunctuation(code)) && (!email || code !== 47);
27988
27882
  }
27989
- //#endregion
27990
- //#region node_modules/mdast-util-gfm-footnote/lib/index.js
27883
+ // node_modules/mdast-util-gfm-footnote/lib/index.js
27991
27884
  /**
27992
27885
  * @import {
27993
27886
  * CompileContext,
@@ -28121,8 +28014,7 @@ function gfmFootnoteFromMarkdown() {
28121
28014
  }
28122
28015
  };
28123
28016
  }
28124
- //#endregion
28125
- //#region node_modules/mdast-util-gfm-strikethrough/lib/index.js
28017
+ // node_modules/mdast-util-gfm-strikethrough/lib/index.js
28126
28018
  handleDelete.attention = attentionDelete;
28127
28019
  handleDelete.peek = peekDelete;
28128
28020
  /**
@@ -28202,8 +28094,7 @@ function attentionDelete() {
28202
28094
  function peekDelete() {
28203
28095
  return "~";
28204
28096
  }
28205
- //#endregion
28206
- //#region node_modules/mdast-util-gfm-task-list-item/lib/index.js
28097
+ // node_modules/mdast-util-gfm-task-list-item/lib/index.js
28207
28098
  /**
28208
28099
  * @typedef {import('mdast').ListItem} ListItem
28209
28100
  * @typedef {import('mdast').Paragraph} Paragraph
@@ -28271,8 +28162,7 @@ function exitParagraphWithTaskListItem(token) {
28271
28162
  }
28272
28163
  this.exit(token);
28273
28164
  }
28274
- //#endregion
28275
- //#region node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js
28165
+ // node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js
28276
28166
  /**
28277
28167
  * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'
28278
28168
  */
@@ -28972,8 +28862,7 @@ function previousUnbalanced(events) {
28972
28862
  if (events.length > 0 && !result) events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;
28973
28863
  return result;
28974
28864
  }
28975
- //#endregion
28976
- //#region node_modules/micromark-extension-gfm-footnote/lib/syntax.js
28865
+ // node_modules/micromark-extension-gfm-footnote/lib/syntax.js
28977
28866
  /**
28978
28867
  * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'
28979
28868
  */
@@ -29391,8 +29280,7 @@ function tokenizeIndent(effects, ok, nok) {
29391
29280
  return tail && tail[1].type === "gfmFootnoteDefinitionIndent" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);
29392
29281
  }
29393
29282
  }
29394
- //#endregion
29395
- //#region node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js
29283
+ // node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js
29396
29284
  /**
29397
29285
  * @import {Options} from 'micromark-extension-gfm-strikethrough'
29398
29286
  * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'
@@ -29532,8 +29420,7 @@ function gfmStrikethrough(options) {
29532
29420
  }
29533
29421
  }
29534
29422
  }
29535
- //#endregion
29536
- //#region node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js
29423
+ // node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js
29537
29424
  /**
29538
29425
  * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'
29539
29426
  */
@@ -29651,8 +29538,7 @@ function spaceThenNonSpace(effects, ok, nok) {
29651
29538
  return code === null ? nok(code) : ok(code);
29652
29539
  }
29653
29540
  }
29654
- //#endregion
29655
- //#region src/steering/MarkdownTree.ts
29541
+ // src/steering/MarkdownTree.ts
29656
29542
  /**
29657
29543
  * How many times `parseMarkdown` has actually run `fromMarkdown` (memo hits
29658
29544
  * excluded) — the only way "one parse per document" is assertable, since
@@ -29835,12 +29721,10 @@ const headingText$1 = (content, heading, strip = (text) => text) => {
29835
29721
  };
29836
29722
  return strip(sourceText(content, synthetic)).replace(/\s+/g, " ").trim();
29837
29723
  };
29838
- //#endregion
29839
- //#region src/steering/Eol.ts
29724
+ // src/steering/Eol.ts
29840
29725
  /** The document's own newline style, so a splice into a CRLF file never introduces a bare `\n`. */
29841
29726
  const eolOf = (content) => content.includes("\r\n") ? "\r\n" : "\n";
29842
- //#endregion
29843
- //#region src/steering/Threads.ts
29727
+ // src/steering/Threads.ts
29844
29728
  const PREFIX_RE = /^(H|A):\s*/;
29845
29729
  const lineOf$1 = (node, which) => toLspPosition(node.position[which]).line;
29846
29730
  /** The item's own blocks joined — never the item node's span, which can run past its last line into the next bullet's marker. */
@@ -29926,8 +29810,7 @@ const collectThreads = (content, tree, markers) => {
29926
29810
  findings
29927
29811
  };
29928
29812
  };
29929
- //#endregion
29930
- //#region src/steering/Footnotes.ts
29813
+ // src/steering/Footnotes.ts
29931
29814
  /** The footnote-addition action's title — the ONE shared literal `qa`/`review` offer it under and `src/lsp/Lsp.ts` matches to compute the reveal position. A drifted copy in any one place silently breaks the cursor jump without failing a single test, so this constant is the only place the string is spelled. */
29932
29815
  const FOOTNOTE_ACTION_TITLE = "gtd: add a footnote";
29933
29816
  /** The thread-reply action's title — shared with `src/lsp/Lsp.ts` for the same reason as `FOOTNOTE_ACTION_TITLE`. */
@@ -30402,8 +30285,7 @@ const threadReplyActions = (content, position) => {
30402
30285
  }]
30403
30286
  }];
30404
30287
  };
30405
- //#endregion
30406
- //#region src/steering/Inline.ts
30288
+ // src/steering/Inline.ts
30407
30289
  /**
30408
30290
  * A `link`'s `href`/an `image`'s `src` passes only when it carries NO scheme
30409
30291
  * at all (relative, `./src/x.ts#42`, a bare fragment) or a scheme matching
@@ -30568,8 +30450,7 @@ const joinInlineRuns = (runs) => {
30568
30450
  });
30569
30451
  return result;
30570
30452
  };
30571
- //#endregion
30572
- //#region src/steering/Blocks.ts
30453
+ // src/steering/Blocks.ts
30573
30454
  /** A footnote marker as plain text, stripped out of every extracted title below. */
30574
30455
  const MARKER_TEXT_RE$1 = /\[\^([^\s\]]+)\]/g;
30575
30456
  const stripMarkerText$1 = (text) => text.replace(MARKER_TEXT_RE$1, "");
@@ -30645,17 +30526,22 @@ const nodeInline = (content, node, options) => {
30645
30526
  }] : [];
30646
30527
  };
30647
30528
  /** One list item as a `BlockListItem`, recursing into a nested `list` child (there is at most one, CommonMark's own shape) as its own `items`. */
30648
- const blockListItemOf = (content, item) => {
30649
- const items = item.children.filter((c) => c.type === "list").flatMap((list) => blockListItemsOf(content, list.children));
30529
+ const blockListItemOf = (content, item, noteAt) => {
30530
+ const items = item.children.filter((c) => c.type === "list").flatMap((list) => blockListItemsOf(content, list.children, noteAt));
30531
+ const line = item.position === void 0 ? void 0 : toLspPosition(item.position.start).line;
30650
30532
  return {
30651
30533
  text: listItemText(content, item),
30652
30534
  inline: listItemInline(content, item),
30653
30535
  ...item.checked === true || item.checked === false ? { checked: item.checked } : {},
30654
- ...items.length > 0 ? { items } : {}
30536
+ ...items.length > 0 ? { items } : {},
30537
+ ...line === void 0 ? {} : {
30538
+ line,
30539
+ ...noteAt(line)
30540
+ }
30655
30541
  };
30656
30542
  };
30657
30543
  /** Every item of a `list` node's own `children`, as `BlockListItem`s, in document order. */
30658
- const blockListItemsOf = (content, items) => items.map((item) => blockListItemOf(content, item));
30544
+ const blockListItemsOf = (content, items, noteAt) => items.map((item) => blockListItemOf(content, item, noteAt));
30659
30545
  /** The `title` an empty fenced code block (a `` ``` ``/`` ``` `` pair with nothing between them) falls back to — its real body is `""`, and every node still carries a non-empty title. */
30660
30546
  const EMPTY_CODE_BLOCK_TITLE = "(empty code block)";
30661
30547
  /** A `list`'s children with `options.skipListItem` removed. Filtering, never dropping the whole node: `qa`'s option items share a list with ordinary body bullets. */
@@ -30682,7 +30568,7 @@ const blockTitle = (content, node, options) => {
30682
30568
  * renders via `title` alone. `code`'s `text` is `node.value` VERBATIM,
30683
30569
  * leading whitespace intact, unlike every other kind's collapsed `title`.
30684
30570
  */
30685
- const blockOf = (content, node, options) => {
30571
+ const blockOf = (content, node, noteAt, options) => {
30686
30572
  switch (node.type) {
30687
30573
  case "heading": return {
30688
30574
  kind: "heading",
@@ -30692,7 +30578,7 @@ const blockOf = (content, node, options) => {
30692
30578
  case "list": return {
30693
30579
  kind: "list",
30694
30580
  ordered: node.ordered === true,
30695
- items: blockListItemsOf(content, visibleListItems(node, options))
30581
+ items: blockListItemsOf(content, visibleListItems(node, options), noteAt)
30696
30582
  };
30697
30583
  case "code": return {
30698
30584
  kind: "code",
@@ -30737,7 +30623,7 @@ const blockNodesOfRun = (content, nodes, options) => {
30737
30623
  const noteAt = noteLookup(content, options?.footnotes);
30738
30624
  return visibleNodes(content, nodes, options).map((node) => {
30739
30625
  const startLine = toLspPosition(node.position.start).line;
30740
- const block = blockOf(content, node, options);
30626
+ const block = blockOf(content, node, noteAt, options);
30741
30627
  return {
30742
30628
  title: blockTitle(content, node, options),
30743
30629
  anchor: {
@@ -30761,10 +30647,10 @@ const blockNodesOf = (content, tree, options) => blockNodesOfRun(content, tree.c
30761
30647
  * compact-row rule (R2) applies `Inline.ts#collapseImages` to the result.
30762
30648
  */
30763
30649
  const blockRunInline = (content, nodes, options) => {
30764
- return joinInlineRuns(visibleNodes(content, nodes, options).map((node) => nodeInline(content, node, options)));
30650
+ const filtered = visibleNodes(content, nodes, options);
30651
+ return joinInlineRuns(filtered.map((node) => nodeInline(content, node, options)));
30765
30652
  };
30766
- //#endregion
30767
- //#region src/steering/findings.ts
30653
+ // src/steering/findings.ts
30768
30654
  /** The `# ` heading the findings a judge called noise sit under. */
30769
30655
  const NOISE_HEADING = "Dropped as noise";
30770
30656
  const OPEN_GROUP = "Open";
@@ -30995,8 +30881,7 @@ Why the judge dropped it.
30995
30881
  clearTicks: (content) => content,
30996
30882
  openThreads: openThreadsOf
30997
30883
  };
30998
- //#endregion
30999
- //#region src/steering/qa.ts
30884
+ // src/steering/qa.ts
31000
30885
  /**
31001
30886
  * A marker as plain text. Local to this module because `headingText`/
31002
30887
  * `optionText` extract text that is NOT a full node's tree span, which
@@ -31171,7 +31056,8 @@ const optionText = (content, item) => {
31171
31056
  */
31172
31057
  const optionBodyNodes = (content, item, footnotes) => {
31173
31058
  const labelParagraph = item.children.find((c) => c.type === "paragraph");
31174
- return blockNodesOfRun(content, item.children.filter((c) => c !== labelParagraph), { footnotes });
31059
+ const rest = item.children.filter((c) => c !== labelParagraph);
31060
+ return blockNodesOfRun(content, rest, { footnotes });
31175
31061
  };
31176
31062
  /** Extracts the checkbox options from a question block's body, in document order. */
31177
31063
  const parseOptions = (content, body, footnotes) => {
@@ -31449,7 +31335,8 @@ const unansweredQuestions = (content) => parseOpenQuestions(content).questions.f
31449
31335
  * than by `indexOf("[")`, which text containing its own `[` would mislead.
31450
31336
  */
31451
31337
  const toggleCheckbox = (content, line) => {
31452
- const item = taskItems(parseMarkdown(content)).find((it) => toLspPosition(it.position.start).line === line);
31338
+ const tree = parseMarkdown(content);
31339
+ const item = taskItems(tree).find((it) => toLspPosition(it.position.start).line === line);
31453
31340
  if (!item?.position) return void 0;
31454
31341
  const startOffset = item.position.start.offset;
31455
31342
  const boundOffset = optionContentOffset(item) ?? item.position.end.offset;
@@ -31576,7 +31463,7 @@ const replaceOptionTextEdit = (content, item, text) => {
31576
31463
  * Collapses a typed answer to the single-line shape a list-item label must
31577
31464
  * be. A raw textarea value's interior newlines would break `.gtd/`'s oxfmt
31578
31465
  * fixed point the moment they are spliced onto a `- [x] ` line, and every
31579
- * steering file — server-written ones included — is covered by `format:check`.
31466
+ * steering file — server-written ones included — is covered by the `check` task.
31580
31467
  */
31581
31468
  /**
31582
31469
  * Empty normalizes to `FREE_TEXT_PLACEHOLDER`, never `""`: an empty label
@@ -31604,7 +31491,8 @@ const questionsApply = (content, anchor, opts) => {
31604
31491
  const checked = opts.checked ?? true;
31605
31492
  const edits = setOptionCheckedEdits(content, question, option, checked);
31606
31493
  if (opts.text !== void 0) {
31607
- const item = taskItems(parseMarkdown(content)).find((it) => toLspPosition(it.position.start).line === option.sourceLine);
31494
+ const tree = parseMarkdown(content);
31495
+ const item = taskItems(tree).find((it) => toLspPosition(it.position.start).line === option.sourceLine);
31608
31496
  const textEdit = item ? replaceOptionTextEdit(content, item, normalizeFreeTextAnswer(opts.text)) : void 0;
31609
31497
  if (textEdit) edits.push(textEdit);
31610
31498
  }
@@ -31946,7 +31834,7 @@ const stripLeadingSeparatorInline = (nodes) => {
31946
31834
  /** `paragraph`'s own inline content strictly AFTER raw source offset `afterOffset` — the structural counterpart of `restOfParagraph`'s string slice: keeps every child entirely past the cut, trims the one child that straddles it (only when it's plain `text`; a straddling non-text child is dropped, the one edge case a token followed immediately by styled text hits), and trims the result's own leading whitespace. `undefined`/`[]` for anything that isn't a real `paragraph`. */
31947
31835
  const trailingParagraphInline = (content, paragraph, afterOffset) => {
31948
31836
  if (paragraph.type !== "paragraph") return [];
31949
- const projected = projectInline(paragraph.children.flatMap((child) => {
31837
+ const kept = paragraph.children.flatMap((child) => {
31950
31838
  const start = child.position?.start.offset;
31951
31839
  const end = child.position?.end.offset;
31952
31840
  if (start === void 0 || end === void 0 || end <= afterOffset) return [];
@@ -31956,7 +31844,8 @@ const trailingParagraphInline = (content, paragraph, afterOffset) => {
31956
31844
  ...child,
31957
31845
  value: child.value.slice(afterOffset - start)
31958
31846
  }];
31959
- }), definitionsOf(content));
31847
+ });
31848
+ const projected = projectInline(kept, definitionsOf(content));
31960
31849
  const first = projected[0];
31961
31850
  if (first === void 0 || first.kind !== "text") return projected;
31962
31851
  return [{
@@ -31967,7 +31856,8 @@ const trailingParagraphInline = (content, paragraph, afterOffset) => {
31967
31856
  /** `note`'s own inline counterpart, mirroring `hunkNote` structurally: `paragraph`'s own trailing inline content (past the pointer token) first, then every further sibling block's own `nodeInline`-equivalent projection, joined and image-collapsed (R2). `tokenEndOffset` is the raw source offset right after the pointer token itself. */
31968
31857
  const hunkNoteInline = (content, item, paragraph, tokenEndOffset) => {
31969
31858
  const otherChildren = item.children.filter((c) => c !== paragraph && c.type !== "list" && c.type !== "footnoteDefinition");
31970
- return collapseImages(joinInlineRuns([stripLeadingSeparatorInline(trailingParagraphInline(content, paragraph, tokenEndOffset)), ...otherChildren.map((c) => stripLeadingSeparatorInline(blockRunInline(content, [c])))]));
31859
+ const runs = [stripLeadingSeparatorInline(trailingParagraphInline(content, paragraph, tokenEndOffset)), ...otherChildren.map((c) => stripLeadingSeparatorInline(blockRunInline(content, [c])))];
31860
+ return collapseImages(joinInlineRuns(runs));
31971
31861
  };
31972
31862
  /** The last line of a hunk's OWN span — every non-`list` child's own end line, at most — excluding a nested hunk's span entirely, so a parent's span never swallows it (for "add a footnote" placement, or for matching which hunk a cursor sits on). */
31973
31863
  const hunkOwnEndLine = (item, sourceLine) => {
@@ -32316,7 +32206,8 @@ const reviewClearTicks = (content) => {
32316
32206
  };
32317
32207
  /** Flips the `[ ]`/`[x]` box of the hunk pointer task item starting at `line`, preserving path/note text exactly. `undefined` when `line` isn't a real task item's own start line, or its content isn't a valid hunk pointer. */
32318
32208
  const toggleFilePointer = (content, line) => {
32319
- const item = taskItems(parseMarkdown(content)).find((it) => toLspPosition(it.position.start).line === line);
32209
+ const tree = parseMarkdown(content);
32210
+ const item = taskItems(tree).find((it) => toLspPosition(it.position.start).line === line);
32320
32211
  if (!item?.position) return void 0;
32321
32212
  const paragraph = item.children.find((c) => c.type === "paragraph");
32322
32213
  const firstWord = paragraph ? sourceText(content, paragraph).split(/\s+/)[0] : void 0;
@@ -32797,8 +32688,7 @@ const decisionOf$1 = (chunk) => {
32797
32688
  text
32798
32689
  };
32799
32690
  };
32800
- //#endregion
32801
- //#region src/steering/registry.ts
32691
+ // src/steering/registry.ts
32802
32692
  /** The built-in registry: mode name → its format, in registry order. The single place the built-in formats are wired into names — everything else in this module dispatches over a resolved `SteeringFormat`, never a mode-name string. */
32803
32693
  const REGISTRY = /* @__PURE__ */ new Map([
32804
32694
  ["qa", qaDescriptor],
@@ -32808,8 +32698,7 @@ const REGISTRY = /* @__PURE__ */ new Map([
32808
32698
  [...REGISTRY.keys()];
32809
32699
  /** The built-in `SteeringFormat` registered under `mode`'s name, or `undefined` when it isn't a built-in mode at all. The one place a bare mode-name string is ever looked up — every consumer takes the RESOLVED value this returns, never a name, so "mode is required, never inferred from a file's basename" is a type, not a rule to remember. */
32810
32700
  const steeringFormatFor = (mode) => REGISTRY.get(mode);
32811
- //#endregion
32812
- //#region src/web/Button.tsx
32701
+ // src/web/Button.tsx
32813
32702
  /**
32814
32703
  * One control system for every button in `src/web/` (package 02 Task 6) —
32815
32704
  * always `min-h-11 min-w-11` (Tailwind's 4px scale makes that exactly the
@@ -32847,8 +32736,7 @@ const Button = ({ variant = "secondary", className, ...props }) => /* @__PURE__
32847
32736
  className: cn(BASE_CLASSES, VARIANT_CLASSES[variant], className),
32848
32737
  ...props
32849
32738
  });
32850
- //#endregion
32851
- //#region src/web/FormatNotice.tsx
32739
+ // src/web/FormatNotice.tsx
32852
32740
  /**
32853
32741
  * The one `ui.format` failure surface, shared by every screen that writes
32854
32742
  * through `setValue`/`writeNote`/`done` (`Plan.tsx`, `Review.tsx`,
@@ -32874,8 +32762,7 @@ const FormatNoticeBanner = ({ notice, onDismiss }) => {
32874
32762
  })]
32875
32763
  });
32876
32764
  };
32877
- //#endregion
32878
- //#region src/web/Thread.tsx
32765
+ // src/web/Thread.tsx
32879
32766
  /** A thread as a conversation: `H` and `A` entries visibly distinct, and a badge while the agent spoke last. */
32880
32767
  const Thread = ({ thread, testId }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
32881
32768
  "data-testid": testId,
@@ -32897,8 +32784,7 @@ const Thread = ({ thread, testId }) => /* @__PURE__ */ (0, import_jsx_runtime.js
32897
32784
  }, index))
32898
32785
  })]
32899
32786
  });
32900
- //#endregion
32901
- //#region src/web/NoteSheet.tsx
32787
+ // src/web/NoteSheet.tsx
32902
32788
  const ANCHOR_TITLE = {
32903
32789
  chunk: "Note on this chunk",
32904
32790
  hunk: "Note on this hunk",
@@ -33067,8 +32953,7 @@ const NoteSheet = ({ anchor, note, thread, onSave, onDismiss, onDone, busy, titl
33067
32953
  })]
33068
32954
  });
33069
32955
  };
33070
- //#endregion
33071
- //#region node_modules/zustand/esm/vanilla.mjs
32956
+ // node_modules/zustand/esm/vanilla.mjs
33072
32957
  const createStoreImpl = (createState) => {
33073
32958
  let state;
33074
32959
  const listeners = /* @__PURE__ */ new Set();
@@ -33096,16 +32981,14 @@ const createStoreImpl = (createState) => {
33096
32981
  return api;
33097
32982
  };
33098
32983
  const createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);
33099
- //#endregion
33100
- //#region node_modules/zustand/esm/react.mjs
32984
+ // node_modules/zustand/esm/react.mjs
33101
32985
  const identity = (arg) => arg;
33102
32986
  function useStore(api, selector = identity) {
33103
32987
  const slice = import_react.useSyncExternalStore(api.subscribe, import_react.useCallback(() => selector(api.getState()), [api, selector]), import_react.useCallback(() => selector(api.getInitialState()), [api, selector]));
33104
32988
  import_react.useDebugValue(slice);
33105
32989
  return slice;
33106
32990
  }
33107
- //#endregion
33108
- //#region src/web/staleRetry.ts
32991
+ // src/web/staleRetry.ts
33109
32992
  /**
33110
32993
  * Task 01's in-place recovery: a write refused `stale-token`/`moved: "sha"`
33111
32994
  * almost always means HEAD moved because the process crossed a human gate,
@@ -33132,8 +33015,7 @@ const withStaleShaRetry = async (attempt, tokens, refetch) => {
33132
33015
  return attempt(await refetch());
33133
33016
  }
33134
33017
  };
33135
- //#endregion
33136
- //#region src/web/writeStore.ts
33018
+ // src/web/writeStore.ts
33137
33019
  /** How long a settled "Saved" label lingers before clearing. */
33138
33020
  const SAVED_LINGER_MS = 1500;
33139
33021
  /** How long an expanded refusal message stays readable before collapsing to the failed marker. */
@@ -33397,8 +33279,7 @@ const useWriteStoreInstance = () => {
33397
33279
  };
33398
33280
  /** Reads a selected slice of the nearest `WriteStoreProvider`'s store — throws a named error with no provider above it, rather than falling back to a shared store. */
33399
33281
  const useWriteStore = (selector) => useStore(useWriteStoreInstance(), selector);
33400
- //#endregion
33401
- //#region src/web/Refusal.tsx
33282
+ // src/web/Refusal.tsx
33402
33283
  /**
33403
33284
  * One sentence per reason, naming which token moved for `stale-token` when
33404
33285
  * known — never `error.message` (`api.ts#writeRefusalFrom`'s own doc
@@ -33489,27 +33370,30 @@ const SaveIndicator = ({ refusal, saveStatus, expanded, failedCount, otherFailed
33489
33370
  const isFailed = failedCount > 0;
33490
33371
  const hiddenLabel = !isFailed && saveStatus === "saving" ? "Saving…" : !isFailed && saveStatus === "saved" ? "Saved" : void 0;
33491
33372
  if (!isFailed && saveStatus === "idle") return null;
33492
- if (isFailed && expanded && refusal !== void 0) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
33493
- "data-testid": "save-indicator",
33494
- role: "status",
33495
- "aria-live": "polite",
33496
- className: "absolute right-3 bottom-3 z-10 max-w-[calc(100%-1.5rem)] rounded border border-danger bg-surface p-3 text-body text-text",
33497
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
33498
- "data-testid": "save-indicator-expanded",
33499
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
33500
- "data-testid": "save-indicator-message",
33501
- children: `${messageFor(refusal)}${countSuffix(otherFailedCount)}`
33502
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
33503
- className: "mt-2 flex justify-end gap-2",
33504
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
33505
- variant: "ghost",
33506
- "data-testid": "save-indicator-dismiss",
33507
- onClick: onDismiss,
33508
- children: "Dismiss"
33509
- })
33510
- })]
33511
- })
33512
- });
33373
+ if (isFailed && expanded && refusal !== void 0) {
33374
+ const message = `${messageFor(refusal)}${countSuffix(otherFailedCount)}`;
33375
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
33376
+ "data-testid": "save-indicator",
33377
+ role: "status",
33378
+ "aria-live": "polite",
33379
+ className: "absolute right-3 bottom-3 z-10 max-w-[calc(100%-1.5rem)] rounded border border-danger bg-surface p-3 text-body text-text",
33380
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
33381
+ "data-testid": "save-indicator-expanded",
33382
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
33383
+ "data-testid": "save-indicator-message",
33384
+ children: message
33385
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
33386
+ className: "mt-2 flex justify-end gap-2",
33387
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
33388
+ variant: "ghost",
33389
+ "data-testid": "save-indicator-dismiss",
33390
+ onClick: onDismiss,
33391
+ children: "Dismiss"
33392
+ })
33393
+ })]
33394
+ })
33395
+ });
33396
+ }
33513
33397
  if (isFailed) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
33514
33398
  "data-testid": "save-indicator",
33515
33399
  role: "status",
@@ -33544,8 +33428,7 @@ const SaveIndicator = ({ refusal, saveStatus, expanded, failedCount, otherFailed
33544
33428
  })]
33545
33429
  });
33546
33430
  };
33547
- //#endregion
33548
- //#region src/web/notes.ts
33431
+ // src/web/notes.ts
33549
33432
  /** The thread with the human's saved reply applied the way the server applies it: appended to an open thread, replacing the last `H` entry of one waiting on the agent. Idempotent against a refetch that already carries the reply. */
33550
33433
  const withReply = (thread, text) => {
33551
33434
  const entries = thread.waitingOn === "human" ? [...thread.entries, {
@@ -33591,8 +33474,7 @@ const existingNoteFor = (nodes, anchor, overrides) => {
33591
33474
  }
33592
33475
  return anchor.kind === "paragraph" ? node?.note : void 0;
33593
33476
  };
33594
- //#endregion
33595
- //#region src/web/screens/InlineRun.tsx
33477
+ // src/web/screens/InlineRun.tsx
33596
33478
  /**
33597
33479
  * One projected `image`'s own rendering — its own component (not a case
33598
33480
  * inline in `InlineRun`) because it needs its own `useState`: `onError`
@@ -33652,8 +33534,7 @@ const InlineRun = ({ nodes }) => nodes.map((node, index) => {
33652
33534
  });
33653
33535
  /** Renders `inline` when present through `InlineRun`, falling back to plain (unparsed) `fallback` text — the malformed-node case where a block carries no inline structure at all. */
33654
33536
  const Inline = ({ inline, fallback }) => inline !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InlineRun, { nodes: inline }) : fallback;
33655
- //#endregion
33656
- //#region src/web/screens/ProseBlock.tsx
33537
+ // src/web/screens/ProseBlock.tsx
33657
33538
  /** The heading tag a `block.heading`'s own `depth` renders as — three buckets covering all six markdown levels, never a literal `h1`..`h6` (this screen's own `h2` already labels "Open Questions"/"Already answered"). */
33658
33539
  const headingTagFor = (depth) => {
33659
33540
  if (depth <= 2) return "h2";
@@ -33760,7 +33641,8 @@ const BLOCK_RENDERERS = {
33760
33641
  };
33761
33642
  /** The structural element `block` renders as — see `BLOCK_RENDERERS`/`ParagraphBlock` for the per-kind renderers and the fallback. */
33762
33643
  const BlockBody = ({ node }) => {
33763
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BLOCK_RENDERERS[node.block?.kind ?? ""] ?? ParagraphBlock, { node });
33644
+ const Renderer = BLOCK_RENDERERS[node.block?.kind ?? ""] ?? ParagraphBlock;
33645
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Renderer, { node });
33764
33646
  };
33765
33647
  /**
33766
33648
  * One block plus its inline note (if any) and its note seam — `line` is the
@@ -33831,8 +33713,7 @@ const ProseBlocks = ({ nodes, noteOverrides, onOpenNote, readOnly }) => /* @__PU
33831
33713
  ...readOnly !== void 0 ? { readOnly } : {}
33832
33714
  }, node.anchor.kind === "paragraph" ? node.anchor.line : index))]
33833
33715
  });
33834
- //#endregion
33835
- //#region src/web/screens/Findings.tsx
33716
+ // src/web/screens/Findings.tsx
33836
33717
  const MODE = "findings";
33837
33718
  const NOISE_GROUP = "Dropped as noise";
33838
33719
  const decisionOf = (node) => ({
@@ -34080,8 +33961,7 @@ const Findings = ({ filePath }) => {
34080
33961
  })
34081
33962
  });
34082
33963
  };
34083
- //#endregion
34084
- //#region src/web/screens/FreeForm.tsx
33964
+ // src/web/screens/FreeForm.tsx
34085
33965
  /**
34086
33966
  * The empty-document save's own anchor line: `freeform.ts#freeFormApply`'s
34087
33967
  * guard only appends when `anchor.line` is at or beyond the document's own
@@ -34323,8 +34203,7 @@ const FreeForm = ({ filePath, mode }) => {
34323
34203
  })
34324
34204
  });
34325
34205
  };
34326
- //#endregion
34327
- //#region src/web/Card.tsx
34206
+ // src/web/Card.tsx
34328
34207
  /**
34329
34208
  * The chevron is the row's only "this opens something" cue: a full-bleed row
34330
34209
  * of plain text reads as a heading, and every tappable row on this client is
@@ -34356,8 +34235,7 @@ const CardList = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("
34356
34235
  "data-testid": "card-list",
34357
34236
  children
34358
34237
  });
34359
- //#endregion
34360
- //#region src/web/Deck.tsx
34238
+ // src/web/Deck.tsx
34361
34239
  /** The advance button's own label — "Next" mid-deck; at the last item, "Done" with no separate Done control, else "Back to list" — the collision `DeckControls`'s own doc comment names. Split out so `DeckControls` itself doesn't carry the nested ternary inline. */
34362
34240
  const advanceLabel = (isLastItem, hasDoneControl) => {
34363
34241
  if (!isLastItem) return "Next";
@@ -34452,8 +34330,7 @@ const Deck = ({ items, renderItem, onExit, index, onIndexChange, onDone, doneLab
34452
34330
  })]
34453
34331
  });
34454
34332
  };
34455
- //#endregion
34456
- //#region src/web/useScrollRestoration.ts
34333
+ // src/web/useScrollRestoration.ts
34457
34334
  /**
34458
34335
  * The scroll-preservation half of the two-level shell's "back from the first
34459
34336
  * deck item returns to the list without losing scroll position" acceptance
@@ -34490,8 +34367,7 @@ const useScrollRestoration = () => {
34490
34367
  restore
34491
34368
  };
34492
34369
  };
34493
- //#endregion
34494
- //#region src/web/screens/Question.tsx
34370
+ // src/web/screens/Question.tsx
34495
34371
  /** `""` for an untouched/placeholder-only answer (case-insensitive) — the SAME sentinel and the SAME normalization the completeness gate and the open-questions check both apply server-side (`OpenQuestions.ts#FREE_TEXT_PLACEHOLDER`), redone here so the client never has to round-trip through a write to know if it's answered. */
34496
34372
  const normalizeAnswerText$1 = (text) => {
34497
34373
  const trimmed = text.trim();
@@ -34686,8 +34562,7 @@ const Question = ({ node, filePath, onCommitAnswer, noteOverrides, onOpenNote })
34686
34562
  ]
34687
34563
  });
34688
34564
  };
34689
- //#endregion
34690
- //#region src/web/screens/Plan.tsx
34565
+ // src/web/screens/Plan.tsx
34691
34566
  /** A `qa`-view question node sets `status` (`"open"`/`"answered"`); a prose-only document's `view` has no such nodes at all. */
34692
34567
  const isQuestionNode = (node) => node.status !== void 0;
34693
34568
  const openQuestionNodesOf = (view) => view.nodes.filter((node) => node.status === "open");
@@ -35015,8 +34890,7 @@ const Plan = ({ filePath, mode }) => {
35015
34890
  })
35016
34891
  });
35017
34892
  };
35018
- //#endregion
35019
- //#region src/web/Highlight.ts
34893
+ // src/web/Highlight.ts
35020
34894
  /**
35021
34895
  * Ported verbatim from the prototype's own tokenizer, down to the token
35022
34896
  * classes: comment, string, keyword, number, capitalized identifier (typ).
@@ -35086,8 +34960,7 @@ const highlightDiffLine = (line) => {
35086
34960
  tokens: tokenize(line.slice(1))
35087
34961
  };
35088
34962
  };
35089
- //#endregion
35090
- //#region src/web/screens/Hunk.tsx
34963
+ // src/web/screens/Hunk.tsx
35091
34964
  const LINE_BACKGROUND = {
35092
34965
  add: "bg-diff-add",
35093
34966
  del: "bg-diff-del",
@@ -35265,8 +35138,7 @@ const Hunk = ({ node, diff, index, total, checked, hasNote, note, thread, onTogg
35265
35138
  })
35266
35139
  ]
35267
35140
  });
35268
- //#endregion
35269
- //#region src/web/screens/Review.tsx
35141
+ // src/web/screens/Review.tsx
35270
35142
  /** Every hunk-anchored descendant of a chunk node, at any depth. */
35271
35143
  const hunksOf = (node) => (node.children ?? []).flatMap((child) => [...child.anchor.kind === "hunk" ? [child] : [], ...hunksOf(child)]);
35272
35144
  /** The free-text slot's index among a finding's three boxes. */
@@ -35437,13 +35309,14 @@ const useReviewState = (filePath, scrollRef, onSaveNote, onDoneNote, onSetValue,
35437
35309
  };
35438
35310
  /** Fetches ONE hunk's own diff live via `trpc.diff`. */
35439
35311
  const HunkWithDiff = ({ node, ...rest }) => {
35312
+ const query = trpc.diff.useQuery({
35313
+ path: node.path ?? "",
35314
+ ...node.line !== void 0 ? { line: node.line } : {},
35315
+ ...node.endLine !== void 0 ? { endLine: node.endLine } : {}
35316
+ }, { enabled: node.path !== void 0 });
35440
35317
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Hunk, {
35441
35318
  node,
35442
- diff: trpc.diff.useQuery({
35443
- path: node.path ?? "",
35444
- ...node.line !== void 0 ? { line: node.line } : {},
35445
- ...node.endLine !== void 0 ? { endLine: node.endLine } : {}
35446
- }, { enabled: node.path !== void 0 }).data,
35319
+ diff: query.data,
35447
35320
  ...rest
35448
35321
  });
35449
35322
  };
@@ -35527,7 +35400,7 @@ const DecisionControl = ({ chunk, chunkIndex, state }) => {
35527
35400
  };
35528
35401
  /** A chunk with neither hunks nor a decision (`Fixed automatically`, …) is a note to read, not an item to tick. */
35529
35402
  const isPlainNote = (chunk) => chunk.decision === void 0 && hunksOf(chunk).length === 0;
35530
- const ChunkSummary = ({ chunk, chunkIndex }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
35403
+ const ChunkSummary = ({ chunk, chunkIndex, withDetail = true }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
35531
35404
  chunk.status !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
35532
35405
  "data-testid": `chunk-severity-${chunkIndex}`,
35533
35406
  className: cn("text-small font-semibold", chunk.status.startsWith("critical") ? "text-warning" : "text-muted"),
@@ -35537,7 +35410,7 @@ const ChunkSummary = ({ chunk, chunkIndex }) => /* @__PURE__ */ (0, import_jsx_r
35537
35410
  className: "font-semibold",
35538
35411
  children: chunk.title
35539
35412
  }),
35540
- chunk.detail !== void 0 && chunk.detail.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
35413
+ withDetail && chunk.detail !== void 0 && chunk.detail.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
35541
35414
  className: "text-small text-muted",
35542
35415
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Inline, {
35543
35416
  inline: chunk.detailInline,
@@ -35545,6 +35418,89 @@ const ChunkSummary = ({ chunk, chunkIndex }) => /* @__PURE__ */ (0, import_jsx_r
35545
35418
  })
35546
35419
  })
35547
35420
  ] });
35421
+ /** A list item as the node its own note reads and writes through: a `paragraph` anchor at its line. */
35422
+ const itemNodeOf = (item) => ({
35423
+ title: item.text,
35424
+ anchor: {
35425
+ kind: "paragraph",
35426
+ line: item.line
35427
+ },
35428
+ ...item.note === void 0 ? {} : { note: item.note },
35429
+ ...item.thread === void 0 ? {} : { thread: item.thread }
35430
+ });
35431
+ /** One list item with its own note: the quality lap's summary is reopened line by line. */
35432
+ const NotableItem = ({ item, id, state }) => {
35433
+ const node = item.line === void 0 ? void 0 : itemNodeOf({
35434
+ ...item,
35435
+ line: item.line
35436
+ });
35437
+ const thread = node === void 0 ? void 0 : state.threadOf(node);
35438
+ const noted = node !== void 0 && state.hasNoteText(node);
35439
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", {
35440
+ "data-testid": `note-item-${id}`,
35441
+ className: "py-1",
35442
+ children: [
35443
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
35444
+ className: "flex items-start gap-2",
35445
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
35446
+ className: "min-w-0 flex-1 py-2",
35447
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Inline, {
35448
+ inline: item.inline,
35449
+ fallback: item.text
35450
+ })
35451
+ }), node !== void 0 && !noted && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
35452
+ variant: "ghost",
35453
+ "data-testid": `note-item-note-${id}`,
35454
+ "aria-label": `Note on ${item.text}`,
35455
+ onClick: () => state.openNoteSheet(node),
35456
+ className: "text-small",
35457
+ children: "Note"
35458
+ })]
35459
+ }),
35460
+ node !== void 0 && noted && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
35461
+ variant: "ghost",
35462
+ "data-testid": `note-item-note-${id}`,
35463
+ onClick: () => state.openNoteSheet(node),
35464
+ className: "w-full rounded border border-divider px-2 py-1 text-left text-small font-normal text-muted",
35465
+ children: thread !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Thread, {
35466
+ thread,
35467
+ testId: `note-item-thread-${id}`
35468
+ }) : state.noteTextOf(node)
35469
+ }),
35470
+ item.items !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NotableList, {
35471
+ items: item.items,
35472
+ id,
35473
+ state
35474
+ })
35475
+ ]
35476
+ });
35477
+ };
35478
+ const NotableList = ({ items, id, state }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
35479
+ className: "m-0 list-outside list-disc pl-5 marker:text-link",
35480
+ children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NotableItem, {
35481
+ item,
35482
+ id: `${id}-${i}`,
35483
+ state
35484
+ }, i))
35485
+ });
35486
+ /** A plain note's prose as blocks, every list item taking a note of its own. */
35487
+ const PlainNoteBody = ({ chunk, chunkIndex, state }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
35488
+ "data-testid": `chunk-plain-note-body-${chunkIndex}`,
35489
+ className: "-mx-3 text-small",
35490
+ children: (chunk.body ?? []).map((node, i) => node.block?.kind === "list" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
35491
+ className: "px-3",
35492
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NotableList, {
35493
+ items: node.block.items ?? [],
35494
+ id: `${chunkIndex}-${i}`,
35495
+ state
35496
+ })
35497
+ }, i) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProseBlocks, {
35498
+ nodes: [node],
35499
+ noteOverrides: {},
35500
+ onOpenNote: () => {},
35501
+ readOnly: true
35502
+ }, i))
35503
+ });
35548
35504
  /** A finding's done mark, a walkthrough chunk's tick-all box, nothing for a plain note. */
35549
35505
  const ChunkMark = ({ chunk, chunkIndex, state }) => {
35550
35506
  const hunks = hunksOf(chunk);
@@ -35584,13 +35540,18 @@ const ChunkRow = ({ chunk, chunkIndex, state }) => {
35584
35540
  chunkIndex,
35585
35541
  state
35586
35542
  }),
35587
- isPlainNote(chunk) ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
35543
+ isPlainNote(chunk) ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
35588
35544
  "data-testid": `chunk-plain-note-${chunkIndex}`,
35589
- className: "flex-1 py-1",
35590
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChunkSummary, {
35545
+ className: "min-w-0 flex-1 py-1",
35546
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChunkSummary, {
35547
+ chunk,
35548
+ chunkIndex,
35549
+ withDetail: chunk.body === void 0 || chunk.body.length === 0
35550
+ }), chunk.body !== void 0 && chunk.body.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PlainNoteBody, {
35591
35551
  chunk,
35592
- chunkIndex
35593
- })
35552
+ chunkIndex,
35553
+ state
35554
+ })]
35594
35555
  }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
35595
35556
  variant: "ghost",
35596
35557
  "data-testid": `chunk-open-${chunkIndex}`,
@@ -35908,8 +35869,7 @@ const Review = ({ filePath }) => {
35908
35869
  })
35909
35870
  });
35910
35871
  };
35911
- //#endregion
35912
- //#region src/web/App.tsx
35872
+ // src/web/App.tsx
35913
35873
  /** The one shape a screen can open: a clean read resting on a steering file — package 01 dropped the `mode` requirement, since an absent or unregistered mode now falls through to `FreeForm` rather than refusing. */
35914
35874
  const openable = (step) => step?.status === "ok" && step.file !== void 0;
35915
35875
  /**
@@ -35972,8 +35932,7 @@ const App = () => {
35972
35932
  })
35973
35933
  });
35974
35934
  };
35975
- //#endregion
35976
- //#region src/web/main.tsx
35935
+ // src/web/main.tsx
35977
35936
  /** Server state goes through React Query; the tRPC link is created once per app instance and points at the served origin's `/trpc` path — relative, so it works regardless of host/port. */
35978
35937
  const queryClient = new QueryClient();
35979
35938
  const trpcClient = trpc.createClient({ links: [httpBatchLink({ url: TRPC_URL })] });
@@ -35986,4 +35945,3 @@ if (container) (0, import_client.createRoot)(container).render(/* @__PURE__ */ (
35986
35945
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {})
35987
35946
  })
35988
35947
  }) }));
35989
- //#endregion