@uniformdev/context-ui 19.95.0 → 19.96.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/dist/index.d.mts +28 -28
- package/dist/index.d.ts +28 -28
- package/dist/index.esm.js +334 -334
- package/dist/index.js +345 -345
- package/dist/index.mjs +334 -334
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -63,18 +63,179 @@ module.exports = __toCommonJS(src_exports);
|
|
|
63
63
|
var import_react = require("@emotion/react");
|
|
64
64
|
var React = __toESM(require("react"));
|
|
65
65
|
|
|
66
|
-
// src/components/
|
|
66
|
+
// src/components/AbTestSelector/AbTestSelector.tsx
|
|
67
|
+
var import_react3 = require("@emotion/react");
|
|
67
68
|
var import_design_system = require("@uniformdev/design-system");
|
|
69
|
+
var import_react4 = require("react");
|
|
68
70
|
|
|
69
|
-
// src/
|
|
70
|
-
var
|
|
71
|
+
// src/hooks/useABTests.ts
|
|
72
|
+
var import_api = require("@uniformdev/context/api");
|
|
73
|
+
var import_react2 = require("react");
|
|
74
|
+
function useABTests({ apiHost, apiKey, projectId }) {
|
|
75
|
+
const [reload, setReload] = (0, import_react2.useState)(true);
|
|
76
|
+
const [state, setState] = (0, import_react2.useState)({
|
|
77
|
+
loading: false,
|
|
78
|
+
notConfigured: false,
|
|
79
|
+
error: null,
|
|
80
|
+
result: null
|
|
81
|
+
});
|
|
82
|
+
(0, import_react2.useEffect)(() => {
|
|
83
|
+
if (!projectId || !apiKey || !apiHost) {
|
|
84
|
+
setState({ notConfigured: true, loading: false, error: null, result: null });
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const runEffect = async () => {
|
|
88
|
+
setState({ notConfigured: false, loading: true, error: null, result: null });
|
|
89
|
+
try {
|
|
90
|
+
const client = new import_api.CachedTestClient({
|
|
91
|
+
projectId,
|
|
92
|
+
apiKey,
|
|
93
|
+
apiHost
|
|
94
|
+
});
|
|
95
|
+
const { tests } = await client.get();
|
|
96
|
+
setState({ notConfigured: false, loading: false, error: null, result: tests });
|
|
97
|
+
} catch (e) {
|
|
98
|
+
let message;
|
|
99
|
+
if (e instanceof import_api.ApiClientError) {
|
|
100
|
+
message = e.message;
|
|
101
|
+
} else {
|
|
102
|
+
message = e.toString();
|
|
103
|
+
}
|
|
104
|
+
setState({ notConfigured: false, loading: false, error: message, result: null });
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
if (reload) {
|
|
109
|
+
runEffect().then(() => {
|
|
110
|
+
setReload(false);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}, [apiHost, apiKey, projectId, reload]);
|
|
114
|
+
return {
|
|
115
|
+
result: state.result,
|
|
116
|
+
error: state.error,
|
|
117
|
+
loading: state.loading,
|
|
118
|
+
notConfigured: state.notConfigured,
|
|
119
|
+
doReload: () => setReload(true)
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/components/AbTestSelector/AbTestSelector.tsx
|
|
71
124
|
var import_jsx_runtime = require("@emotion/react/jsx-runtime");
|
|
125
|
+
var addAbTestLink = import_react3.css`
|
|
126
|
+
flex: 2;
|
|
127
|
+
display: flex;
|
|
128
|
+
width: 50%;
|
|
129
|
+
align-items: center;
|
|
130
|
+
font-weight: var(--fw-bold);
|
|
131
|
+
color: var(--brand-primary-1);
|
|
132
|
+
&:hover,
|
|
133
|
+
&:focus {
|
|
134
|
+
text-decoration-line: underline;
|
|
135
|
+
}
|
|
136
|
+
`;
|
|
137
|
+
var AbTestList = ({ contextConfig, onSelect, value }) => {
|
|
138
|
+
const { loading, result, doReload = () => {
|
|
139
|
+
} } = useABTests(contextConfig);
|
|
140
|
+
if (loading) {
|
|
141
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.LoadingIndicator, {});
|
|
142
|
+
}
|
|
143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
144
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Link, { text: "Refresh A/B Test list", style: { marginRight: "10px" }, onClick: () => doReload() }) }),
|
|
145
|
+
!result || result.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NoAbTestsView, { contextConfig }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { marginTop: "10px" }, children: [
|
|
146
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.ScrollableList, { children: result.map((abTest) => {
|
|
147
|
+
const { id, name } = abTest;
|
|
148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
149
|
+
import_design_system.ScrollableListItem,
|
|
150
|
+
{
|
|
151
|
+
buttonText: name,
|
|
152
|
+
active: id === (value == null ? void 0 : value.id),
|
|
153
|
+
onClick: () => onSelect(abTest)
|
|
154
|
+
},
|
|
155
|
+
id
|
|
156
|
+
);
|
|
157
|
+
}) }),
|
|
158
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
159
|
+
import_design_system.AddListButton,
|
|
160
|
+
{
|
|
161
|
+
className: "add-more",
|
|
162
|
+
onButtonClick: () => {
|
|
163
|
+
window.open(
|
|
164
|
+
`${contextConfig.apiHost}/projects/${encodeURIComponent(contextConfig.projectId)}/testing`,
|
|
165
|
+
"_blank"
|
|
166
|
+
);
|
|
167
|
+
},
|
|
168
|
+
buttonText: "Add new A/B Test"
|
|
169
|
+
}
|
|
170
|
+
)
|
|
171
|
+
] })
|
|
172
|
+
] });
|
|
173
|
+
};
|
|
174
|
+
var AbTestSelector = ({ value, setValue, contextConfig, loading }) => {
|
|
175
|
+
var _a;
|
|
176
|
+
const [showAbTests, setShowAbTests] = (0, import_react4.useState)(false);
|
|
177
|
+
if (loading) {
|
|
178
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.LoadingIndicator, {});
|
|
179
|
+
}
|
|
180
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("fieldset", { className: "ab-test", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
181
|
+
!showAbTests && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
182
|
+
value && Object.keys(value).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Heading, { level: 4, style: { marginBottom: "10px" }, children: (_a = value == null ? void 0 : value.name) != null ? _a : "Unknown test" }),
|
|
183
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Button, { buttonType: "primary", style: { marginRight: "10px" }, onClick: () => setShowAbTests(true), children: "Select A/B Test" })
|
|
184
|
+
] }),
|
|
185
|
+
showAbTests && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
186
|
+
AbTestList,
|
|
187
|
+
{
|
|
188
|
+
contextConfig,
|
|
189
|
+
onSelect: (abTest) => {
|
|
190
|
+
if ((value == null ? void 0 : value.id) === abTest.id) {
|
|
191
|
+
setValue(void 0);
|
|
192
|
+
setShowAbTests(true);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
setValue(abTest);
|
|
196
|
+
setShowAbTests(false);
|
|
197
|
+
},
|
|
198
|
+
value
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
] }) });
|
|
202
|
+
};
|
|
203
|
+
var NoAbTestsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
204
|
+
import_design_system.Callout,
|
|
205
|
+
{
|
|
206
|
+
title: "No A/B tests found in your Uniform project.",
|
|
207
|
+
type: "caution",
|
|
208
|
+
css: { marginBlock: "var(--spacing-base)" },
|
|
209
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: [
|
|
210
|
+
"Looks like you do not have any A/B tests created in your connected Uniform project. Start by creating your first test",
|
|
211
|
+
" ",
|
|
212
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
213
|
+
"a",
|
|
214
|
+
{
|
|
215
|
+
href: `${contextConfig.apiHost}/projects/${encodeURIComponent(contextConfig.projectId)}/testing`,
|
|
216
|
+
target: "_blank",
|
|
217
|
+
rel: "noopener noreferrer",
|
|
218
|
+
css: { ":hover": { textDecorationLine: "underline" } },
|
|
219
|
+
children: "here"
|
|
220
|
+
}
|
|
221
|
+
),
|
|
222
|
+
"."
|
|
223
|
+
] })
|
|
224
|
+
}
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
// src/components/CriteriaOperatorMenu/CriteriaOperatorMenu.tsx
|
|
228
|
+
var import_design_system2 = require("@uniformdev/design-system");
|
|
229
|
+
|
|
230
|
+
// src/components/CriteriaOperatorMenu/OperatorBubble.tsx
|
|
231
|
+
var import_react5 = require("@emotion/react");
|
|
232
|
+
var import_jsx_runtime2 = require("@emotion/react/jsx-runtime");
|
|
72
233
|
function OperatorBubble({ op }) {
|
|
73
|
-
return /* @__PURE__ */ (0,
|
|
234
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
74
235
|
"div",
|
|
75
236
|
{
|
|
76
237
|
className: "operation-bubble",
|
|
77
|
-
css:
|
|
238
|
+
css: import_react5.css`
|
|
78
239
|
align-items: center;
|
|
79
240
|
background: var(--gray-700);
|
|
80
241
|
border-radius: var(--rounded-full);
|
|
@@ -91,12 +252,12 @@ function OperatorBubble({ op }) {
|
|
|
91
252
|
}
|
|
92
253
|
|
|
93
254
|
// src/components/CriteriaOperatorMenu/CriteriaOperatorOption.tsx
|
|
94
|
-
var
|
|
255
|
+
var import_jsx_runtime3 = require("@emotion/react/jsx-runtime");
|
|
95
256
|
var CriteriaOperatorOption = (props) => {
|
|
96
257
|
var _a, _b;
|
|
97
258
|
const { data, getStyles, isDisabled, innerRef, innerProps } = props;
|
|
98
259
|
const [name, description] = (_b = (_a = data.label) == null ? void 0 : _a.split(":")) != null ? _b : [];
|
|
99
|
-
return /* @__PURE__ */ (0,
|
|
260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
100
261
|
"div",
|
|
101
262
|
{
|
|
102
263
|
css: {
|
|
@@ -109,7 +270,7 @@ var CriteriaOperatorOption = (props) => {
|
|
|
109
270
|
"aria-disabled": isDisabled,
|
|
110
271
|
...innerProps,
|
|
111
272
|
children: [
|
|
112
|
-
description ? /* @__PURE__ */ (0,
|
|
273
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OperatorBubble, { op: name }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
113
274
|
"div",
|
|
114
275
|
{
|
|
115
276
|
css: {
|
|
@@ -118,30 +279,30 @@ var CriteriaOperatorOption = (props) => {
|
|
|
118
279
|
}
|
|
119
280
|
}
|
|
120
281
|
),
|
|
121
|
-
/* @__PURE__ */ (0,
|
|
282
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { children: description != null ? description : name })
|
|
122
283
|
]
|
|
123
284
|
}
|
|
124
285
|
);
|
|
125
286
|
};
|
|
126
287
|
|
|
127
288
|
// src/components/CriteriaOperatorMenu/CriteriaOperatorSingleValue.tsx
|
|
128
|
-
var
|
|
289
|
+
var import_jsx_runtime4 = require("@emotion/react/jsx-runtime");
|
|
129
290
|
var CriteriaOperatorSingleValue = (props) => {
|
|
130
291
|
const { data, getStyles } = props;
|
|
131
|
-
return /* @__PURE__ */ (0,
|
|
292
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
132
293
|
"div",
|
|
133
294
|
{
|
|
134
295
|
css: {
|
|
135
296
|
...getStyles("singleValue", props),
|
|
136
297
|
width: "max-content"
|
|
137
298
|
},
|
|
138
|
-
children: data.label.length === 1 ? /* @__PURE__ */ (0,
|
|
299
|
+
children: data.label.length === 1 ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(OperatorBubble, { op: data.label }) : data.label
|
|
139
300
|
}
|
|
140
301
|
);
|
|
141
302
|
};
|
|
142
303
|
|
|
143
304
|
// src/components/CriteriaOperatorMenu/CriteriaOperatorMenu.tsx
|
|
144
|
-
var
|
|
305
|
+
var import_jsx_runtime5 = require("@emotion/react/jsx-runtime");
|
|
145
306
|
var contextCriteriaMenuOperators = [
|
|
146
307
|
{
|
|
147
308
|
name: "=",
|
|
@@ -184,8 +345,8 @@ var contextCriteriaMenuOperators = [
|
|
|
184
345
|
];
|
|
185
346
|
function CriteriaOperatorMenu({ onChange, value, ...props }) {
|
|
186
347
|
var _a, _b;
|
|
187
|
-
return /* @__PURE__ */ (0,
|
|
188
|
-
|
|
348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
349
|
+
import_design_system2.InputComboBox,
|
|
189
350
|
{
|
|
190
351
|
...props,
|
|
191
352
|
value: {
|
|
@@ -246,20 +407,20 @@ function CriteriaOperatorMenu({ onChange, value, ...props }) {
|
|
|
246
407
|
}
|
|
247
408
|
|
|
248
409
|
// src/components/DataContext/DataContext.tsx
|
|
249
|
-
var
|
|
250
|
-
var
|
|
410
|
+
var import_design_system3 = require("@uniformdev/design-system");
|
|
411
|
+
var import_react8 = require("react");
|
|
251
412
|
|
|
252
413
|
// src/hooks/useContextData.ts
|
|
253
|
-
var
|
|
254
|
-
var
|
|
414
|
+
var import_api2 = require("@uniformdev/context/api");
|
|
415
|
+
var import_react6 = require("react");
|
|
255
416
|
function useContextData({ apiHost, apiKey, projectId }) {
|
|
256
|
-
const [state, setState] = (0,
|
|
417
|
+
const [state, setState] = (0, import_react6.useState)({
|
|
257
418
|
loading: false,
|
|
258
419
|
notConfigured: false,
|
|
259
420
|
error: null,
|
|
260
421
|
result: null
|
|
261
422
|
});
|
|
262
|
-
(0,
|
|
423
|
+
(0, import_react6.useEffect)(() => {
|
|
263
424
|
if (!projectId || !apiKey || !apiHost) {
|
|
264
425
|
setState({ notConfigured: true, loading: false, error: null, result: null });
|
|
265
426
|
return;
|
|
@@ -267,7 +428,7 @@ function useContextData({ apiHost, apiKey, projectId }) {
|
|
|
267
428
|
const runEffect = async () => {
|
|
268
429
|
setState({ notConfigured: false, loading: true, error: null, result: null });
|
|
269
430
|
try {
|
|
270
|
-
const client = new
|
|
431
|
+
const client = new import_api2.CachedManifestClient({
|
|
271
432
|
projectId,
|
|
272
433
|
apiKey,
|
|
273
434
|
apiHost
|
|
@@ -276,7 +437,7 @@ function useContextData({ apiHost, apiKey, projectId }) {
|
|
|
276
437
|
setState({ notConfigured: false, loading: false, error: null, result });
|
|
277
438
|
} catch (e) {
|
|
278
439
|
let message;
|
|
279
|
-
if (e instanceof
|
|
440
|
+
if (e instanceof import_api2.ApiClientError) {
|
|
280
441
|
if (e.statusCode === 403) {
|
|
281
442
|
message = `The API key ${apiKey} did not have permissions to fetch the manifest. Ensure Context > Read Drafts permissions are granted.`;
|
|
282
443
|
}
|
|
@@ -299,8 +460,8 @@ function useContextData({ apiHost, apiKey, projectId }) {
|
|
|
299
460
|
}
|
|
300
461
|
|
|
301
462
|
// src/hooks/useDimensions.ts
|
|
302
|
-
var
|
|
303
|
-
var
|
|
463
|
+
var import_api3 = require("@uniformdev/context/api");
|
|
464
|
+
var import_react7 = require("react");
|
|
304
465
|
|
|
305
466
|
// src/utils/objectify.ts
|
|
306
467
|
function objectify(array2, keySelector, valueSelector) {
|
|
@@ -316,13 +477,13 @@ function objectify(array2, keySelector, valueSelector) {
|
|
|
316
477
|
|
|
317
478
|
// src/hooks/useDimensions.ts
|
|
318
479
|
function useDimensions({ apiHost, apiKey, projectId }) {
|
|
319
|
-
const [state, setState] = (0,
|
|
480
|
+
const [state, setState] = (0, import_react7.useState)({
|
|
320
481
|
loading: false,
|
|
321
482
|
notConfigured: false,
|
|
322
483
|
error: null,
|
|
323
484
|
result: null
|
|
324
485
|
});
|
|
325
|
-
(0,
|
|
486
|
+
(0, import_react7.useEffect)(() => {
|
|
326
487
|
if (!projectId || !apiKey || !apiHost) {
|
|
327
488
|
setState({ notConfigured: true, loading: false, error: null, result: null });
|
|
328
489
|
return;
|
|
@@ -330,14 +491,14 @@ function useDimensions({ apiHost, apiKey, projectId }) {
|
|
|
330
491
|
const runEffect = async () => {
|
|
331
492
|
setState({ notConfigured: false, loading: true, error: null, result: null });
|
|
332
493
|
try {
|
|
333
|
-
const client = new
|
|
494
|
+
const client = new import_api3.CachedDimensionClient({
|
|
334
495
|
projectId,
|
|
335
496
|
apiKey,
|
|
336
497
|
apiHost
|
|
337
498
|
});
|
|
338
499
|
const dimensions = (await client.get()).dimensions.map((dim) => ({
|
|
339
500
|
...dim,
|
|
340
|
-
displayName: (0,
|
|
501
|
+
displayName: (0, import_api3.computeDimensionDisplayName)(dim)
|
|
341
502
|
}));
|
|
342
503
|
const result = {
|
|
343
504
|
dimensions,
|
|
@@ -350,7 +511,7 @@ function useDimensions({ apiHost, apiKey, projectId }) {
|
|
|
350
511
|
setState({ notConfigured: false, loading: false, error: null, result });
|
|
351
512
|
} catch (e) {
|
|
352
513
|
let message;
|
|
353
|
-
if (e instanceof
|
|
514
|
+
if (e instanceof import_api3.ApiClientError) {
|
|
354
515
|
message = e.message;
|
|
355
516
|
} else {
|
|
356
517
|
message = e.toString();
|
|
@@ -370,8 +531,8 @@ function useDimensions({ apiHost, apiKey, projectId }) {
|
|
|
370
531
|
}
|
|
371
532
|
|
|
372
533
|
// src/components/DataContext/DataContext.tsx
|
|
373
|
-
var
|
|
374
|
-
var ContextDataContext = (0,
|
|
534
|
+
var import_jsx_runtime6 = require("@emotion/react/jsx-runtime");
|
|
535
|
+
var ContextDataContext = (0, import_react8.createContext)(null);
|
|
375
536
|
var ContextData = ({
|
|
376
537
|
loadingComponent: LoadingComponent,
|
|
377
538
|
errorComponent: ErrorComponent,
|
|
@@ -382,23 +543,23 @@ var ContextData = ({
|
|
|
382
543
|
const dimensionsData = useDimensions(contextConfig);
|
|
383
544
|
if (contextData.error || contextData.notConfigured) {
|
|
384
545
|
if (ErrorComponent)
|
|
385
|
-
return /* @__PURE__ */ (0,
|
|
546
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorComponent, { contextConfig, result: contextData });
|
|
386
547
|
else
|
|
387
|
-
return /* @__PURE__ */ (0,
|
|
548
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: "ErrorComponent is not configured" });
|
|
388
549
|
}
|
|
389
550
|
if (dimensionsData.error || dimensionsData.notConfigured) {
|
|
390
551
|
if (ErrorComponent)
|
|
391
|
-
return /* @__PURE__ */ (0,
|
|
552
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorComponent, { contextConfig, result: dimensionsData });
|
|
392
553
|
else
|
|
393
|
-
return /* @__PURE__ */ (0,
|
|
554
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: "ErrorComponent is not configured" });
|
|
394
555
|
}
|
|
395
556
|
if (contextData.loading || dimensionsData.loading) {
|
|
396
557
|
if (LoadingComponent)
|
|
397
|
-
return /* @__PURE__ */ (0,
|
|
558
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(LoadingComponent, {});
|
|
398
559
|
else
|
|
399
|
-
return /* @__PURE__ */ (0,
|
|
560
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_design_system3.LoadingIndicator, {});
|
|
400
561
|
}
|
|
401
|
-
return /* @__PURE__ */ (0,
|
|
562
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
402
563
|
ContextDataContext.Provider,
|
|
403
564
|
{
|
|
404
565
|
value: { manifest: contextData.result, dimensions: dimensionsData.result, contextConfig },
|
|
@@ -407,21 +568,21 @@ var ContextData = ({
|
|
|
407
568
|
);
|
|
408
569
|
};
|
|
409
570
|
function useContextConfig() {
|
|
410
|
-
const context = (0,
|
|
571
|
+
const context = (0, import_react8.useContext)(ContextDataContext);
|
|
411
572
|
if (!(context == null ? void 0 : context.contextConfig)) {
|
|
412
573
|
throw new Error("Not within DataContext! Configuration data is not exist.");
|
|
413
574
|
}
|
|
414
575
|
return context.contextConfig;
|
|
415
576
|
}
|
|
416
577
|
function useManifest() {
|
|
417
|
-
const context = (0,
|
|
578
|
+
const context = (0, import_react8.useContext)(ContextDataContext);
|
|
418
579
|
if (!(context == null ? void 0 : context.manifest)) {
|
|
419
580
|
throw new Error("Not within DataContext! Manifest data is not exist.");
|
|
420
581
|
}
|
|
421
582
|
return context.manifest;
|
|
422
583
|
}
|
|
423
584
|
function useDimensionsDataContext() {
|
|
424
|
-
const context = (0,
|
|
585
|
+
const context = (0, import_react8.useContext)(ContextDataContext);
|
|
425
586
|
if (!(context == null ? void 0 : context.dimensions)) {
|
|
426
587
|
throw new Error("Not within DataContext! Dimensions data is not exist.");
|
|
427
588
|
}
|
|
@@ -429,11 +590,11 @@ function useDimensionsDataContext() {
|
|
|
429
590
|
}
|
|
430
591
|
|
|
431
592
|
// src/components/DimensionMenu/CriteriaMatchMenu.tsx
|
|
432
|
-
var
|
|
433
|
-
var
|
|
593
|
+
var import_design_system6 = require("@uniformdev/design-system");
|
|
594
|
+
var import_react10 = require("react");
|
|
434
595
|
|
|
435
596
|
// src/components/DimensionMenu/DimensionGroupHeading.tsx
|
|
436
|
-
var
|
|
597
|
+
var import_design_system4 = require("@uniformdev/design-system");
|
|
437
598
|
|
|
438
599
|
// src/components/DimensionMenu/utils.ts
|
|
439
600
|
function dimensionToMenuOption(dimension) {
|
|
@@ -474,11 +635,11 @@ function groupDimensions(dimensions) {
|
|
|
474
635
|
}
|
|
475
636
|
|
|
476
637
|
// src/components/DimensionMenu/DimensionGroupHeading.tsx
|
|
477
|
-
var
|
|
638
|
+
var import_jsx_runtime7 = require("@emotion/react/jsx-runtime");
|
|
478
639
|
var DimensionGroupHeading = (props) => {
|
|
479
640
|
var _a;
|
|
480
641
|
const { data, getStyles, className } = props;
|
|
481
|
-
return /* @__PURE__ */ (0,
|
|
642
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
482
643
|
"div",
|
|
483
644
|
{
|
|
484
645
|
css: {
|
|
@@ -487,13 +648,13 @@ var DimensionGroupHeading = (props) => {
|
|
|
487
648
|
fontSize: "var(--font-size-sm)"
|
|
488
649
|
},
|
|
489
650
|
className,
|
|
490
|
-
children: /* @__PURE__ */ (0,
|
|
651
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
491
652
|
"small",
|
|
492
653
|
{
|
|
493
654
|
css: { color: "var(--gray-500)", display: "flex", alignItems: "center", gap: "var(--spacing-xs)" },
|
|
494
655
|
children: [
|
|
495
|
-
/* @__PURE__ */ (0,
|
|
496
|
-
/* @__PURE__ */ (0,
|
|
656
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_design_system4.Icon, { icon: dimensionIcon((_a = data.label) != null ? _a : ""), iconColor: "currentColor", size: 16 }),
|
|
657
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: data.label })
|
|
497
658
|
]
|
|
498
659
|
}
|
|
499
660
|
)
|
|
@@ -502,15 +663,15 @@ var DimensionGroupHeading = (props) => {
|
|
|
502
663
|
};
|
|
503
664
|
|
|
504
665
|
// src/components/DimensionMenu/DimensionMenuErrorMessage.tsx
|
|
505
|
-
var
|
|
506
|
-
var
|
|
666
|
+
var import_react9 = require("@emotion/react");
|
|
667
|
+
var import_jsx_runtime8 = require("@emotion/react/jsx-runtime");
|
|
507
668
|
function DimensionMenuErrorMessage({ message }) {
|
|
508
669
|
if (!message)
|
|
509
670
|
return null;
|
|
510
|
-
return /* @__PURE__ */ (0,
|
|
671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
511
672
|
"div",
|
|
512
673
|
{
|
|
513
|
-
css:
|
|
674
|
+
css: import_react9.css`
|
|
514
675
|
color: var(--brand-primary-2);
|
|
515
676
|
font-size: var(--fs-xs);
|
|
516
677
|
position: absolute;
|
|
@@ -522,12 +683,12 @@ function DimensionMenuErrorMessage({ message }) {
|
|
|
522
683
|
}
|
|
523
684
|
|
|
524
685
|
// src/components/DimensionMenu/DimensionOption.tsx
|
|
525
|
-
var
|
|
686
|
+
var import_jsx_runtime9 = require("@emotion/react/jsx-runtime");
|
|
526
687
|
var DimensionOption = (props) => {
|
|
527
688
|
var _a, _b;
|
|
528
689
|
const { data, getStyles, cx, isDisabled, isFocused, isSelected, className, innerRef, innerProps } = props;
|
|
529
690
|
const [, value] = (_b = (_a = data.label) == null ? void 0 : _a.split(":")) != null ? _b : [];
|
|
530
|
-
return /* @__PURE__ */ (0,
|
|
691
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
531
692
|
"div",
|
|
532
693
|
{
|
|
533
694
|
css: getStyles("option", props),
|
|
@@ -543,17 +704,17 @@ var DimensionOption = (props) => {
|
|
|
543
704
|
ref: innerRef,
|
|
544
705
|
"aria-disabled": isDisabled,
|
|
545
706
|
...innerProps,
|
|
546
|
-
children: /* @__PURE__ */ (0,
|
|
707
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { css: { color: "var(--gray-700)" }, children: value != null ? value : data.label })
|
|
547
708
|
}
|
|
548
709
|
);
|
|
549
710
|
};
|
|
550
711
|
|
|
551
712
|
// src/components/DimensionMenu/DimensionValue.tsx
|
|
552
|
-
var
|
|
553
|
-
var
|
|
713
|
+
var import_design_system5 = require("@uniformdev/design-system");
|
|
714
|
+
var import_jsx_runtime10 = require("@emotion/react/jsx-runtime");
|
|
554
715
|
function DimensionValue({ displayName }) {
|
|
555
716
|
const [type, name] = displayName.split(":");
|
|
556
|
-
return /* @__PURE__ */ (0,
|
|
717
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
557
718
|
"div",
|
|
558
719
|
{
|
|
559
720
|
css: {
|
|
@@ -561,31 +722,31 @@ function DimensionValue({ displayName }) {
|
|
|
561
722
|
overflow: "hidden"
|
|
562
723
|
},
|
|
563
724
|
children: [
|
|
564
|
-
name ? /* @__PURE__ */ (0,
|
|
725
|
+
name ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
565
726
|
"small",
|
|
566
727
|
{
|
|
567
728
|
css: { color: "var(--gray-500)", display: "flex", alignItems: "center", gap: "var(--spacing-xs)" },
|
|
568
729
|
children: [
|
|
569
|
-
type ? /* @__PURE__ */ (0,
|
|
570
|
-
/* @__PURE__ */ (0,
|
|
730
|
+
type ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_design_system5.Icon, { icon: dimensionIcon(type), iconColor: "currentColor", size: 16 }) : null,
|
|
731
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { "data-testid": "dimension-name", children: type })
|
|
571
732
|
]
|
|
572
733
|
}
|
|
573
734
|
) : null,
|
|
574
|
-
/* @__PURE__ */ (0,
|
|
735
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { css: { color: "var(--gray-700)" }, "data-testid": "dimension-value", children: name != null ? name : type })
|
|
575
736
|
]
|
|
576
737
|
}
|
|
577
738
|
);
|
|
578
739
|
}
|
|
579
740
|
|
|
580
741
|
// src/components/DimensionMenu/DimensionSingleValue.tsx
|
|
581
|
-
var
|
|
742
|
+
var import_jsx_runtime11 = require("@emotion/react/jsx-runtime");
|
|
582
743
|
var DimensionSingleValue = (props) => {
|
|
583
744
|
const { data, getStyles } = props;
|
|
584
|
-
return /* @__PURE__ */ (0,
|
|
745
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { css: getStyles("singleValue", props), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DimensionValue, { displayName: data.label }) });
|
|
585
746
|
};
|
|
586
747
|
|
|
587
748
|
// src/components/DimensionMenu/CriteriaMatchMenu.tsx
|
|
588
|
-
var
|
|
749
|
+
var import_jsx_runtime12 = require("@emotion/react/jsx-runtime");
|
|
589
750
|
function CriteriaMatchMenu({
|
|
590
751
|
onChange,
|
|
591
752
|
criteriaMatch,
|
|
@@ -594,14 +755,14 @@ function CriteriaMatchMenu({
|
|
|
594
755
|
...props
|
|
595
756
|
}) {
|
|
596
757
|
var _a, _b;
|
|
597
|
-
const [inputValue, setInputValue] = (0,
|
|
758
|
+
const [inputValue, setInputValue] = (0, import_react10.useState)(
|
|
598
759
|
typeof criteriaMatch.r !== "undefined" && isInt(criteriaMatch.r) !== null ? criteriaMatch.r.toString(10) : ""
|
|
599
760
|
);
|
|
600
761
|
const rDim = criteriaMatch.rDim;
|
|
601
762
|
const targetDim = criteriaMatch.rDim ? dimensions.dimIndex[criteriaMatch.rDim] : void 0;
|
|
602
|
-
return /* @__PURE__ */ (0,
|
|
603
|
-
/* @__PURE__ */ (0,
|
|
604
|
-
|
|
763
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
764
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
765
|
+
import_design_system6.InputComboBox,
|
|
605
766
|
{
|
|
606
767
|
...props,
|
|
607
768
|
inputValue,
|
|
@@ -667,26 +828,26 @@ function CriteriaMatchMenu({
|
|
|
667
828
|
},
|
|
668
829
|
noOptionsMessage: ({ inputValue: inputValue2 }) => {
|
|
669
830
|
if (isInt(inputValue2)) {
|
|
670
|
-
return /* @__PURE__ */ (0,
|
|
671
|
-
/* @__PURE__ */ (0,
|
|
831
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
832
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { children: [
|
|
672
833
|
"Score: ",
|
|
673
834
|
inputValue2
|
|
674
835
|
] }),
|
|
675
|
-
/* @__PURE__ */ (0,
|
|
836
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("small", { children: "If you want to match on another dimension\u2019s score instead, clear the score value to search for a dimension." })
|
|
676
837
|
] });
|
|
677
838
|
}
|
|
678
|
-
return /* @__PURE__ */ (0,
|
|
679
|
-
/* @__PURE__ */ (0,
|
|
839
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
840
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { children: [
|
|
680
841
|
"No dimensions match your search \u201C",
|
|
681
842
|
inputValue2,
|
|
682
843
|
"\u201D"
|
|
683
844
|
] }),
|
|
684
|
-
/* @__PURE__ */ (0,
|
|
845
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("small", { children: "If you want to match a literal score, enter a numeric value." })
|
|
685
846
|
] });
|
|
686
847
|
}
|
|
687
848
|
}
|
|
688
849
|
),
|
|
689
|
-
/* @__PURE__ */ (0,
|
|
850
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DimensionMenuErrorMessage, { message: errorMessage })
|
|
690
851
|
] });
|
|
691
852
|
}
|
|
692
853
|
function isInt(value) {
|
|
@@ -694,12 +855,12 @@ function isInt(value) {
|
|
|
694
855
|
}
|
|
695
856
|
|
|
696
857
|
// src/components/DimensionMenu/DimensionMenu.tsx
|
|
697
|
-
var
|
|
698
|
-
var
|
|
858
|
+
var import_design_system7 = require("@uniformdev/design-system");
|
|
859
|
+
var import_jsx_runtime13 = require("@emotion/react/jsx-runtime");
|
|
699
860
|
function DimensionMenu({ onChange, value, dimensions, errorMessage, ...props }) {
|
|
700
|
-
return /* @__PURE__ */ (0,
|
|
701
|
-
/* @__PURE__ */ (0,
|
|
702
|
-
|
|
861
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
862
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
863
|
+
import_design_system7.InputComboBox,
|
|
703
864
|
{
|
|
704
865
|
...props,
|
|
705
866
|
value: value ? dimensionToMenuOption(value) : void 0,
|
|
@@ -728,17 +889,17 @@ function DimensionMenu({ onChange, value, dimensions, errorMessage, ...props })
|
|
|
728
889
|
}
|
|
729
890
|
}
|
|
730
891
|
),
|
|
731
|
-
/* @__PURE__ */ (0,
|
|
892
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DimensionMenuErrorMessage, { message: errorMessage })
|
|
732
893
|
] });
|
|
733
894
|
}
|
|
734
895
|
|
|
735
896
|
// src/components/EditLink/EditLink.tsx
|
|
736
897
|
var import_CgChevronRight = require("@react-icons/all-files/cg/CgChevronRight");
|
|
737
|
-
var
|
|
898
|
+
var import_design_system8 = require("@uniformdev/design-system");
|
|
738
899
|
|
|
739
900
|
// src/components/EditLink/EditLink.styles.ts
|
|
740
|
-
var
|
|
741
|
-
var editLink =
|
|
901
|
+
var import_react11 = require("@emotion/react");
|
|
902
|
+
var editLink = import_react11.css`
|
|
742
903
|
display: flex;
|
|
743
904
|
align-items: center;
|
|
744
905
|
font-weight: var(--fw-bold);
|
|
@@ -752,9 +913,9 @@ var editLink = import_react8.css`
|
|
|
752
913
|
`;
|
|
753
914
|
|
|
754
915
|
// src/components/EditLink/EditLink.tsx
|
|
755
|
-
var
|
|
916
|
+
var import_jsx_runtime14 = require("@emotion/react/jsx-runtime");
|
|
756
917
|
var EditLink = ({ linkTo, name, linkText = `Edit ${name} Component` }) => {
|
|
757
|
-
return /* @__PURE__ */ (0,
|
|
918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
758
919
|
"a",
|
|
759
920
|
{
|
|
760
921
|
css: editLink,
|
|
@@ -764,23 +925,23 @@ var EditLink = ({ linkTo, name, linkText = `Edit ${name} Component` }) => {
|
|
|
764
925
|
href: linkTo,
|
|
765
926
|
children: [
|
|
766
927
|
linkText,
|
|
767
|
-
/* @__PURE__ */ (0,
|
|
928
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system8.Icon, { icon: import_CgChevronRight.CgChevronRight, iconColor: "currentColor", size: "1.5rem" })
|
|
768
929
|
]
|
|
769
930
|
}
|
|
770
931
|
);
|
|
771
932
|
};
|
|
772
933
|
|
|
773
934
|
// src/components/EnrichmentTag/EnrichmentTag.tsx
|
|
774
|
-
var
|
|
935
|
+
var import_react12 = require("@emotion/react");
|
|
775
936
|
var import_CgCloseO = require("@react-icons/all-files/cg/CgCloseO");
|
|
776
937
|
var import_CgMathMinus = require("@react-icons/all-files/cg/CgMathMinus");
|
|
777
938
|
var import_CgMathPlus = require("@react-icons/all-files/cg/CgMathPlus");
|
|
778
939
|
var import_context = require("@uniformdev/context");
|
|
779
|
-
var
|
|
940
|
+
var import_design_system9 = require("@uniformdev/design-system");
|
|
780
941
|
var import_immer = require("immer");
|
|
781
|
-
var
|
|
782
|
-
var
|
|
783
|
-
var addEnrichmentLink =
|
|
942
|
+
var import_react13 = require("react");
|
|
943
|
+
var import_jsx_runtime15 = require("@emotion/react/jsx-runtime");
|
|
944
|
+
var addEnrichmentLink = import_react12.css`
|
|
784
945
|
flex: 2;
|
|
785
946
|
display: flex;
|
|
786
947
|
width: 50%;
|
|
@@ -799,11 +960,11 @@ var EnrichmentTag = ({
|
|
|
799
960
|
displayTitle = true
|
|
800
961
|
}) => {
|
|
801
962
|
const { loading, result: dimensions, error } = useDimensions(contextConfig);
|
|
802
|
-
const allEnrichments = (0,
|
|
963
|
+
const allEnrichments = (0, import_react13.useMemo)(() => {
|
|
803
964
|
if (dimensions)
|
|
804
965
|
return dimensions.dimensions.filter((dimension) => dimension.category === "ENR");
|
|
805
966
|
}, [dimensions]);
|
|
806
|
-
const remainingEnrichments = (0,
|
|
967
|
+
const remainingEnrichments = (0, import_react13.useMemo)(() => {
|
|
807
968
|
if (!value)
|
|
808
969
|
return allEnrichments;
|
|
809
970
|
if (allEnrichments)
|
|
@@ -811,9 +972,9 @@ var EnrichmentTag = ({
|
|
|
811
972
|
(enr) => !value.some((val) => (0, import_context.getEnrichmentVectorKey)(val.cat, val.key) === enr.dim)
|
|
812
973
|
);
|
|
813
974
|
}, [allEnrichments, value]);
|
|
814
|
-
const [selectValue, setSelectValue] = (0,
|
|
815
|
-
const [score, setScore] = (0,
|
|
816
|
-
const [showAddNewEnrichmentTagPanel, setShowAddNewEnrichmentTagPanel] = (0,
|
|
975
|
+
const [selectValue, setSelectValue] = (0, import_react13.useState)("");
|
|
976
|
+
const [score, setScore] = (0, import_react13.useState)(50);
|
|
977
|
+
const [showAddNewEnrichmentTagPanel, setShowAddNewEnrichmentTagPanel] = (0, import_react13.useState)(false);
|
|
817
978
|
const selectedEnrichment = allEnrichments == null ? void 0 : allEnrichments.find((dimension) => dimension.dim === selectValue);
|
|
818
979
|
const addEnrichment = () => {
|
|
819
980
|
const [cat, key] = selectValue.split("_");
|
|
@@ -836,21 +997,21 @@ var EnrichmentTag = ({
|
|
|
836
997
|
setValue(finalValue);
|
|
837
998
|
};
|
|
838
999
|
if (error)
|
|
839
|
-
return /* @__PURE__ */ (0,
|
|
1000
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Callout, { type: "danger", children: error });
|
|
840
1001
|
if (loading || dimensions === null)
|
|
841
|
-
return /* @__PURE__ */ (0,
|
|
842
|
-
return /* @__PURE__ */ (0,
|
|
843
|
-
displayTitle ? /* @__PURE__ */ (0,
|
|
844
|
-
!(allEnrichments == null ? void 0 : allEnrichments.length) ? /* @__PURE__ */ (0,
|
|
845
|
-
|
|
1002
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.LoadingIndicator, {});
|
|
1003
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("fieldset", { className: "enrichment-tag", children: [
|
|
1004
|
+
displayTitle ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { css: { display: "flex", justifyContent: "space-between", marginBottom: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("legend", { css: { fontSize: "var(--fs-md)", fontWeight: "var(--fw-bold)" }, children: "Enrichment Tags" }) }) : null,
|
|
1005
|
+
!(allEnrichments == null ? void 0 : allEnrichments.length) ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(NoEnrichmentsView, { contextConfig }) : !showAddNewEnrichmentTagPanel && !value ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1006
|
+
import_design_system9.Callout,
|
|
846
1007
|
{
|
|
847
1008
|
title: "No enrichment tags assigned.",
|
|
848
1009
|
type: "info",
|
|
849
1010
|
css: { marginBlock: "var(--spacing-base)" },
|
|
850
|
-
children: /* @__PURE__ */ (0,
|
|
1011
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { children: [
|
|
851
1012
|
"Click",
|
|
852
1013
|
" ",
|
|
853
|
-
/* @__PURE__ */ (0,
|
|
1014
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
854
1015
|
"a",
|
|
855
1016
|
{
|
|
856
1017
|
onClick: () => setShowAddNewEnrichmentTagPanel(true),
|
|
@@ -864,9 +1025,9 @@ var EnrichmentTag = ({
|
|
|
864
1025
|
"to assign your first enrichment tag."
|
|
865
1026
|
] })
|
|
866
1027
|
}
|
|
867
|
-
) : /* @__PURE__ */ (0,
|
|
868
|
-
dimensions && /* @__PURE__ */ (0,
|
|
869
|
-
showAddNewEnrichmentTagPanel && remainingEnrichments && remainingEnrichments.length > 0 ? /* @__PURE__ */ (0,
|
|
1028
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
|
|
1029
|
+
dimensions && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SelectedEnrichments, { list: value != null ? value : [], setList: update, dimIndex: dimensions.dimIndex }),
|
|
1030
|
+
showAddNewEnrichmentTagPanel && remainingEnrichments && remainingEnrichments.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
870
1031
|
"div",
|
|
871
1032
|
{
|
|
872
1033
|
className: "add-enrichment-tag",
|
|
@@ -878,8 +1039,8 @@ var EnrichmentTag = ({
|
|
|
878
1039
|
alignItems: "center"
|
|
879
1040
|
},
|
|
880
1041
|
children: [
|
|
881
|
-
/* @__PURE__ */ (0,
|
|
882
|
-
|
|
1042
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { css: { flexGrow: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1043
|
+
import_design_system9.InputSelect,
|
|
883
1044
|
{
|
|
884
1045
|
name: `enrichment-type`,
|
|
885
1046
|
label: "Enrichment Tag",
|
|
@@ -895,7 +1056,7 @@ var EnrichmentTag = ({
|
|
|
895
1056
|
onChange: (e) => setSelectValue(e.currentTarget.value)
|
|
896
1057
|
}
|
|
897
1058
|
) }),
|
|
898
|
-
/* @__PURE__ */ (0,
|
|
1059
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
899
1060
|
ScoreCounter,
|
|
900
1061
|
{
|
|
901
1062
|
score,
|
|
@@ -904,8 +1065,8 @@ var EnrichmentTag = ({
|
|
|
904
1065
|
css: { flexBasis: "9rem" }
|
|
905
1066
|
}
|
|
906
1067
|
),
|
|
907
|
-
/* @__PURE__ */ (0,
|
|
908
|
-
|
|
1068
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1069
|
+
import_design_system9.Button,
|
|
909
1070
|
{
|
|
910
1071
|
buttonType: "tertiary",
|
|
911
1072
|
size: "xl",
|
|
@@ -923,21 +1084,21 @@ var EnrichmentTag = ({
|
|
|
923
1084
|
]
|
|
924
1085
|
}
|
|
925
1086
|
) : null,
|
|
926
|
-
/* @__PURE__ */ (0,
|
|
1087
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
927
1088
|
"div",
|
|
928
1089
|
{
|
|
929
1090
|
className: "enrichment-cta",
|
|
930
1091
|
style: { paddingTop: "10px", display: "flex", justifyContent: "space-between" },
|
|
931
1092
|
children: [
|
|
932
|
-
!showAddNewEnrichmentTagPanel && remainingEnrichments && remainingEnrichments.length > 0 && value ? /* @__PURE__ */ (0,
|
|
933
|
-
|
|
1093
|
+
!showAddNewEnrichmentTagPanel && remainingEnrichments && remainingEnrichments.length > 0 && value ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1094
|
+
import_design_system9.AddListButton,
|
|
934
1095
|
{
|
|
935
1096
|
className: "add-more",
|
|
936
1097
|
buttonText: "Add More",
|
|
937
1098
|
onButtonClick: () => setShowAddNewEnrichmentTagPanel(true)
|
|
938
1099
|
}
|
|
939
|
-
) : /* @__PURE__ */ (0,
|
|
940
|
-
/* @__PURE__ */ (0,
|
|
1100
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("a", { css: addEnrichmentLink, title: `none`, href: "#" }),
|
|
1101
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
941
1102
|
EditLink,
|
|
942
1103
|
{
|
|
943
1104
|
name: "Enrichments",
|
|
@@ -953,10 +1114,10 @@ var EnrichmentTag = ({
|
|
|
953
1114
|
] })
|
|
954
1115
|
] });
|
|
955
1116
|
};
|
|
956
|
-
var NoEnrichmentsView = ({ contextConfig }) => /* @__PURE__ */ (0,
|
|
1117
|
+
var NoEnrichmentsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Callout, { title: "No enrichments found.", type: "caution", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { children: [
|
|
957
1118
|
"Looks like you do not have any enrichment created in your connected Uniform project. Start by creating your first enrichment",
|
|
958
1119
|
" ",
|
|
959
|
-
/* @__PURE__ */ (0,
|
|
1120
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
960
1121
|
"a",
|
|
961
1122
|
{
|
|
962
1123
|
href: `${contextConfig.apiHost}/projects/${encodeURIComponent(
|
|
@@ -973,7 +1134,7 @@ var NoEnrichmentsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_ru
|
|
|
973
1134
|
var getCappedValue = (value, maxCap = 100, minCap = 0) => {
|
|
974
1135
|
return Math.max(Math.min(value, maxCap), minCap);
|
|
975
1136
|
};
|
|
976
|
-
var scoreCounterMinusButtonStyles =
|
|
1137
|
+
var scoreCounterMinusButtonStyles = import_react12.css`
|
|
977
1138
|
position: absolute;
|
|
978
1139
|
bottom: 0.875rem;
|
|
979
1140
|
left: var(--spacing-sm);
|
|
@@ -986,7 +1147,7 @@ var scoreCounterMinusButtonStyles = import_react9.css`
|
|
|
986
1147
|
border: 1px solid var(--gray-300);
|
|
987
1148
|
border-radius: var(--rounded-full);
|
|
988
1149
|
`;
|
|
989
|
-
var scoreCounterPlusButtonStyles =
|
|
1150
|
+
var scoreCounterPlusButtonStyles = import_react12.css`
|
|
990
1151
|
${scoreCounterMinusButtonStyles}
|
|
991
1152
|
left: auto;
|
|
992
1153
|
right: var(--spacing-sm);
|
|
@@ -1007,9 +1168,9 @@ var ScoreCounter = ({
|
|
|
1007
1168
|
}
|
|
1008
1169
|
setValue(newScore);
|
|
1009
1170
|
};
|
|
1010
|
-
return /* @__PURE__ */ (0,
|
|
1011
|
-
/* @__PURE__ */ (0,
|
|
1012
|
-
|
|
1171
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { css: { position: "relative" }, ...otherProps, children: [
|
|
1172
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1173
|
+
import_design_system9.Input,
|
|
1013
1174
|
{
|
|
1014
1175
|
label: "Strength",
|
|
1015
1176
|
id: "enrichment-score",
|
|
@@ -1021,7 +1182,7 @@ var ScoreCounter = ({
|
|
|
1021
1182
|
css: { textAlign: "center", boxSizing: "border-box" }
|
|
1022
1183
|
}
|
|
1023
1184
|
),
|
|
1024
|
-
/* @__PURE__ */ (0,
|
|
1185
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1025
1186
|
"button",
|
|
1026
1187
|
{
|
|
1027
1188
|
type: "button",
|
|
@@ -1030,10 +1191,10 @@ var ScoreCounter = ({
|
|
|
1030
1191
|
disabled: score === 0,
|
|
1031
1192
|
className: "scoreCounterButton",
|
|
1032
1193
|
css: scoreCounterMinusButtonStyles,
|
|
1033
|
-
children: /* @__PURE__ */ (0,
|
|
1194
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Icon, { icon: import_CgMathMinus.CgMathMinus, iconColor: "gray", size: "1.5rem" })
|
|
1034
1195
|
}
|
|
1035
1196
|
),
|
|
1036
|
-
/* @__PURE__ */ (0,
|
|
1197
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1037
1198
|
"button",
|
|
1038
1199
|
{
|
|
1039
1200
|
type: "button",
|
|
@@ -1041,7 +1202,7 @@ var ScoreCounter = ({
|
|
|
1041
1202
|
onClick: () => handleCounter("increment"),
|
|
1042
1203
|
className: "scoreCounterButton",
|
|
1043
1204
|
css: scoreCounterPlusButtonStyles,
|
|
1044
|
-
children: /* @__PURE__ */ (0,
|
|
1205
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Icon, { icon: import_CgMathPlus.CgMathPlus, iconColor: "gray", size: "1.5rem" })
|
|
1045
1206
|
}
|
|
1046
1207
|
)
|
|
1047
1208
|
] });
|
|
@@ -1063,11 +1224,11 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
|
|
|
1063
1224
|
})
|
|
1064
1225
|
);
|
|
1065
1226
|
};
|
|
1066
|
-
return /* @__PURE__ */ (0,
|
|
1227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, { children: list.map((enrichment, index) => {
|
|
1067
1228
|
const dimData = dimIndex[(0, import_context.getEnrichmentVectorKey)(enrichment.cat, enrichment.key)];
|
|
1068
1229
|
if (!dimData)
|
|
1069
1230
|
return;
|
|
1070
|
-
return /* @__PURE__ */ (0,
|
|
1231
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1071
1232
|
"div",
|
|
1072
1233
|
{
|
|
1073
1234
|
css: {
|
|
@@ -1082,14 +1243,14 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
|
|
|
1082
1243
|
},
|
|
1083
1244
|
className: "selected-enrichments",
|
|
1084
1245
|
children: [
|
|
1085
|
-
/* @__PURE__ */ (0,
|
|
1246
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1086
1247
|
"span",
|
|
1087
1248
|
{
|
|
1088
1249
|
css: { fontWeight: "var(--fw-bold)", color: dimData ? void 0 : "var(--brand-secondary-5)" },
|
|
1089
1250
|
children: dimData ? dimData.displayName : `Enrichment '${enrichment.cat}_${enrichment.key}' is unknown`
|
|
1090
1251
|
}
|
|
1091
1252
|
),
|
|
1092
|
-
/* @__PURE__ */ (0,
|
|
1253
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1093
1254
|
"div",
|
|
1094
1255
|
{
|
|
1095
1256
|
css: {
|
|
@@ -1102,8 +1263,8 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
|
|
|
1102
1263
|
padding: "var(--spacing-sm) var(--spacing-base)",
|
|
1103
1264
|
flexBasis: "9rem"
|
|
1104
1265
|
},
|
|
1105
|
-
children: /* @__PURE__ */ (0,
|
|
1106
|
-
|
|
1266
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1267
|
+
import_design_system9.Input,
|
|
1107
1268
|
{
|
|
1108
1269
|
type: "text",
|
|
1109
1270
|
min: 0,
|
|
@@ -1116,14 +1277,14 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
|
|
|
1116
1277
|
)
|
|
1117
1278
|
}
|
|
1118
1279
|
),
|
|
1119
|
-
/* @__PURE__ */ (0,
|
|
1280
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1120
1281
|
"button",
|
|
1121
1282
|
{
|
|
1122
1283
|
type: "button",
|
|
1123
1284
|
title: `Delete enrichment`,
|
|
1124
1285
|
onClick: () => removeEnrichment(index),
|
|
1125
1286
|
css: { border: 0 },
|
|
1126
|
-
children: /* @__PURE__ */ (0,
|
|
1287
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Icon, { icon: import_CgCloseO.CgCloseO, iconColor: "red", size: "1.5rem" })
|
|
1127
1288
|
}
|
|
1128
1289
|
)
|
|
1129
1290
|
]
|
|
@@ -1134,8 +1295,8 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
|
|
|
1134
1295
|
};
|
|
1135
1296
|
|
|
1136
1297
|
// src/components/PersonalizationCriteria/PersonalizationCriteria.tsx
|
|
1137
|
-
var
|
|
1138
|
-
var
|
|
1298
|
+
var import_design_system11 = require("@uniformdev/design-system");
|
|
1299
|
+
var import_react16 = require("react");
|
|
1139
1300
|
var import_react_use = require("react-use");
|
|
1140
1301
|
var yup = __toESM(require("yup"));
|
|
1141
1302
|
|
|
@@ -1151,15 +1312,15 @@ function opHasRhs(op) {
|
|
|
1151
1312
|
}
|
|
1152
1313
|
|
|
1153
1314
|
// src/components/PersonalizationCriteria/PersonalizationCriteriaStatic.tsx
|
|
1154
|
-
var
|
|
1315
|
+
var import_react15 = require("@emotion/react");
|
|
1155
1316
|
var import_CgCloseO2 = require("@react-icons/all-files/cg/CgCloseO");
|
|
1156
|
-
var
|
|
1317
|
+
var import_design_system10 = require("@uniformdev/design-system");
|
|
1157
1318
|
var import_immer2 = require("immer");
|
|
1158
1319
|
|
|
1159
1320
|
// src/components/PersonalizationCriteria/PersonalizationCriteriaStatic.styles.ts
|
|
1160
|
-
var
|
|
1321
|
+
var import_react14 = require("@emotion/react");
|
|
1161
1322
|
var spaceBetweenCriteriaItems = "6rem";
|
|
1162
|
-
var criteriaItem =
|
|
1323
|
+
var criteriaItem = import_react14.css`
|
|
1163
1324
|
position: relative;
|
|
1164
1325
|
padding: var(--spacing-md) var(--spacing-base);
|
|
1165
1326
|
border: 1px solid var(--gray-300);
|
|
@@ -1187,35 +1348,35 @@ var criteriaItem = import_react11.css`
|
|
|
1187
1348
|
}
|
|
1188
1349
|
}
|
|
1189
1350
|
`;
|
|
1190
|
-
var criteriaItemInner =
|
|
1351
|
+
var criteriaItemInner = import_react14.css`
|
|
1191
1352
|
display: flex;
|
|
1192
1353
|
gap: var(--spacing-base);
|
|
1193
1354
|
flex-grow: 1;
|
|
1194
1355
|
flex-wrap: wrap;
|
|
1195
1356
|
margin-right: var(--spacing-base);
|
|
1196
1357
|
`;
|
|
1197
|
-
var criteriaWrapper =
|
|
1358
|
+
var criteriaWrapper = import_react14.css`
|
|
1198
1359
|
width: 100%;
|
|
1199
1360
|
display: flex;
|
|
1200
1361
|
align-items: stretch;
|
|
1201
1362
|
position: relative;
|
|
1202
1363
|
`;
|
|
1203
|
-
var criteriaOperandWrapper =
|
|
1364
|
+
var criteriaOperandWrapper = import_react14.css`
|
|
1204
1365
|
flex: 2;
|
|
1205
1366
|
height: 52px;
|
|
1206
1367
|
min-width: 200px;
|
|
1207
1368
|
`;
|
|
1208
|
-
var criteriaOperatorWrapper =
|
|
1369
|
+
var criteriaOperatorWrapper = import_react14.css`
|
|
1209
1370
|
flex: 1;
|
|
1210
1371
|
min-width: 80px;
|
|
1211
1372
|
`;
|
|
1212
|
-
var expand =
|
|
1373
|
+
var expand = import_react14.css`
|
|
1213
1374
|
height: 100%;
|
|
1214
1375
|
width: 100%;
|
|
1215
1376
|
`;
|
|
1216
1377
|
|
|
1217
1378
|
// src/components/PersonalizationCriteria/PersonalizationCriteriaStatic.tsx
|
|
1218
|
-
var
|
|
1379
|
+
var import_jsx_runtime16 = require("@emotion/react/jsx-runtime");
|
|
1219
1380
|
var PersonalizationCriteriaStatic = ({
|
|
1220
1381
|
value,
|
|
1221
1382
|
setValue,
|
|
@@ -1261,8 +1422,8 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1261
1422
|
setValue(finalValue);
|
|
1262
1423
|
onRemoveCriteria == null ? void 0 : onRemoveCriteria(finalValue);
|
|
1263
1424
|
};
|
|
1264
|
-
return /* @__PURE__ */ (0,
|
|
1265
|
-
displayTitle ? (components == null ? void 0 : components.Title) ? /* @__PURE__ */ (0,
|
|
1425
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("fieldset", { className: "personalization-criteria", children: [
|
|
1426
|
+
displayTitle ? (components == null ? void 0 : components.Title) ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(components.Title, {}) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1266
1427
|
"legend",
|
|
1267
1428
|
{
|
|
1268
1429
|
css: {
|
|
@@ -1272,27 +1433,27 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1272
1433
|
children: "Personalize This"
|
|
1273
1434
|
}
|
|
1274
1435
|
) : null,
|
|
1275
|
-
(components == null ? void 0 : components.CustomVariantName) ? /* @__PURE__ */ (0,
|
|
1276
|
-
!currentValue.crit.length ? /* @__PURE__ */ (0,
|
|
1436
|
+
(components == null ? void 0 : components.CustomVariantName) ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(components.CustomVariantName, {}) : null,
|
|
1437
|
+
!currentValue.crit.length ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Callout, { title: "Default variant", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Paragraph, { children: 'This personalized variant has no match criteria and will be shown to any visitor that does not match any preceding variants. Ensure that default variants come last in the variant list. Personalize this variant by clicking "Add Criteria" to get started.' }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { children: currentValue.crit.map((currentCriteria, index) => {
|
|
1277
1438
|
var _a2, _b, _c, _d;
|
|
1278
1439
|
const critHasLhs = ((_a2 = currentCriteria.l) == null ? void 0 : _a2.length) > 0;
|
|
1279
1440
|
const critHasRhs = currentCriteria.op !== "+" && currentCriteria.op !== "-";
|
|
1280
|
-
return /* @__PURE__ */ (0,
|
|
1281
|
-
/* @__PURE__ */ (0,
|
|
1441
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { css: criteriaItem, "data-testid": "criteria-container", children: [
|
|
1442
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
1282
1443
|
"div",
|
|
1283
1444
|
{
|
|
1284
|
-
css:
|
|
1445
|
+
css: import_react15.css`
|
|
1285
1446
|
${criteriaItemInner}/* grid-template-columns: minmax(0, 1fr) ${critHasRhs ? "minmax(0, 79px) minmax(0, 1fr)" : "minmax(0, 1fr)"} */
|
|
1286
1447
|
`,
|
|
1287
1448
|
className: "criteriaItemInner",
|
|
1288
1449
|
children: [
|
|
1289
|
-
/* @__PURE__ */ (0,
|
|
1450
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1290
1451
|
"div",
|
|
1291
1452
|
{
|
|
1292
1453
|
css: [criteriaWrapper, criteriaOperandWrapper],
|
|
1293
1454
|
className: "criteria-wrapper",
|
|
1294
1455
|
"data-testid": "select-criteria",
|
|
1295
|
-
children: /* @__PURE__ */ (0,
|
|
1456
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1296
1457
|
DimensionMenu,
|
|
1297
1458
|
{
|
|
1298
1459
|
errorMessage: (_b = errors.lhs) == null ? void 0 : _b[index],
|
|
@@ -1309,13 +1470,13 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1309
1470
|
)
|
|
1310
1471
|
}
|
|
1311
1472
|
),
|
|
1312
|
-
/* @__PURE__ */ (0,
|
|
1473
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1313
1474
|
"div",
|
|
1314
1475
|
{
|
|
1315
1476
|
css: [criteriaWrapper, criteriaOperatorWrapper],
|
|
1316
1477
|
className: "criteria-wrapper",
|
|
1317
1478
|
"data-testid": "select-operator",
|
|
1318
|
-
children: /* @__PURE__ */ (0,
|
|
1479
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1319
1480
|
CriteriaOperatorMenu,
|
|
1320
1481
|
{
|
|
1321
1482
|
name: `op-${index}`,
|
|
@@ -1335,13 +1496,13 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1335
1496
|
)
|
|
1336
1497
|
}
|
|
1337
1498
|
),
|
|
1338
|
-
critHasRhs ? /* @__PURE__ */ (0,
|
|
1499
|
+
critHasRhs ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1339
1500
|
"div",
|
|
1340
1501
|
{
|
|
1341
1502
|
css: [criteriaWrapper, criteriaOperandWrapper],
|
|
1342
1503
|
className: "criteria-wrapper",
|
|
1343
1504
|
"data-testid": "select-match-criteria",
|
|
1344
|
-
children: /* @__PURE__ */ (0,
|
|
1505
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1345
1506
|
CriteriaMatchMenu,
|
|
1346
1507
|
{
|
|
1347
1508
|
errorMessage: (_c = errors.rhs) == null ? void 0 : _c[index],
|
|
@@ -1362,7 +1523,7 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1362
1523
|
]
|
|
1363
1524
|
}
|
|
1364
1525
|
),
|
|
1365
|
-
/* @__PURE__ */ (0,
|
|
1526
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1366
1527
|
"button",
|
|
1367
1528
|
{
|
|
1368
1529
|
type: "button",
|
|
@@ -1370,10 +1531,10 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1370
1531
|
title: `Delete Personalization`,
|
|
1371
1532
|
css: { backgroundColor: "transparent", backgroundImage: "none", borderWidth: 0 },
|
|
1372
1533
|
"data-testid": "button-delete",
|
|
1373
|
-
children: /* @__PURE__ */ (0,
|
|
1534
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Icon, { icon: import_CgCloseO2.CgCloseO, iconColor: "red", size: "1.5rem" })
|
|
1374
1535
|
}
|
|
1375
1536
|
),
|
|
1376
|
-
index > 0 ? /* @__PURE__ */ (0,
|
|
1537
|
+
index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1377
1538
|
"div",
|
|
1378
1539
|
{
|
|
1379
1540
|
className: "criteria-group-operation",
|
|
@@ -1382,8 +1543,8 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1382
1543
|
top: "-4rem",
|
|
1383
1544
|
transform: "translateX(calc(1.5rem - 50%))"
|
|
1384
1545
|
},
|
|
1385
|
-
children: /* @__PURE__ */ (0,
|
|
1386
|
-
|
|
1546
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1547
|
+
import_design_system10.InputInlineSelect,
|
|
1387
1548
|
{
|
|
1388
1549
|
"data-testid": "dropdown-button-combine",
|
|
1389
1550
|
disabled: index > 1,
|
|
@@ -1401,8 +1562,8 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1401
1562
|
) : null
|
|
1402
1563
|
] }, index);
|
|
1403
1564
|
}) }),
|
|
1404
|
-
dimensions.dimensions.length === 0 ? (components == null ? void 0 : components.NoDimensionsDefined) ? /* @__PURE__ */ (0,
|
|
1405
|
-
|
|
1565
|
+
dimensions.dimensions.length === 0 ? (components == null ? void 0 : components.NoDimensionsDefined) ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(components.NoDimensionsDefined, {}) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Callout, { title: "Dimensions", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { children: "You do not have any dimensions configured." }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1566
|
+
import_design_system10.AddListButton,
|
|
1406
1567
|
{
|
|
1407
1568
|
"data-testid": "button-add-criteria",
|
|
1408
1569
|
className: "add-more",
|
|
@@ -1414,7 +1575,7 @@ var PersonalizationCriteriaStatic = ({
|
|
|
1414
1575
|
};
|
|
1415
1576
|
|
|
1416
1577
|
// src/components/PersonalizationCriteria/PersonalizationCriteria.tsx
|
|
1417
|
-
var
|
|
1578
|
+
var import_jsx_runtime17 = require("@emotion/react/jsx-runtime");
|
|
1418
1579
|
function convertErrorsToObj(errors) {
|
|
1419
1580
|
const result = { crit: [] };
|
|
1420
1581
|
errors.forEach((err) => {
|
|
@@ -1475,7 +1636,7 @@ var PersonalizationCriteria = ({
|
|
|
1475
1636
|
...staticProps
|
|
1476
1637
|
}) => {
|
|
1477
1638
|
var _a, _b;
|
|
1478
|
-
const [validationError, setValidationError] = (0,
|
|
1639
|
+
const [validationError, setValidationError] = (0, import_react16.useState)(void 0);
|
|
1479
1640
|
const { loading, result: dimensions, error } = useDimensions(contextConfig);
|
|
1480
1641
|
(0, import_react_use.useAsync)(async () => {
|
|
1481
1642
|
if (value && dimensions) {
|
|
@@ -1484,15 +1645,15 @@ var PersonalizationCriteria = ({
|
|
|
1484
1645
|
}
|
|
1485
1646
|
}, [value, dimensions, validate]);
|
|
1486
1647
|
if (error)
|
|
1487
|
-
return /* @__PURE__ */ (0,
|
|
1648
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system11.Callout, { type: "danger", children: error });
|
|
1488
1649
|
if (loading || dimensions === null)
|
|
1489
|
-
return /* @__PURE__ */ (0,
|
|
1650
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system11.LoadingIndicator, {});
|
|
1490
1651
|
const handleSetValue = async (value2) => {
|
|
1491
1652
|
const err = await validate(value2, dimensions);
|
|
1492
1653
|
setValidationError(err);
|
|
1493
1654
|
setValue(value2);
|
|
1494
1655
|
};
|
|
1495
|
-
return /* @__PURE__ */ (0,
|
|
1656
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1496
1657
|
PersonalizationCriteriaStatic,
|
|
1497
1658
|
{
|
|
1498
1659
|
...staticProps,
|
|
@@ -1504,10 +1665,10 @@ var PersonalizationCriteria = ({
|
|
|
1504
1665
|
},
|
|
1505
1666
|
dimensions,
|
|
1506
1667
|
components: {
|
|
1507
|
-
NoDimensionsDefined: () => /* @__PURE__ */ (0,
|
|
1668
|
+
NoDimensionsDefined: () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system11.Callout, { title: "Dimensions", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { children: [
|
|
1508
1669
|
"You do not have any dimensions configured. Create your first",
|
|
1509
1670
|
" ",
|
|
1510
|
-
/* @__PURE__ */ (0,
|
|
1671
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1511
1672
|
"a",
|
|
1512
1673
|
{
|
|
1513
1674
|
href: `${contextConfig.apiHost}/projects/${encodeURIComponent(
|
|
@@ -1526,182 +1687,21 @@ var PersonalizationCriteria = ({
|
|
|
1526
1687
|
};
|
|
1527
1688
|
|
|
1528
1689
|
// src/components/ProjectUIVersion/ProjectUIVersion.tsx
|
|
1529
|
-
var
|
|
1530
|
-
var
|
|
1690
|
+
var import_design_system12 = require("@uniformdev/design-system");
|
|
1691
|
+
var import_jsx_runtime18 = require("@emotion/react/jsx-runtime");
|
|
1531
1692
|
function ProjectUIVersion({ children, versionMap, contextConfig }) {
|
|
1532
1693
|
const { loading, result: data } = useContextData(contextConfig);
|
|
1533
1694
|
if (loading)
|
|
1534
|
-
return /* @__PURE__ */ (0,
|
|
1695
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.LoadingIndicator, {});
|
|
1535
1696
|
if (data) {
|
|
1536
1697
|
const Component = versionMap[data.project.ui_version];
|
|
1537
1698
|
if (Component) {
|
|
1538
|
-
return /* @__PURE__ */ (0,
|
|
1699
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Component, {});
|
|
1539
1700
|
}
|
|
1540
1701
|
}
|
|
1541
|
-
return /* @__PURE__ */ (0,
|
|
1702
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_jsx_runtime18.Fragment, { children });
|
|
1542
1703
|
}
|
|
1543
1704
|
|
|
1544
|
-
// src/components/AbTestSelector/AbTestSelector.tsx
|
|
1545
|
-
var import_react15 = require("@emotion/react");
|
|
1546
|
-
var import_design_system12 = require("@uniformdev/design-system");
|
|
1547
|
-
var import_react16 = require("react");
|
|
1548
|
-
|
|
1549
|
-
// src/hooks/useABTests.ts
|
|
1550
|
-
var import_api3 = require("@uniformdev/context/api");
|
|
1551
|
-
var import_react14 = require("react");
|
|
1552
|
-
function useABTests({ apiHost, apiKey, projectId }) {
|
|
1553
|
-
const [reload, setReload] = (0, import_react14.useState)(true);
|
|
1554
|
-
const [state, setState] = (0, import_react14.useState)({
|
|
1555
|
-
loading: false,
|
|
1556
|
-
notConfigured: false,
|
|
1557
|
-
error: null,
|
|
1558
|
-
result: null
|
|
1559
|
-
});
|
|
1560
|
-
(0, import_react14.useEffect)(() => {
|
|
1561
|
-
if (!projectId || !apiKey || !apiHost) {
|
|
1562
|
-
setState({ notConfigured: true, loading: false, error: null, result: null });
|
|
1563
|
-
return;
|
|
1564
|
-
}
|
|
1565
|
-
const runEffect = async () => {
|
|
1566
|
-
setState({ notConfigured: false, loading: true, error: null, result: null });
|
|
1567
|
-
try {
|
|
1568
|
-
const client = new import_api3.CachedTestClient({
|
|
1569
|
-
projectId,
|
|
1570
|
-
apiKey,
|
|
1571
|
-
apiHost
|
|
1572
|
-
});
|
|
1573
|
-
const { tests } = await client.get();
|
|
1574
|
-
setState({ notConfigured: false, loading: false, error: null, result: tests });
|
|
1575
|
-
} catch (e) {
|
|
1576
|
-
let message;
|
|
1577
|
-
if (e instanceof import_api3.ApiClientError) {
|
|
1578
|
-
message = e.message;
|
|
1579
|
-
} else {
|
|
1580
|
-
message = e.toString();
|
|
1581
|
-
}
|
|
1582
|
-
setState({ notConfigured: false, loading: false, error: message, result: null });
|
|
1583
|
-
return;
|
|
1584
|
-
}
|
|
1585
|
-
};
|
|
1586
|
-
if (reload) {
|
|
1587
|
-
runEffect().then(() => {
|
|
1588
|
-
setReload(false);
|
|
1589
|
-
});
|
|
1590
|
-
}
|
|
1591
|
-
}, [apiHost, apiKey, projectId, reload]);
|
|
1592
|
-
return {
|
|
1593
|
-
result: state.result,
|
|
1594
|
-
error: state.error,
|
|
1595
|
-
loading: state.loading,
|
|
1596
|
-
notConfigured: state.notConfigured,
|
|
1597
|
-
doReload: () => setReload(true)
|
|
1598
|
-
};
|
|
1599
|
-
}
|
|
1600
|
-
|
|
1601
|
-
// src/components/AbTestSelector/AbTestSelector.tsx
|
|
1602
|
-
var import_jsx_runtime18 = require("@emotion/react/jsx-runtime");
|
|
1603
|
-
var addAbTestLink = import_react15.css`
|
|
1604
|
-
flex: 2;
|
|
1605
|
-
display: flex;
|
|
1606
|
-
width: 50%;
|
|
1607
|
-
align-items: center;
|
|
1608
|
-
font-weight: var(--fw-bold);
|
|
1609
|
-
color: var(--brand-primary-1);
|
|
1610
|
-
&:hover,
|
|
1611
|
-
&:focus {
|
|
1612
|
-
text-decoration-line: underline;
|
|
1613
|
-
}
|
|
1614
|
-
`;
|
|
1615
|
-
var AbTestList = ({ contextConfig, onSelect, value }) => {
|
|
1616
|
-
const { loading, result, doReload = () => {
|
|
1617
|
-
} } = useABTests(contextConfig);
|
|
1618
|
-
if (loading) {
|
|
1619
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.LoadingIndicator, {});
|
|
1620
|
-
}
|
|
1621
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
|
|
1622
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.Link, { text: "Refresh A/B Test list", style: { marginRight: "10px" }, onClick: () => doReload() }) }),
|
|
1623
|
-
!result || result.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(NoAbTestsView, { contextConfig }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { marginTop: "10px" }, children: [
|
|
1624
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.ScrollableList, { children: result.map((abTest) => {
|
|
1625
|
-
const { id, name } = abTest;
|
|
1626
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1627
|
-
import_design_system12.ScrollableListItem,
|
|
1628
|
-
{
|
|
1629
|
-
buttonText: name,
|
|
1630
|
-
active: id === (value == null ? void 0 : value.id),
|
|
1631
|
-
onClick: () => onSelect(abTest)
|
|
1632
|
-
},
|
|
1633
|
-
id
|
|
1634
|
-
);
|
|
1635
|
-
}) }),
|
|
1636
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1637
|
-
import_design_system12.AddListButton,
|
|
1638
|
-
{
|
|
1639
|
-
className: "add-more",
|
|
1640
|
-
onButtonClick: () => {
|
|
1641
|
-
window.open(
|
|
1642
|
-
`${contextConfig.apiHost}/projects/${encodeURIComponent(contextConfig.projectId)}/testing`,
|
|
1643
|
-
"_blank"
|
|
1644
|
-
);
|
|
1645
|
-
},
|
|
1646
|
-
buttonText: "Add new A/B Test"
|
|
1647
|
-
}
|
|
1648
|
-
)
|
|
1649
|
-
] })
|
|
1650
|
-
] });
|
|
1651
|
-
};
|
|
1652
|
-
var AbTestSelector = ({ value, setValue, contextConfig, loading }) => {
|
|
1653
|
-
var _a;
|
|
1654
|
-
const [showAbTests, setShowAbTests] = (0, import_react16.useState)(false);
|
|
1655
|
-
if (loading) {
|
|
1656
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.LoadingIndicator, {});
|
|
1657
|
-
}
|
|
1658
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("fieldset", { className: "ab-test", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
|
|
1659
|
-
!showAbTests && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
|
|
1660
|
-
value && Object.keys(value).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.Heading, { level: 4, style: { marginBottom: "10px" }, children: (_a = value == null ? void 0 : value.name) != null ? _a : "Unknown test" }),
|
|
1661
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.Button, { buttonType: "primary", style: { marginRight: "10px" }, onClick: () => setShowAbTests(true), children: "Select A/B Test" })
|
|
1662
|
-
] }),
|
|
1663
|
-
showAbTests && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1664
|
-
AbTestList,
|
|
1665
|
-
{
|
|
1666
|
-
contextConfig,
|
|
1667
|
-
onSelect: (abTest) => {
|
|
1668
|
-
if ((value == null ? void 0 : value.id) === abTest.id) {
|
|
1669
|
-
setValue(void 0);
|
|
1670
|
-
setShowAbTests(true);
|
|
1671
|
-
return;
|
|
1672
|
-
}
|
|
1673
|
-
setValue(abTest);
|
|
1674
|
-
setShowAbTests(false);
|
|
1675
|
-
},
|
|
1676
|
-
value
|
|
1677
|
-
}
|
|
1678
|
-
)
|
|
1679
|
-
] }) });
|
|
1680
|
-
};
|
|
1681
|
-
var NoAbTestsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1682
|
-
import_design_system12.Callout,
|
|
1683
|
-
{
|
|
1684
|
-
title: "No A/B tests found in your Uniform project.",
|
|
1685
|
-
type: "caution",
|
|
1686
|
-
css: { marginBlock: "var(--spacing-base)" },
|
|
1687
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { children: [
|
|
1688
|
-
"Looks like you do not have any A/B tests created in your connected Uniform project. Start by creating your first test",
|
|
1689
|
-
" ",
|
|
1690
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1691
|
-
"a",
|
|
1692
|
-
{
|
|
1693
|
-
href: `${contextConfig.apiHost}/projects/${encodeURIComponent(contextConfig.projectId)}/testing`,
|
|
1694
|
-
target: "_blank",
|
|
1695
|
-
rel: "noopener noreferrer",
|
|
1696
|
-
css: { ":hover": { textDecorationLine: "underline" } },
|
|
1697
|
-
children: "here"
|
|
1698
|
-
}
|
|
1699
|
-
),
|
|
1700
|
-
"."
|
|
1701
|
-
] })
|
|
1702
|
-
}
|
|
1703
|
-
);
|
|
1704
|
-
|
|
1705
1705
|
// src/hooks/useValidateContextConfig.ts
|
|
1706
1706
|
var import_react17 = require("react");
|
|
1707
1707
|
|