@teleporthq/teleport-plugin-next-data-source 0.43.75 → 0.44.0
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/pagination-widget-fixture.ts +87 -4
- package/__tests__/booking-item-transform.test.ts +120 -0
- package/__tests__/browser-row-policy.test.ts +8 -2
- package/__tests__/fetchers.test.ts +1 -1
- package/__tests__/fixed-list-sort.test.ts +1 -1
- package/__tests__/infinite-scroll.test.ts +154 -5
- package/__tests__/list-sort-order.test.ts +61 -0
- package/__tests__/null-filter-where.test.ts +132 -0
- package/__tests__/pg-date-parser.test.ts +73 -0
- package/__tests__/plain-list-sort.test.ts +1 -1
- package/__tests__/product-price-sort.ts +11 -6
- package/__tests__/range-control.test.ts +159 -0
- package/__tests__/search-input-marker.test.ts +86 -0
- package/__tests__/search-url-sync.test.ts +34 -8
- package/__tests__/table-read-route-protected-tables.test.ts +33 -3
- 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/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/infinite-scroll.d.ts +25 -2
- package/dist/cjs/infinite-scroll.d.ts.map +1 -1
- package/dist/cjs/infinite-scroll.js +144 -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/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 +137 -101
- 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/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/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/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/infinite-scroll.d.ts +25 -2
- package/dist/esm/infinite-scroll.d.ts.map +1 -1
- package/dist/esm/infinite-scroll.js +142 -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/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 +138 -102
- 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/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/package.json +5 -5
- package/src/count-effect.ts +31 -8
- 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 +11 -8
- package/src/infinite-scroll.ts +240 -79
- package/src/list-sort-order.ts +34 -0
- package/src/pagination-controls.ts +26 -3
- package/src/pagination-plugin.ts +163 -135
- package/src/range-control.ts +207 -0
- package/src/row-order.ts +5 -4
- package/src/search-input.ts +190 -0
- package/src/transformations/booking-item.ts +71 -0
- package/src/transformations/index.ts +25 -2
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.wireRangeControl = exports.findRangeControls = void 0;
|
|
27
|
+
var types = __importStar(require("@babel/types"));
|
|
28
|
+
var pagination_controls_1 = require("./pagination-controls");
|
|
29
|
+
var PLACEHOLDER = /\{(from|to|total)\}/g;
|
|
30
|
+
var total = function (vars) { return types.identifier(vars.totalVar); };
|
|
31
|
+
var page = function (vars) {
|
|
32
|
+
return types.cloneNode(vars.currentPageExpr, true);
|
|
33
|
+
};
|
|
34
|
+
/** `total === 0 ? 0 : <firstRow>` */
|
|
35
|
+
var unlessEmpty = function (vars, firstRow) {
|
|
36
|
+
return types.conditionalExpression(types.binaryExpression('===', total(vars), types.numericLiteral(0)), types.numericLiteral(0), firstRow);
|
|
37
|
+
};
|
|
38
|
+
var buildFrom = function (vars) {
|
|
39
|
+
return unlessEmpty(vars, vars.infiniteScroll
|
|
40
|
+
? types.numericLiteral(1)
|
|
41
|
+
: types.binaryExpression('+', types.binaryExpression('*', types.binaryExpression('-', page(vars), types.numericLiteral(1)), types.numericLiteral(vars.perPage)), types.numericLiteral(1)));
|
|
42
|
+
};
|
|
43
|
+
/** `Math.min(page * perPage, total)` */
|
|
44
|
+
var buildTo = function (vars) {
|
|
45
|
+
return types.callExpression(types.memberExpression(types.identifier('Math'), types.identifier('min')), [
|
|
46
|
+
types.binaryExpression('*', page(vars), types.numericLiteral(vars.perPage)),
|
|
47
|
+
total(vars),
|
|
48
|
+
]);
|
|
49
|
+
};
|
|
50
|
+
var buildNumber = function (placeholder, vars) {
|
|
51
|
+
var value = placeholder === 'from' ? buildFrom(vars) : placeholder === 'to' ? buildTo(vars) : total(vars);
|
|
52
|
+
return types.callExpression(types.memberExpression(value, types.identifier('toLocaleString')), [
|
|
53
|
+
types.stringLiteral('en-US'),
|
|
54
|
+
]);
|
|
55
|
+
};
|
|
56
|
+
var templateElement = function (text, tail) {
|
|
57
|
+
return types.templateElement({ raw: text.replace(/\\|`|\$\{/g, function (match) { return "\\".concat(match); }), cooked: text }, tail);
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* The JSX printer writes a brace inside a static attribute as `{` /
|
|
61
|
+
* `}` so it is never read as an expression; the placeholders are braces,
|
|
62
|
+
* so the template is read back through that escaping.
|
|
63
|
+
*/
|
|
64
|
+
var decodeBraces = function (text) {
|
|
65
|
+
return text
|
|
66
|
+
.replace(/{|{|{/gi, '{')
|
|
67
|
+
.replace(/}|}|}/gi, '}')
|
|
68
|
+
.replace(/&/g, '&');
|
|
69
|
+
};
|
|
70
|
+
/** The author's template as a template literal, each placeholder a live number. */
|
|
71
|
+
var buildLiveText = function (template, vars) {
|
|
72
|
+
var quasis = [];
|
|
73
|
+
var expressions = [];
|
|
74
|
+
var placeholder = new RegExp(PLACEHOLDER.source, 'g');
|
|
75
|
+
var last = 0;
|
|
76
|
+
var match = placeholder.exec(template);
|
|
77
|
+
while (match) {
|
|
78
|
+
quasis.push(templateElement(template.slice(last, match.index), false));
|
|
79
|
+
expressions.push(buildNumber(match[1], vars));
|
|
80
|
+
last = match.index + match[0].length;
|
|
81
|
+
match = placeholder.exec(template);
|
|
82
|
+
}
|
|
83
|
+
quasis.push(templateElement(template.slice(last), true));
|
|
84
|
+
return types.templateLiteral(quasis, expressions);
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Every `range` control under a component body, in document order. The body is
|
|
88
|
+
* a `BlockStatement`, so the walk has to cross statements, ternaries and the
|
|
89
|
+
* `cond && <jsx/>` of a gated section, not only JSX children.
|
|
90
|
+
*/
|
|
91
|
+
var findRangeControls = function (root) {
|
|
92
|
+
var found = [];
|
|
93
|
+
var traverse = function (node) {
|
|
94
|
+
if (!node || typeof node !== 'object') {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (node.type === 'JSXElement' &&
|
|
98
|
+
(0, pagination_controls_1.readJSXAttributeString)(node, pagination_controls_1.PAGINATION_CONTROL_ATTR) === 'range') {
|
|
99
|
+
found.push(node);
|
|
100
|
+
}
|
|
101
|
+
if (Array.isArray(node.children)) {
|
|
102
|
+
node.children.forEach(traverse);
|
|
103
|
+
}
|
|
104
|
+
if (Array.isArray(node.body)) {
|
|
105
|
+
node.body.forEach(traverse);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
traverse(node.body);
|
|
109
|
+
}
|
|
110
|
+
traverse(node.consequent);
|
|
111
|
+
traverse(node.alternate);
|
|
112
|
+
traverse(node.left);
|
|
113
|
+
traverse(node.right);
|
|
114
|
+
traverse(node.test);
|
|
115
|
+
traverse(node.expression);
|
|
116
|
+
traverse(node.argument);
|
|
117
|
+
};
|
|
118
|
+
traverse(root);
|
|
119
|
+
return found;
|
|
120
|
+
};
|
|
121
|
+
exports.findRangeControls = findRangeControls;
|
|
122
|
+
/**
|
|
123
|
+
* The element's own children as one expression, so they can be the fallback of
|
|
124
|
+
* a ternary: plain text becomes a string, anything richer rides along in a
|
|
125
|
+
* fragment.
|
|
126
|
+
*/
|
|
127
|
+
var drawnText = function (children) {
|
|
128
|
+
var _a;
|
|
129
|
+
var texts = [];
|
|
130
|
+
for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
|
|
131
|
+
var child = children_1[_i];
|
|
132
|
+
if (child.type === 'JSXText') {
|
|
133
|
+
texts.push(child.value);
|
|
134
|
+
}
|
|
135
|
+
else if (child.type === 'JSXExpressionContainer' &&
|
|
136
|
+
((_a = child.expression) === null || _a === void 0 ? void 0 : _a.type) === 'StringLiteral') {
|
|
137
|
+
texts.push(child.expression.value);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return types.jsxFragment(types.jsxOpeningFragment(), types.jsxClosingFragment(), children);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return types.stringLiteral(texts.join('').replace(/\s+/g, ' ').trim());
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* `{total === null ? <drawn text> : `<template with live numbers>`}` in place of
|
|
147
|
+
* the element's children. The marker and template attributes stay on the
|
|
148
|
+
* element, so the published DOM carries the same contract the canvas reads.
|
|
149
|
+
*/
|
|
150
|
+
var wireRangeControl = function (node, vars) {
|
|
151
|
+
var _a;
|
|
152
|
+
var template = decodeBraces((0, pagination_controls_1.readJSXAttributeString)(node, pagination_controls_1.RANGE_TEMPLATE_ATTR)) || pagination_controls_1.DEFAULT_RANGE_TEMPLATE;
|
|
153
|
+
var drawn = drawnText(Array.isArray(node.children) ? node.children : []);
|
|
154
|
+
node.children = [
|
|
155
|
+
types.jsxExpressionContainer(types.conditionalExpression(types.binaryExpression('===', total(vars), types.nullLiteral()), drawn, buildLiveText(template, vars))),
|
|
156
|
+
];
|
|
157
|
+
if (node.openingElement) {
|
|
158
|
+
node.openingElement.selfClosing = false;
|
|
159
|
+
}
|
|
160
|
+
if (!node.closingElement && ((_a = node.openingElement) === null || _a === void 0 ? void 0 : _a.name)) {
|
|
161
|
+
node.closingElement = types.jsxClosingElement(types.cloneNode(node.openingElement.name, true));
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
exports.wireRangeControl = wireRangeControl;
|
|
165
|
+
//# sourceMappingURL=range-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-control.js","sourceRoot":"","sources":["../../src/range-control.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/row-order.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The column that tells a table's rows apart, read from the table the project
|
|
3
|
-
* saved: its primary key, else a column named `id`. The
|
|
4
|
-
*
|
|
3
|
+
* saved: its primary key, else a column named `id`. The platform listing
|
|
4
|
+
* tables (products, blog posts, booking items) have `id` from their first
|
|
5
|
+
* migration. Null when neither is known — then nothing is added,
|
|
5
6
|
* rather than a column that may not exist.
|
|
6
7
|
*/
|
|
7
8
|
export declare const rowIdentityColumn: (config: Record<string, unknown>, tableName: string) => string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-order.d.ts","sourceRoot":"","sources":["../../src/row-order.ts"],"names":[],"mappings":"AAOA
|
|
1
|
+
{"version":3,"file":"row-order.d.ts","sourceRoot":"","sources":["../../src/row-order.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,WACpB,OAAO,MAAM,EAAE,OAAO,CAAC,aACpB,MAAM,KAChB,MAAM,GAAG,IAcX,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,8BAA8B,mBAAoB,MAAM,GAAG,IAAI,KAAG,MAW9E,CAAA"}
|
package/dist/cjs/row-order.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateRowOrderTiebreakHelper = exports.rowIdentityColumn = void 0;
|
|
4
|
-
var
|
|
4
|
+
var list_sort_order_1 = require("./list-sort-order");
|
|
5
5
|
/**
|
|
6
6
|
* The column that tells a table's rows apart, read from the table the project
|
|
7
|
-
* saved: its primary key, else a column named `id`. The
|
|
8
|
-
*
|
|
7
|
+
* saved: its primary key, else a column named `id`. The platform listing
|
|
8
|
+
* tables (products, blog posts, booking items) have `id` from their first
|
|
9
|
+
* migration. Null when neither is known — then nothing is added,
|
|
9
10
|
* rather than a column that may not exist.
|
|
10
11
|
*/
|
|
11
12
|
var rowIdentityColumn = function (config, tableName) {
|
|
@@ -18,7 +19,7 @@ var rowIdentityColumn = function (config, tableName) {
|
|
|
18
19
|
if (typeof key === 'string') {
|
|
19
20
|
return key;
|
|
20
21
|
}
|
|
21
|
-
return (0,
|
|
22
|
+
return (0, list_sort_order_1.isListingTableWithId)(tableName) ? 'id' : null;
|
|
22
23
|
};
|
|
23
24
|
exports.rowIdentityColumn = rowIdentityColumn;
|
|
24
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-order.js","sourceRoot":"","sources":["../../src/row-order.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"row-order.js","sourceRoot":"","sources":["../../src/row-order.ts"],"names":[],"mappings":";;;AAAA,qDAAwD;AAOxD;;;;;;GAMG;AACI,IAAM,iBAAiB,GAAG,UAC/B,MAA+B,EAC/B,SAAiB;;IAEjB,IAAM,cAAc,GAAI,MAAqE;SAC1F,cAAc,CAAA;IACjB,IAAM,KAAK,GAAG,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,SAAS,CAAC,0CAAE,OAAO,CAAA;IAClD,IAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAC1E,UAAC,MAAM,IAAK,OAAA,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAA,KAAK,QAAQ,EAAhC,CAAgC,CAC7C,CAAA;IACD,IAAM,GAAG,GACP,MAAA,MAAA,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,YAAY,KAAK,IAAI,EAA5B,CAA4B,CAAC,0CAAE,IAAI,mCAC5D,MAAA,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,IAAI,EAApB,CAAoB,CAAC,0CAAE,IAAI,CAAA;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,GAAG,CAAA;KACX;IACD,OAAO,IAAA,sCAAoB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AACtD,CAAC,CAAA;AAjBY,QAAA,iBAAiB,qBAiB7B;AAED;;;;;;;;;GASG;AACI,IAAM,8BAA8B,GAAG,UAAC,cAA6B;IAC1E,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO,mCAAmC,CAAA;KAC3C;IACD,IAAM,MAAM,GAAG,YAAI,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAG,CAAA;IACxD,OAAO;QACL,iDAAiD;QACjD,4BAAqB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,sBAAY,IAAI,CAAC,SAAS,CAC3E,YAAK,MAAM,MAAG,CACf,iBAAc;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAXY,QAAA,8BAA8B,kCAW1C"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The search inputs of a page, and the mapper each one searches.
|
|
3
|
+
*
|
|
4
|
+
* Two kinds exist. The platform's own `DataSourceSearchInputNode` renders with
|
|
5
|
+
* a `search-input` class and is paired with a search-enabled mapper BY ORDER
|
|
6
|
+
* — the first such input searches the first such mapper. A page's OWN text
|
|
7
|
+
* input, kept where its author drew it, is marked `data-tq-search-for` with
|
|
8
|
+
* the node id of the mapper it searches — the marker the editor writes
|
|
9
|
+
* (`listing-search-field.ts`) and the canvas renderer binds by
|
|
10
|
+
* (`mapper-search-registry.ts`). Marked inputs are paired by that id and
|
|
11
|
+
* never take a place in the order, so a template's toolbar box beside a
|
|
12
|
+
* platform listing shifts nothing.
|
|
13
|
+
*
|
|
14
|
+
* Both are wired the same way: controlled by the mapper's search query state,
|
|
15
|
+
* which the mapper debounces into its fetch and keeps in the address.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SEARCH_FOR_ATTR = "data-tq-search-for";
|
|
18
|
+
export interface SearchInput {
|
|
19
|
+
node: any;
|
|
20
|
+
/** The mapper node id a marked input names; undefined for a platform input paired by order. */
|
|
21
|
+
forNodeId?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Every search input under `root`, in document order. */
|
|
24
|
+
export declare function findAllSearchInputsInJSX(root: any): SearchInput[];
|
|
25
|
+
/**
|
|
26
|
+
* The search-enabled usage each input searches: a marked input's by the mapper
|
|
27
|
+
* node id it names, a platform input's by its place among the platform inputs.
|
|
28
|
+
*/
|
|
29
|
+
export declare function pairSearchInputs<Usage extends {
|
|
30
|
+
searchEnabled: boolean;
|
|
31
|
+
nodeId?: string;
|
|
32
|
+
}>(inputs: SearchInput[], usages: Usage[]): Map<any, Usage>;
|
|
33
|
+
/**
|
|
34
|
+
* Controls the input by the mapper's query: `value` reads it, `onChange`
|
|
35
|
+
* writes it. A marked input may sit inside a form of the page's own; Enter
|
|
36
|
+
* in it must not submit that form and reload the filtered list away.
|
|
37
|
+
*/
|
|
38
|
+
export declare function wireSearchInput(input: SearchInput, vars: {
|
|
39
|
+
searchQueryVar: string;
|
|
40
|
+
setSearchQueryVar: string;
|
|
41
|
+
}): void;
|
|
42
|
+
//# sourceMappingURL=search-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-input.d.ts","sourceRoot":"","sources":["../../src/search-input.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,eAAe,uBAAuB,CAAA;AAInD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,GAAG,CAAA;IACT,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAUD,0DAA0D;AAC1D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,EAAE,CAyDjE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,SAAS;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACxF,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,KAAK,EAAE,GACd,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAmBjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GAC1D,IAAI,CAuDN"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.wireSearchInput = exports.pairSearchInputs = exports.findAllSearchInputsInJSX = exports.SEARCH_FOR_ATTR = void 0;
|
|
27
|
+
var types = __importStar(require("@babel/types"));
|
|
28
|
+
var pagination_controls_1 = require("./pagination-controls");
|
|
29
|
+
/**
|
|
30
|
+
* The search inputs of a page, and the mapper each one searches.
|
|
31
|
+
*
|
|
32
|
+
* Two kinds exist. The platform's own `DataSourceSearchInputNode` renders with
|
|
33
|
+
* a `search-input` class and is paired with a search-enabled mapper BY ORDER
|
|
34
|
+
* — the first such input searches the first such mapper. A page's OWN text
|
|
35
|
+
* input, kept where its author drew it, is marked `data-tq-search-for` with
|
|
36
|
+
* the node id of the mapper it searches — the marker the editor writes
|
|
37
|
+
* (`listing-search-field.ts`) and the canvas renderer binds by
|
|
38
|
+
* (`mapper-search-registry.ts`). Marked inputs are paired by that id and
|
|
39
|
+
* never take a place in the order, so a template's toolbar box beside a
|
|
40
|
+
* platform listing shifts nothing.
|
|
41
|
+
*
|
|
42
|
+
* Both are wired the same way: controlled by the mapper's search query state,
|
|
43
|
+
* which the mapper debounces into its fetch and keeps in the address.
|
|
44
|
+
*/
|
|
45
|
+
exports.SEARCH_FOR_ATTR = 'data-tq-search-for';
|
|
46
|
+
function isInput(node) {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
return (node === null || node === void 0 ? void 0 : node.type) === 'JSXElement' && ((_b = (_a = node.openingElement) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.name) === 'input';
|
|
49
|
+
}
|
|
50
|
+
function hasSearchInputClass(node) {
|
|
51
|
+
return (0, pagination_controls_1.readJSXAttributeString)(node, 'className').includes('search-input');
|
|
52
|
+
}
|
|
53
|
+
/** Every search input under `root`, in document order. */
|
|
54
|
+
function findAllSearchInputsInJSX(root) {
|
|
55
|
+
var results = [];
|
|
56
|
+
var traverse = function (node) {
|
|
57
|
+
if (!node) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (isInput(node)) {
|
|
61
|
+
var forNodeId = (0, pagination_controls_1.readJSXAttributeString)(node, exports.SEARCH_FOR_ATTR);
|
|
62
|
+
if (forNodeId) {
|
|
63
|
+
results.push({ node: node, forNodeId: forNodeId });
|
|
64
|
+
}
|
|
65
|
+
else if (hasSearchInputClass(node)) {
|
|
66
|
+
results.push({ node: node });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (node.children && Array.isArray(node.children)) {
|
|
70
|
+
node.children.forEach(function (c) { return traverse(c); });
|
|
71
|
+
}
|
|
72
|
+
if (node.body) {
|
|
73
|
+
if (Array.isArray(node.body)) {
|
|
74
|
+
node.body.forEach(function (s) { return traverse(s); });
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
traverse(node.body);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (node.consequent) {
|
|
81
|
+
traverse(node.consequent);
|
|
82
|
+
}
|
|
83
|
+
if (node.alternate) {
|
|
84
|
+
traverse(node.alternate);
|
|
85
|
+
}
|
|
86
|
+
// `{activeTabIndex === 0 && (<div>…<DataProvider/>…</div>)}` — a tab
|
|
87
|
+
// panel, a gated section: the provider sits on the RIGHT of a logical
|
|
88
|
+
// expression (or in a ternary's `test`), which is not a child, a body or
|
|
89
|
+
// an argument. Left unvisited, the products list under the first tab of
|
|
90
|
+
// a shop was never paginated or seeded, and rendered nothing.
|
|
91
|
+
if (node.left) {
|
|
92
|
+
traverse(node.left);
|
|
93
|
+
}
|
|
94
|
+
if (node.right) {
|
|
95
|
+
traverse(node.right);
|
|
96
|
+
}
|
|
97
|
+
if (node.test) {
|
|
98
|
+
traverse(node.test);
|
|
99
|
+
}
|
|
100
|
+
if (node.expression) {
|
|
101
|
+
traverse(node.expression);
|
|
102
|
+
}
|
|
103
|
+
if (node.argument) {
|
|
104
|
+
traverse(node.argument);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
traverse(root);
|
|
108
|
+
return results;
|
|
109
|
+
}
|
|
110
|
+
exports.findAllSearchInputsInJSX = findAllSearchInputsInJSX;
|
|
111
|
+
/**
|
|
112
|
+
* The search-enabled usage each input searches: a marked input's by the mapper
|
|
113
|
+
* node id it names, a platform input's by its place among the platform inputs.
|
|
114
|
+
*/
|
|
115
|
+
function pairSearchInputs(inputs, usages) {
|
|
116
|
+
var searchable = usages.filter(function (usage) { return usage.searchEnabled; });
|
|
117
|
+
var paired = new Map();
|
|
118
|
+
var position = 0;
|
|
119
|
+
var _loop_1 = function (input) {
|
|
120
|
+
if (input.forNodeId) {
|
|
121
|
+
var named = searchable.find(function (candidate) { return candidate.nodeId === input.forNodeId; });
|
|
122
|
+
if (named) {
|
|
123
|
+
paired.set(input.node, named);
|
|
124
|
+
}
|
|
125
|
+
return "continue";
|
|
126
|
+
}
|
|
127
|
+
var next = searchable[position];
|
|
128
|
+
position += 1;
|
|
129
|
+
if (next) {
|
|
130
|
+
paired.set(input.node, next);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {
|
|
134
|
+
var input = inputs_1[_i];
|
|
135
|
+
_loop_1(input);
|
|
136
|
+
}
|
|
137
|
+
return paired;
|
|
138
|
+
}
|
|
139
|
+
exports.pairSearchInputs = pairSearchInputs;
|
|
140
|
+
/**
|
|
141
|
+
* Controls the input by the mapper's query: `value` reads it, `onChange`
|
|
142
|
+
* writes it. A marked input may sit inside a form of the page's own; Enter
|
|
143
|
+
* in it must not submit that form and reload the filtered list away.
|
|
144
|
+
*/
|
|
145
|
+
function wireSearchInput(input, vars) {
|
|
146
|
+
var attributes = input.node.openingElement.attributes.filter(function (attr) { var _a; return !['onChange', 'value', 'onKeyDown'].includes((_a = attr.name) === null || _a === void 0 ? void 0 : _a.name); });
|
|
147
|
+
attributes.push(types.jsxAttribute(types.jsxIdentifier('onChange'), types.jsxExpressionContainer(types.arrowFunctionExpression([types.identifier('e')], types.callExpression(types.identifier(vars.setSearchQueryVar), [
|
|
148
|
+
types.memberExpression(types.memberExpression(types.identifier('e'), types.identifier('target')), types.identifier('value')),
|
|
149
|
+
])))), types.jsxAttribute(types.jsxIdentifier('value'), types.jsxExpressionContainer(types.identifier(vars.searchQueryVar))));
|
|
150
|
+
if (input.forNodeId) {
|
|
151
|
+
attributes.push(types.jsxAttribute(types.jsxIdentifier('onKeyDown'), types.jsxExpressionContainer(types.arrowFunctionExpression([types.identifier('e')], types.blockStatement([
|
|
152
|
+
types.ifStatement(types.binaryExpression('===', types.memberExpression(types.identifier('e'), types.identifier('key')), types.stringLiteral('Enter')), types.expressionStatement(types.callExpression(types.memberExpression(types.identifier('e'), types.identifier('preventDefault')), []))),
|
|
153
|
+
])))));
|
|
154
|
+
}
|
|
155
|
+
input.node.openingElement.attributes = attributes;
|
|
156
|
+
}
|
|
157
|
+
exports.wireSearchInput = wireSearchInput;
|
|
158
|
+
//# sourceMappingURL=search-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-input.js","sourceRoot":"","sources":["../../src/search-input.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAqC;AACrC,6DAA8D;AAE9D;;;;;;;;;;;;;;;GAeG;AAEU,QAAA,eAAe,GAAG,oBAAoB,CAAA;AAUnD,SAAS,OAAO,CAAC,IAAS;;IACxB,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,YAAY,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,IAAI,0CAAE,IAAI,MAAK,OAAO,CAAA;AACnF,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAS;IACpC,OAAO,IAAA,4CAAsB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AAC3E,CAAC;AAED,0DAA0D;AAC1D,SAAgB,wBAAwB,CAAC,IAAS;IAChD,IAAM,OAAO,GAAkB,EAAE,CAAA;IAEjC,IAAM,QAAQ,GAAG,UAAC,IAAS;QACzB,IAAI,CAAC,IAAI,EAAE;YACT,OAAM;SACP;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,IAAM,SAAS,GAAG,IAAA,4CAAsB,EAAC,IAAI,EAAE,uBAAe,CAAC,CAAA;YAC/D,IAAI,SAAS,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAA;aAClC;iBAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE;gBACpC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAA;aACvB;SACF;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,CAAM,IAAK,OAAA,QAAQ,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CAAA;SAC/C;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAC,CAAM,IAAK,OAAA,QAAQ,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CAAA;aAC3C;iBAAM;gBACL,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SAC1B;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;SACzB;QACD,qEAAqE;QACrE,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,8DAA8D;QAC9D,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACpB;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACpB;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SAC1B;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SACxB;IACH,CAAC,CAAA;IAED,QAAQ,CAAC,IAAI,CAAC,CAAA;IACd,OAAO,OAAO,CAAA;AAChB,CAAC;AAzDD,4DAyDC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,MAAqB,EACrB,MAAe;IAEf,IAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,aAAa,EAAnB,CAAmB,CAAC,CAAA;IAChE,IAAM,MAAM,GAAG,IAAI,GAAG,EAAc,CAAA;IACpC,IAAI,QAAQ,GAAG,CAAC,CAAA;4BACL,KAAK;QACd,IAAI,KAAK,CAAC,SAAS,EAAE;YACnB,IAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,UAAC,SAAS,IAAK,OAAA,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,SAAS,EAApC,CAAoC,CAAC,CAAA;YAClF,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;aAC9B;;SAEF;QACD,IAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;QACjC,QAAQ,IAAI,CAAC,CAAA;QACb,IAAI,IAAI,EAAE;YACR,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SAC7B;;IAZH,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM;QAArB,IAAM,KAAK,eAAA;gBAAL,KAAK;KAaf;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAtBD,4CAsBC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAC7B,KAAkB,EAClB,IAA2D;IAE3D,IAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAC5D,UAAC,IAAS,YAAK,OAAA,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,CAAC,CAAA,EAAA,CAC7E,CAAA;IACD,UAAU,CAAC,IAAI,CACb,KAAK,CAAC,YAAY,CAChB,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,EAC/B,KAAK,CAAC,sBAAsB,CAC1B,KAAK,CAAC,uBAAuB,CAC3B,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EACvB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;QAC7D,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EACzE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAC1B;KACF,CAAC,CACH,CACF,CACF,EACD,KAAK,CAAC,YAAY,CAChB,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAC5B,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CACpE,CACF,CAAA;IACD,IAAI,KAAK,CAAC,SAAS,EAAE;QACnB,UAAU,CAAC,IAAI,CACb,KAAK,CAAC,YAAY,CAChB,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,EAChC,KAAK,CAAC,sBAAsB,CAC1B,KAAK,CAAC,uBAAuB,CAC3B,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EACvB,KAAK,CAAC,cAAc,CAAC;YACnB,KAAK,CAAC,WAAW,CACf,KAAK,CAAC,gBAAgB,CACpB,KAAK,EACL,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EACtE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAC7B,EACD,KAAK,CAAC,mBAAmB,CACvB,KAAK,CAAC,cAAc,CAClB,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EACrB,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CACnC,EACD,EAAE,CACH,CACF,CACF;SACF,CAAC,CACH,CACF,CACF,CACF,CAAA;KACF;IACD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,UAAU,CAAA;AACnD,CAAC;AA1DD,0CA0DC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { UIDLEcommerceCategory } from '@teleporthq/teleport-types';
|
|
2
|
+
export interface BookingItemTransformOptions {
|
|
3
|
+
/** The booking items' category taxonomy — see `bookingSettings.categories`. */
|
|
4
|
+
categories?: UIDLEcommerceCategory[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Generates JavaScript code for the `teleport_booking_items` row
|
|
8
|
+
* transformation — the things a Bookings site lets people book.
|
|
9
|
+
*
|
|
10
|
+
* The row is kept whole (every column, snake_case: the booking pages bind
|
|
11
|
+
* them as stored) and its translatable texts — `name`, `description` (rich
|
|
12
|
+
* text) and `location` — are the page's language when the row has them there
|
|
13
|
+
* (`es_name`, …), the main language otherwise. Its `category` is the name its
|
|
14
|
+
* first category has in the page's language, read off the taxonomy baked in
|
|
15
|
+
* here (the row's stored main name while none of its ids is a category). That
|
|
16
|
+
* is all a booking page needs to show an item in the visitor's language; the
|
|
17
|
+
* booking statements localise what they read on their own.
|
|
18
|
+
*
|
|
19
|
+
* MUST mirror `localizeBookingItem` in the editor
|
|
20
|
+
* (teleport-gui features/bookings/utils/localize-booking-item.ts), which is
|
|
21
|
+
* what the canvas renders from.
|
|
22
|
+
*/
|
|
23
|
+
export declare const generateBookingItemTransformationCode: (options?: BookingItemTransformOptions) => string;
|
|
24
|
+
//# sourceMappingURL=booking-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"booking-item.d.ts","sourceRoot":"","sources":["../../../src/transformations/booking-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAGvE,MAAM,WAAW,2BAA2B;IAC1C,+EAA+E;IAC/E,UAAU,CAAC,EAAE,qBAAqB,EAAE,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qCAAqC,aACvC,2BAA2B,KACnC,MA2CF,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateBookingItemTransformationCode = void 0;
|
|
4
|
+
var category_taxonomy_1 = require("./category-taxonomy");
|
|
5
|
+
/**
|
|
6
|
+
* Generates JavaScript code for the `teleport_booking_items` row
|
|
7
|
+
* transformation — the things a Bookings site lets people book.
|
|
8
|
+
*
|
|
9
|
+
* The row is kept whole (every column, snake_case: the booking pages bind
|
|
10
|
+
* them as stored) and its translatable texts — `name`, `description` (rich
|
|
11
|
+
* text) and `location` — are the page's language when the row has them there
|
|
12
|
+
* (`es_name`, …), the main language otherwise. Its `category` is the name its
|
|
13
|
+
* first category has in the page's language, read off the taxonomy baked in
|
|
14
|
+
* here (the row's stored main name while none of its ids is a category). That
|
|
15
|
+
* is all a booking page needs to show an item in the visitor's language; the
|
|
16
|
+
* booking statements localise what they read on their own.
|
|
17
|
+
*
|
|
18
|
+
* MUST mirror `localizeBookingItem` in the editor
|
|
19
|
+
* (teleport-gui features/bookings/utils/localize-booking-item.ts), which is
|
|
20
|
+
* what the canvas renders from.
|
|
21
|
+
*/
|
|
22
|
+
var generateBookingItemTransformationCode = function (options) {
|
|
23
|
+
if (options === void 0) { options = {}; }
|
|
24
|
+
return "\n// ============================================================\n// Booking Item Transformation\n// ============================================================\n\nvar BOOKING_ITEM_TRANSLATABLE_COLUMNS = ['name', 'description', 'location']\n".concat((0, category_taxonomy_1.generateCategoryTaxonomyCode)('BOOKING_CATEGORIES_BY_ID', options.categories), "\n\nfunction buildBookingItem(record, options) {\n if (!record || typeof record !== 'object') return record\n options = options || {}\n var currentLang = options.currentLanguage || null\n var mainLang = options.mainLanguage || null\n\n var out = {}\n for (var key in record) {\n if (Object.prototype.hasOwnProperty.call(record, key)) out[key] = record[key]\n }\n for (var i = 0; i < BOOKING_ITEM_TRANSLATABLE_COLUMNS.length; i++) {\n var column = BOOKING_ITEM_TRANSLATABLE_COLUMNS[i]\n var value = resolveI18nField(record, column, column, currentLang, mainLang)\n out[column] = value === null || value === undefined ? record[column] : value\n }\n if ('category' in record || 'category_ids' in record) {\n var stored = typeof record.category === 'string' ? record.category : ''\n var assigned = resolveAssignedCategories(\n record.category_ids,\n BOOKING_CATEGORIES_BY_ID,\n currentLang,\n mainLang,\n stored\n )\n out.category = assigned.length > 0 ? assigned[0].name : stored\n }\n return out\n}\n\nfunction transformBookingItems(records, options) {\n if (!Array.isArray(records)) return []\n return records.map(function(record) { return buildBookingItem(record, options) })\n}\n");
|
|
25
|
+
};
|
|
26
|
+
exports.generateBookingItemTransformationCode = generateBookingItemTransformationCode;
|
|
27
|
+
//# sourceMappingURL=booking-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"booking-item.js","sourceRoot":"","sources":["../../../src/transformations/booking-item.ts"],"names":[],"mappings":";;;AACA,yDAAkE;AAOlE;;;;;;;;;;;;;;;;GAgBG;AACI,IAAM,qCAAqC,GAAG,UACnD,OAAyC;IAAzC,wBAAA,EAAA,YAAyC;IAEzC,OAAO,6PAMP,IAAA,gDAA4B,EAAC,0BAA0B,EAAE,OAAO,CAAC,UAAU,CAAC,guCAmC7E,CAAA;AACD,CAAC,CAAA;AA7CY,QAAA,qCAAqC,yCA6CjD"}
|
|
@@ -26,6 +26,8 @@ export interface EntityTransformOptions extends EcommerceProductTransformOptions
|
|
|
26
26
|
contentSettings?: Partial<Record<ContentTables.ContentPresetKey, ContentPresetTransformSettings>>;
|
|
27
27
|
/** Blog post-category taxonomy — see `blogSettings.categories`. */
|
|
28
28
|
blogCategories?: UIDLEcommerceCategory[];
|
|
29
|
+
/** The booking items' category taxonomy — see `bookingSettings.categories`. */
|
|
30
|
+
bookingCategories?: UIDLEcommerceCategory[];
|
|
29
31
|
/** Post content headings get ids and `#` links — see `blogSettings.headingAnchors`. */
|
|
30
32
|
blogHeadingAnchors?: boolean;
|
|
31
33
|
/**
|
|
@@ -54,7 +56,7 @@ export interface EntityTransformOptions extends EcommerceProductTransformOptions
|
|
|
54
56
|
* `blog*` fields — those fields. Empty for a table no preset owns.
|
|
55
57
|
*/
|
|
56
58
|
export declare const contentSettingsFor: (options: Pick<EntityTransformOptions, 'contentSettings' | 'blogCategories' | 'blogHeadingAnchors' | 'blogComments'>, tableName: string) => ContentPresetTransformSettings;
|
|
57
|
-
export declare const buildProductTransformOptions: (options: Pick<GeneratorOptions, 'ecommerceSettings' | 'invoiceSettings' | 'blogSettings' | 'helpCenterSettings' | 'auth'> & LocalizedProjectOptions & {
|
|
59
|
+
export declare const buildProductTransformOptions: (options: Pick<GeneratorOptions, 'ecommerceSettings' | 'invoiceSettings' | 'blogSettings' | 'bookingSettings' | 'helpCenterSettings' | 'auth'> & LocalizedProjectOptions & {
|
|
58
60
|
/**
|
|
59
61
|
* The SAME project authentication under the name a `ProjectUIDL` gives
|
|
60
62
|
* it — the project plugins call this with the UIDL itself, where the
|
|
@@ -66,7 +68,7 @@ export declare const buildProductTransformOptions: (options: Pick<GeneratorOptio
|
|
|
66
68
|
*/
|
|
67
69
|
authentication?: UIDLAuthentication;
|
|
68
70
|
}) => EntityTransformOptions;
|
|
69
|
-
export type TransformationType = 'blog-post' | 'ecommerce-product' | 'custom-page' | null;
|
|
71
|
+
export type TransformationType = 'blog-post' | 'ecommerce-product' | 'custom-page' | 'booking-item' | null;
|
|
70
72
|
/**
|
|
71
73
|
* Detects which transformation type to apply based on the table name.
|
|
72
74
|
* Returns null if no transformation is needed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transformations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEhB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAA8B,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transformations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEhB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAA8B,MAAM,6BAA6B,CAAA;AAKvF,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAA;AAEhC,YAAY,EAAE,gCAAgC,EAAE,CAAA;AAEhD;;;;;GAKG;AACH,oFAAoF;AACpF,MAAM,WAAW,8BAA8B;IAC7C,UAAU,CAAC,EAAE,qBAAqB,EAAE,CAAA;IACpC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gCAAgC;IAC9E;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC,CAAA;IACjG,mEAAmE;IACnE,cAAc,CAAC,EAAE,qBAAqB,EAAE,CAAA;IACxC,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,CAAA;IAC3C,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC9B;AAqCD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,YACpB,KACP,sBAAsB,EACtB,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,cAAc,CAC7E,aACU,MAAM,KAChB,8BAiBF,CAAA;AAED,eAAO,MAAM,4BAA4B,YAC9B,KACP,gBAAgB,EACd,mBAAmB,GACnB,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,MAAM,CACT,GACC,uBAAuB,GAAG;IACxB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC,KACF,sBAeD,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,IAAI,CAAA;AAeR;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,cAAe,MAAM,KAAG,kBAkB5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,cACrB,MAAM,YACR,sBAAsB,KAC9B,MAkCF,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,YAAY,CAAA;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,cAAe,MAAM,KAAG,MAAM,GAAG,IAKnE,CAAA;AA+DD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,cACvB,MAAM,YACR,KAAK,sBAAsB,EAAE,cAAc,GAAG,cAAc,GAAG,iBAAiB,CAAC,KACzF,MAqKF,CAAA"}
|
|
@@ -16,6 +16,7 @@ var teleport_shared_1 = require("@teleporthq/teleport-shared");
|
|
|
16
16
|
var shared_utils_1 = require("./shared-utils");
|
|
17
17
|
var blog_post_1 = require("./blog-post");
|
|
18
18
|
var custom_page_1 = require("./custom-page");
|
|
19
|
+
var booking_item_1 = require("./booking-item");
|
|
19
20
|
var ecommerce_product_1 = require("./ecommerce-product");
|
|
20
21
|
var request_locale_1 = require("../request-locale");
|
|
21
22
|
var content_localization_1 = require("../content-localization");
|
|
@@ -69,7 +70,7 @@ var contentSettingsFor = function (options, tableName) {
|
|
|
69
70
|
};
|
|
70
71
|
exports.contentSettingsFor = contentSettingsFor;
|
|
71
72
|
var buildProductTransformOptions = function (options) {
|
|
72
|
-
var _a, _b, _c, _d, _e;
|
|
73
|
+
var _a, _b, _c, _d, _e, _f;
|
|
73
74
|
return ({
|
|
74
75
|
categories: (_a = options.ecommerceSettings) === null || _a === void 0 ? void 0 : _a.categories,
|
|
75
76
|
contentSettings: {
|
|
@@ -77,11 +78,12 @@ var buildProductTransformOptions = function (options) {
|
|
|
77
78
|
help: contentPresetTransformSettings(options.helpCenterSettings),
|
|
78
79
|
},
|
|
79
80
|
blogCategories: (_b = options.blogSettings) === null || _b === void 0 ? void 0 : _b.categories,
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
bookingCategories: (_c = options.bookingSettings) === null || _c === void 0 ? void 0 : _c.categories,
|
|
82
|
+
blogHeadingAnchors: ((_d = options.blogSettings) === null || _d === void 0 ? void 0 : _d.headingAnchors) === true,
|
|
83
|
+
blogComments: ((_e = options.blogSettings) === null || _e === void 0 ? void 0 : _e.comments) === true,
|
|
82
84
|
storefrontTaxRate: teleport_shared_1.StorefrontTax.resolveStorefrontTaxRate(options.invoiceSettings),
|
|
83
85
|
allowBackorders: resolveAllowBackorders(options.ecommerceSettings),
|
|
84
|
-
productPages: (
|
|
86
|
+
productPages: (_f = options.ecommerceSettings) === null || _f === void 0 ? void 0 : _f.productPages,
|
|
85
87
|
localization: (0, content_localization_1.resolveContentLocalization)(options),
|
|
86
88
|
trustedReaderRoles: teleport_shared_1.TableAccess.resolveTrustedReaderRoles(options.auth || options.authentication),
|
|
87
89
|
});
|
|
@@ -125,6 +127,9 @@ var detectTransformationType = function (tableName) {
|
|
|
125
127
|
if (bare === 'teleport_pages') {
|
|
126
128
|
return 'custom-page';
|
|
127
129
|
}
|
|
130
|
+
if (bare === 'teleport_booking_items') {
|
|
131
|
+
return 'booking-item';
|
|
132
|
+
}
|
|
128
133
|
return null;
|
|
129
134
|
};
|
|
130
135
|
exports.detectTransformationType = detectTransformationType;
|
|
@@ -157,6 +162,8 @@ var getTransformationCode = function (tableName, options) {
|
|
|
157
162
|
return shared + (0, ecommerce_product_1.generateEcommerceProductTransformationCode)(options);
|
|
158
163
|
case 'custom-page':
|
|
159
164
|
return shared + (0, custom_page_1.generateCustomPageTransformationCode)();
|
|
165
|
+
case 'booking-item':
|
|
166
|
+
return (shared + (0, booking_item_1.generateBookingItemTransformationCode)({ categories: options.bookingCategories }));
|
|
160
167
|
default:
|
|
161
168
|
return '';
|
|
162
169
|
}
|
|
@@ -234,7 +241,9 @@ var getTransformWrapperCode = function (tableName, options) {
|
|
|
234
241
|
? 'transformBlogPosts'
|
|
235
242
|
: type === 'custom-page'
|
|
236
243
|
? 'transformCustomPages'
|
|
237
|
-
: '
|
|
244
|
+
: type === 'booking-item'
|
|
245
|
+
? 'transformBookingItems'
|
|
246
|
+
: 'transformEcommerceProducts';
|
|
238
247
|
// Products additionally get their purchasable variant combinations attached in
|
|
239
248
|
// ONE batched query (keyed by product id). Blog posts have no such enrichment.
|
|
240
249
|
//
|