@teleporthq/teleport-plugin-next-data-source 0.43.75 → 0.44.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/__tests__/_helpers/first-page-runtime.ts +184 -0
  2. package/__tests__/_helpers/pagination-widget-fixture.ts +154 -5
  3. package/__tests__/booking-item-transform.test.ts +120 -0
  4. package/__tests__/browser-row-policy.test.ts +210 -4
  5. package/__tests__/data-source-request-locale.test.ts +4 -3
  6. package/__tests__/fetchers.test.ts +7 -3
  7. package/__tests__/fixed-list-sort.test.ts +1 -1
  8. package/__tests__/infinite-scroll.test.ts +363 -9
  9. package/__tests__/list-sort-order.test.ts +61 -0
  10. package/__tests__/null-filter-where.test.ts +132 -0
  11. package/__tests__/page-data-visitor-read.test.ts +196 -0
  12. package/__tests__/pg-date-parser.test.ts +73 -0
  13. package/__tests__/plain-list-sort.test.ts +2 -2
  14. package/__tests__/plain-list-starting-sort.test.ts +323 -0
  15. package/__tests__/product-price-sort.ts +11 -6
  16. package/__tests__/range-control.test.ts +159 -0
  17. package/__tests__/refetch-loading-state.test.ts +158 -2
  18. package/__tests__/search-input-marker.test.ts +86 -0
  19. package/__tests__/search-url-sync.test.ts +34 -8
  20. package/__tests__/starting-sort-first-page.test.ts +285 -0
  21. package/__tests__/table-read-route-protected-tables.test.ts +33 -3
  22. package/dist/cjs/cache/ast.d.ts +2 -0
  23. package/dist/cjs/cache/ast.d.ts.map +1 -1
  24. package/dist/cjs/cache/ast.js +5 -2
  25. package/dist/cjs/cache/ast.js.map +1 -1
  26. package/dist/cjs/count-effect.d.ts +7 -1
  27. package/dist/cjs/count-effect.d.ts.map +1 -1
  28. package/dist/cjs/count-effect.js +15 -5
  29. package/dist/cjs/count-effect.js.map +1 -1
  30. package/dist/cjs/data-source-fetchers.d.ts.map +1 -1
  31. package/dist/cjs/data-source-fetchers.js +10 -2
  32. package/dist/cjs/data-source-fetchers.js.map +1 -1
  33. package/dist/cjs/fetchers/pg-client-import.d.ts +12 -0
  34. package/dist/cjs/fetchers/pg-client-import.d.ts.map +1 -0
  35. package/dist/cjs/fetchers/pg-client-import.js +15 -0
  36. package/dist/cjs/fetchers/pg-client-import.js.map +1 -0
  37. package/dist/cjs/fetchers/postgresql.d.ts.map +1 -1
  38. package/dist/cjs/fetchers/postgresql.js +3 -1
  39. package/dist/cjs/fetchers/postgresql.js.map +1 -1
  40. package/dist/cjs/fetchers/raw-query.d.ts.map +1 -1
  41. package/dist/cjs/fetchers/raw-query.js +2 -1
  42. package/dist/cjs/fetchers/raw-query.js.map +1 -1
  43. package/dist/cjs/fetchers/teleport.d.ts.map +1 -1
  44. package/dist/cjs/fetchers/teleport.js +4 -2
  45. package/dist/cjs/fetchers/teleport.js.map +1 -1
  46. package/dist/cjs/fetchers/utils/browser-row-policy.d.ts.map +1 -1
  47. package/dist/cjs/fetchers/utils/browser-row-policy.js +5 -1
  48. package/dist/cjs/fetchers/utils/browser-row-policy.js.map +1 -1
  49. package/dist/cjs/index.d.ts.map +1 -1
  50. package/dist/cjs/index.js +14 -2
  51. package/dist/cjs/index.js.map +1 -1
  52. package/dist/cjs/infinite-scroll.d.ts +89 -4
  53. package/dist/cjs/infinite-scroll.d.ts.map +1 -1
  54. package/dist/cjs/infinite-scroll.js +243 -33
  55. package/dist/cjs/infinite-scroll.js.map +1 -1
  56. package/dist/cjs/list-sort-order.d.ts +14 -0
  57. package/dist/cjs/list-sort-order.d.ts.map +1 -0
  58. package/dist/cjs/list-sort-order.js +36 -0
  59. package/dist/cjs/list-sort-order.js.map +1 -0
  60. package/dist/cjs/loading-state.d.ts +23 -2
  61. package/dist/cjs/loading-state.d.ts.map +1 -1
  62. package/dist/cjs/loading-state.js +50 -15
  63. package/dist/cjs/loading-state.js.map +1 -1
  64. package/dist/cjs/pagination-controls.d.ts +22 -3
  65. package/dist/cjs/pagination-controls.d.ts.map +1 -1
  66. package/dist/cjs/pagination-controls.js +29 -3
  67. package/dist/cjs/pagination-controls.js.map +1 -1
  68. package/dist/cjs/pagination-plugin.d.ts.map +1 -1
  69. package/dist/cjs/pagination-plugin.js +336 -164
  70. package/dist/cjs/pagination-plugin.js.map +1 -1
  71. package/dist/cjs/range-control.d.ts +45 -0
  72. package/dist/cjs/range-control.d.ts.map +1 -0
  73. package/dist/cjs/range-control.js +165 -0
  74. package/dist/cjs/range-control.js.map +1 -0
  75. package/dist/cjs/row-order.d.ts +3 -2
  76. package/dist/cjs/row-order.d.ts.map +1 -1
  77. package/dist/cjs/row-order.js +5 -4
  78. package/dist/cjs/row-order.js.map +1 -1
  79. package/dist/cjs/search-input.d.ts +42 -0
  80. package/dist/cjs/search-input.d.ts.map +1 -0
  81. package/dist/cjs/search-input.js +158 -0
  82. package/dist/cjs/search-input.js.map +1 -0
  83. package/dist/cjs/sort-utils.d.ts +53 -1
  84. package/dist/cjs/sort-utils.d.ts.map +1 -1
  85. package/dist/cjs/sort-utils.js +105 -13
  86. package/dist/cjs/sort-utils.js.map +1 -1
  87. package/dist/cjs/transformations/booking-item.d.ts +24 -0
  88. package/dist/cjs/transformations/booking-item.d.ts.map +1 -0
  89. package/dist/cjs/transformations/booking-item.js +27 -0
  90. package/dist/cjs/transformations/booking-item.js.map +1 -0
  91. package/dist/cjs/transformations/index.d.ts +4 -2
  92. package/dist/cjs/transformations/index.d.ts.map +1 -1
  93. package/dist/cjs/transformations/index.js +14 -5
  94. package/dist/cjs/transformations/index.js.map +1 -1
  95. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  96. package/dist/cjs/utils.d.ts +3 -2
  97. package/dist/cjs/utils.d.ts.map +1 -1
  98. package/dist/cjs/utils.js +48 -18
  99. package/dist/cjs/utils.js.map +1 -1
  100. package/dist/esm/cache/ast.d.ts +2 -0
  101. package/dist/esm/cache/ast.d.ts.map +1 -1
  102. package/dist/esm/cache/ast.js +3 -1
  103. package/dist/esm/cache/ast.js.map +1 -1
  104. package/dist/esm/count-effect.d.ts +7 -1
  105. package/dist/esm/count-effect.d.ts.map +1 -1
  106. package/dist/esm/count-effect.js +15 -5
  107. package/dist/esm/count-effect.js.map +1 -1
  108. package/dist/esm/data-source-fetchers.d.ts.map +1 -1
  109. package/dist/esm/data-source-fetchers.js +10 -2
  110. package/dist/esm/data-source-fetchers.js.map +1 -1
  111. package/dist/esm/fetchers/pg-client-import.d.ts +12 -0
  112. package/dist/esm/fetchers/pg-client-import.d.ts.map +1 -0
  113. package/dist/esm/fetchers/pg-client-import.js +12 -0
  114. package/dist/esm/fetchers/pg-client-import.js.map +1 -0
  115. package/dist/esm/fetchers/postgresql.d.ts.map +1 -1
  116. package/dist/esm/fetchers/postgresql.js +3 -1
  117. package/dist/esm/fetchers/postgresql.js.map +1 -1
  118. package/dist/esm/fetchers/raw-query.d.ts.map +1 -1
  119. package/dist/esm/fetchers/raw-query.js +2 -1
  120. package/dist/esm/fetchers/raw-query.js.map +1 -1
  121. package/dist/esm/fetchers/teleport.d.ts.map +1 -1
  122. package/dist/esm/fetchers/teleport.js +4 -2
  123. package/dist/esm/fetchers/teleport.js.map +1 -1
  124. package/dist/esm/fetchers/utils/browser-row-policy.d.ts.map +1 -1
  125. package/dist/esm/fetchers/utils/browser-row-policy.js +6 -2
  126. package/dist/esm/fetchers/utils/browser-row-policy.js.map +1 -1
  127. package/dist/esm/index.d.ts.map +1 -1
  128. package/dist/esm/index.js +14 -2
  129. package/dist/esm/index.js.map +1 -1
  130. package/dist/esm/infinite-scroll.d.ts +89 -4
  131. package/dist/esm/infinite-scroll.d.ts.map +1 -1
  132. package/dist/esm/infinite-scroll.js +237 -32
  133. package/dist/esm/infinite-scroll.js.map +1 -1
  134. package/dist/esm/list-sort-order.d.ts +14 -0
  135. package/dist/esm/list-sort-order.d.ts.map +1 -0
  136. package/dist/esm/list-sort-order.js +32 -0
  137. package/dist/esm/list-sort-order.js.map +1 -0
  138. package/dist/esm/loading-state.d.ts +23 -2
  139. package/dist/esm/loading-state.d.ts.map +1 -1
  140. package/dist/esm/loading-state.js +50 -15
  141. package/dist/esm/loading-state.js.map +1 -1
  142. package/dist/esm/pagination-controls.d.ts +22 -3
  143. package/dist/esm/pagination-controls.d.ts.map +1 -1
  144. package/dist/esm/pagination-controls.js +28 -2
  145. package/dist/esm/pagination-controls.js.map +1 -1
  146. package/dist/esm/pagination-plugin.d.ts.map +1 -1
  147. package/dist/esm/pagination-plugin.js +340 -168
  148. package/dist/esm/pagination-plugin.js.map +1 -1
  149. package/dist/esm/range-control.d.ts +45 -0
  150. package/dist/esm/range-control.d.ts.map +1 -0
  151. package/dist/esm/range-control.js +137 -0
  152. package/dist/esm/range-control.js.map +1 -0
  153. package/dist/esm/row-order.d.ts +3 -2
  154. package/dist/esm/row-order.d.ts.map +1 -1
  155. package/dist/esm/row-order.js +5 -4
  156. package/dist/esm/row-order.js.map +1 -1
  157. package/dist/esm/search-input.d.ts +42 -0
  158. package/dist/esm/search-input.d.ts.map +1 -0
  159. package/dist/esm/search-input.js +129 -0
  160. package/dist/esm/search-input.js.map +1 -0
  161. package/dist/esm/sort-utils.d.ts +53 -1
  162. package/dist/esm/sort-utils.d.ts.map +1 -1
  163. package/dist/esm/sort-utils.js +100 -12
  164. package/dist/esm/sort-utils.js.map +1 -1
  165. package/dist/esm/transformations/booking-item.d.ts +24 -0
  166. package/dist/esm/transformations/booking-item.d.ts.map +1 -0
  167. package/dist/esm/transformations/booking-item.js +23 -0
  168. package/dist/esm/transformations/booking-item.js.map +1 -0
  169. package/dist/esm/transformations/index.d.ts +4 -2
  170. package/dist/esm/transformations/index.d.ts.map +1 -1
  171. package/dist/esm/transformations/index.js +14 -5
  172. package/dist/esm/transformations/index.js.map +1 -1
  173. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  174. package/dist/esm/utils.d.ts +3 -2
  175. package/dist/esm/utils.d.ts.map +1 -1
  176. package/dist/esm/utils.js +49 -19
  177. package/dist/esm/utils.js.map +1 -1
  178. package/package.json +5 -5
  179. package/src/cache/ast.ts +4 -1
  180. package/src/count-effect.ts +31 -8
  181. package/src/data-source-fetchers.ts +33 -14
  182. package/src/fetchers/pg-client-import.ts +16 -0
  183. package/src/fetchers/postgresql.ts +15 -9
  184. package/src/fetchers/raw-query.ts +2 -1
  185. package/src/fetchers/teleport.ts +19 -10
  186. package/src/fetchers/utils/browser-row-policy.ts +79 -5
  187. package/src/index.ts +8 -2
  188. package/src/infinite-scroll.ts +420 -81
  189. package/src/list-sort-order.ts +34 -0
  190. package/src/loading-state.ts +85 -13
  191. package/src/pagination-controls.ts +26 -3
  192. package/src/pagination-plugin.ts +532 -218
  193. package/src/range-control.ts +207 -0
  194. package/src/row-order.ts +5 -4
  195. package/src/search-input.ts +190 -0
  196. package/src/sort-utils.ts +164 -21
  197. package/src/transformations/booking-item.ts +71 -0
  198. package/src/transformations/index.ts +25 -2
  199. package/src/utils.ts +55 -18
@@ -5,15 +5,30 @@ import * as types from '@babel/types';
5
5
  * The accumulation lives inside the generated `fetchData` closure rather than
6
6
  * around the provider. `DataProvider` renders whatever `fetchData` resolves
7
7
  * with, so returning "every page fetched so far, in order" is enough to make it
8
- * append — no change to the runtime component library, and the existing
8
+ * append — no change to the runtime component library, and
9
9
  * `persistDataDuringLoading` keeps the rows already on screen while the next
10
- * page is in flight.
10
+ * page is in flight (`buildAppendingRequestCheck`: the loading slot replaces
11
+ * them only for a list loading afresh).
11
12
  *
12
13
  * A `useRef` holds the pages rather than a state, because writing accumulated
13
14
  * rows into state from inside `fetchData` would re-render the provider mid-fetch
14
15
  * and re-enter it. The ref is keyed by a SIGNATURE of every fetch param except
15
16
  * the page, so a filter, sort or search change starts a fresh list instead of
16
17
  * interleaving rows from two different queries.
18
+ *
19
+ * `fetchData` records the query and the page the list stands on BEFORE it
20
+ * requests them (`latest`), and only the answer to that request changes the
21
+ * list. A filter, sort or search change made past page 1 fires the old page
22
+ * under the new query first, then page 1 once the page is reset: kept, the
23
+ * stray page sat in the list, the page counter said 1, and the next "Load
24
+ * more" fetched a page already on show. `DataProvider` also renders whichever
25
+ * answer arrives LAST, so a late answer to an earlier query must not replace
26
+ * the list either.
27
+ *
28
+ * On a page, the list starts from the rows `getStaticProps` already fetched
29
+ * (`buildFirstPageDeclaration`, `buildFirstPageSeedEffect`): the server HTML
30
+ * carries them instead of the loading state, the accumulator holds them as
31
+ * page 1, and the browser's first request is page 2.
17
32
  */
18
33
  export interface InfiniteScrollVars {
19
34
  accumRefVar: string;
@@ -21,6 +36,7 @@ export interface InfiniteScrollVars {
21
36
  setHasMoreFlagVar: string;
22
37
  hasMoreVar: string;
23
38
  sentinelRefVar: string;
39
+ firstPageVar: string;
24
40
  }
25
41
  export declare const getInfiniteScrollVars: (index: number) => InfiniteScrollVars;
26
42
  /**
@@ -37,11 +53,75 @@ export declare const getInfiniteScrollVars: (index: number) => InfiniteScrollVar
37
53
  * being made at all; it is `0` while unknown, hence the explicit escape.
38
54
  */
39
55
  export declare const buildInfiniteScrollDeclarations: (vars: InfiniteScrollVars, maxPagesVar: string, currentPageExpr: types.Expression, includeSentinel: boolean) => types.Statement[];
56
+ /**
57
+ * What `fetchData` runs before its request: the query and the page the list
58
+ * now stands on.
59
+ *
60
+ * ds_0_accumRef.current.latest = { sig: JSON.stringify({ ...params, page: 0 }), page: Number(params.page) || 1 }
61
+ */
62
+ export declare const buildAccumulatingRequestMark: (vars: InfiniteScrollVars) => types.Statement;
63
+ /**
64
+ * Whether the request `fetchData` is about to make only adds a page to the rows
65
+ * on show: a page past the first, of the query the accumulator holds. Read
66
+ * after `buildAccumulatingRequestMark` has recorded that request.
67
+ *
68
+ * ds_0_accumRef.current.latest.page > 1 && ds_0_accumRef.current.latest.sig === ds_0_accumRef.current.sig
69
+ *
70
+ * A filter, sort or search change is no append even past page 1 — the page it
71
+ * fires before the reset belongs to another query — and neither is a list's
72
+ * first page: both load the list afresh, behind its loading slot.
73
+ */
74
+ export declare const buildAppendingRequestCheck: (vars: InfiniteScrollVars) => types.Expression;
75
+ /**
76
+ * The rows inside a server payload: the payload itself, or what sits at
77
+ * `itemsPath` in one that wraps them. `<rows>?.length > 0` is how the caller
78
+ * asks whether the server found any.
79
+ */
80
+ export declare const buildServerRowsExpression: (payload: types.Expression, itemsPath?: string[]) => types.Expression;
81
+ /**
82
+ * The first page the list starts from, when its page already fetched it:
83
+ *
84
+ * const ds_0_firstPage = useMemo(() => <starts> ? props?.items_ds_0 : undefined, [<instance deps>])
85
+ *
86
+ * Handed to `DataProvider` as `initialData`, so the server HTML holds the rows
87
+ * rather than the loading state, and the provider skips its own fetch of page 1.
88
+ *
89
+ * ⛔ Frozen for the provider's lifetime. `DataProvider` copies `initialData`
90
+ * into what it shows every time the value changes, so a value that moved with
91
+ * the page — the paged lists' `page === 1 ? … : undefined`, fine for them since
92
+ * they remount per page — would wipe the appended rows on the first scroll.
93
+ * `instanceDeps` are what remounts the provider (its `key`): nothing for a list
94
+ * without search, the applied query for one with search.
95
+ */
96
+ export declare const buildFirstPageDeclaration: (vars: InfiniteScrollVars, startsFromServerRows: types.Expression, serverPayload: types.Expression, instanceDeps: types.Expression[]) => types.Statement;
97
+ /**
98
+ * Makes the server rows page 1 of the accumulator whenever the provider is
99
+ * handed them instead of fetching:
100
+ *
101
+ * useEffect(() => {
102
+ * if (ds_0_firstPage === undefined) return
103
+ * const rows = ds_0_firstPage || []
104
+ * const sig = JSON.stringify({ ...ds_0_params, page: 0 })
105
+ * ds_0_accumRef.current = { sig, pages: { 1: rows }, latest: { sig, page: 1 } }
106
+ * setDs_0_hasMoreFlag(rows.length >= 20)
107
+ * }, [ds_0_firstPage])
108
+ *
109
+ * Without it the accumulator never sees page 1 (the provider skipped that
110
+ * fetch), and the answer to page 2 would REPLACE the rows on screen with page 2
111
+ * alone. The signature is the one `fetchData` computes for the same params, so
112
+ * the next page appends to these rows while a filter, sort or search change
113
+ * still starts a fresh list; `latest` keeps an answer still in flight from an
114
+ * earlier query from changing anything. A short first page is the last one, as
115
+ * it would be had it been fetched.
116
+ */
117
+ export declare const buildFirstPageSeedEffect: (vars: InfiniteScrollVars, paramsVar: string, perPage: number, itemsPath?: string[]) => types.Statement;
40
118
  /**
41
119
  * The `.then(...)` tail that accumulates a page and reports whether more exist.
42
120
  *
43
121
  * Returned as the resolved value of `fetchData`, so `DataProvider` stores the
44
- * whole accumulated list as its data.
122
+ * whole accumulated list as its data: the pages of the query on show, first
123
+ * to the page it stands on. An answer to anything but the latest request
124
+ * (`buildAccumulatingRequestMark`) is not kept, and gets the list as it is.
45
125
  *
46
126
  * `itemsPath` is where the rows sit inside a payload that wraps them
47
127
  * (`{ items: [...], total }`): the rows are read there and the accumulated list
@@ -66,6 +146,11 @@ export declare const buildSentinelObserverEffect: (vars: InfiniteScrollVars, max
66
146
  * An invisible one-pixel row after the list. It is generated rather than
67
147
  * authored because it is not a control — there is nothing to style or click,
68
148
  * only a position in the document for the observer to watch.
149
+ *
150
+ * It takes the element its parent may hold: a table section holds rows, a
151
+ * list holds items, a paragraph holds phrasing. A `<div>` among a table's
152
+ * rows is moved out of the table by the parser, so the server's markup and
153
+ * the client's tree differ and React's hydration fails on every such list.
69
154
  */
70
- export declare const buildSentinelElement: (vars: InfiniteScrollVars) => types.JSXElement;
155
+ export declare const buildSentinelElement: (vars: InfiniteScrollVars, parentTag?: string | null) => types.JSXElement;
71
156
  //# sourceMappingURL=infinite-scroll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"infinite-scroll.d.ts","sourceRoot":"","sources":["../../src/infinite-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,qBAAqB,UAAW,MAAM,KAAG,kBAMpD,CAAA;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B,SACpC,kBAAkB,eACX,MAAM,mBACF,MAAM,UAAU,mBAChB,OAAO,KACvB,MAAM,SAAS,EAsDjB,CAAA;AAsDD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gCAAgC,SACrC,kBAAkB,WACf,MAAM,cACH,MAAM,EAAE,KACnB,MAAM,uBAyIR,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,SAChC,kBAAkB,eACX,MAAM,6BACQ,MAAM,MAAM,SAAS,KAC/C,MAAM,mBAoGN,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,SAAU,kBAAkB,KAAG,MAAM,UAwBnE,CAAA"}
1
+ {"version":3,"file":"infinite-scroll.d.ts","sourceRoot":"","sources":["../../src/infinite-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,qBAAqB,UAAW,MAAM,KAAG,kBAOpD,CAAA;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B,SACpC,kBAAkB,eACX,MAAM,mBACF,MAAM,UAAU,mBAChB,OAAO,KACvB,MAAM,SAAS,EAuDjB,CAAA;AA+ED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,SAAU,kBAAkB,KAAG,MAAM,SAU3E,CAAA;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B,SAAU,kBAAkB,KAAG,MAAM,UAe3E,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,YAC3B,MAAM,UAAU,cACb,MAAM,EAAE,KACnB,MAAM,UAA4E,CAAA;AAErF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,yBAAyB,SAC9B,kBAAkB,wBACF,MAAM,UAAU,iBACvB,MAAM,UAAU,gBACjB,MAAM,UAAU,EAAE,KAC/B,MAAM,SAgBL,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,wBAAwB,SAC7B,kBAAkB,aACb,MAAM,WACR,MAAM,cACH,MAAM,EAAE,KACnB,MAAM,SAmEN,CAAA;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gCAAgC,SACrC,kBAAkB,WACf,MAAM,cACH,MAAM,EAAE,KACnB,MAAM,uBA+KR,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,SAChC,kBAAkB,eACX,MAAM,6BACQ,MAAM,MAAM,SAAS,KAC/C,MAAM,mBAoGN,CAAA;AAmDH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,SACzB,kBAAkB,cACb,MAAM,GAAG,IAAI,KACvB,MAAM,UAmCR,CAAA"}
@@ -1,3 +1,12 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
1
10
  import * as types from '@babel/types';
2
11
  export var getInfiniteScrollVars = function (index) { return ({
3
12
  accumRefVar: "ds_".concat(index, "_accumRef"),
@@ -5,6 +14,7 @@ export var getInfiniteScrollVars = function (index) { return ({
5
14
  setHasMoreFlagVar: "setDs_".concat(index, "_hasMoreFlag"),
6
15
  hasMoreVar: "ds_".concat(index, "_hasMore"),
7
16
  sentinelRefVar: "ds_".concat(index, "_sentinelRef"),
17
+ firstPageVar: "ds_".concat(index, "_firstPage"),
8
18
  }); };
9
19
  /**
10
20
  * The three declarations behind an appending list:
@@ -26,6 +36,7 @@ export var buildInfiniteScrollDeclarations = function (vars, maxPagesVar, curren
26
36
  types.objectExpression([
27
37
  types.objectProperty(types.identifier('sig'), types.stringLiteral('')),
28
38
  types.objectProperty(types.identifier('pages'), types.objectExpression([])),
39
+ types.objectProperty(types.identifier('latest'), types.nullLiteral()),
29
40
  ]),
30
41
  ])),
31
42
  ]),
@@ -84,11 +95,137 @@ var writeAtPath = function (node, path, value) {
84
95
  types.objectProperty(types.isValidIdentifier(segment) ? types.identifier(segment) : types.stringLiteral(segment), child),
85
96
  ]);
86
97
  };
98
+ /** `JSON.stringify({ ...params, page: 0 })`: everything that identifies the query but the page. */
99
+ var buildQuerySignature = function (paramsVar) {
100
+ if (paramsVar === void 0) { paramsVar = 'params'; }
101
+ return types.callExpression(types.memberExpression(types.identifier('JSON'), types.identifier('stringify')), [
102
+ types.objectExpression([
103
+ types.spreadElement(types.identifier(paramsVar)),
104
+ types.objectProperty(types.identifier('page'), types.numericLiteral(0)),
105
+ ]),
106
+ ]);
107
+ };
108
+ /** `Number(params.page) || 1` */
109
+ var buildRequestedPage = function () {
110
+ return types.logicalExpression('||', types.callExpression(types.identifier('Number'), [
111
+ types.memberExpression(types.identifier('params'), types.identifier('page')),
112
+ ]), types.numericLiteral(1));
113
+ };
114
+ var accumCurrentOf = function (vars) {
115
+ return types.memberExpression(types.identifier(vars.accumRefVar), types.identifier('current'));
116
+ };
117
+ /**
118
+ * What `fetchData` runs before its request: the query and the page the list
119
+ * now stands on.
120
+ *
121
+ * ds_0_accumRef.current.latest = { sig: JSON.stringify({ ...params, page: 0 }), page: Number(params.page) || 1 }
122
+ */
123
+ export var buildAccumulatingRequestMark = function (vars) {
124
+ return types.expressionStatement(types.assignmentExpression('=', types.memberExpression(accumCurrentOf(vars), types.identifier('latest')), types.objectExpression([
125
+ types.objectProperty(types.identifier('sig'), buildQuerySignature()),
126
+ types.objectProperty(types.identifier('page'), buildRequestedPage()),
127
+ ])));
128
+ };
129
+ /**
130
+ * Whether the request `fetchData` is about to make only adds a page to the rows
131
+ * on show: a page past the first, of the query the accumulator holds. Read
132
+ * after `buildAccumulatingRequestMark` has recorded that request.
133
+ *
134
+ * ds_0_accumRef.current.latest.page > 1 && ds_0_accumRef.current.latest.sig === ds_0_accumRef.current.sig
135
+ *
136
+ * A filter, sort or search change is no append even past page 1 — the page it
137
+ * fires before the reset belongs to another query — and neither is a list's
138
+ * first page: both load the list afresh, behind its loading slot.
139
+ */
140
+ export var buildAppendingRequestCheck = function (vars) {
141
+ var latestOf = function (key) {
142
+ return types.memberExpression(types.memberExpression(accumCurrentOf(vars), types.identifier('latest')), types.identifier(key));
143
+ };
144
+ return types.logicalExpression('&&', types.binaryExpression('>', latestOf('page'), types.numericLiteral(1)), types.binaryExpression('===', latestOf('sig'), types.memberExpression(accumCurrentOf(vars), types.identifier('sig'))));
145
+ };
146
+ /**
147
+ * The rows inside a server payload: the payload itself, or what sits at
148
+ * `itemsPath` in one that wraps them. `<rows>?.length > 0` is how the caller
149
+ * asks whether the server found any.
150
+ */
151
+ export var buildServerRowsExpression = function (payload, itemsPath) { return ((itemsPath === null || itemsPath === void 0 ? void 0 : itemsPath.length) ? readAtPath(payload, itemsPath) : payload); };
152
+ /**
153
+ * The first page the list starts from, when its page already fetched it:
154
+ *
155
+ * const ds_0_firstPage = useMemo(() => <starts> ? props?.items_ds_0 : undefined, [<instance deps>])
156
+ *
157
+ * Handed to `DataProvider` as `initialData`, so the server HTML holds the rows
158
+ * rather than the loading state, and the provider skips its own fetch of page 1.
159
+ *
160
+ * ⛔ Frozen for the provider's lifetime. `DataProvider` copies `initialData`
161
+ * into what it shows every time the value changes, so a value that moved with
162
+ * the page — the paged lists' `page === 1 ? … : undefined`, fine for them since
163
+ * they remount per page — would wipe the appended rows on the first scroll.
164
+ * `instanceDeps` are what remounts the provider (its `key`): nothing for a list
165
+ * without search, the applied query for one with search.
166
+ */
167
+ export var buildFirstPageDeclaration = function (vars, startsFromServerRows, serverPayload, instanceDeps) {
168
+ return types.variableDeclaration('const', [
169
+ types.variableDeclarator(types.identifier(vars.firstPageVar), types.callExpression(types.identifier('useMemo'), [
170
+ types.arrowFunctionExpression([], types.conditionalExpression(startsFromServerRows, serverPayload, types.identifier('undefined'))),
171
+ types.arrayExpression(instanceDeps),
172
+ ])),
173
+ ]);
174
+ };
175
+ /**
176
+ * Makes the server rows page 1 of the accumulator whenever the provider is
177
+ * handed them instead of fetching:
178
+ *
179
+ * useEffect(() => {
180
+ * if (ds_0_firstPage === undefined) return
181
+ * const rows = ds_0_firstPage || []
182
+ * const sig = JSON.stringify({ ...ds_0_params, page: 0 })
183
+ * ds_0_accumRef.current = { sig, pages: { 1: rows }, latest: { sig, page: 1 } }
184
+ * setDs_0_hasMoreFlag(rows.length >= 20)
185
+ * }, [ds_0_firstPage])
186
+ *
187
+ * Without it the accumulator never sees page 1 (the provider skipped that
188
+ * fetch), and the answer to page 2 would REPLACE the rows on screen with page 2
189
+ * alone. The signature is the one `fetchData` computes for the same params, so
190
+ * the next page appends to these rows while a filter, sort or search change
191
+ * still starts a fresh list; `latest` keeps an answer still in flight from an
192
+ * earlier query from changing anything. A short first page is the last one, as
193
+ * it would be had it been fetched.
194
+ */
195
+ export var buildFirstPageSeedEffect = function (vars, paramsVar, perPage, itemsPath) {
196
+ return types.expressionStatement(types.callExpression(types.identifier('useEffect'), [
197
+ types.arrowFunctionExpression([], types.blockStatement([
198
+ types.ifStatement(types.binaryExpression('===', types.identifier(vars.firstPageVar), types.identifier('undefined')), types.returnStatement()),
199
+ types.variableDeclaration('const', [
200
+ types.variableDeclarator(types.identifier('rows'), types.logicalExpression('||', buildServerRowsExpression(types.identifier(vars.firstPageVar), itemsPath), types.arrayExpression([]))),
201
+ ]),
202
+ types.variableDeclaration('const', [
203
+ types.variableDeclarator(types.identifier('sig'), buildQuerySignature(paramsVar)),
204
+ ]),
205
+ types.expressionStatement(types.assignmentExpression('=', accumCurrentOf(vars), types.objectExpression([
206
+ types.objectProperty(types.identifier('sig'), types.identifier('sig'), false, true),
207
+ types.objectProperty(types.identifier('pages'), types.objectExpression([
208
+ types.objectProperty(types.numericLiteral(1), types.identifier('rows')),
209
+ ])),
210
+ types.objectProperty(types.identifier('latest'), types.objectExpression([
211
+ types.objectProperty(types.identifier('sig'), types.identifier('sig'), false, true),
212
+ types.objectProperty(types.identifier('page'), types.numericLiteral(1)),
213
+ ])),
214
+ ]))),
215
+ types.expressionStatement(types.callExpression(types.identifier(vars.setHasMoreFlagVar), [
216
+ types.binaryExpression('>=', types.memberExpression(types.identifier('rows'), types.identifier('length')), types.numericLiteral(perPage)),
217
+ ])),
218
+ ])),
219
+ types.arrayExpression([types.identifier(vars.firstPageVar)]),
220
+ ]));
221
+ };
87
222
  /**
88
223
  * The `.then(...)` tail that accumulates a page and reports whether more exist.
89
224
  *
90
225
  * Returned as the resolved value of `fetchData`, so `DataProvider` stores the
91
- * whole accumulated list as its data.
226
+ * whole accumulated list as its data: the pages of the query on show, first
227
+ * to the page it stands on. An answer to anything but the latest request
228
+ * (`buildAccumulatingRequestMark`) is not kept, and gets the list as it is.
92
229
  *
93
230
  * `itemsPath` is where the rows sit inside a payload that wraps them
94
231
  * (`{ items: [...], total }`): the rows are read there and the accumulated list
@@ -97,17 +234,22 @@ var writeAtPath = function (node, path, value) {
97
234
  * first page and rendered nothing.
98
235
  */
99
236
  export var buildAccumulatingResponseHandler = function (vars, perPage, itemsPath) {
100
- var accumCurrent = function () {
101
- return types.memberExpression(types.identifier(vars.accumRefVar), types.identifier('current'));
102
- };
237
+ var accumCurrent = function () { return accumCurrentOf(vars); };
103
238
  var accumPages = function () {
104
239
  return types.memberExpression(accumCurrent(), types.identifier('pages'));
105
240
  };
241
+ var latestOf = function (key) {
242
+ return types.memberExpression(types.identifier('latest'), types.identifier(key));
243
+ };
106
244
  var payload = function () {
107
245
  return types.optionalMemberExpression(types.identifier('response'), types.identifier('data'), false, true);
108
246
  };
109
247
  var rowsPath = (itemsPath === null || itemsPath === void 0 ? void 0 : itemsPath.length) ? itemsPath : undefined;
110
- var accumulatedRows = types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.identifier('Object'), types.identifier('keys')), [accumPages()]), types.identifier('map')), [types.identifier('Number')]), types.identifier('sort')), [
248
+ // Every page held up to `last`, flattened in page order — a numeric sort, so
249
+ // page 10 does not land between 1 and 2.
250
+ var accumulatedRows = types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.identifier('Object'), types.identifier('keys')), [accumPages()]), types.identifier('map')), [types.identifier('Number')]), types.identifier('filter')), [
251
+ types.arrowFunctionExpression([types.identifier('p')], types.binaryExpression('<=', types.identifier('p'), types.identifier('last'))),
252
+ ]), types.identifier('sort')), [
111
253
  types.arrowFunctionExpression([types.identifier('a'), types.identifier('b')], types.binaryExpression('-', types.identifier('a'), types.identifier('b'))),
112
254
  ]), types.identifier('reduce')), [
113
255
  types.arrowFunctionExpression([types.identifier('acc'), types.identifier('p')], types.callExpression(types.memberExpression(types.identifier('acc'), types.identifier('concat')), [types.memberExpression(accumPages(), types.identifier('p'), true)])),
@@ -118,35 +260,42 @@ export var buildAccumulatingResponseHandler = function (vars, perPage, itemsPath
118
260
  types.variableDeclarator(types.identifier('rows'), types.logicalExpression('||', rowsPath ? readAtPath(payload(), rowsPath) : payload(), types.arrayExpression([]))),
119
261
  ]),
120
262
  types.variableDeclaration('const', [
121
- types.variableDeclarator(types.identifier('page'), types.logicalExpression('||', types.callExpression(types.identifier('Number'), [
122
- types.memberExpression(types.identifier('params'), types.identifier('page')),
123
- ]), types.numericLiteral(1))),
263
+ types.variableDeclarator(types.identifier('page'), buildRequestedPage()),
124
264
  ]),
125
265
  // Everything that identifies the QUERY, with the page zeroed out: two
126
266
  // fetches that differ only by page belong to the same accumulated list.
127
267
  types.variableDeclaration('const', [
128
- types.variableDeclarator(types.identifier('sig'), types.callExpression(types.memberExpression(types.identifier('JSON'), types.identifier('stringify')), [
129
- types.objectExpression([
130
- types.spreadElement(types.identifier('params')),
131
- types.objectProperty(types.identifier('page'), types.numericLiteral(0)),
132
- ]),
133
- ])),
268
+ types.variableDeclarator(types.identifier('sig'), buildQuerySignature()),
134
269
  ]),
135
- types.ifStatement(types.binaryExpression('!==', types.memberExpression(accumCurrent(), types.identifier('sig')), types.identifier('sig')), types.blockStatement([
136
- types.expressionStatement(types.assignmentExpression('=', accumCurrent(), types.objectExpression([
270
+ // The request the list stands on now, recorded when it was made.
271
+ types.variableDeclaration('const', [
272
+ types.variableDeclarator(types.identifier('latest'), types.logicalExpression('||', types.memberExpression(accumCurrent(), types.identifier('latest')), types.objectExpression([
137
273
  types.objectProperty(types.identifier('sig'), types.identifier('sig'), false, true),
138
- types.objectProperty(types.identifier('pages'), types.objectExpression([])),
274
+ types.objectProperty(types.identifier('page'), types.identifier('page'), false, true),
139
275
  ]))),
276
+ ]),
277
+ // Only its answer is kept: an earlier query's, or a page past the one a
278
+ // filter / sort / search change restarted the list at, changes nothing.
279
+ types.ifStatement(types.logicalExpression('&&', types.binaryExpression('===', types.identifier('sig'), latestOf('sig')), types.binaryExpression('<=', types.identifier('page'), latestOf('page'))), types.blockStatement([
280
+ types.ifStatement(types.binaryExpression('!==', types.memberExpression(accumCurrent(), types.identifier('sig')), types.identifier('sig')), types.blockStatement([
281
+ types.expressionStatement(types.assignmentExpression('=', types.memberExpression(accumCurrent(), types.identifier('sig')), types.identifier('sig'))),
282
+ types.expressionStatement(types.assignmentExpression('=', accumPages(), types.objectExpression([]))),
283
+ ])),
284
+ types.expressionStatement(types.assignmentExpression('=', types.memberExpression(accumPages(), types.identifier('page'), true), types.identifier('rows'))),
285
+ // A page that came back short is the last one. This is the only
286
+ // end-of-data signal a data source that cannot count ever gives.
287
+ types.ifStatement(types.binaryExpression('===', types.identifier('page'), latestOf('page')), types.blockStatement([
288
+ types.expressionStatement(types.callExpression(types.identifier(vars.setHasMoreFlagVar), [
289
+ types.binaryExpression('>=', types.memberExpression(types.identifier('rows'), types.identifier('length')), types.numericLiteral(perPage)),
290
+ ])),
291
+ ])),
140
292
  ])),
141
- types.expressionStatement(types.assignmentExpression('=', types.memberExpression(accumPages(), types.identifier('page'), true), types.identifier('rows'))),
142
- // A page that came back short is the last one. This is the only
143
- // end-of-data signal a data source that cannot count ever gives.
144
- types.expressionStatement(types.callExpression(types.identifier(vars.setHasMoreFlagVar), [
145
- types.binaryExpression('>=', types.memberExpression(types.identifier('rows'), types.identifier('length')), types.numericLiteral(perPage)),
146
- ])),
147
- // Every page held so far, flattened in page order — a numeric sort, so
148
- // page 10 does not land between 1 and 2. This is what DataProvider stores
149
- // as its data, and so what the list renders.
293
+ // The pages of the query on show, up to the page the list stands on; all
294
+ // of them while the latest query has not answered yet.
295
+ types.variableDeclaration('const', [
296
+ types.variableDeclarator(types.identifier('last'), types.conditionalExpression(types.binaryExpression('===', types.memberExpression(accumCurrent(), types.identifier('sig')), latestOf('sig')), latestOf('page'), types.identifier('Infinity'))),
297
+ ]),
298
+ // This is what DataProvider stores as its data, and so what the list renders.
150
299
  types.returnStatement(rowsPath ? writeAtPath(payload(), rowsPath, accumulatedRows) : accumulatedRows),
151
300
  ]));
152
301
  };
@@ -189,20 +338,76 @@ export var buildSentinelObserverEffect = function (vars, maxPagesVar, buildAdvan
189
338
  types.arrayExpression([types.identifier(vars.hasMoreVar), types.identifier(maxPagesVar)]),
190
339
  ]));
191
340
  };
341
+ var styleAttribute = function (entries) {
342
+ return types.jsxAttribute(types.jsxIdentifier('style'), types.jsxExpressionContainer(types.objectExpression(Object.entries(entries).map(function (_a) {
343
+ var key = _a[0], value = _a[1];
344
+ return types.objectProperty(types.identifier(key), typeof value === 'number' ? types.numericLiteral(value) : types.stringLiteral(value));
345
+ }))));
346
+ };
347
+ var sentinelTag = function (tag, attributes, children) {
348
+ if (children === void 0) { children = []; }
349
+ return types.jsxElement(types.jsxOpeningElement(types.jsxIdentifier(tag), attributes, children.length === 0), children.length === 0 ? null : types.jsxClosingElement(types.jsxIdentifier(tag)), children, children.length === 0);
350
+ };
351
+ /** Parents whose content is phrasing only: a `<div>` in one closes it in the parser. */
352
+ var PHRASING_PARENTS = new Set([
353
+ 'p',
354
+ 'span',
355
+ 'a',
356
+ 'button',
357
+ 'label',
358
+ 'legend',
359
+ 'caption',
360
+ 'h1',
361
+ 'h2',
362
+ 'h3',
363
+ 'h4',
364
+ 'h5',
365
+ 'h6',
366
+ 'strong',
367
+ 'em',
368
+ 'b',
369
+ 'i',
370
+ 'small',
371
+ ]);
192
372
  /**
193
373
  * `<div ref={ds_N_sentinelRef} aria-hidden="true" style={{ height: '1px' }} />`
194
374
  *
195
375
  * An invisible one-pixel row after the list. It is generated rather than
196
376
  * authored because it is not a control — there is nothing to style or click,
197
377
  * only a position in the document for the observer to watch.
378
+ *
379
+ * It takes the element its parent may hold: a table section holds rows, a
380
+ * list holds items, a paragraph holds phrasing. A `<div>` among a table's
381
+ * rows is moved out of the table by the parser, so the server's markup and
382
+ * the client's tree differ and React's hydration fails on every such list.
198
383
  */
199
- export var buildSentinelElement = function (vars) {
200
- return types.jsxElement(types.jsxOpeningElement(types.jsxIdentifier('div'), [
384
+ export var buildSentinelElement = function (vars, parentTag) {
385
+ if (parentTag === void 0) { parentTag = null; }
386
+ var observed = [
201
387
  types.jsxAttribute(types.jsxIdentifier('ref'), types.jsxExpressionContainer(types.identifier(vars.sentinelRefVar))),
202
388
  types.jsxAttribute(types.jsxIdentifier('aria-hidden'), types.stringLiteral('true')),
203
- types.jsxAttribute(types.jsxIdentifier('style'), types.jsxExpressionContainer(types.objectExpression([
204
- types.objectProperty(types.identifier('height'), types.stringLiteral('1px')),
205
- ]))),
206
- ], true), null, [], true);
389
+ ];
390
+ var emptyCell = function () { return sentinelTag('td', [styleAttribute({ padding: 0, border: 0 })]); };
391
+ switch (parentTag) {
392
+ case 'tbody':
393
+ case 'thead':
394
+ case 'tfoot':
395
+ return sentinelTag('tr', __spreadArray(__spreadArray([], observed, true), [styleAttribute({ height: '1px' })], false), [emptyCell()]);
396
+ case 'table':
397
+ return sentinelTag('tbody', __spreadArray(__spreadArray([], observed, true), [styleAttribute({ height: '1px' })], false), [sentinelTag('tr', [], [emptyCell()])]);
398
+ case 'tr':
399
+ return sentinelTag('td', __spreadArray(__spreadArray([], observed, true), [styleAttribute({ height: '1px', padding: 0 })], false));
400
+ case 'ul':
401
+ case 'ol':
402
+ case 'menu':
403
+ return sentinelTag('li', __spreadArray(__spreadArray([], observed, true), [styleAttribute({ height: '1px', listStyle: 'none' })], false));
404
+ default:
405
+ if (parentTag && PHRASING_PARENTS.has(parentTag)) {
406
+ return sentinelTag('span', __spreadArray(__spreadArray([], observed, true), [
407
+ styleAttribute({ display: 'block', height: '1px' }),
408
+ ], false));
409
+ }
410
+ return sentinelTag('div', __spreadArray(__spreadArray([], observed, true), [styleAttribute({ height: '1px' })], false));
411
+ }
207
412
  };
208
413
  //# sourceMappingURL=infinite-scroll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"infinite-scroll.js","sourceRoot":"","sources":["../../src/infinite-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AA6BrC,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,KAAa,IAAyB,OAAA,CAAC;IAC3E,WAAW,EAAE,aAAM,KAAK,cAAW;IACnC,cAAc,EAAE,aAAM,KAAK,iBAAc;IACzC,iBAAiB,EAAE,gBAAS,KAAK,iBAAc;IAC/C,UAAU,EAAE,aAAM,KAAK,aAAU;IACjC,cAAc,EAAE,aAAM,KAAK,iBAAc;CAC1C,CAAC,EAN0E,CAM1E,CAAA;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,IAAM,+BAA+B,GAAG,UAC7C,IAAwB,EACxB,WAAmB,EACnB,eAAiC,EACjC,eAAwB;IAExB,IAAM,YAAY,GAAsB;QACtC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAClC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC/C,KAAK,CAAC,gBAAgB,CAAC;oBACrB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBACtE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;iBAC5E,CAAC;aACH,CAAC,CACH;SACF,CAAC;QACF,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,YAAY,CAAC;gBACjB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;gBACrC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;aACzC,CAAC,EACF,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CACjF;SACF,CAAC;QACF,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EACjC,KAAK,CAAC,iBAAiB,CACrB,IAAI,EACJ,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EACrC,KAAK,CAAC,iBAAiB,CACrB,IAAI,EACJ,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EACrF,KAAK,CAAC,gBAAgB,CACpB,GAAG,EACH,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAqB,EAC1D,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAC9B,CACF,CACF,CACF;SACF,CAAC;KACH,CAAA;IAED,IAAI,eAAe,EAAE;QACnB,YAAY,CAAC,IAAI,CACf,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EACrC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CACxE;SACF,CAAC,CACH,CAAA;KACF;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,IAAM,cAAc,GAAG,UAAC,OAAe,IAAc,OAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAArB,CAAqB,CAAA;AAE1E,IAAM,WAAW,GAAG,UAAC,MAAwB,EAAE,OAAe;IAC5D,OAAA,cAAc,CAAC,OAAO,CAAC;QACrB,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QAC3F,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAClC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;YAChF,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AAJpF,CAIoF,CAAA;AAEtF,sDAAsD;AACtD,IAAM,UAAU,GAAG,UAAC,OAAyB,EAAE,IAAc;IAC3D,OAAA,IAAI,CAAC,MAAM,CAAmB,UAAC,MAAM,EAAE,OAAO,IAAK,OAAA,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAA5B,CAA4B,EAAE,OAAO,CAAC;AAAzF,CAAyF,CAAA;AAE3F;;;;GAIG;AACH,IAAM,WAAW,GAAG,UAClB,IAAsB,EACtB,IAAc,EACd,KAAuB;IAEvB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,KAAK,CAAA;KACb;IACM,IAAA,OAAO,GAAa,IAAI,GAAjB,EAAK,IAAI,GAAI,IAAI,SAAR,CAAQ;IAC/B,IAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IACzF,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,KAAK,CAAC,cAAc,CACzB,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAC9E;YACE,KAAK,CAAC,eAAe,CAAC;gBACpB,KAAK,CAAC,aAAa,CACjB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CACtF;aACF,CAAC;YACF,KAAK,CAAC,gBAAgB,CAAC;gBACrB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC;aACnE,CAAC;SACH,CACF,CAAA;KACF;IACD,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAC5B,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAC3F,KAAK,CACN;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,IAAM,gCAAgC,GAAG,UAC9C,IAAwB,EACxB,OAAe,EACf,SAAoB;IAEpB,IAAM,YAAY,GAAG;QACnB,OAAA,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAAvF,CAAuF,CAAA;IACzF,IAAM,UAAU,GAAG;QACjB,OAAA,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAAjE,CAAiE,CAAA;IACnE,IAAM,OAAO,GAAG;QACd,OAAA,KAAK,CAAC,wBAAwB,CAC5B,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAC5B,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EACxB,KAAK,EACL,IAAI,CACL;IALD,CAKC,CAAA;IACH,IAAM,QAAQ,GAAG,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAE1D,IAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAC1C,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC5E,CAAC,UAAU,EAAE,CAAC,CACf,EACD,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CACxB,EACD,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAC7B,EACD,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CACzB,EACD;QACE,KAAK,CAAC,uBAAuB,CAC3B,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAC9C,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAC1E;KACF,CACF,EACD,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAC3B,EACD;QACE,KAAK,CAAC,uBAAuB,CAC3B,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAChD,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAC3E,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CACpE,CACF;QACD,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;KAC1B,CACF,CAAA;IAED,OAAO,KAAK,CAAC,uBAAuB,CAClC,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAC9B,KAAK,CAAC,cAAc,CAAC;QACnB,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EACxB,KAAK,CAAC,iBAAiB,CACrB,IAAI,EACJ,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EACtD,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAC1B,CACF;SACF,CAAC;QACF,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EACxB,KAAK,CAAC,iBAAiB,CACrB,IAAI,EACJ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC/C,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC7E,CAAC,EACF,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CACxB,CACF;SACF,CAAC;QACF,sEAAsE;QACtE,wEAAwE;QACxE,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EACvB,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAC/E;gBACE,KAAK,CAAC,gBAAgB,CAAC;oBACrB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAC/C,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACxE,CAAC;aACH,CACF,CACF;SACF,CAAC;QACF,KAAK,CAAC,WAAW,CACf,KAAK,CAAC,gBAAgB,CACpB,KAAK,EACL,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAC/D,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CACxB,EACD,KAAK,CAAC,cAAc,CAAC;YACnB,KAAK,CAAC,mBAAmB,CACvB,KAAK,CAAC,oBAAoB,CACxB,GAAG,EACH,YAAY,EAAE,EACd,KAAK,CAAC,gBAAgB,CAAC;gBACrB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;gBACnF,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;aAC5E,CAAC,CACH,CACF;SACF,CAAC,CACH;QACD,KAAK,CAAC,mBAAmB,CACvB,KAAK,CAAC,oBAAoB,CACxB,GAAG,EACH,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EACpE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CACzB,CACF;QACD,gEAAgE;QAChE,iEAAiE;QACjE,KAAK,CAAC,mBAAmB,CACvB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAC7D,KAAK,CAAC,gBAAgB,CACpB,IAAI,EACJ,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAC5E,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAC9B;SACF,CAAC,CACH;QACD,uEAAuE;QACvE,0EAA0E;QAC1E,6CAA6C;QAC7C,KAAK,CAAC,eAAe,CACnB,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAC/E;KACF,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,IAAM,2BAA2B,GAAG,UACzC,IAAwB,EACxB,WAAmB,EACnB,yBAAgD;IAEhD,OAAA,KAAK,CAAC,mBAAmB,CACvB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QAClD,KAAK,CAAC,uBAAuB,CAC3B,EAAE,EACF,KAAK,CAAC,cAAc,CAAC;YACnB,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EACtB,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EACrC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAC5B,CACF;aACF,CAAC;YACF,kEAAkE;YAClE,wBAAwB;YACxB,KAAK,CAAC,WAAW,CACf,KAAK,CAAC,iBAAiB,CACrB,IAAI,EACJ,KAAK,CAAC,iBAAiB,CACrB,IAAI,EACJ,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EACxD,KAAK,CAAC,gBAAgB,CACpB,KAAK,EACL,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,EACzE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CACjC,CACF,EACD,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CACpE,EACD,KAAK,CAAC,eAAe,EAAE,CACxB;YACD,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBACjC,KAAK,CAAC,kBAAkB,CACtB,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAC5B,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;oBAC5D,KAAK,CAAC,uBAAuB,CAC3B,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAC7B,KAAK,CAAC,cAAc,CAAC;wBACnB,KAAK,CAAC,mBAAmB,CACvB,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAC3B,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAC5B,EACD;4BACE,KAAK,CAAC,uBAAuB,CAC3B,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAC3B,KAAK,CAAC,cAAc,CAAC;gCACnB,KAAK,CAAC,WAAW,CACf,KAAK,CAAC,eAAe,CACnB,GAAG,EACH,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EACzB,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CACnC,EACD,IAAI,CACL,EACD,KAAK,CAAC,eAAe,EAAE,CACxB;gCACD,yBAAyB,EAAE;6BAC5B,CAAC,CACH;yBACF,CACF,CACF;qBACF,CAAC,CACH;oBACD,KAAK,CAAC,gBAAgB,CAAC;wBACrB,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAC9B,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAC7B;qBACF,CAAC;iBACH,CAAC,CACH;aACF,CAAC;YACF,KAAK,CAAC,mBAAmB,CACvB,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EACjF,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CACzB,CACF;YACD,KAAK,CAAC,eAAe,CACnB,KAAK,CAAC,uBAAuB,CAC3B,EAAE,EACF,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAC5B,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAC/B,EACD,EAAE,CACH,CACF,CACF;SACF,CAAC,CACH;QACD,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;KAC1F,CAAC,CACH;AAnGD,CAmGC,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,IAAwB;IAC3D,OAAA,KAAK,CAAC,UAAU,CACd,KAAK,CAAC,iBAAiB,CACrB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAC1B;QACE,KAAK,CAAC,YAAY,CAChB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAC1B,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CACpE;QACD,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnF,KAAK,CAAC,YAAY,CAChB,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAC5B,KAAK,CAAC,sBAAsB,CAC1B,KAAK,CAAC,gBAAgB,CAAC;YACrB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7E,CAAC,CACH,CACF;KACF,EACD,IAAI,CACL,EACD,IAAI,EACJ,EAAE,EACF,IAAI,CACL;AAvBD,CAuBC,CAAA"}
1
+ {"version":3,"file":"infinite-scroll.js","sourceRoot":"","sources":["../../src/infinite-scroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Whether a table is one of those listing tables, so its rows are told apart
3
+ * by `id` even when the project saved no columns for it (see `row-order.ts`).
4
+ */
5
+ export declare const isListingTableWithId: (tableName: string) => boolean;
6
+ /**
7
+ * Appended to every sorted column: a row without a value comes after the
8
+ * rows with one, whichever the direction. PostgreSQL puts NULLs FIRST in a
9
+ * descending order, so "longest read first" opened on the posts without a
10
+ * reading time. Only on the ORDER BY a fetcher tries first — its plain-column
11
+ * fallback leaves it out, for a database that rejects the clause.
12
+ */
13
+ export declare const SORT_NULLS_LAST_SQL = " NULLS LAST";
14
+ //# sourceMappingURL=list-sort-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sort-order.d.ts","sourceRoot":"","sources":["../../src/list-sort-order.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,cAAe,MAAM,KAAG,OAClB,CAAA;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,gBAAgB,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { PRODUCTS_TABLE_NAME } from './product-price-sort';
2
+ /**
3
+ * How a generated list route orders the rows a visitor's sort leaves tied or
4
+ * empty, in the SQL fetchers that serve the platform's listing pages
5
+ * (`teleport.ts`, `postgresql.ts`).
6
+ */
7
+ /**
8
+ * The platform tables whose listing pages offer visitors a sort — the
9
+ * products page, the blog listing, the booking page — each with an `id` from
10
+ * its first migration.
11
+ */
12
+ var LISTING_TABLES_WITH_ID = new Set([
13
+ PRODUCTS_TABLE_NAME,
14
+ 'teleport_blog_posts',
15
+ 'teleport_booking_items',
16
+ ]);
17
+ /**
18
+ * Whether a table is one of those listing tables, so its rows are told apart
19
+ * by `id` even when the project saved no columns for it (see `row-order.ts`).
20
+ */
21
+ export var isListingTableWithId = function (tableName) {
22
+ return LISTING_TABLES_WITH_ID.has(tableName);
23
+ };
24
+ /**
25
+ * Appended to every sorted column: a row without a value comes after the
26
+ * rows with one, whichever the direction. PostgreSQL puts NULLs FIRST in a
27
+ * descending order, so "longest read first" opened on the posts without a
28
+ * reading time. Only on the ORDER BY a fetcher tries first — its plain-column
29
+ * fallback leaves it out, for a database that rejects the clause.
30
+ */
31
+ export var SORT_NULLS_LAST_SQL = ' NULLS LAST';
32
+ //# sourceMappingURL=list-sort-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sort-order.js","sourceRoot":"","sources":["../../src/list-sort-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D;;;;GAIG;AAEH;;;;GAIG;AACH,IAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC;IAC1D,mBAAmB;IACnB,qBAAqB;IACrB,wBAAwB;CACzB,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,SAAiB;IACpD,OAAA,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;AAArC,CAAqC,CAAA;AAEvC;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,aAAa,CAAA"}