@xylabs/sdk-react 2.9.1 → 2.9.5
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/components/Experiments/Experiment.d.ts +1 -0
- package/dist/components/Experiments/Experiment.js.map +1 -1
- package/dist/components/Experiments/Experiments.d.ts +3 -8
- package/dist/components/Experiments/Experiments.js +18 -2
- package/dist/components/Experiments/Experiments.js.map +1 -1
- package/dist/components/Experiments/Experiments.stories.d.ts +6 -0
- package/dist/components/Experiments/Experiments.stories.js +27 -0
- package/dist/components/Experiments/Experiments.stories.js.map +1 -0
- package/dist/components/Experiments/ExperimentsDebugger.d.ts +3 -0
- package/dist/components/Experiments/ExperimentsDebugger.js +37 -0
- package/dist/components/Experiments/ExperimentsDebugger.js.map +1 -0
- package/dist/components/Experiments/ExperimentsDebugger.stories.d.ts +6 -0
- package/dist/components/Experiments/ExperimentsDebugger.stories.js +20 -0
- package/dist/components/Experiments/ExperimentsDebugger.stories.js.map +1 -0
- package/dist/components/Experiments/ExperimentsProps.d.ts +7 -0
- package/dist/components/Experiments/ExperimentsProps.js +2 -0
- package/dist/components/Experiments/ExperimentsProps.js.map +1 -0
- package/dist/components/Experiments/index.d.ts +2 -1
- package/dist/components/Experiments/index.js +2 -1
- package/dist/components/Experiments/index.js.map +1 -1
- package/dist/components/Experiments/models/index.d.ts +12 -0
- package/dist/components/Experiments/models/index.js +3 -0
- package/dist/components/Experiments/models/index.js.map +1 -0
- package/dist/esm2017/components/Experiments/Experiment.d.ts +1 -0
- package/dist/esm2017/components/Experiments/Experiments.d.ts +3 -8
- package/dist/esm2017/components/Experiments/Experiments.stories.d.ts +6 -0
- package/dist/esm2017/components/Experiments/ExperimentsDebugger.d.ts +3 -0
- package/dist/esm2017/components/Experiments/ExperimentsDebugger.stories.d.ts +6 -0
- package/dist/esm2017/components/Experiments/ExperimentsProps.d.ts +7 -0
- package/dist/esm2017/components/Experiments/index.d.ts +2 -1
- package/dist/esm2017/components/Experiments/models/index.d.ts +12 -0
- package/dist/esm2017/hooks/index.d.ts +1 -0
- package/dist/esm2017/hooks/useLocalStorage.d.ts +1 -0
- package/dist/esm2017/index.js +82 -4
- package/dist/esm2017/index.js.map +1 -1
- package/dist/esm5/components/Experiments/Experiment.d.ts +1 -0
- package/dist/esm5/components/Experiments/Experiments.d.ts +3 -8
- package/dist/esm5/components/Experiments/Experiments.stories.d.ts +6 -0
- package/dist/esm5/components/Experiments/ExperimentsDebugger.d.ts +3 -0
- package/dist/esm5/components/Experiments/ExperimentsDebugger.stories.d.ts +6 -0
- package/dist/esm5/components/Experiments/ExperimentsProps.d.ts +7 -0
- package/dist/esm5/components/Experiments/index.d.ts +2 -1
- package/dist/esm5/components/Experiments/models/index.d.ts +12 -0
- package/dist/esm5/hooks/index.d.ts +1 -0
- package/dist/esm5/hooks/useLocalStorage.d.ts +1 -0
- package/dist/esm5/index.js +82 -4
- package/dist/esm5/index.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useLocalStorage.d.ts +1 -0
- package/dist/hooks/useLocalStorage.js +23 -0
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/node/components/Experiments/Experiment.d.ts +1 -0
- package/dist/node/components/Experiments/Experiments.d.ts +3 -8
- package/dist/node/components/Experiments/Experiments.stories.d.ts +6 -0
- package/dist/node/components/Experiments/ExperimentsDebugger.d.ts +3 -0
- package/dist/node/components/Experiments/ExperimentsDebugger.stories.d.ts +6 -0
- package/dist/node/components/Experiments/ExperimentsProps.d.ts +7 -0
- package/dist/node/components/Experiments/index.d.ts +2 -1
- package/dist/node/components/Experiments/models/index.d.ts +12 -0
- package/dist/node/hooks/index.d.ts +1 -0
- package/dist/node/hooks/useLocalStorage.d.ts +1 -0
- package/dist/node/index.js +82 -2
- package/dist/node/index.js.map +1 -1
- package/dist/node-esm/components/Experiments/Experiment.d.ts +1 -0
- package/dist/node-esm/components/Experiments/Experiments.d.ts +3 -8
- package/dist/node-esm/components/Experiments/Experiments.stories.d.ts +6 -0
- package/dist/node-esm/components/Experiments/ExperimentsDebugger.d.ts +3 -0
- package/dist/node-esm/components/Experiments/ExperimentsDebugger.stories.d.ts +6 -0
- package/dist/node-esm/components/Experiments/ExperimentsProps.d.ts +7 -0
- package/dist/node-esm/components/Experiments/index.d.ts +2 -1
- package/dist/node-esm/components/Experiments/models/index.d.ts +12 -0
- package/dist/node-esm/hooks/index.d.ts +1 -0
- package/dist/node-esm/hooks/useLocalStorage.d.ts +1 -0
- package/dist/node-esm/index.js +82 -4
- package/dist/node-esm/index.js.map +1 -1
- package/package.json +4 -4
- package/src/components/Experiments/Experiment.tsx +1 -0
- package/src/components/Experiments/Experiments.stories.tsx +35 -0
- package/src/components/Experiments/Experiments.tsx +21 -10
- package/src/components/Experiments/ExperimentsDebugger.stories.tsx +24 -0
- package/src/components/Experiments/ExperimentsDebugger.tsx +71 -0
- package/src/components/Experiments/ExperimentsProps.ts +9 -0
- package/src/components/Experiments/index.tsx +2 -1
- package/src/components/Experiments/models/index.ts +8 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useLocalStorage.ts +24 -0
- package/xylabs-sdk-react-v2.8.2.tgz +0 -0
package/dist/esm5/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { useTheme, Box, alpha, CircularProgress, LinearProgress, Paper, Typography, IconButton, useScrollTrigger, Zoom, AppBar, Container, Toolbar, Button, Link, responsiveFontSizes, ScopedCssBaseline, ThemeProvider, Fab, Breadcrumbs, Dialog, DialogTitle, DialogContent, DialogActions, useMediaQuery } from '@mui/material';
|
|
2
|
+
import { useTheme, Box, alpha, CircularProgress, LinearProgress, Paper, Typography, IconButton, useScrollTrigger, Zoom, AppBar, Container, Toolbar, Button, Link, responsiveFontSizes, ScopedCssBaseline, ThemeProvider, Fab, Breadcrumbs, Dialog, DialogTitle, DialogContent, DialogActions, useMediaQuery, Slider } from '@mui/material';
|
|
3
3
|
export { useMediaQuery } from '@mui/material';
|
|
4
4
|
import { AiOutlineReload, AiOutlineQuestionCircle } from 'react-icons/ai';
|
|
5
5
|
import { makeStyles, createStyles } from '@mui/styles';
|
|
@@ -135,6 +135,16 @@ function __read(o, n) {
|
|
|
135
135
|
finally { if (e) throw e.error; }
|
|
136
136
|
}
|
|
137
137
|
return ar;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function __spreadArray(to, from, pack) {
|
|
141
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
142
|
+
if (ar || !(i in from)) {
|
|
143
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
144
|
+
ar[i] = from[i];
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
138
148
|
}
|
|
139
149
|
|
|
140
150
|
var BusyCircularProgress = function (_a) {
|
|
@@ -2229,6 +2239,26 @@ var useBreakpoint = function () {
|
|
|
2229
2239
|
}
|
|
2230
2240
|
};
|
|
2231
2241
|
|
|
2242
|
+
var useLocalStorage = function (key, defaultValue) {
|
|
2243
|
+
var _a = __read(useState(function () {
|
|
2244
|
+
try {
|
|
2245
|
+
var item = getLocalStorageObject(key);
|
|
2246
|
+
return item || defaultValue;
|
|
2247
|
+
}
|
|
2248
|
+
catch (ex) {
|
|
2249
|
+
//Error is already logged
|
|
2250
|
+
return defaultValue;
|
|
2251
|
+
}
|
|
2252
|
+
}), 2), storedValue = _a[0], setStoredValue = _a[1];
|
|
2253
|
+
var setValue = function (value) {
|
|
2254
|
+
console.log('setValue', value);
|
|
2255
|
+
setStoredValue(value);
|
|
2256
|
+
setLocalStorageObject(key, value);
|
|
2257
|
+
console.log('getValue from ls', getLocalStorageObject(key));
|
|
2258
|
+
};
|
|
2259
|
+
return [storedValue, setValue];
|
|
2260
|
+
};
|
|
2261
|
+
|
|
2232
2262
|
var useMounted = function () {
|
|
2233
2263
|
var _a = __read(useState(true), 2), mounted = _a[0], setMounted = _a[1];
|
|
2234
2264
|
useEffect(function () {
|
|
@@ -2352,14 +2382,17 @@ var Experiment = function (props) {
|
|
|
2352
2382
|
return jsx(Fragment, { children: children }, void 0);
|
|
2353
2383
|
};
|
|
2354
2384
|
|
|
2385
|
+
var OutcomesLocalStorageKey = 'outcomes';
|
|
2386
|
+
var ExperimentsLocalStorageKey = 'experiments';
|
|
2387
|
+
|
|
2355
2388
|
var defaultLocalStorageKey = 'testData';
|
|
2356
2389
|
var experimentsTestData = {};
|
|
2357
2390
|
var outcomes = {}; //prevent multi-outcome
|
|
2358
2391
|
var saveOutcomes = function () {
|
|
2359
|
-
setLocalStorageObject(
|
|
2392
|
+
setLocalStorageObject(OutcomesLocalStorageKey, outcomes);
|
|
2360
2393
|
};
|
|
2361
2394
|
var loadOutcomes = function () {
|
|
2362
|
-
outcomes = getLocalStorageObject(
|
|
2395
|
+
outcomes = getLocalStorageObject(OutcomesLocalStorageKey);
|
|
2363
2396
|
};
|
|
2364
2397
|
var mergeData = function (data, log) {
|
|
2365
2398
|
var dataArray = [];
|
|
@@ -2403,6 +2436,20 @@ var calcTotalWeight = function (childList) {
|
|
|
2403
2436
|
}
|
|
2404
2437
|
return totalWeight;
|
|
2405
2438
|
};
|
|
2439
|
+
var saveExperimentDebugRanges = function (name, totalWeight, childList) {
|
|
2440
|
+
var experiments = getLocalStorageObject(ExperimentsLocalStorageKey) || {};
|
|
2441
|
+
experiments[name] = {
|
|
2442
|
+
totalWeight: totalWeight,
|
|
2443
|
+
variants: childList.map(function (child) {
|
|
2444
|
+
var _a;
|
|
2445
|
+
return ({
|
|
2446
|
+
name: (_a = child.key) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
2447
|
+
weight: child.props.weight,
|
|
2448
|
+
});
|
|
2449
|
+
}),
|
|
2450
|
+
};
|
|
2451
|
+
setLocalStorageObject(ExperimentsLocalStorageKey, experiments);
|
|
2452
|
+
};
|
|
2406
2453
|
var Experiments = function (props) {
|
|
2407
2454
|
var e_2, _a;
|
|
2408
2455
|
var _b, _c;
|
|
@@ -2413,6 +2460,7 @@ var Experiments = function (props) {
|
|
|
2413
2460
|
var localStorageKey = buildLocalStorageKey(localStorageProp);
|
|
2414
2461
|
var childList = makeChildrenArray(children);
|
|
2415
2462
|
var totalWeight = calcTotalWeight(childList);
|
|
2463
|
+
saveExperimentDebugRanges(name, totalWeight, childList);
|
|
2416
2464
|
var firstTime = outcomes[name] === undefined;
|
|
2417
2465
|
var targetWeight = (_b = outcomes[name]) !== null && _b !== void 0 ? _b : Math.random() * totalWeight;
|
|
2418
2466
|
outcomes[name] = targetWeight;
|
|
@@ -2448,6 +2496,36 @@ var Experiments = function (props) {
|
|
|
2448
2496
|
throw new Error('Experiment Choice Failed');
|
|
2449
2497
|
};
|
|
2450
2498
|
|
|
2499
|
+
var ExperimentsDebugger = function (_a) {
|
|
2500
|
+
var props = __rest(_a, []);
|
|
2501
|
+
var _b = __read(useLocalStorage(ExperimentsLocalStorageKey, {}), 1), experiments = _b[0];
|
|
2502
|
+
var _c = __read(useLocalStorage(OutcomesLocalStorageKey, {}), 2), outcomes = _c[0], setOutcomes = _c[1];
|
|
2503
|
+
var sumUpVariants = function (items) { return items.reduce(function (acc, curr) { return acc + curr.weight; }, 0); };
|
|
2504
|
+
var experimentEntries = Object.entries(experiments);
|
|
2505
|
+
if (!experiments || !experimentEntries.length) {
|
|
2506
|
+
return (jsxs(FlexCol, __assign({ alignItems: "stretch" }, props, { children: [jsx(Typography, __assign({ variant: "subtitle1" }, { children: "No Experiments loaded" }), void 0), jsx(Typography, __assign({ variant: "subtitle2" }, { children: "Visit a page with an experiment to load the data" }), void 0)] }), void 0));
|
|
2507
|
+
}
|
|
2508
|
+
return (jsx(FlexCol, __assign({ alignItems: "stretch" }, props, { children: Object.entries(experiments).map(function (data) {
|
|
2509
|
+
var _a = __read(data, 2), name = _a[0], experiment = _a[1];
|
|
2510
|
+
var outcome = (outcomes[name] || 0);
|
|
2511
|
+
var marks = __spreadArray([
|
|
2512
|
+
{ label: "".concat(experiment.variants[0].name, " | ").concat(experiment.variants[0].weight), value: 0 }
|
|
2513
|
+
], __read(experiment.variants.map(function (_a, index) {
|
|
2514
|
+
var weight = _a.weight;
|
|
2515
|
+
return ({
|
|
2516
|
+
label: index === experiment.variants.length - 1 ? 'End' : "".concat(experiment.variants[index + 1].name, " | ").concat(weight),
|
|
2517
|
+
value: index === 0 ? weight : sumUpVariants(experiment.variants.slice(0, index + 1)),
|
|
2518
|
+
});
|
|
2519
|
+
})), false);
|
|
2520
|
+
return (jsxs(FlexCol, __assign({ alignItems: "stretch", paddingX: 4, marginBottom: 4 }, props, { children: [jsxs(FlexRow, { children: [name, ":\u00A0", outcome] }, void 0), jsx(FlexRow, { children: jsx(Slider, { "aria-label": "Experiment ".concat(name), defaultValue: outcome, value: outcome, marks: marks, onChange: function (e, value) {
|
|
2521
|
+
var truncated = Number((Array.isArray(value) ? value[0] : value).toFixed(2));
|
|
2522
|
+
outcomes[name] = truncated;
|
|
2523
|
+
// Spread operator triggers rerender
|
|
2524
|
+
setOutcomes(__assign({}, outcomes));
|
|
2525
|
+
} }, void 0) }, void 0)] }), "experiment-".concat(name)));
|
|
2526
|
+
}) }), void 0));
|
|
2527
|
+
};
|
|
2528
|
+
|
|
2451
2529
|
var LinkToEx = function (_a) {
|
|
2452
2530
|
var to = _a.to, props = __rest(_a, ["to"]);
|
|
2453
2531
|
return jsx(Link, __assign({ component: Link$1, to: to }, props), void 0);
|
|
@@ -2549,5 +2627,5 @@ var TokenAmount = function (_a) {
|
|
|
2549
2627
|
return (jsx(ButtonEx, __assign({ style: __assign({ backgroundColor: statusColor }, style), variant: "outlined", onClick: onButtonClick }, props, { children: jsxs(FlexRow, __assign({ justifyContent: "space-between", width: "100%", busy: amount === undefined, busySize: 16 }, { children: [jsxs(FlexRow, { children: [logo ? jsx("img", { src: img, height: 24 }, void 0) : null, label ? (jsx(Typography, __assign({ marginRight: 1, marginLeft: logo ? 1 : 0, noWrap: true, fontFamily: textFontFamily, variant: "caption" }, { children: label }), void 0)) : null] }, void 0), jsx(Typography, __assign({ color: textColor, noWrap: true, fontFamily: textFontFamily, variant: "body1", style: { textTransform: 'none' } }, { children: amountString }), void 0)] }), void 0) }), void 0));
|
|
2550
2628
|
};
|
|
2551
2629
|
|
|
2552
|
-
export { ActionStatusType, AppBarEx, Background, BasePage, BreadcrumbsEx, BusyBox, ButtonEx, ContactPointOption, CookieConsent, CookieConsentBody, CookieConsentContext, CookieConsentLoader, CoverProgress, DripCustomEvent, DripStandardEvents, ErrorDialog, EthAccount, EthersContext, EthersLoader, Experiment, Experiments, FacebookCustomEvent, FacebookStandardEvents, Fbq, FlexCol, FlexGrowCol, FlexGrowRow, FlexRow, GoogleBaseEvent, GoogleCustomEvent, GoogleStandardEvents, GoogleUserEventHandler, Gtag, Gtm, HoverScale, Identicon, InvertableThemeProvider, ItemAvailability, LinkToEx, MapCategoryType, MessageDialog, NetworkSettingsContext, NetworkSettingsLoader, NumberStatus, QuickTipButton, Rdt, RedditCustomEvent, RedditStandardEvents, RedirectWithQuery, Referrer, RichResult, ScrollToTop, ScrollToTopButton, SnapTr, SnapchatStandardEvents, TiktokCustomEvent, TiktokStandardEvents, TokenAmount, Ttq, UserEventsContext, XyBaseEvent, XyCustomEvent, XyUserEventHandler, XyoUserEventHandler, enableProfileLogging, getApiStage, getLocalStorageObject, getSessionStorageObject, isLocalhost, profileBlock, profileResults, setLocalStorageObject, setSessionStorageObject, useAsyncEffect, useBreakpoint, useCookieConsent, useMounted, useNavigateToEthAddress, useSpacing, useWebP, useWindowSize };
|
|
2630
|
+
export { ActionStatusType, AppBarEx, Background, BasePage, BreadcrumbsEx, BusyBox, ButtonEx, ContactPointOption, CookieConsent, CookieConsentBody, CookieConsentContext, CookieConsentLoader, CoverProgress, DripCustomEvent, DripStandardEvents, ErrorDialog, EthAccount, EthersContext, EthersLoader, Experiment, Experiments, ExperimentsDebugger, FacebookCustomEvent, FacebookStandardEvents, Fbq, FlexCol, FlexGrowCol, FlexGrowRow, FlexRow, GoogleBaseEvent, GoogleCustomEvent, GoogleStandardEvents, GoogleUserEventHandler, Gtag, Gtm, HoverScale, Identicon, InvertableThemeProvider, ItemAvailability, LinkToEx, MapCategoryType, MessageDialog, NetworkSettingsContext, NetworkSettingsLoader, NumberStatus, QuickTipButton, Rdt, RedditCustomEvent, RedditStandardEvents, RedirectWithQuery, Referrer, RichResult, ScrollToTop, ScrollToTopButton, SnapTr, SnapchatStandardEvents, TiktokCustomEvent, TiktokStandardEvents, TokenAmount, Ttq, UserEventsContext, XyBaseEvent, XyCustomEvent, XyUserEventHandler, XyoUserEventHandler, enableProfileLogging, getApiStage, getLocalStorageObject, getSessionStorageObject, isLocalhost, profileBlock, profileResults, setLocalStorageObject, setSessionStorageObject, useAsyncEffect, useBreakpoint, useCookieConsent, useLocalStorage, useMounted, useNavigateToEthAddress, useSpacing, useWebP, useWindowSize };
|
|
2553
2631
|
//# sourceMappingURL=index.js.map
|