@ant-design/pro-flow
Version:
A React based Flow components
69 lines (66 loc) • 2.63 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
import { memo } from 'react';
import { create } from 'zustand';
import { createContext, createStoreUpdater } from 'zustand-utils';
// ============ State ============ //
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
import { Fragment as _Fragment } from "react/jsx-runtime";
// ============ Store ============ //
var _createStore = function createStore(_ref) {
var collapsedKeys = _ref.collapsedKeys,
onCollapsedKeysChange = _ref.onCollapsedKeysChange;
return create(function (set, get) {
return {
collapsedKeys: collapsedKeys !== null && collapsedKeys !== void 0 ? collapsedKeys : [],
onCollapsedKeysChange: onCollapsedKeysChange,
toggleCollapsedKey: function toggleCollapsedKey(key) {
var _get$onCollapsedKeysC, _get;
var nextCollapsedKeys = [];
if (get().collapsedKeys.includes(key)) {
nextCollapsedKeys = get().collapsedKeys.filter(function (item) {
return item !== key;
});
} else {
nextCollapsedKeys = [].concat(_toConsumableArray(get().collapsedKeys), [key]);
}
set({
collapsedKeys: nextCollapsedKeys
});
(_get$onCollapsedKeysC = (_get = get()).onCollapsedKeysChange) === null || _get$onCollapsedKeysC === void 0 || _get$onCollapsedKeysC.call(_get, nextCollapsedKeys);
}
};
});
};
var _createContext = createContext(),
useStore = _createContext.useStore,
useStoreApi = _createContext.useStoreApi,
Provider = _createContext.Provider;
// ============ Provider ============ //
export { useStore, useStoreApi, Provider };
var StoreUpdater = /*#__PURE__*/memo(function (_ref2) {
var collapsedKeys = _ref2.collapsedKeys;
var storeApi = useStoreApi();
var useUpdater = createStoreUpdater(storeApi);
useUpdater('collapsedKeys', collapsedKeys);
return null;
});
export var CollapseProvider = /*#__PURE__*/memo(function (_ref3) {
var children = _ref3.children,
defaultCollapsedKeys = _ref3.defaultCollapsedKeys,
onCollapsedKeysChange = _ref3.onCollapsedKeysChange,
collapsedKeys = _ref3.collapsedKeys;
return /*#__PURE__*/_jsx(_Fragment, {
children: /*#__PURE__*/_jsxs(Provider, {
createStore: function createStore() {
return _createStore({
collapsedKeys: defaultCollapsedKeys,
onCollapsedKeysChange: onCollapsedKeysChange
});
},
children: [children, /*#__PURE__*/_jsx(StoreUpdater, {
collapsedKeys: collapsedKeys
})]
})
});
});