@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.
- package/__tests__/_helpers/first-page-runtime.ts +184 -0
- package/__tests__/_helpers/pagination-widget-fixture.ts +154 -5
- package/__tests__/booking-item-transform.test.ts +120 -0
- package/__tests__/browser-row-policy.test.ts +210 -4
- package/__tests__/data-source-request-locale.test.ts +4 -3
- package/__tests__/fetchers.test.ts +7 -3
- package/__tests__/fixed-list-sort.test.ts +1 -1
- package/__tests__/infinite-scroll.test.ts +363 -9
- package/__tests__/list-sort-order.test.ts +61 -0
- package/__tests__/null-filter-where.test.ts +132 -0
- package/__tests__/page-data-visitor-read.test.ts +196 -0
- package/__tests__/pg-date-parser.test.ts +73 -0
- package/__tests__/plain-list-sort.test.ts +2 -2
- package/__tests__/plain-list-starting-sort.test.ts +323 -0
- package/__tests__/product-price-sort.ts +11 -6
- package/__tests__/range-control.test.ts +159 -0
- package/__tests__/refetch-loading-state.test.ts +158 -2
- package/__tests__/search-input-marker.test.ts +86 -0
- package/__tests__/search-url-sync.test.ts +34 -8
- package/__tests__/starting-sort-first-page.test.ts +285 -0
- package/__tests__/table-read-route-protected-tables.test.ts +33 -3
- package/dist/cjs/cache/ast.d.ts +2 -0
- package/dist/cjs/cache/ast.d.ts.map +1 -1
- package/dist/cjs/cache/ast.js +5 -2
- package/dist/cjs/cache/ast.js.map +1 -1
- package/dist/cjs/count-effect.d.ts +7 -1
- package/dist/cjs/count-effect.d.ts.map +1 -1
- package/dist/cjs/count-effect.js +15 -5
- package/dist/cjs/count-effect.js.map +1 -1
- package/dist/cjs/data-source-fetchers.d.ts.map +1 -1
- package/dist/cjs/data-source-fetchers.js +10 -2
- package/dist/cjs/data-source-fetchers.js.map +1 -1
- package/dist/cjs/fetchers/pg-client-import.d.ts +12 -0
- package/dist/cjs/fetchers/pg-client-import.d.ts.map +1 -0
- package/dist/cjs/fetchers/pg-client-import.js +15 -0
- package/dist/cjs/fetchers/pg-client-import.js.map +1 -0
- package/dist/cjs/fetchers/postgresql.d.ts.map +1 -1
- package/dist/cjs/fetchers/postgresql.js +3 -1
- package/dist/cjs/fetchers/postgresql.js.map +1 -1
- package/dist/cjs/fetchers/raw-query.d.ts.map +1 -1
- package/dist/cjs/fetchers/raw-query.js +2 -1
- package/dist/cjs/fetchers/raw-query.js.map +1 -1
- package/dist/cjs/fetchers/teleport.d.ts.map +1 -1
- package/dist/cjs/fetchers/teleport.js +4 -2
- package/dist/cjs/fetchers/teleport.js.map +1 -1
- package/dist/cjs/fetchers/utils/browser-row-policy.d.ts.map +1 -1
- package/dist/cjs/fetchers/utils/browser-row-policy.js +5 -1
- package/dist/cjs/fetchers/utils/browser-row-policy.js.map +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +14 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/infinite-scroll.d.ts +89 -4
- package/dist/cjs/infinite-scroll.d.ts.map +1 -1
- package/dist/cjs/infinite-scroll.js +243 -33
- package/dist/cjs/infinite-scroll.js.map +1 -1
- package/dist/cjs/list-sort-order.d.ts +14 -0
- package/dist/cjs/list-sort-order.d.ts.map +1 -0
- package/dist/cjs/list-sort-order.js +36 -0
- package/dist/cjs/list-sort-order.js.map +1 -0
- package/dist/cjs/loading-state.d.ts +23 -2
- package/dist/cjs/loading-state.d.ts.map +1 -1
- package/dist/cjs/loading-state.js +50 -15
- package/dist/cjs/loading-state.js.map +1 -1
- package/dist/cjs/pagination-controls.d.ts +22 -3
- package/dist/cjs/pagination-controls.d.ts.map +1 -1
- package/dist/cjs/pagination-controls.js +29 -3
- package/dist/cjs/pagination-controls.js.map +1 -1
- package/dist/cjs/pagination-plugin.d.ts.map +1 -1
- package/dist/cjs/pagination-plugin.js +336 -164
- package/dist/cjs/pagination-plugin.js.map +1 -1
- package/dist/cjs/range-control.d.ts +45 -0
- package/dist/cjs/range-control.d.ts.map +1 -0
- package/dist/cjs/range-control.js +165 -0
- package/dist/cjs/range-control.js.map +1 -0
- package/dist/cjs/row-order.d.ts +3 -2
- package/dist/cjs/row-order.d.ts.map +1 -1
- package/dist/cjs/row-order.js +5 -4
- package/dist/cjs/row-order.js.map +1 -1
- package/dist/cjs/search-input.d.ts +42 -0
- package/dist/cjs/search-input.d.ts.map +1 -0
- package/dist/cjs/search-input.js +158 -0
- package/dist/cjs/search-input.js.map +1 -0
- package/dist/cjs/sort-utils.d.ts +53 -1
- package/dist/cjs/sort-utils.d.ts.map +1 -1
- package/dist/cjs/sort-utils.js +105 -13
- package/dist/cjs/sort-utils.js.map +1 -1
- package/dist/cjs/transformations/booking-item.d.ts +24 -0
- package/dist/cjs/transformations/booking-item.d.ts.map +1 -0
- package/dist/cjs/transformations/booking-item.js +27 -0
- package/dist/cjs/transformations/booking-item.js.map +1 -0
- package/dist/cjs/transformations/index.d.ts +4 -2
- package/dist/cjs/transformations/index.d.ts.map +1 -1
- package/dist/cjs/transformations/index.js +14 -5
- package/dist/cjs/transformations/index.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/utils.d.ts +3 -2
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +48 -18
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/cache/ast.d.ts +2 -0
- package/dist/esm/cache/ast.d.ts.map +1 -1
- package/dist/esm/cache/ast.js +3 -1
- package/dist/esm/cache/ast.js.map +1 -1
- package/dist/esm/count-effect.d.ts +7 -1
- package/dist/esm/count-effect.d.ts.map +1 -1
- package/dist/esm/count-effect.js +15 -5
- package/dist/esm/count-effect.js.map +1 -1
- package/dist/esm/data-source-fetchers.d.ts.map +1 -1
- package/dist/esm/data-source-fetchers.js +10 -2
- package/dist/esm/data-source-fetchers.js.map +1 -1
- package/dist/esm/fetchers/pg-client-import.d.ts +12 -0
- package/dist/esm/fetchers/pg-client-import.d.ts.map +1 -0
- package/dist/esm/fetchers/pg-client-import.js +12 -0
- package/dist/esm/fetchers/pg-client-import.js.map +1 -0
- package/dist/esm/fetchers/postgresql.d.ts.map +1 -1
- package/dist/esm/fetchers/postgresql.js +3 -1
- package/dist/esm/fetchers/postgresql.js.map +1 -1
- package/dist/esm/fetchers/raw-query.d.ts.map +1 -1
- package/dist/esm/fetchers/raw-query.js +2 -1
- package/dist/esm/fetchers/raw-query.js.map +1 -1
- package/dist/esm/fetchers/teleport.d.ts.map +1 -1
- package/dist/esm/fetchers/teleport.js +4 -2
- package/dist/esm/fetchers/teleport.js.map +1 -1
- package/dist/esm/fetchers/utils/browser-row-policy.d.ts.map +1 -1
- package/dist/esm/fetchers/utils/browser-row-policy.js +6 -2
- package/dist/esm/fetchers/utils/browser-row-policy.js.map +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +14 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/infinite-scroll.d.ts +89 -4
- package/dist/esm/infinite-scroll.d.ts.map +1 -1
- package/dist/esm/infinite-scroll.js +237 -32
- package/dist/esm/infinite-scroll.js.map +1 -1
- package/dist/esm/list-sort-order.d.ts +14 -0
- package/dist/esm/list-sort-order.d.ts.map +1 -0
- package/dist/esm/list-sort-order.js +32 -0
- package/dist/esm/list-sort-order.js.map +1 -0
- package/dist/esm/loading-state.d.ts +23 -2
- package/dist/esm/loading-state.d.ts.map +1 -1
- package/dist/esm/loading-state.js +50 -15
- package/dist/esm/loading-state.js.map +1 -1
- package/dist/esm/pagination-controls.d.ts +22 -3
- package/dist/esm/pagination-controls.d.ts.map +1 -1
- package/dist/esm/pagination-controls.js +28 -2
- package/dist/esm/pagination-controls.js.map +1 -1
- package/dist/esm/pagination-plugin.d.ts.map +1 -1
- package/dist/esm/pagination-plugin.js +340 -168
- package/dist/esm/pagination-plugin.js.map +1 -1
- package/dist/esm/range-control.d.ts +45 -0
- package/dist/esm/range-control.d.ts.map +1 -0
- package/dist/esm/range-control.js +137 -0
- package/dist/esm/range-control.js.map +1 -0
- package/dist/esm/row-order.d.ts +3 -2
- package/dist/esm/row-order.d.ts.map +1 -1
- package/dist/esm/row-order.js +5 -4
- package/dist/esm/row-order.js.map +1 -1
- package/dist/esm/search-input.d.ts +42 -0
- package/dist/esm/search-input.d.ts.map +1 -0
- package/dist/esm/search-input.js +129 -0
- package/dist/esm/search-input.js.map +1 -0
- package/dist/esm/sort-utils.d.ts +53 -1
- package/dist/esm/sort-utils.d.ts.map +1 -1
- package/dist/esm/sort-utils.js +100 -12
- package/dist/esm/sort-utils.js.map +1 -1
- package/dist/esm/transformations/booking-item.d.ts +24 -0
- package/dist/esm/transformations/booking-item.d.ts.map +1 -0
- package/dist/esm/transformations/booking-item.js +23 -0
- package/dist/esm/transformations/booking-item.js.map +1 -0
- package/dist/esm/transformations/index.d.ts +4 -2
- package/dist/esm/transformations/index.d.ts.map +1 -1
- package/dist/esm/transformations/index.js +14 -5
- package/dist/esm/transformations/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts +3 -2
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +49 -19
- package/dist/esm/utils.js.map +1 -1
- package/package.json +5 -5
- package/src/cache/ast.ts +4 -1
- package/src/count-effect.ts +31 -8
- package/src/data-source-fetchers.ts +33 -14
- package/src/fetchers/pg-client-import.ts +16 -0
- package/src/fetchers/postgresql.ts +15 -9
- package/src/fetchers/raw-query.ts +2 -1
- package/src/fetchers/teleport.ts +19 -10
- package/src/fetchers/utils/browser-row-policy.ts +79 -5
- package/src/index.ts +8 -2
- package/src/infinite-scroll.ts +420 -81
- package/src/list-sort-order.ts +34 -0
- package/src/loading-state.ts +85 -13
- package/src/pagination-controls.ts +26 -3
- package/src/pagination-plugin.ts +532 -218
- package/src/range-control.ts +207 -0
- package/src/row-order.ts +5 -4
- package/src/search-input.ts +190 -0
- package/src/sort-utils.ts +164 -21
- package/src/transformations/booking-item.ts +71 -0
- package/src/transformations/index.ts +25 -2
- package/src/utils.ts +55 -18
|
@@ -50,6 +50,14 @@ import * as types from '@babel/types';
|
|
|
50
50
|
* Nothing changes for a provider that is idle or mounting: `isFetching` starts
|
|
51
51
|
* at `false`, so the server render and the first client render are identical
|
|
52
52
|
* (no hydration mismatch) and the `initialData` fast path is untouched.
|
|
53
|
+
*
|
|
54
|
+
* An appending list (infinite scroll, Load more) is the exception to "show the
|
|
55
|
+
* loading slot while a request is in flight": its next page belongs BELOW the
|
|
56
|
+
* rows on show. Swapping those rows for the loading slot until the page arrived
|
|
57
|
+
* collapsed the list on every append — the page jumped up under the visitor's
|
|
58
|
+
* scroll. Such a list also tracks whether the request in flight only appends
|
|
59
|
+
* (`isAppendingVar`) and keeps its rows through it; the loading slot replaces
|
|
60
|
+
* them only when the list loads afresh (a filter, sort or search change).
|
|
53
61
|
*/
|
|
54
62
|
export interface LoadingStateVars {
|
|
55
63
|
/** Boolean state: `true` while at least one fetch for this data source is in flight. */
|
|
@@ -77,6 +85,13 @@ export interface LoadingStateVars {
|
|
|
77
85
|
fetchSeqRefVar: string;
|
|
78
86
|
/** Ref holding the rows of the newest request that settled — what an overtaken one resolves with. */
|
|
79
87
|
latestDataRefVar: string;
|
|
88
|
+
/**
|
|
89
|
+
* Boolean state of an appending list: `true` while the request it made last
|
|
90
|
+
* adds a page to the rows on show, so they stay there through it.
|
|
91
|
+
*/
|
|
92
|
+
isAppendingVar: string;
|
|
93
|
+
/** Setter for `isAppendingVar`. */
|
|
94
|
+
setIsAppendingVar: string;
|
|
80
95
|
}
|
|
81
96
|
export declare function getLoadingStateVars(index: number): LoadingStateVars;
|
|
82
97
|
/**
|
|
@@ -84,13 +99,14 @@ export declare function getLoadingStateVars(index: number): LoadingStateVars;
|
|
|
84
99
|
* `const ds_N_fetchSeq = useRef(0)`
|
|
85
100
|
* `const ds_N_latestData = useRef(undefined)`
|
|
86
101
|
* `const [ds_N_isFetching, setDs_N_isFetching] = useState(false)`
|
|
102
|
+
* `const [ds_N_isAppending, setDs_N_isAppending] = useState(false)` (an appending list)
|
|
87
103
|
*
|
|
88
104
|
* All are stable across renders (ref objects and a `useState` setter), which
|
|
89
105
|
* is what lets the wrapped `fetchData` keep its empty `useCallback` dependency
|
|
90
106
|
* array — a changing `fetchData` identity would retrigger the provider's fetch
|
|
91
107
|
* effect on every render.
|
|
92
108
|
*/
|
|
93
|
-
export declare function buildLoadingStateDeclarations(vars: LoadingStateVars): types.Statement[];
|
|
109
|
+
export declare function buildLoadingStateDeclarations(vars: LoadingStateVars, appends?: boolean): types.Statement[];
|
|
94
110
|
/**
|
|
95
111
|
* Wires the refetch loading state into a single `DataProvider` JSX element.
|
|
96
112
|
*
|
|
@@ -102,6 +118,11 @@ export declare function buildLoadingStateDeclarations(vars: LoadingStateVars): t
|
|
|
102
118
|
* - `fetchData` missing, not memoized, or not an expression-bodied promise
|
|
103
119
|
* chain — see `findMemoizedFetchDataArrow`.
|
|
104
120
|
* - already wired — keeps a second pass over the same AST idempotent.
|
|
121
|
+
*
|
|
122
|
+
* `appendingRequest` makes it an appending list's: the expression telling,
|
|
123
|
+
* inside `fetchData`, whether the request about to be made only adds a page to
|
|
124
|
+
* the rows on show (see `isAppendingVar`). The caller declares the state with
|
|
125
|
+
* `buildLoadingStateDeclarations(vars, true)`.
|
|
105
126
|
*/
|
|
106
|
-
export declare function applyLoadingStateToDataProvider(dataProvider: any, vars: LoadingStateVars): boolean;
|
|
127
|
+
export declare function applyLoadingStateToDataProvider(dataProvider: any, vars: LoadingStateVars, appendingRequest?: types.Expression): boolean;
|
|
107
128
|
//# sourceMappingURL=loading-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading-state.d.ts","sourceRoot":"","sources":["../../src/loading-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC
|
|
1
|
+
{"version":3,"file":"loading-state.d.ts","sourceRoot":"","sources":["../../src/loading-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,aAAa,EAAE,MAAM,CAAA;IACrB,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;;;;;OASG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,qGAAqG;IACrG,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAUnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,gBAAgB,EACtB,OAAO,GAAE,OAAe,GACvB,KAAK,CAAC,SAAS,EAAE,CA4CnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,+BAA+B,CAE7C,YAAY,EAAE,GAAG,EACjB,IAAI,EAAE,gBAAgB,EACtB,gBAAgB,CAAC,EAAE,KAAK,CAAC,UAAU,GAClC,OAAO,CAiCT"}
|
|
@@ -16,6 +16,8 @@ export function getLoadingStateVars(index) {
|
|
|
16
16
|
inFlightRefVar: "ds_".concat(index, "_fetchesInFlight"),
|
|
17
17
|
fetchSeqRefVar: "ds_".concat(index, "_fetchSeq"),
|
|
18
18
|
latestDataRefVar: "ds_".concat(index, "_latestData"),
|
|
19
|
+
isAppendingVar: "ds_".concat(index, "_isAppending"),
|
|
20
|
+
setIsAppendingVar: "setDs_".concat(index, "_isAppending"),
|
|
19
21
|
};
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
@@ -23,14 +25,16 @@ export function getLoadingStateVars(index) {
|
|
|
23
25
|
* `const ds_N_fetchSeq = useRef(0)`
|
|
24
26
|
* `const ds_N_latestData = useRef(undefined)`
|
|
25
27
|
* `const [ds_N_isFetching, setDs_N_isFetching] = useState(false)`
|
|
28
|
+
* `const [ds_N_isAppending, setDs_N_isAppending] = useState(false)` (an appending list)
|
|
26
29
|
*
|
|
27
30
|
* All are stable across renders (ref objects and a `useState` setter), which
|
|
28
31
|
* is what lets the wrapped `fetchData` keep its empty `useCallback` dependency
|
|
29
32
|
* array — a changing `fetchData` identity would retrigger the provider's fetch
|
|
30
33
|
* effect on every render.
|
|
31
34
|
*/
|
|
32
|
-
export function buildLoadingStateDeclarations(vars) {
|
|
33
|
-
|
|
35
|
+
export function buildLoadingStateDeclarations(vars, appends) {
|
|
36
|
+
if (appends === void 0) { appends = false; }
|
|
37
|
+
var declarations = [
|
|
34
38
|
types.variableDeclaration('const', [
|
|
35
39
|
types.variableDeclarator(types.identifier(vars.inFlightRefVar), types.callExpression(types.identifier('useRef'), [types.numericLiteral(0)])),
|
|
36
40
|
]),
|
|
@@ -47,6 +51,15 @@ export function buildLoadingStateDeclarations(vars) {
|
|
|
47
51
|
]), types.callExpression(types.identifier('useState'), [types.booleanLiteral(false)])),
|
|
48
52
|
]),
|
|
49
53
|
];
|
|
54
|
+
if (appends) {
|
|
55
|
+
declarations.push(types.variableDeclaration('const', [
|
|
56
|
+
types.variableDeclarator(types.arrayPattern([
|
|
57
|
+
types.identifier(vars.isAppendingVar),
|
|
58
|
+
types.identifier(vars.setIsAppendingVar),
|
|
59
|
+
]), types.callExpression(types.identifier('useState'), [types.booleanLiteral(false)])),
|
|
60
|
+
]));
|
|
61
|
+
}
|
|
62
|
+
return declarations;
|
|
50
63
|
}
|
|
51
64
|
/**
|
|
52
65
|
* Wires the refetch loading state into a single `DataProvider` JSX element.
|
|
@@ -59,10 +72,15 @@ export function buildLoadingStateDeclarations(vars) {
|
|
|
59
72
|
* - `fetchData` missing, not memoized, or not an expression-bodied promise
|
|
60
73
|
* chain — see `findMemoizedFetchDataArrow`.
|
|
61
74
|
* - already wired — keeps a second pass over the same AST idempotent.
|
|
75
|
+
*
|
|
76
|
+
* `appendingRequest` makes it an appending list's: the expression telling,
|
|
77
|
+
* inside `fetchData`, whether the request about to be made only adds a page to
|
|
78
|
+
* the rows on show (see `isAppendingVar`). The caller declares the state with
|
|
79
|
+
* `buildLoadingStateDeclarations(vars, true)`.
|
|
62
80
|
*/
|
|
63
81
|
export function applyLoadingStateToDataProvider(
|
|
64
82
|
// tslint:disable-next-line:no-any
|
|
65
|
-
dataProvider, vars) {
|
|
83
|
+
dataProvider, vars, appendingRequest) {
|
|
66
84
|
var _a;
|
|
67
85
|
var attributes = (_a = dataProvider === null || dataProvider === void 0 ? void 0 : dataProvider.openingElement) === null || _a === void 0 ? void 0 : _a.attributes;
|
|
68
86
|
if (!Array.isArray(attributes)) {
|
|
@@ -80,17 +98,17 @@ dataProvider, vars) {
|
|
|
80
98
|
return false;
|
|
81
99
|
}
|
|
82
100
|
if (fetchArrow.body.type === 'CallExpression') {
|
|
83
|
-
fetchArrow.body = buildTrackedFetchBody(fetchArrow.body, vars);
|
|
101
|
+
fetchArrow.body = buildTrackedFetchBody(fetchArrow.body, vars, appendingRequest);
|
|
84
102
|
}
|
|
85
103
|
else if (fetchArrow.body.type === 'BlockStatement') {
|
|
86
|
-
if (!injectTrackingIntoCachedBody(fetchArrow.body, vars)) {
|
|
104
|
+
if (!injectTrackingIntoCachedBody(fetchArrow.body, vars, appendingRequest)) {
|
|
87
105
|
return false;
|
|
88
106
|
}
|
|
89
107
|
}
|
|
90
108
|
else {
|
|
91
109
|
return false;
|
|
92
110
|
}
|
|
93
|
-
setPersistDataDuringLoading(attributes, vars);
|
|
111
|
+
setPersistDataDuringLoading(attributes, vars, !!appendingRequest);
|
|
94
112
|
return true;
|
|
95
113
|
}
|
|
96
114
|
/**
|
|
@@ -106,7 +124,7 @@ dataProvider, vars) {
|
|
|
106
124
|
* Returns `false` when the body is not the shape this module knows how to wrap,
|
|
107
125
|
* so the caller emits no state declarations rather than half-wiring it.
|
|
108
126
|
*/
|
|
109
|
-
function injectTrackingIntoCachedBody(body, vars) {
|
|
127
|
+
function injectTrackingIntoCachedBody(body, vars, appendingRequest) {
|
|
110
128
|
var _a;
|
|
111
129
|
// Idempotent: a second pass over the same AST must not double-count.
|
|
112
130
|
if (containsIdentifier(body, vars.setIsFetchingVar)) {
|
|
@@ -116,7 +134,7 @@ function injectTrackingIntoCachedBody(body, vars) {
|
|
|
116
134
|
if (!networkChain) {
|
|
117
135
|
return false;
|
|
118
136
|
}
|
|
119
|
-
var tracked = buildTrackedFetchBody(networkChain.statement.argument, vars);
|
|
137
|
+
var tracked = buildTrackedFetchBody(networkChain.statement.argument, vars, appendingRequest);
|
|
120
138
|
(_a = body.body).splice.apply(_a, __spreadArray([networkChain.index, 1], tracked.body, false));
|
|
121
139
|
markCacheHitAsNewest(body, vars);
|
|
122
140
|
return true;
|
|
@@ -247,8 +265,11 @@ function findMemoizedFetchDataArrow(attribute) {
|
|
|
247
265
|
* `fetchExpression` is the `fetch(...).then(...).then(...)` chain the generator
|
|
248
266
|
* emitted, so `.finally` is always available on it — the caller only reaches
|
|
249
267
|
* here for a call-expression body.
|
|
268
|
+
*
|
|
269
|
+
* An appending list also records, as the flag goes up, whether this request
|
|
270
|
+
* only appends — `setDs_N_isAppending(<appendingRequest>)`, batched with it.
|
|
250
271
|
*/
|
|
251
|
-
function buildTrackedFetchBody(fetchExpression, vars) {
|
|
272
|
+
function buildTrackedFetchBody(fetchExpression, vars, appendingRequest) {
|
|
252
273
|
var inFlightCount = types.memberExpression(types.identifier(vars.inFlightRefVar), types.identifier('current'));
|
|
253
274
|
var settleHandler = types.arrowFunctionExpression([], types.blockStatement([
|
|
254
275
|
types.expressionStatement(types.assignmentExpression('-=', types.cloneNode(inFlightCount, true), types.numericLiteral(1))),
|
|
@@ -268,21 +289,35 @@ function buildTrackedFetchBody(fetchExpression, vars) {
|
|
|
268
289
|
types.returnStatement(types.identifier(TRACKED_ROWS_IDENTIFIER)),
|
|
269
290
|
]));
|
|
270
291
|
var guardedFetch = types.callExpression(types.memberExpression(fetchExpression, types.identifier('then')), [staleGuard]);
|
|
271
|
-
return types.blockStatement([
|
|
292
|
+
return types.blockStatement(__spreadArray(__spreadArray([
|
|
272
293
|
types.variableDeclaration('const', [
|
|
273
294
|
types.variableDeclarator(types.identifier(TRACKED_SEQ_IDENTIFIER), types.updateExpression('++', refCurrent(vars.fetchSeqRefVar), true)),
|
|
274
295
|
]),
|
|
275
|
-
types.expressionStatement(types.assignmentExpression('+=', types.cloneNode(inFlightCount, true), types.numericLiteral(1)))
|
|
296
|
+
types.expressionStatement(types.assignmentExpression('+=', types.cloneNode(inFlightCount, true), types.numericLiteral(1)))
|
|
297
|
+
], (appendingRequest
|
|
298
|
+
? [
|
|
299
|
+
types.expressionStatement(types.callExpression(types.identifier(vars.setIsAppendingVar), [
|
|
300
|
+
types.cloneNode(appendingRequest, true),
|
|
301
|
+
])),
|
|
302
|
+
]
|
|
303
|
+
: []), true), [
|
|
276
304
|
types.expressionStatement(types.callExpression(types.identifier(vars.setIsFetchingVar), [types.booleanLiteral(true)])),
|
|
277
305
|
types.returnStatement(types.callExpression(types.memberExpression(guardedFetch, types.identifier('finally')), [
|
|
278
306
|
settleHandler,
|
|
279
307
|
])),
|
|
280
|
-
]);
|
|
308
|
+
], false));
|
|
281
309
|
}
|
|
282
|
-
/**
|
|
310
|
+
/**
|
|
311
|
+
* `persistDataDuringLoading={!ds_N_isFetching}` — or, for an appending list,
|
|
312
|
+
* `{!ds_N_isFetching || ds_N_isAppending}` — replacing any existing value.
|
|
313
|
+
*/
|
|
314
|
+
function setPersistDataDuringLoading(
|
|
283
315
|
// tslint:disable-next-line:no-any
|
|
284
|
-
|
|
285
|
-
var
|
|
316
|
+
attributes, vars, appends) {
|
|
317
|
+
var notFetching = types.unaryExpression('!', types.identifier(vars.isFetchingVar), true);
|
|
318
|
+
var attribute = types.jsxAttribute(types.jsxIdentifier('persistDataDuringLoading'), types.jsxExpressionContainer(appends
|
|
319
|
+
? types.logicalExpression('||', notFetching, types.identifier(vars.isAppendingVar))
|
|
320
|
+
: notFetching));
|
|
286
321
|
var existingIndex = attributes.findIndex(
|
|
287
322
|
// tslint:disable-next-line:no-any
|
|
288
323
|
function (attr) { var _a; return (attr === null || attr === void 0 ? void 0 : attr.type) === 'JSXAttribute' && ((_a = attr.name) === null || _a === void 0 ? void 0 : _a.name) === 'persistDataDuringLoading'; });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading-state.js","sourceRoot":"","sources":["../../src/loading-state.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"loading-state.js","sourceRoot":"","sources":["../../src/loading-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,9 +15,27 @@ export declare const PAGINATION_CONTROL_ATTR = "data-tq-pagination-control";
|
|
|
15
15
|
* `'pages'` is the container the page-number buttons are repeated into and
|
|
16
16
|
* `'page'` the single template button inside it. `'ellipsis'` and `'sentinel'`
|
|
17
17
|
* are reserved for an authored gap marker / scroll sentinel; until a builder
|
|
18
|
-
* emits them both runtimes fall back to generating their own.
|
|
18
|
+
* emits them both runtimes fall back to generating their own. `'range'` is a
|
|
19
|
+
* TEXT element ("Showing 1–8 of 12") both runtimes fill with the live row
|
|
20
|
+
* range — see `range-control.ts`.
|
|
19
21
|
*/
|
|
20
|
-
export type PaginationControlKind = 'first' | 'previous' | 'pages' | 'page' | 'ellipsis' | 'next' | 'last' | 'load-more' | 'sentinel';
|
|
22
|
+
export type PaginationControlKind = 'first' | 'previous' | 'pages' | 'page' | 'ellipsis' | 'next' | 'last' | 'load-more' | 'sentinel' | 'range';
|
|
23
|
+
/**
|
|
24
|
+
* Which mapper a `range` control belongs to, when it does not sit inside that
|
|
25
|
+
* mapper's pagination container: the array mapper's editor node id, which the
|
|
26
|
+
* UIDL carries as `nodeId` on the `cms-list-repeater`. A template's footer
|
|
27
|
+
* ("Showing 1–8 of 12") is laid out by the author, not inside a widget, so the
|
|
28
|
+
* container-ownership rule the buttons use cannot reach it.
|
|
29
|
+
*
|
|
30
|
+
* ⛔ Both attribute names must stay identical to the editor's
|
|
31
|
+
* (`array-mapper-pagination-settings.ts`) and the canvas renderer's
|
|
32
|
+
* (`array-mapper-pagination.ts`) copies.
|
|
33
|
+
*/
|
|
34
|
+
export declare const PAGINATION_FOR_ATTR = "data-tq-pagination-for";
|
|
35
|
+
/** The words of a `range` control, with `{from}`, `{to}` and `{total}` placeholders. */
|
|
36
|
+
export declare const RANGE_TEMPLATE_ATTR = "data-tq-range-template";
|
|
37
|
+
/** What a `range` control reads when it carries no template. */
|
|
38
|
+
export declare const DEFAULT_RANGE_TEMPLATE = "{from}\u2013{to} of {total}";
|
|
21
39
|
export declare function readJSXAttributeString(node: any, attrName: string): string;
|
|
22
40
|
/**
|
|
23
41
|
* Depth-first search for one authored pagination control.
|
|
@@ -49,7 +67,8 @@ export declare function removeJSXAttribute(node: any, attrName: string): void;
|
|
|
49
67
|
*
|
|
50
68
|
* Children carrying NO marker are always kept: they are the author's own
|
|
51
69
|
* additions (a page counter, a spacer) and the generator has no business
|
|
52
|
-
* deciding whether they belong.
|
|
70
|
+
* deciding whether they belong. A `range` text is kept in every mode too: the
|
|
71
|
+
* row range is meaningful whether the list pages or appends.
|
|
53
72
|
*/
|
|
54
73
|
export declare function dropInactivePaginationControls(paginationNode: any, activeKinds: PaginationControlKind[]): void;
|
|
55
74
|
//# sourceMappingURL=pagination-controls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination-controls.d.ts","sourceRoot":"","sources":["../../src/pagination-controls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,+BAA+B,CAAA;AAEnE
|
|
1
|
+
{"version":3,"file":"pagination-controls.d.ts","sourceRoot":"","sources":["../../src/pagination-controls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,+BAA+B,CAAA;AAEnE;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAC7B,OAAO,GACP,UAAU,GACV,OAAO,GACP,MAAM,GACN,UAAU,GACV,MAAM,GACN,MAAM,GACN,WAAW,GACX,UAAU,GACV,OAAO,CAAA;AAEX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,2BAA2B,CAAA;AAE3D,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,2BAA2B,CAAA;AAE3D,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,gCAA2B,CAAA;AAO9D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,qBAAqB,EAC3B,eAAe,CAAC,EAAE,MAAM,GACvB,GAAG,CA2BL;AAED,6GAA6G;AAC7G,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,qBAAqB,GAAG,GAAG,EAAE,CAkBvF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAWtD;AAED,wEAAwE;AACxE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,KAAK,CAAC,UAAU,GAC3B,IAAI,CAON;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,GAAG,EACnB,WAAW,EAAE,qBAAqB,EAAE,GACnC,IAAI,CAgBN"}
|
|
@@ -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
|
/**
|
|
3
12
|
* How the generator recognises the pagination controls the builder authored.
|
|
@@ -11,6 +20,22 @@ import * as types from '@babel/types';
|
|
|
11
20
|
* pagination-scroll runtime already identifies its own nodes.
|
|
12
21
|
*/
|
|
13
22
|
export var PAGINATION_CONTROL_ATTR = 'data-tq-pagination-control';
|
|
23
|
+
/**
|
|
24
|
+
* Which mapper a `range` control belongs to, when it does not sit inside that
|
|
25
|
+
* mapper's pagination container: the array mapper's editor node id, which the
|
|
26
|
+
* UIDL carries as `nodeId` on the `cms-list-repeater`. A template's footer
|
|
27
|
+
* ("Showing 1–8 of 12") is laid out by the author, not inside a widget, so the
|
|
28
|
+
* container-ownership rule the buttons use cannot reach it.
|
|
29
|
+
*
|
|
30
|
+
* ⛔ Both attribute names must stay identical to the editor's
|
|
31
|
+
* (`array-mapper-pagination-settings.ts`) and the canvas renderer's
|
|
32
|
+
* (`array-mapper-pagination.ts`) copies.
|
|
33
|
+
*/
|
|
34
|
+
export var PAGINATION_FOR_ATTR = 'data-tq-pagination-for';
|
|
35
|
+
/** The words of a `range` control, with `{from}`, `{to}` and `{total}` placeholders. */
|
|
36
|
+
export var RANGE_TEMPLATE_ATTR = 'data-tq-range-template';
|
|
37
|
+
/** What a `range` control reads when it carries no template. */
|
|
38
|
+
export var DEFAULT_RANGE_TEMPLATE = '{from}–{to} of {total}';
|
|
14
39
|
// tslint:disable:no-any
|
|
15
40
|
// Reads a JSX attribute's literal string value, covering both the plain
|
|
16
41
|
// `attr="value"` form and the `attr={'value'}` container the UIDL printer emits
|
|
@@ -104,10 +129,11 @@ export function removeJSXAttribute(node, attrName) {
|
|
|
104
129
|
*
|
|
105
130
|
* Children carrying NO marker are always kept: they are the author's own
|
|
106
131
|
* additions (a page counter, a spacer) and the generator has no business
|
|
107
|
-
* deciding whether they belong.
|
|
132
|
+
* deciding whether they belong. A `range` text is kept in every mode too: the
|
|
133
|
+
* row range is meaningful whether the list pages or appends.
|
|
108
134
|
*/
|
|
109
135
|
export function dropInactivePaginationControls(paginationNode, activeKinds) {
|
|
110
|
-
var active = new Set(activeKinds);
|
|
136
|
+
var active = new Set(__spreadArray(__spreadArray([], activeKinds, true), ['range'], false));
|
|
111
137
|
var prune = function (node) {
|
|
112
138
|
if (!node || !Array.isArray(node.children)) {
|
|
113
139
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination-controls.js","sourceRoot":"","sources":["../../src/pagination-controls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,IAAM,uBAAuB,GAAG,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"pagination-controls.js","sourceRoot":"","sources":["../../src/pagination-controls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination-plugin.d.ts","sourceRoot":"","sources":["../../src/pagination-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"pagination-plugin.d.ts","sourceRoot":"","sources":["../../src/pagination-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EAIvB,MAAM,4BAA4B,CAAA;AA6rCnC,eAAO,MAAM,qCAAqC,EAAE,sBAAsB,CAAC,EAAE,CA64B5E,CAAA"}
|