AK-21/Graphite-Industrial-Intelligence
0
1(function (global, factory) {2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :3 typeof define === 'function' && define.amd ? define(['exports'], factory) :4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.zustandMiddleware = {}));5})(this, (function (exports) { 'use strict';6 7 function _extends() {8 return _extends = Object.assign ? Object.assign.bind() : function (n) {9 for (var e = 1; e < arguments.length; e++) {10 var t = arguments[e];11 for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);12 }13 return n;14 }, _extends.apply(null, arguments);15 }16 function _objectWithoutPropertiesLoose(r, e) {17 if (null == r) return {};18 var t = {};19 for (var n in r) if ({}.hasOwnProperty.call(r, n)) {20 if (e.includes(n)) continue;21 t[n] = r[n];22 }23 return t;24 }25 26 var reduxImpl = function reduxImpl(reducer, initial) {27 return function (set, _get, api) {28 api.dispatch = function (action) {29 set(function (state) {30 return reducer(state, action);31 }, false, action);32 return action;33 };34 api.dispatchFromDevtools = true;35 return _extends({36 dispatch: function dispatch() {37 var _ref;38 return (_ref = api).dispatch.apply(_ref, arguments);39 }40 }, initial);41 };42 };43 var redux = reduxImpl;44 45 var _excluded = ["enabled", "anonymousActionType", "store"],46 _excluded2 = ["connection"];47 var trackedConnections = new Map();48 var getTrackedConnectionState = function getTrackedConnectionState(name) {49 var api = trackedConnections.get(name);50 if (!api) return {};51 return Object.fromEntries(Object.entries(api.stores).map(function (_ref) {52 var key = _ref[0],53 api = _ref[1];54 return [key, api.getState()];55 }));56 };57 var extractConnectionInformation = function extractConnectionInformation(store, extensionConnector, options) {58 if (store === undefined) {59 return {60 type: 'untracked',61 connection: extensionConnector.connect(options)62 };63 }64 var existingConnection = trackedConnections.get(options.name);65 if (existingConnection) {66 return _extends({67 type: 'tracked',68 store: store69 }, existingConnection);70 }71 var newConnection = {72 connection: extensionConnector.connect(options),73 stores: {}74 };75 trackedConnections.set(options.name, newConnection);76 return _extends({77 type: 'tracked',78 store: store79 }, newConnection);80 };81 var devtoolsImpl = function devtoolsImpl(fn, devtoolsOptions) {82 if (devtoolsOptions === void 0) {83 devtoolsOptions = {};84 }85 return function (set, get, api) {86 var _devtoolsOptions = devtoolsOptions,87 enabled = _devtoolsOptions.enabled,88 anonymousActionType = _devtoolsOptions.anonymousActionType,89 store = _devtoolsOptions.store,90 options = _objectWithoutPropertiesLoose(_devtoolsOptions, _excluded);91 var extensionConnector;92 try {93 extensionConnector = (enabled != null ? enabled : "development" !== 'production') && window.__REDUX_DEVTOOLS_EXTENSION__;94 } catch (_e) {}95 if (!extensionConnector) {96 if (enabled) {97 console.warn('[zustand devtools middleware] Please install/enable Redux devtools extension');98 }99 return fn(set, get, api);100 }101 var _extractConnectionInf = extractConnectionInformation(store, extensionConnector, options),102 connection = _extractConnectionInf.connection,103 connectionInformation = _objectWithoutPropertiesLoose(_extractConnectionInf, _excluded2);104 var isRecording = true;105 api.setState = function (state, replace, nameOrAction) {106 var _extends2;107 var r = set(state, replace);108 if (!isRecording) return r;109 var action = nameOrAction === undefined ? {110 type: anonymousActionType || 'anonymous'111 } : typeof nameOrAction === 'string' ? {112 type: nameOrAction113 } : nameOrAction;114 if (store === undefined) {115 connection == null || connection.send(action, get());116 return r;117 }118 connection == null || connection.send(_extends({}, action, {119 type: store + "/" + action.type120 }), _extends({}, getTrackedConnectionState(options.name), (_extends2 = {}, _extends2[store] = api.getState(), _extends2)));121 return r;122 };123 var setStateFromDevtools = function setStateFromDevtools() {124 var originalIsRecording = isRecording;125 isRecording = false;126 set.apply(void 0, arguments);127 isRecording = originalIsRecording;128 };129 var initialState = fn(api.setState, get, api);130 if (connectionInformation.type === 'untracked') {131 connection == null || connection.init(initialState);132 } else {133 connectionInformation.stores[connectionInformation.store] = api;134 connection == null || connection.init(Object.fromEntries(Object.entries(connectionInformation.stores).map(function (_ref2) {135 var key = _ref2[0],136 store = _ref2[1];137 return [key, key === connectionInformation.store ? initialState : store.getState()];138 })));139 }140 if (api.dispatchFromDevtools && typeof api.dispatch === 'function') {141 var didWarnAboutReservedActionType = false;142 var originalDispatch = api.dispatch;143 api.dispatch = function () {144 for (var _len = arguments.length, a = new Array(_len), _key = 0; _key < _len; _key++) {145 a[_key] = arguments[_key];146 }147 if (a[0].type === '__setState' && !didWarnAboutReservedActionType) {148 console.warn('[zustand devtools middleware] "__setState" action type is reserved ' + 'to set state from the devtools. Avoid using it.');149 didWarnAboutReservedActionType = true;150 }151 originalDispatch.apply(void 0, a);152 };153 }154 connection.subscribe(function (message) {155 switch (message.type) {156 case 'ACTION':157 if (typeof message.payload !== 'string') {158 console.error('[zustand devtools middleware] Unsupported action format');159 return;160 }161 return parseJsonThen(message.payload, function (action) {162 if (action.type === '__setState') {163 if (store === undefined) {164 setStateFromDevtools(action.state);165 return;166 }167 if (Object.keys(action.state).length !== 1) {168 console.error("\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n ");169 }170 var stateFromDevtools = action.state[store];171 if (stateFromDevtools === undefined || stateFromDevtools === null) {172 return;173 }174 if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {175 setStateFromDevtools(stateFromDevtools);176 }177 return;178 }179 if (!api.dispatchFromDevtools) return;180 if (typeof api.dispatch !== 'function') return;181 api.dispatch(action);182 });183 case 'DISPATCH':184 switch (message.payload.type) {185 case 'RESET':186 setStateFromDevtools(initialState);187 if (store === undefined) {188 return connection == null ? void 0 : connection.init(api.getState());189 }190 return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));191 case 'COMMIT':192 if (store === undefined) {193 connection == null || connection.init(api.getState());194 return;195 }196 return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));197 case 'ROLLBACK':198 return parseJsonThen(message.state, function (state) {199 if (store === undefined) {200 setStateFromDevtools(state);201 connection == null || connection.init(api.getState());202 return;203 }204 setStateFromDevtools(state[store]);205 connection == null || connection.init(getTrackedConnectionState(options.name));206 });207 case 'JUMP_TO_STATE':208 case 'JUMP_TO_ACTION':209 return parseJsonThen(message.state, function (state) {210 if (store === undefined) {211 setStateFromDevtools(state);212 return;213 }214 if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {215 setStateFromDevtools(state[store]);216 }217 });218 case 'IMPORT_STATE':219 {220 var _nextLiftedState$comp;221 var nextLiftedState = message.payload.nextLiftedState;222 var lastComputedState = (_nextLiftedState$comp = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _nextLiftedState$comp.state;223 if (!lastComputedState) return;224 if (store === undefined) {225 setStateFromDevtools(lastComputedState);226 } else {227 setStateFromDevtools(lastComputedState[store]);228 }229 connection == null || connection.send(null, nextLiftedState);230 return;231 }232 case 'PAUSE_RECORDING':233 return isRecording = !isRecording;234 }235 return;236 }237 });238 return initialState;239 };240 };241 var devtools = devtoolsImpl;242 var parseJsonThen = function parseJsonThen(stringified, f) {243 var parsed;244 try {245 parsed = JSON.parse(stringified);246 } catch (e) {247 console.error('[zustand devtools middleware] Could not parse the received json', e);248 }249 if (parsed !== undefined) f(parsed);250 };251 252 var subscribeWithSelectorImpl = function subscribeWithSelectorImpl(fn) {253 return function (set, get, api) {254 var origSubscribe = api.subscribe;255 api.subscribe = function (selector, optListener, options) {256 var listener = selector;257 if (optListener) {258 var equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;259 var currentSlice = selector(api.getState());260 listener = function listener(state) {261 var nextSlice = selector(state);262 if (!equalityFn(currentSlice, nextSlice)) {263 var previousSlice = currentSlice;264 optListener(currentSlice = nextSlice, previousSlice);265 }266 };267 if (options != null && options.fireImmediately) {268 optListener(currentSlice, currentSlice);269 }270 }271 return origSubscribe(listener);272 };273 var initialState = fn(set, get, api);274 return initialState;275 };276 };277 var subscribeWithSelector = subscribeWithSelectorImpl;278 279 var combine = function combine(initialState, create) {280 return function () {281 return Object.assign({}, initialState, create.apply(void 0, arguments));282 };283 };284 285 function createJSONStorage(getStorage, options) {286 var storage;287 try {288 storage = getStorage();289 } catch (_e) {290 return;291 }292 var persistStorage = {293 getItem: function getItem(name) {294 var _getItem;295 var parse = function parse(str) {296 if (str === null) {297 return null;298 }299 return JSON.parse(str, options == null ? void 0 : options.reviver);300 };301 var str = (_getItem = storage.getItem(name)) != null ? _getItem : null;302 if (str instanceof Promise) {303 return str.then(parse);304 }305 return parse(str);306 },307 setItem: function setItem(name, newValue) {308 return storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer));309 },310 removeItem: function removeItem(name) {311 return storage.removeItem(name);312 }313 };314 return persistStorage;315 }316 var _toThenable = function toThenable(fn) {317 return function (input) {318 try {319 var result = fn(input);320 if (result instanceof Promise) {321 return result;322 }323 return {324 then: function then(onFulfilled) {325 return _toThenable(onFulfilled)(result);326 },327 catch: function _catch(_onRejected) {328 return this;329 }330 };331 } catch (e) {332 return {333 then: function then(_onFulfilled) {334 return this;335 },336 catch: function _catch(onRejected) {337 return _toThenable(onRejected)(e);338 }339 };340 }341 };342 };343 var oldImpl = function oldImpl(config, baseOptions) {344 return function (set, get, api) {345 var options = _extends({346 getStorage: function getStorage() {347 return localStorage;348 },349 serialize: JSON.stringify,350 deserialize: JSON.parse,351 partialize: function partialize(state) {352 return state;353 },354 version: 0,355 merge: function merge(persistedState, currentState) {356 return _extends({}, currentState, persistedState);357 }358 }, baseOptions);359 var _hasHydrated = false;360 var hydrationListeners = new Set();361 var finishHydrationListeners = new Set();362 var storage;363 try {364 storage = options.getStorage();365 } catch (_e) {}366 if (!storage) {367 return config(function () {368 console.warn("[zustand persist middleware] Unable to update item '" + options.name + "', the given storage is currently unavailable.");369 set.apply(void 0, arguments);370 }, get, api);371 }372 var thenableSerialize = _toThenable(options.serialize);373 var setItem = function setItem() {374 var state = options.partialize(_extends({}, get()));375 var errorInSync;376 var thenable = thenableSerialize({377 state: state,378 version: options.version379 }).then(function (serializedValue) {380 return storage.setItem(options.name, serializedValue);381 }).catch(function (e) {382 errorInSync = e;383 });384 if (errorInSync) {385 throw errorInSync;386 }387 return thenable;388 };389 var savedSetState = api.setState;390 api.setState = function (state, replace) {391 savedSetState(state, replace);392 void setItem();393 };394 var configResult = config(function () {395 set.apply(void 0, arguments);396 void setItem();397 }, get, api);398 var stateFromStorage;399 var hydrate = function hydrate() {400 if (!storage) return;401 _hasHydrated = false;402 hydrationListeners.forEach(function (cb) {403 return cb(get());404 });405 var postRehydrationCallback = (options.onRehydrateStorage == null ? void 0 : options.onRehydrateStorage(get())) || undefined;406 return _toThenable(storage.getItem.bind(storage))(options.name).then(function (storageValue) {407 if (storageValue) {408 return options.deserialize(storageValue);409 }410 }).then(function (deserializedStorageValue) {411 if (deserializedStorageValue) {412 if (typeof deserializedStorageValue.version === 'number' && deserializedStorageValue.version !== options.version) {413 if (options.migrate) {414 return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);415 }416 console.error("State loaded from storage couldn't be migrated since no migrate function was provided");417 } else {418 return deserializedStorageValue.state;419 }420 }421 }).then(function (migratedState) {422 var _get;423 stateFromStorage = options.merge(migratedState, (_get = get()) != null ? _get : configResult);424 set(stateFromStorage, true);425 return setItem();426 }).then(function () {427 postRehydrationCallback == null || postRehydrationCallback(stateFromStorage, undefined);428 _hasHydrated = true;429 finishHydrationListeners.forEach(function (cb) {430 return cb(stateFromStorage);431 });432 }).catch(function (e) {433 postRehydrationCallback == null || postRehydrationCallback(undefined, e);434 });435 };436 api.persist = {437 setOptions: function setOptions(newOptions) {438 options = _extends({}, options, newOptions);439 if (newOptions.getStorage) {440 storage = newOptions.getStorage();441 }442 },443 clearStorage: function clearStorage() {444 var _storage;445 (_storage = storage) == null || _storage.removeItem(options.name);446 },447 getOptions: function getOptions() {448 return options;449 },450 rehydrate: function rehydrate() {451 return hydrate();452 },453 hasHydrated: function hasHydrated() {454 return _hasHydrated;455 },456 onHydrate: function onHydrate(cb) {457 hydrationListeners.add(cb);458 return function () {459 hydrationListeners.delete(cb);460 };461 },462 onFinishHydration: function onFinishHydration(cb) {463 finishHydrationListeners.add(cb);464 return function () {465 finishHydrationListeners.delete(cb);466 };467 }468 };469 hydrate();470 return stateFromStorage || configResult;471 };472 };473 var newImpl = function newImpl(config, baseOptions) {474 return function (set, get, api) {475 var options = _extends({476 storage: createJSONStorage(function () {477 return localStorage;478 }),479 partialize: function partialize(state) {480 return state;481 },482 version: 0,483 merge: function merge(persistedState, currentState) {484 return _extends({}, currentState, persistedState);485 }486 }, baseOptions);487 var _hasHydrated2 = false;488 var hydrationListeners = new Set();489 var finishHydrationListeners = new Set();490 var storage = options.storage;491 if (!storage) {492 return config(function () {493 console.warn("[zustand persist middleware] Unable to update item '" + options.name + "', the given storage is currently unavailable.");494 set.apply(void 0, arguments);495 }, get, api);496 }497 var setItem = function setItem() {498 var state = options.partialize(_extends({}, get()));499 return storage.setItem(options.name, {500 state: state,501 version: options.version502 });503 };504 var savedSetState = api.setState;505 api.setState = function (state, replace) {506 savedSetState(state, replace);507 void setItem();508 };509 var configResult = config(function () {510 set.apply(void 0, arguments);511 void setItem();512 }, get, api);513 api.getInitialState = function () {514 return configResult;515 };516 var stateFromStorage;517 var hydrate = function hydrate() {518 var _get3;519 if (!storage) return;520 _hasHydrated2 = false;521 hydrationListeners.forEach(function (cb) {522 var _get2;523 return cb((_get2 = get()) != null ? _get2 : configResult);524 });525 var postRehydrationCallback = (options.onRehydrateStorage == null ? void 0 : options.onRehydrateStorage((_get3 = get()) != null ? _get3 : configResult)) || undefined;526 return _toThenable(storage.getItem.bind(storage))(options.name).then(function (deserializedStorageValue) {527 if (deserializedStorageValue) {528 if (typeof deserializedStorageValue.version === 'number' && deserializedStorageValue.version !== options.version) {529 if (options.migrate) {530 return [true, options.migrate(deserializedStorageValue.state, deserializedStorageValue.version)];531 }532 console.error("State loaded from storage couldn't be migrated since no migrate function was provided");533 } else {534 return [false, deserializedStorageValue.state];535 }536 }537 return [false, undefined];538 }).then(function (migrationResult) {539 var _get4;540 var migrated = migrationResult[0],541 migratedState = migrationResult[1];542 stateFromStorage = options.merge(migratedState, (_get4 = get()) != null ? _get4 : configResult);543 set(stateFromStorage, true);544 if (migrated) {545 return setItem();546 }547 }).then(function () {548 postRehydrationCallback == null || postRehydrationCallback(stateFromStorage, undefined);549 stateFromStorage = get();550 _hasHydrated2 = true;551 finishHydrationListeners.forEach(function (cb) {552 return cb(stateFromStorage);553 });554 }).catch(function (e) {555 postRehydrationCallback == null || postRehydrationCallback(undefined, e);556 });557 };558 api.persist = {559 setOptions: function setOptions(newOptions) {560 options = _extends({}, options, newOptions);561 if (newOptions.storage) {562 storage = newOptions.storage;563 }564 },565 clearStorage: function clearStorage() {566 var _storage2;567 (_storage2 = storage) == null || _storage2.removeItem(options.name);568 },569 getOptions: function getOptions() {570 return options;571 },572 rehydrate: function rehydrate() {573 return hydrate();574 },575 hasHydrated: function hasHydrated() {576 return _hasHydrated2;577 },578 onHydrate: function onHydrate(cb) {579 hydrationListeners.add(cb);580 return function () {581 hydrationListeners.delete(cb);582 };583 },584 onFinishHydration: function onFinishHydration(cb) {585 finishHydrationListeners.add(cb);586 return function () {587 finishHydrationListeners.delete(cb);588 };589 }590 };591 if (!options.skipHydration) {592 hydrate();593 }594 return stateFromStorage || configResult;595 };596 };597 var persistImpl = function persistImpl(config, baseOptions) {598 if ('getStorage' in baseOptions || 'serialize' in baseOptions || 'deserialize' in baseOptions) {599 {600 console.warn('[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.');601 }602 return oldImpl(config, baseOptions);603 }604 return newImpl(config, baseOptions);605 };606 var persist = persistImpl;607 608 exports.combine = combine;609 exports.createJSONStorage = createJSONStorage;610 exports.devtools = devtools;611 exports.persist = persist;612 exports.redux = redux;613 exports.subscribeWithSelector = subscribeWithSelector;614 615}));616 