yandex-metrica-ab-react
Version:
React библиотека для работы с AB экспериментами Метрики
42 lines (41 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useExperiments = void 0;
const react_1 = require("react");
const createSnippet_1 = require("./createSnippet");
const useJsonStringify = (data = {}) => {
try {
return JSON.stringify(data);
}
catch (e) {
console.error(e);
return '{}';
}
};
const useExperiments = (params) => {
const { clientId, clientFeatures, config = {}, param: i } = params;
const [data, setData] = (0, react_1.useState)({
ready: false,
flags: {},
});
const configKey = useJsonStringify(config);
const featuresKey = useJsonStringify(clientFeatures);
const href = window.location.href;
(0, react_1.useEffect)(() => (0, createSnippet_1.createSnippet)(), []);
(0, react_1.useEffect)(() => {
const enableVisual = typeof config.enableVisual === 'undefined' || config.enableVisual;
if (clientId) {
window.ymab({
clientId,
clientFeatures,
config: Object.assign(Object.assign({}, config), { enableWatch: typeof config.enableWatch === 'undefined'
? enableVisual
: config.enableWatch }),
i,
callback: (data) => setData(Object.assign(Object.assign({}, data), { ready: true })),
});
}
}, [clientId, featuresKey, configKey, i, href]);
return data;
};
exports.useExperiments = useExperiments;