dgz-ui-shared 1.2.2 → 1.2.3

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.
@@ -0,0 +1,2 @@
1
+ "use strict";const N=require("react"),R=t=>t&&t.__esModule?t:{default:t},b=R(N),w=t=>{let r;const e=new Set,o=(l,c)=>{const d=typeof l=="function"?l(r):l;if(!Object.is(d,r)){const I=r;r=c??(typeof d!="object"||d===null)?d:Object.assign({},r,d),e.forEach(g=>g(r,I))}},a=()=>r,u={setState:o,getState:a,getInitialState:()=>m,subscribe:l=>(e.add(l),()=>e.delete(l))},m=r=t(o,a,u);return u},F=(t=>t?w(t):w),P=t=>t;function x(t,r=P){const e=b.default.useSyncExternalStore(t.subscribe,b.default.useCallback(()=>r(t.getState()),[t,r]),b.default.useCallback(()=>r(t.getInitialState()),[t,r]));return b.default.useDebugValue(e),e}const H=t=>{const r=F(t),e=o=>x(r,o);return Object.assign(e,r),e},j=(t=>t?H(t):H);function k(t,r){let e;try{e=t()}catch{return}return{getItem:a=>{var s;const S=m=>m===null?null:JSON.parse(m,void 0),u=(s=e.getItem(a))!=null?s:null;return u instanceof Promise?u.then(S):S(u)},setItem:(a,s)=>e.setItem(a,JSON.stringify(s,void 0)),removeItem:a=>e.removeItem(a)}}const C=t=>r=>{try{const e=t(r);return e instanceof Promise?e:{then(o){return C(o)(e)},catch(o){return this}}}catch(e){return{then(o){return this},catch(o){return C(o)(e)}}}},D=(t,r)=>(e,o,a)=>{let s={storage:k(()=>window.localStorage),partialize:n=>n,version:0,merge:(n,v)=>({...v,...n}),...r},S=!1,u=0;const m=new Set,l=new Set;let c=s.storage;if(!c)return t((...n)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),e(...n)},o,a);const d=()=>{const n=s.partialize({...o()});return c.setItem(s.name,{state:n,version:s.version})},I=a.setState;a.setState=(n,v)=>(I(n,v),d());const g=t((...n)=>(e(...n),d()),o,a);a.getInitialState=()=>g;let h;const O=()=>{var n,v;if(!c)return;const p=++u;S=!1,m.forEach(i=>{var f;return i((f=o())!=null?f:g)});const y=((v=s.onRehydrateStorage)==null?void 0:v.call(s,(n=o())!=null?n:g))||void 0;return C(c.getItem.bind(c))(s.name).then(i=>{if(i)if(typeof i.version=="number"&&i.version!==s.version){if(s.migrate){const f=s.migrate(i.state,i.version);return f instanceof Promise?f.then(_=>[!0,_]):[!0,f]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,i.state];return[!1,void 0]}).then(i=>{var f;if(p!==u)return;const[_,J]=i;if(h=s.merge(J,(f=o())!=null?f:g),e(h,!0),_)return d()}).then(()=>{p===u&&(y==null||y(h,void 0),h=o(),S=!0,l.forEach(i=>i(h)))}).catch(i=>{p===u&&(y==null||y(void 0,i))})};return a.persist={setOptions:n=>{s={...s,...n},n.storage&&(c=n.storage)},clearStorage:()=>{c==null||c.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>O(),hasHydrated:()=>S,onHydrate:n=>(m.add(n),()=>{m.delete(n)}),onFinishHydration:n=>(l.add(n),()=>{l.delete(n)})},s.skipHydration||O(),h||g},E=D,L=j()(E(t=>({setColumns:r=>{t({storedColumns:r})},storedColumns:{}}),{name:"columnsStore"}));exports.create=j;exports.createJSONStorage=k;exports.persist=E;exports.useColumnsStore=L;
2
+ //# sourceMappingURL=useColumnsStore-BGNUm5Vi.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnsStore-BGNUm5Vi.cjs.js","sources":["../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/zustand/esm/react.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/stores/useColumnsStore.ts"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\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 `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n","import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\n/**\n * State shape for the columns store.\n */\nexport type ColumnsStoreState = {\n /** Map of stored column visibilities keyed by table key. */\n storedColumns: Record<string, Record<string, boolean>>;\n /** Action to update stored columns. */\n setColumns: (storedColumns: ColumnsStoreState['storedColumns']) => void;\n};\n\n/**\n * Zustand store to persist column visibility settings across sessions.\n */\nexport const useColumnsStore = create<ColumnsStoreState>()(\n persist(\n (set) => ({\n setColumns: (storedColumns) => {\n set({ storedColumns });\n },\n storedColumns: {},\n }),\n {\n name: 'columnsStore',\n }\n )\n);\n"],"names":["createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","initialState","createStore","identity","arg","useStore","selector","slice","React","createImpl","useBoundStore","create","createJSONStorage","getStorage","options","storage","name","_a","parse","str2","str","newValue","toThenable","fn","input","result","onFulfilled","_onRejected","_onFulfilled","onRejected","persistImpl","config","baseOptions","set","get","persistedState","currentState","hasHydrated","hydrationVersion","hydrationListeners","finishHydrationListeners","args","setItem","savedSetState","configResult","stateFromStorage","hydrate","_b","currentVersion","cb","_a2","postRehydrationCallback","deserializedStorageValue","migration","migrationResult","migrated","migratedState","e","newOptions","persist","useColumnsStore","storedColumns"],"mappings":"gFAAMA,EAAmBC,GAAgB,CACvC,IAAIC,EACJ,MAAMC,EAA4B,IAAI,IAChCC,EAAW,CAACC,EAASC,IAAY,CACrC,MAAMC,EAAY,OAAOF,GAAY,WAAaA,EAAQH,CAAK,EAAIG,EACnE,GAAI,CAAC,OAAO,GAAGE,EAAWL,CAAK,EAAG,CAChC,MAAMM,EAAgBN,EACtBA,EAASI,IAA4B,OAAOC,GAAc,UAAYA,IAAc,MAAQA,EAAY,OAAO,OAAO,CAAA,EAAIL,EAAOK,CAAS,EAC1IJ,EAAU,QAASM,GAAaA,EAASP,EAAOM,CAAa,CAAC,CAChE,CACF,EACME,EAAW,IAAMR,EAMjBS,EAAM,CAAE,SAAAP,EAAU,SAAAM,EAAU,gBALV,IAAME,EAKqB,UAJhCH,IACjBN,EAAU,IAAIM,CAAQ,EACf,IAAMN,EAAU,OAAOM,CAAQ,EAEoB,EACtDG,EAAeV,EAAQD,EAAYG,EAAUM,EAAUC,CAAG,EAChE,OAAOA,CACT,EACME,GAAgBZ,GAAgBA,EAAcD,EAAgBC,CAAW,EAAID,GClB7Ec,EAAYC,GAAQA,EAC1B,SAASC,EAASL,EAAKM,EAAWH,EAAU,CAC1C,MAAMI,EAAQC,EAAAA,QAAM,qBAClBR,EAAI,UACJQ,UAAM,YAAY,IAAMF,EAASN,EAAI,SAAQ,CAAE,EAAG,CAACA,EAAKM,CAAQ,CAAC,EACjEE,UAAM,YAAY,IAAMF,EAASN,EAAI,iBAAiB,EAAG,CAACA,EAAKM,CAAQ,CAAC,CAC5E,EACEE,OAAAA,EAAAA,QAAM,cAAcD,CAAK,EAClBA,CACT,CACA,MAAME,EAAcnB,GAAgB,CAClC,MAAMU,EAAME,EAAYZ,CAAW,EAC7BoB,EAAiBJ,GAAaD,EAASL,EAAKM,CAAQ,EAC1D,cAAO,OAAOI,EAAeV,CAAG,EACzBU,CACT,EACMC,GAAWrB,GAAgBA,EAAcmB,EAAWnB,CAAW,EAAImB,GCgQzE,SAASG,EAAkBC,EAAYC,EAAS,CAC9C,IAAIC,EACJ,GAAI,CACFA,EAAUF,EAAA,CACZ,MAAY,CACV,MACF,CAmBA,MAlBuB,CACrB,QAAUG,GAAS,CACjB,IAAIC,EACJ,MAAMC,EAASC,GACTA,IAAS,KACJ,KAEF,KAAK,MAAMA,EAAwB,MAAwB,EAE9DC,GAAOH,EAAKF,EAAQ,QAAQC,CAAI,IAAM,KAAOC,EAAK,KACxD,OAAIG,aAAe,QACVA,EAAI,KAAKF,CAAK,EAEhBA,EAAME,CAAG,CAClB,EACA,QAAS,CAACJ,EAAMK,IAAaN,EAAQ,QAAQC,EAAM,KAAK,UAAUK,EAA4B,MAAyB,CAAC,EACxH,WAAaL,GAASD,EAAQ,WAAWC,CAAI,CAAA,CAGjD,CACA,MAAMM,EAAcC,GAAQC,GAAU,CACpC,GAAI,CACF,MAAMC,EAASF,EAAGC,CAAK,EACvB,OAAIC,aAAkB,QACbA,EAEF,CACL,KAAKC,EAAa,CAChB,OAAOJ,EAAWI,CAAW,EAAED,CAAM,CACvC,EACA,MAAME,EAAa,CACjB,OAAO,IACT,CAAA,CAEJ,OAAS,EAAG,CACV,MAAO,CACL,KAAKC,EAAc,CACjB,OAAO,IACT,EACA,MAAMC,EAAY,CAChB,OAAOP,EAAWO,CAAU,EAAE,CAAC,CACjC,CAAA,CAEJ,CACF,EACMC,EAAc,CAACC,EAAQC,IAAgB,CAACC,EAAKC,EAAKlC,IAAQ,CAC9D,IAAIc,EAAU,CACZ,QAASF,EAAkB,IAAM,OAAO,YAAY,EACpD,WAAarB,GAAUA,EACvB,QAAS,EACT,MAAO,CAAC4C,EAAgBC,KAAkB,CACxC,GAAGA,EACH,GAAGD,CAAA,GAEL,GAAGH,CAAA,EAEDK,EAAc,GACdC,EAAmB,EACvB,MAAMC,MAAyC,IACzCC,MAA+C,IACrD,IAAIzB,EAAUD,EAAQ,QACtB,GAAI,CAACC,EACH,OAAOgB,EACL,IAAIU,IAAS,CACX,QAAQ,KACN,uDAAuD3B,EAAQ,IAAI,gDAAA,EAErEmB,EAAI,GAAGQ,CAAI,CACb,EACAP,EACAlC,CAAA,EAGJ,MAAM0C,EAAU,IAAM,CACpB,MAAMnD,EAAQuB,EAAQ,WAAW,CAAE,GAAGoB,EAAA,EAAO,EAC7C,OAAOnB,EAAQ,QAAQD,EAAQ,KAAM,CACnC,MAAAvB,EACA,QAASuB,EAAQ,OAAA,CAClB,CACH,EACM6B,EAAgB3C,EAAI,SAC1BA,EAAI,SAAW,CAACT,EAAOI,KACrBgD,EAAcpD,EAAOI,CAAO,EACrB+C,EAAA,GAET,MAAME,EAAeb,EACnB,IAAIU,KACFR,EAAI,GAAGQ,CAAI,EACJC,EAAA,GAETR,EACAlC,CAAA,EAEFA,EAAI,gBAAkB,IAAM4C,EAC5B,IAAIC,EACJ,MAAMC,EAAU,IAAM,CACpB,IAAI7B,EAAI8B,EACR,GAAI,CAAChC,EAAS,OACd,MAAMiC,EAAiB,EAAEV,EACzBD,EAAc,GACdE,EAAmB,QAASU,GAAO,CACjC,IAAIC,EACJ,OAAOD,GAAIC,EAAMhB,EAAA,IAAU,KAAOgB,EAAMN,CAAY,CACtD,CAAC,EACD,MAAMO,IAA4BJ,EAAKjC,EAAQ,qBAAuB,KAAO,OAASiC,EAAG,KAAKjC,GAAUG,EAAKiB,EAAA,IAAU,KAAOjB,EAAK2B,CAAY,IAAM,OACrJ,OAAOtB,EAAWP,EAAQ,QAAQ,KAAKA,CAAO,CAAC,EAAED,EAAQ,IAAI,EAAE,KAAMsC,GAA6B,CAChG,GAAIA,EACF,GAAI,OAAOA,EAAyB,SAAY,UAAYA,EAAyB,UAAYtC,EAAQ,QAAS,CAChH,GAAIA,EAAQ,QAAS,CACnB,MAAMuC,EAAYvC,EAAQ,QACxBsC,EAAyB,MACzBA,EAAyB,OAAA,EAE3B,OAAIC,aAAqB,QAChBA,EAAU,KAAM5B,GAAW,CAAC,GAAMA,CAAM,CAAC,EAE3C,CAAC,GAAM4B,CAAS,CACzB,CACA,QAAQ,MACN,uFAAA,CAEJ,KACE,OAAO,CAAC,GAAOD,EAAyB,KAAK,EAGjD,MAAO,CAAC,GAAO,MAAM,CACvB,CAAC,EAAE,KAAME,GAAoB,CAC3B,IAAIJ,EACJ,GAAIF,IAAmBV,EACrB,OAEF,KAAM,CAACiB,EAAUC,CAAa,EAAIF,EAMlC,GALAT,EAAmB/B,EAAQ,MACzB0C,GACCN,EAAMhB,MAAU,KAAOgB,EAAMN,CAAA,EAEhCX,EAAIY,EAAkB,EAAI,EACtBU,EACF,OAAOb,EAAA,CAEX,CAAC,EAAE,KAAK,IAAM,CACRM,IAAmBV,IAGvBa,GAA2B,MAAgBA,EAAwBN,EAAkB,MAAM,EAC3FA,EAAmBX,EAAA,EACnBG,EAAc,GACdG,EAAyB,QAASS,GAAOA,EAAGJ,CAAgB,CAAC,EAC/D,CAAC,EAAE,MAAOY,GAAM,CACVT,IAAmBV,IAGvBa,GAA2B,MAAgBA,EAAwB,OAAQM,CAAC,EAC9E,CAAC,CACH,EACA,OAAAzD,EAAI,QAAU,CACZ,WAAa0D,GAAe,CAC1B5C,EAAU,CACR,GAAGA,EACH,GAAG4C,CAAA,EAEDA,EAAW,UACb3C,EAAU2C,EAAW,QAEzB,EACA,aAAc,IAAM,CAClB3C,GAAW,MAAgBA,EAAQ,WAAWD,EAAQ,IAAI,CAC5D,EACA,WAAY,IAAMA,EAClB,UAAW,IAAMgC,EAAA,EACjB,YAAa,IAAMT,EACnB,UAAYY,IACVV,EAAmB,IAAIU,CAAE,EAClB,IAAM,CACXV,EAAmB,OAAOU,CAAE,CAC9B,GAEF,kBAAoBA,IAClBT,EAAyB,IAAIS,CAAE,EACxB,IAAM,CACXT,EAAyB,OAAOS,CAAE,CACpC,EACF,EAEGnC,EAAQ,eACXgC,EAAA,EAEKD,GAAoBD,CAC7B,EACMe,EAAU7B,ECvcH8B,EAAkBjD,EAAA,EAC7BgD,EACG1B,IAAS,CACR,WAAa4B,GAAkB,CAC7B5B,EAAI,CAAE,cAAA4B,EAAe,CACvB,EACA,cAAe,CAAA,CAAC,GAElB,CACE,KAAM,cAAA,CACR,CAEJ","x_google_ignoreList":[0,1,2]}
@@ -1,5 +1,5 @@
1
1
  import b from "react";
2
- const O = (t) => {
2
+ const H = (t) => {
3
3
  let r;
4
4
  const e = /* @__PURE__ */ new Set(), o = (l, c) => {
5
5
  const m = typeof l == "function" ? l(r) : l;
@@ -9,7 +9,7 @@ const O = (t) => {
9
9
  }
10
10
  }, a = () => r, u = { setState: o, getState: a, getInitialState: () => f, subscribe: (l) => (e.add(l), () => e.delete(l)) }, f = r = t(o, a, u);
11
11
  return u;
12
- }, w = ((t) => t ? O(t) : O), E = (t) => t;
12
+ }, k = ((t) => t ? H(t) : H), E = (t) => t;
13
13
  function R(t, r = E) {
14
14
  const e = b.useSyncExternalStore(
15
15
  t.subscribe,
@@ -18,10 +18,10 @@ function R(t, r = E) {
18
18
  );
19
19
  return b.useDebugValue(e), e;
20
20
  }
21
- const j = (t) => {
22
- const r = w(t), e = (o) => R(r, o);
21
+ const O = (t) => {
22
+ const r = k(t), e = (o) => R(r, o);
23
23
  return Object.assign(e, r), e;
24
- }, x = ((t) => t ? j(t) : j);
24
+ }, x = ((t) => t ? O(t) : O);
25
25
  function F(t, r) {
26
26
  let e;
27
27
  try {
@@ -39,12 +39,12 @@ function F(t, r) {
39
39
  removeItem: (a) => e.removeItem(a)
40
40
  };
41
41
  }
42
- const C = (t) => (r) => {
42
+ const w = (t) => (r) => {
43
43
  try {
44
44
  const e = t(r);
45
45
  return e instanceof Promise ? e : {
46
46
  then(o) {
47
- return C(o)(e);
47
+ return w(o)(e);
48
48
  },
49
49
  catch(o) {
50
50
  return this;
@@ -56,13 +56,13 @@ const C = (t) => (r) => {
56
56
  return this;
57
57
  },
58
58
  catch(o) {
59
- return C(o)(e);
59
+ return w(o)(e);
60
60
  }
61
61
  };
62
62
  }
63
63
  }, J = (t, r) => (e, o, a) => {
64
64
  let s = {
65
- storage: F(() => localStorage),
65
+ storage: F(() => window.localStorage),
66
66
  partialize: (n) => n,
67
67
  version: 0,
68
68
  merge: (n, g) => ({
@@ -98,7 +98,7 @@ const C = (t) => (r) => {
98
98
  );
99
99
  a.getInitialState = () => h;
100
100
  let v;
101
- const H = () => {
101
+ const C = () => {
102
102
  var n, g;
103
103
  if (!c) return;
104
104
  const p = ++u;
@@ -107,7 +107,7 @@ const C = (t) => (r) => {
107
107
  return i((d = o()) != null ? d : h);
108
108
  });
109
109
  const y = ((g = s.onRehydrateStorage) == null ? void 0 : g.call(s, (n = o()) != null ? n : h)) || void 0;
110
- return C(c.getItem.bind(c))(s.name).then((i) => {
110
+ return w(c.getItem.bind(c))(s.name).then((i) => {
111
111
  if (i)
112
112
  if (typeof i.version == "number" && i.version !== s.version) {
113
113
  if (s.migrate) {
@@ -127,9 +127,9 @@ const C = (t) => (r) => {
127
127
  var d;
128
128
  if (p !== u)
129
129
  return;
130
- const [_, k] = i;
130
+ const [_, j] = i;
131
131
  if (v = s.merge(
132
- k,
132
+ j,
133
133
  (d = o()) != null ? d : h
134
134
  ), e(v, !0), _)
135
135
  return m();
@@ -150,7 +150,7 @@ const C = (t) => (r) => {
150
150
  c == null || c.removeItem(s.name);
151
151
  },
152
152
  getOptions: () => s,
153
- rehydrate: () => H(),
153
+ rehydrate: () => C(),
154
154
  hasHydrated: () => S,
155
155
  onHydrate: (n) => (f.add(n), () => {
156
156
  f.delete(n);
@@ -158,7 +158,7 @@ const C = (t) => (r) => {
158
158
  onFinishHydration: (n) => (l.add(n), () => {
159
159
  l.delete(n);
160
160
  })
161
- }, s.skipHydration || H(), v || h;
161
+ }, s.skipHydration || C(), v || h;
162
162
  }, N = J, L = x()(
163
163
  N(
164
164
  (t) => ({
@@ -178,4 +178,4 @@ export {
178
178
  N as p,
179
179
  L as u
180
180
  };
181
- //# sourceMappingURL=useColumnsStore-DmpJsxUu.es.js.map
181
+ //# sourceMappingURL=useColumnsStore-ByK5r4ZY.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnsStore-ByK5r4ZY.es.js","sources":["../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/zustand/esm/react.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/stores/useColumnsStore.ts"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\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 `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n","import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\n/**\n * State shape for the columns store.\n */\nexport type ColumnsStoreState = {\n /** Map of stored column visibilities keyed by table key. */\n storedColumns: Record<string, Record<string, boolean>>;\n /** Action to update stored columns. */\n setColumns: (storedColumns: ColumnsStoreState['storedColumns']) => void;\n};\n\n/**\n * Zustand store to persist column visibility settings across sessions.\n */\nexport const useColumnsStore = create<ColumnsStoreState>()(\n persist(\n (set) => ({\n setColumns: (storedColumns) => {\n set({ storedColumns });\n },\n storedColumns: {},\n }),\n {\n name: 'columnsStore',\n }\n )\n);\n"],"names":["createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","initialState","createStore","identity","arg","useStore","selector","slice","React","createImpl","useBoundStore","create","createJSONStorage","getStorage","options","storage","name","_a","parse","str2","str","newValue","toThenable","fn","input","result","onFulfilled","_onRejected","_onFulfilled","onRejected","persistImpl","config","baseOptions","set","get","persistedState","currentState","hasHydrated","hydrationVersion","hydrationListeners","finishHydrationListeners","args","setItem","savedSetState","configResult","stateFromStorage","hydrate","_b","currentVersion","cb","_a2","postRehydrationCallback","deserializedStorageValue","migration","migrationResult","migrated","migratedState","e","newOptions","persist","useColumnsStore","storedColumns"],"mappings":";AAAA,MAAMA,IAAkB,CAACC,MAAgB;AACvC,MAAIC;AACJ,QAAMC,IAA4B,oBAAI,IAAG,GACnCC,IAAW,CAACC,GAASC,MAAY;AACrC,UAAMC,IAAY,OAAOF,KAAY,aAAaA,EAAQH,CAAK,IAAIG;AACnE,QAAI,CAAC,OAAO,GAAGE,GAAWL,CAAK,GAAG;AAChC,YAAMM,IAAgBN;AACtB,MAAAA,IAASI,MAA4B,OAAOC,KAAc,YAAYA,MAAc,QAAQA,IAAY,OAAO,OAAO,CAAA,GAAIL,GAAOK,CAAS,GAC1IJ,EAAU,QAAQ,CAACM,MAAaA,EAASP,GAAOM,CAAa,CAAC;AAAA,IAChE;AAAA,EACF,GACME,IAAW,MAAMR,GAMjBS,IAAM,EAAE,UAAAP,GAAU,UAAAM,GAAU,iBALV,MAAME,GAKqB,WAJjC,CAACH,OACjBN,EAAU,IAAIM,CAAQ,GACf,MAAMN,EAAU,OAAOM,CAAQ,GAEoB,GACtDG,IAAeV,IAAQD,EAAYG,GAAUM,GAAUC,CAAG;AAChE,SAAOA;AACT,GACME,KAAe,CAACZ,MAAgBA,IAAcD,EAAgBC,CAAW,IAAID,IClB7Ec,IAAW,CAACC,MAAQA;AAC1B,SAASC,EAASL,GAAKM,IAAWH,GAAU;AAC1C,QAAMI,IAAQC,EAAM;AAAA,IAClBR,EAAI;AAAA,IACJQ,EAAM,YAAY,MAAMF,EAASN,EAAI,SAAQ,CAAE,GAAG,CAACA,GAAKM,CAAQ,CAAC;AAAA,IACjEE,EAAM,YAAY,MAAMF,EAASN,EAAI,iBAAiB,GAAG,CAACA,GAAKM,CAAQ,CAAC;AAAA,EAC5E;AACEE,SAAAA,EAAM,cAAcD,CAAK,GAClBA;AACT;AACA,MAAME,IAAa,CAACnB,MAAgB;AAClC,QAAMU,IAAME,EAAYZ,CAAW,GAC7BoB,IAAgB,CAACJ,MAAaD,EAASL,GAAKM,CAAQ;AAC1D,gBAAO,OAAOI,GAAeV,CAAG,GACzBU;AACT,GACMC,KAAU,CAACrB,MAAgBA,IAAcmB,EAAWnB,CAAW,IAAImB;ACgQzE,SAASG,EAAkBC,GAAYC,GAAS;AAC9C,MAAIC;AACJ,MAAI;AACF,IAAAA,IAAUF,EAAA;AAAA,EACZ,QAAY;AACV;AAAA,EACF;AAmBA,SAlBuB;AAAA,IACrB,SAAS,CAACG,MAAS;AACjB,UAAIC;AACJ,YAAMC,IAAQ,CAACC,MACTA,MAAS,OACJ,OAEF,KAAK,MAAMA,GAAwB,MAAwB,GAE9DC,KAAOH,IAAKF,EAAQ,QAAQC,CAAI,MAAM,OAAOC,IAAK;AACxD,aAAIG,aAAe,UACVA,EAAI,KAAKF,CAAK,IAEhBA,EAAME,CAAG;AAAA,IAClB;AAAA,IACA,SAAS,CAACJ,GAAMK,MAAaN,EAAQ,QAAQC,GAAM,KAAK,UAAUK,GAA4B,MAAyB,CAAC;AAAA,IACxH,YAAY,CAACL,MAASD,EAAQ,WAAWC,CAAI;AAAA,EAAA;AAGjD;AACA,MAAMM,IAAa,CAACC,MAAO,CAACC,MAAU;AACpC,MAAI;AACF,UAAMC,IAASF,EAAGC,CAAK;AACvB,WAAIC,aAAkB,UACbA,IAEF;AAAA,MACL,KAAKC,GAAa;AAChB,eAAOJ,EAAWI,CAAW,EAAED,CAAM;AAAA,MACvC;AAAA,MACA,MAAME,GAAa;AACjB,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,EAEJ,SAAS,GAAG;AACV,WAAO;AAAA,MACL,KAAKC,GAAc;AACjB,eAAO;AAAA,MACT;AAAA,MACA,MAAMC,GAAY;AAChB,eAAOP,EAAWO,CAAU,EAAE,CAAC;AAAA,MACjC;AAAA,IAAA;AAAA,EAEJ;AACF,GACMC,IAAc,CAACC,GAAQC,MAAgB,CAACC,GAAKC,GAAKlC,MAAQ;AAC9D,MAAIc,IAAU;AAAA,IACZ,SAASF,EAAkB,MAAM,OAAO,YAAY;AAAA,IACpD,YAAY,CAACrB,MAAUA;AAAA,IACvB,SAAS;AAAA,IACT,OAAO,CAAC4C,GAAgBC,OAAkB;AAAA,MACxC,GAAGA;AAAA,MACH,GAAGD;AAAA,IAAA;AAAA,IAEL,GAAGH;AAAA,EAAA,GAEDK,IAAc,IACdC,IAAmB;AACvB,QAAMC,wBAAyC,IAAA,GACzCC,wBAA+C,IAAA;AACrD,MAAIzB,IAAUD,EAAQ;AACtB,MAAI,CAACC;AACH,WAAOgB;AAAA,MACL,IAAIU,MAAS;AACX,gBAAQ;AAAA,UACN,uDAAuD3B,EAAQ,IAAI;AAAA,QAAA,GAErEmB,EAAI,GAAGQ,CAAI;AAAA,MACb;AAAA,MACAP;AAAA,MACAlC;AAAA,IAAA;AAGJ,QAAM0C,IAAU,MAAM;AACpB,UAAMnD,IAAQuB,EAAQ,WAAW,EAAE,GAAGoB,EAAA,GAAO;AAC7C,WAAOnB,EAAQ,QAAQD,EAAQ,MAAM;AAAA,MACnC,OAAAvB;AAAA,MACA,SAASuB,EAAQ;AAAA,IAAA,CAClB;AAAA,EACH,GACM6B,IAAgB3C,EAAI;AAC1B,EAAAA,EAAI,WAAW,CAACT,GAAOI,OACrBgD,EAAcpD,GAAOI,CAAO,GACrB+C,EAAA;AAET,QAAME,IAAeb;AAAA,IACnB,IAAIU,OACFR,EAAI,GAAGQ,CAAI,GACJC,EAAA;AAAA,IAETR;AAAA,IACAlC;AAAA,EAAA;AAEF,EAAAA,EAAI,kBAAkB,MAAM4C;AAC5B,MAAIC;AACJ,QAAMC,IAAU,MAAM;AACpB,QAAI7B,GAAI8B;AACR,QAAI,CAAChC,EAAS;AACd,UAAMiC,IAAiB,EAAEV;AACzB,IAAAD,IAAc,IACdE,EAAmB,QAAQ,CAACU,MAAO;AACjC,UAAIC;AACJ,aAAOD,GAAIC,IAAMhB,EAAA,MAAU,OAAOgB,IAAMN,CAAY;AAAA,IACtD,CAAC;AACD,UAAMO,MAA4BJ,IAAKjC,EAAQ,uBAAuB,OAAO,SAASiC,EAAG,KAAKjC,IAAUG,IAAKiB,EAAA,MAAU,OAAOjB,IAAK2B,CAAY,MAAM;AACrJ,WAAOtB,EAAWP,EAAQ,QAAQ,KAAKA,CAAO,CAAC,EAAED,EAAQ,IAAI,EAAE,KAAK,CAACsC,MAA6B;AAChG,UAAIA;AACF,YAAI,OAAOA,EAAyB,WAAY,YAAYA,EAAyB,YAAYtC,EAAQ,SAAS;AAChH,cAAIA,EAAQ,SAAS;AACnB,kBAAMuC,IAAYvC,EAAQ;AAAA,cACxBsC,EAAyB;AAAA,cACzBA,EAAyB;AAAA,YAAA;AAE3B,mBAAIC,aAAqB,UAChBA,EAAU,KAAK,CAAC5B,MAAW,CAAC,IAAMA,CAAM,CAAC,IAE3C,CAAC,IAAM4B,CAAS;AAAA,UACzB;AACA,kBAAQ;AAAA,YACN;AAAA,UAAA;AAAA,QAEJ;AACE,iBAAO,CAAC,IAAOD,EAAyB,KAAK;AAGjD,aAAO,CAAC,IAAO,MAAM;AAAA,IACvB,CAAC,EAAE,KAAK,CAACE,MAAoB;AAC3B,UAAIJ;AACJ,UAAIF,MAAmBV;AACrB;AAEF,YAAM,CAACiB,GAAUC,CAAa,IAAIF;AAMlC,UALAT,IAAmB/B,EAAQ;AAAA,QACzB0C;AAAA,SACCN,IAAMhB,QAAU,OAAOgB,IAAMN;AAAA,MAAA,GAEhCX,EAAIY,GAAkB,EAAI,GACtBU;AACF,eAAOb,EAAA;AAAA,IAEX,CAAC,EAAE,KAAK,MAAM;AACZ,MAAIM,MAAmBV,MAGvBa,KAA2B,QAAgBA,EAAwBN,GAAkB,MAAM,GAC3FA,IAAmBX,EAAA,GACnBG,IAAc,IACdG,EAAyB,QAAQ,CAACS,MAAOA,EAAGJ,CAAgB,CAAC;AAAA,IAC/D,CAAC,EAAE,MAAM,CAACY,MAAM;AACd,MAAIT,MAAmBV,MAGvBa,KAA2B,QAAgBA,EAAwB,QAAQM,CAAC;AAAA,IAC9E,CAAC;AAAA,EACH;AACA,SAAAzD,EAAI,UAAU;AAAA,IACZ,YAAY,CAAC0D,MAAe;AAC1B,MAAA5C,IAAU;AAAA,QACR,GAAGA;AAAA,QACH,GAAG4C;AAAA,MAAA,GAEDA,EAAW,YACb3C,IAAU2C,EAAW;AAAA,IAEzB;AAAA,IACA,cAAc,MAAM;AAClB,MAAA3C,KAAW,QAAgBA,EAAQ,WAAWD,EAAQ,IAAI;AAAA,IAC5D;AAAA,IACA,YAAY,MAAMA;AAAA,IAClB,WAAW,MAAMgC,EAAA;AAAA,IACjB,aAAa,MAAMT;AAAA,IACnB,WAAW,CAACY,OACVV,EAAmB,IAAIU,CAAE,GAClB,MAAM;AACX,MAAAV,EAAmB,OAAOU,CAAE;AAAA,IAC9B;AAAA,IAEF,mBAAmB,CAACA,OAClBT,EAAyB,IAAIS,CAAE,GACxB,MAAM;AACX,MAAAT,EAAyB,OAAOS,CAAE;AAAA,IACpC;AAAA,EACF,GAEGnC,EAAQ,iBACXgC,EAAA,GAEKD,KAAoBD;AAC7B,GACMe,IAAU7B,GCvcH8B,IAAkBjD,EAAA;AAAA,EAC7BgD;AAAA,IACE,CAAC1B,OAAS;AAAA,MACR,YAAY,CAAC4B,MAAkB;AAC7B,QAAA5B,EAAI,EAAE,eAAA4B,GAAe;AAAA,MACvB;AAAA,MACA,eAAe,CAAA;AAAA,IAAC;AAAA,IAElB;AAAA,MACE,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;","x_google_ignoreList":[0,1,2]}
@@ -1,2 +1,2 @@
1
- "use strict";const i=require("./lodash-BjH0kD7j.cjs.js"),c=require("react"),m=require("./useColumnsStore-BGpED5bu.cjs.js"),f=require("./SortOrder-81BrXp3i.cjs.js"),O=({key:o,columns:e=[]})=>{const{storedColumns:t,setColumns:a}=m.useColumnsStore();c.useEffect(()=>{if(i.lodashExports.isEmpty(i.lodashExports.get(t,o))&&!i.lodashExports.isEmpty(e)){const n={};e.forEach(s=>{i.lodashExports.set(n,s.key,!!s.hidden)}),a({...t,[o]:n})}},[o,e,t,a]);const h=c.useMemo(()=>{const n=i.lodashExports.get(t,o,{});return e.filter(s=>s.type!=="action").map(s=>{const{hidden:u,...l}=s;return{...l,hidden:i.lodashExports.get(n,s.key,!!u)}})},[o,t,e]),C=c.useCallback((n,s)=>{const u=i.lodashExports.get(t,o,{});i.lodashExports.set(u,n.key,s),a({...t,[o]:u})},[o,a,t]),r=c.useCallback(()=>{const n={};e.forEach(s=>{i.lodashExports.set(n,s.key,!!s.hidden)}),a({...t,[o]:n})},[o,a,t,e]);return{formattedColumns:h,handleColumnsChange:C,resetColumns:r}},x=({rows:o=[],defaultSelectedRows:e})=>{const[t,a]=c.useState(),h=c.useCallback((s,u)=>{a(l=>{const d=o.map(b=>b[s])||[],E=(l==null?void 0:l.filter(b=>!d.includes(b)))||[];return u?[...E,...d]:E})},[o]);c.useEffect(()=>{e&&a(s=>i.lodashExports.isEqual(s,e)?s:e)},[e]);const C=c.useCallback((s,u)=>{a(l=>{const d=l||[];return u?[...d,s]:d.filter(E=>E!==s)})},[]),r=c.useCallback(s=>!!(t!=null&&t.includes(s)),[t]),n=c.useCallback(s=>{const u=o.map(d=>d[s])||[];let l=0;for(const d of u)t!=null&&t.includes(d)&&l++;return u.length===l?!0:l?"indeterminate":!1},[t,o]);return{selectedRows:t,isRowSelected:r,isAllRowsSelected:n,handleSelectAllRows:h,handleSelectRow:C}},g=({sortField:o,sortOrder:e,onSortOrderChange:t})=>{const[a,h]=c.useState();c.useEffect(()=>{o&&h(r=>(r==null?void 0:r.sortField)===e&&(r==null?void 0:r.sortOrder)===e?r:{sortField:o,sortOrder:e||void 0})},[o,e]);const C=c.useCallback(r=>{h(n=>{const u=(n==null?void 0:n.sortField)===r?(n==null?void 0:n.sortOrder)===f.SortOrder.ASC?f.SortOrder.DESC:void 0:f.SortOrder.ASC,l={sortField:u?r:void 0,sortOrder:u};return t&&t(l),l})},[t]);return{sortObject:a,handleSort:C}};exports.useColumns=O;exports.useDataTable=x;exports.useSortable=g;
2
- //# sourceMappingURL=useSortable-D1iGfsy3.cjs.js.map
1
+ "use strict";const i=require("./lodash-BjH0kD7j.cjs.js"),c=require("react"),m=require("./useColumnsStore-BGNUm5Vi.cjs.js"),f=require("./SortOrder-81BrXp3i.cjs.js"),O=({key:o,columns:e=[]})=>{const{storedColumns:t,setColumns:a}=m.useColumnsStore();c.useEffect(()=>{if(i.lodashExports.isEmpty(i.lodashExports.get(t,o))&&!i.lodashExports.isEmpty(e)){const n={};e.forEach(s=>{i.lodashExports.set(n,s.key,!!s.hidden)}),a({...t,[o]:n})}},[o,e,t,a]);const h=c.useMemo(()=>{const n=i.lodashExports.get(t,o,{});return e.filter(s=>s.type!=="action").map(s=>{const{hidden:u,...l}=s;return{...l,hidden:i.lodashExports.get(n,s.key,!!u)}})},[o,t,e]),C=c.useCallback((n,s)=>{const u=i.lodashExports.get(t,o,{});i.lodashExports.set(u,n.key,s),a({...t,[o]:u})},[o,a,t]),r=c.useCallback(()=>{const n={};e.forEach(s=>{i.lodashExports.set(n,s.key,!!s.hidden)}),a({...t,[o]:n})},[o,a,t,e]);return{formattedColumns:h,handleColumnsChange:C,resetColumns:r}},x=({rows:o=[],defaultSelectedRows:e})=>{const[t,a]=c.useState(),h=c.useCallback((s,u)=>{a(l=>{const d=o.map(b=>b[s])||[],E=(l==null?void 0:l.filter(b=>!d.includes(b)))||[];return u?[...E,...d]:E})},[o]);c.useEffect(()=>{e&&a(s=>i.lodashExports.isEqual(s,e)?s:e)},[e]);const C=c.useCallback((s,u)=>{a(l=>{const d=l||[];return u?[...d,s]:d.filter(E=>E!==s)})},[]),r=c.useCallback(s=>!!(t!=null&&t.includes(s)),[t]),n=c.useCallback(s=>{const u=o.map(d=>d[s])||[];let l=0;for(const d of u)t!=null&&t.includes(d)&&l++;return u.length===l?!0:l?"indeterminate":!1},[t,o]);return{selectedRows:t,isRowSelected:r,isAllRowsSelected:n,handleSelectAllRows:h,handleSelectRow:C}},g=({sortField:o,sortOrder:e,onSortOrderChange:t})=>{const[a,h]=c.useState();c.useEffect(()=>{o&&h(r=>(r==null?void 0:r.sortField)===e&&(r==null?void 0:r.sortOrder)===e?r:{sortField:o,sortOrder:e||void 0})},[o,e]);const C=c.useCallback(r=>{h(n=>{const u=(n==null?void 0:n.sortField)===r?(n==null?void 0:n.sortOrder)===f.SortOrder.ASC?f.SortOrder.DESC:void 0:f.SortOrder.ASC,l={sortField:u?r:void 0,sortOrder:u};return t&&t(l),l})},[t]);return{sortObject:a,handleSort:C}};exports.useColumns=O;exports.useDataTable=x;exports.useSortable=g;
2
+ //# sourceMappingURL=useSortable-B3LF1tg8.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSortable-D1iGfsy3.cjs.js","sources":["../../src/hooks/useColumns.ts","../../src/hooks/useDataTable.ts","../../src/hooks/useSortable.ts"],"sourcesContent":["import { get, isEmpty, set } from 'lodash';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useColumnsStore } from '../stores';\nimport type { ColumnType } from '../types';\n\n/**\n * Props for the useColumns hook.\n * @template TData - The type of data associated with the columns.\n */\nexport interface UseColumnsProps<TData> {\n /** Unique key to identify the table for persisting column state. */\n key: string;\n /** Array of column definitions. */\n columns: ColumnType<TData>[];\n}\n\n/**\n * useColumns manages visibility of table columns using a persisted store.\n * Returns formatted columns and helpers to toggle/reset visibility.\n *\n * @template TData - Row data type.\n * @param props.key - Unique key for storing visibility per table.\n * @param props.columns - Original column definitions.\n */\nexport const useColumns = <TData>({\n key,\n columns = [],\n}: UseColumnsProps<TData>) => {\n const { storedColumns, setColumns } = useColumnsStore();\n\n useEffect(() => {\n if (isEmpty(get(storedColumns, key)) && !isEmpty(columns)) {\n const columnsObj = {};\n columns.forEach((column) => {\n set(columnsObj, column.key, !!column.hidden);\n });\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n }\n }, [key, columns, storedColumns, setColumns]);\n\n const formattedColumns = useMemo(() => {\n const columnsObj = get(storedColumns, key, {});\n\n return columns\n .filter((column) => column.type !== 'action')\n .map((column) => {\n const { hidden, ...rest } = column;\n return {\n ...rest,\n hidden: get(columnsObj, column.key, !!hidden),\n };\n });\n }, [key, storedColumns, columns]);\n\n const handleColumnsChange = useCallback(\n (column: ColumnType<TData>, value: boolean) => {\n const columnsObj = get(storedColumns, key, {});\n set(columnsObj, column.key, value);\n\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n },\n [key, setColumns, storedColumns]\n );\n\n const resetColumns = useCallback(() => {\n const columnsObj: Record<string, boolean> = {};\n columns.forEach((column) => {\n set(columnsObj, column.key, !!column.hidden);\n });\n\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n }, [key, setColumns, storedColumns, columns]);\n\n return {\n formattedColumns,\n handleColumnsChange,\n resetColumns,\n };\n};\n","import type { CheckedState } from '@radix-ui/react-checkbox';\nimport { isEqual } from 'lodash';\nimport { useCallback, useEffect, useState } from 'react';\n\n/**\n * Props for the useDataTable hook.\n * @template TData - The type of the data items.\n */\nexport interface UseDataTableProps<TData> {\n /** Array of data rows. */\n rows?: TData[];\n /** Array of initially selected row keys. */\n defaultSelectedRows?: TData[keyof TData][];\n}\n\n/**\n * useDataTable manages row selection state for data tables.\n * Provides helpers to select all on current page, select one, and query selection.\n *\n * @template TData - Row data type.\n * @param props.rows - Current rows rendered on the page.\n * @param props.defaultSelectedRows - Pre-selected row keys.\n */\nexport const useDataTable = <TData>({\n rows = [],\n defaultSelectedRows,\n}: UseDataTableProps<TData>) => {\n const [selectedRows, setSelectedRows] = useState<TData[keyof TData][]>();\n\n const handleSelectAllRows = useCallback(\n (rowKey: keyof TData, checked: boolean) => {\n setSelectedRows((oldSelectedRows) => {\n const currentPageRowKeys = rows.map((item) => item[rowKey]) || [];\n const otherPagesSelected =\n oldSelectedRows?.filter((key) => !currentPageRowKeys.includes(key)) ||\n [];\n\n if (checked) {\n return [...otherPagesSelected, ...currentPageRowKeys];\n } else {\n return otherPagesSelected;\n }\n });\n },\n [rows]\n );\n\n useEffect(() => {\n if (defaultSelectedRows) {\n setSelectedRows((prevSelectedRows) =>\n isEqual(prevSelectedRows, defaultSelectedRows)\n ? prevSelectedRows\n : defaultSelectedRows\n );\n }\n }, [defaultSelectedRows]);\n\n const handleSelectRow = useCallback(\n (key: TData[keyof TData], checked: boolean) => {\n setSelectedRows((oldSelectedRows) => {\n const oldRows = oldSelectedRows || [];\n if (checked) {\n return [...oldRows, key];\n } else {\n return oldRows.filter((rowKey) => rowKey !== key);\n }\n });\n },\n []\n );\n\n const isRowSelected = useCallback(\n (key: TData[keyof TData]) => {\n return !!selectedRows?.includes(key);\n },\n [selectedRows]\n );\n\n const isAllRowsSelected = useCallback(\n (rowKey: keyof TData): CheckedState => {\n const currentPageRowKeys = rows.map((item) => item[rowKey]) || [];\n let selectedRowsCountInPage = 0;\n for (const key of currentPageRowKeys) {\n if (selectedRows?.includes(key)) {\n selectedRowsCountInPage++;\n }\n }\n return currentPageRowKeys.length === selectedRowsCountInPage\n ? true\n : selectedRowsCountInPage\n ? 'indeterminate'\n : false;\n },\n [selectedRows, rows]\n );\n\n return {\n selectedRows,\n isRowSelected,\n isAllRowsSelected,\n handleSelectAllRows,\n handleSelectRow,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { SortOrder } from '../enums';\n\nexport interface UseSortableProps<TData> {\n sortField?: keyof TData;\n sortOrder?: SortOrder;\n onSortOrderChange?: (\n newSortOrder: Omit<UseSortableProps<TData>, 'onSortOrderChange'>\n ) => void;\n}\n\n/**\n * useSortable manages sort field and order for tables and lists.\n * Cycles through ASC -> DESC -> none for a given field and emits changes.\n *\n * @template TData - Row data type.\n * @param props.sortField - Current sorted field.\n * @param props.sortOrder - Current sort order.\n * @param props.onSortOrderChange - Callback with new sort state.\n */\nexport const useSortable = <TData>({\n sortField,\n sortOrder,\n onSortOrderChange,\n}: UseSortableProps<TData>) => {\n const [sortObject, setSortObject] = useState<{\n sortField?: keyof TData;\n sortOrder?: SortOrder;\n }>();\n\n useEffect(() => {\n if (sortField) {\n setSortObject((prevState) =>\n prevState?.sortField === sortOrder && prevState?.sortOrder === sortOrder\n ? prevState\n : {\n sortField,\n sortOrder: sortOrder || undefined,\n }\n );\n }\n }, [sortField, sortOrder]);\n\n const handleSort = useCallback(\n (field: keyof TData) => {\n setSortObject((prev) => {\n const isSameField = prev?.sortField === field;\n const newSortOrder = isSameField\n ? prev?.sortOrder === SortOrder.ASC\n ? SortOrder.DESC\n : undefined\n : SortOrder.ASC;\n\n const newSortObject = {\n sortField: newSortOrder ? field : undefined,\n sortOrder: newSortOrder,\n };\n\n if (onSortOrderChange) {\n onSortOrderChange(newSortObject);\n }\n return newSortObject;\n });\n },\n [onSortOrderChange]\n );\n\n return {\n sortObject,\n handleSort,\n };\n};\n"],"names":["useColumns","key","columns","storedColumns","setColumns","useColumnsStore","useEffect","isEmpty","get","columnsObj","column","set","formattedColumns","useMemo","hidden","rest","handleColumnsChange","useCallback","value","resetColumns","useDataTable","rows","defaultSelectedRows","selectedRows","setSelectedRows","useState","handleSelectAllRows","rowKey","checked","oldSelectedRows","currentPageRowKeys","item","otherPagesSelected","prevSelectedRows","isEqual","handleSelectRow","oldRows","isRowSelected","isAllRowsSelected","selectedRowsCountInPage","useSortable","sortField","sortOrder","onSortOrderChange","sortObject","setSortObject","prevState","handleSort","field","prev","newSortOrder","SortOrder","newSortObject"],"mappings":"oKAwBaA,EAAa,CAAQ,CAChC,IAAAC,EACA,QAAAC,EAAU,CAAA,CACZ,IAA8B,CAC5B,KAAM,CAAE,cAAAC,EAAe,WAAAC,CAAA,EAAeC,kBAAA,EAEtCC,EAAAA,UAAU,IAAM,CACd,GAAIC,EAAAA,cAAAA,QAAQC,EAAAA,cAAAA,IAAIL,EAAeF,CAAG,CAAC,GAAK,CAACM,EAAAA,cAAAA,QAAQL,CAAO,EAAG,CACzD,MAAMO,EAAa,CAAA,EACnBP,EAAQ,QAASQ,GAAW,CAC1BC,EAAAA,cAAAA,IAAIF,EAAYC,EAAO,IAAK,CAAC,CAACA,EAAO,MAAM,CAC7C,CAAC,EACDN,EAAW,CACT,GAAGD,EACH,CAACF,CAAG,EAAGQ,CAAA,CACR,CACH,CACF,EAAG,CAACR,EAAKC,EAASC,EAAeC,CAAU,CAAC,EAE5C,MAAMQ,EAAmBC,EAAAA,QAAQ,IAAM,CACrC,MAAMJ,EAAaD,EAAAA,cAAAA,IAAIL,EAAeF,EAAK,CAAA,CAAE,EAE7C,OAAOC,EACJ,OAAQQ,GAAWA,EAAO,OAAS,QAAQ,EAC3C,IAAKA,GAAW,CACf,KAAM,CAAE,OAAAI,EAAQ,GAAGC,CAAA,EAASL,EAC5B,MAAO,CACL,GAAGK,EACH,OAAQP,EAAAA,cAAAA,IAAIC,EAAYC,EAAO,IAAK,CAAC,CAACI,CAAM,CAAA,CAEhD,CAAC,CACL,EAAG,CAACb,EAAKE,EAAeD,CAAO,CAAC,EAE1Bc,EAAsBC,EAAAA,YAC1B,CAACP,EAA2BQ,IAAmB,CAC7C,MAAMT,EAAaD,EAAAA,cAAAA,IAAIL,EAAeF,EAAK,CAAA,CAAE,EAC7CU,EAAAA,cAAAA,IAAIF,EAAYC,EAAO,IAAKQ,CAAK,EAEjCd,EAAW,CACT,GAAGD,EACH,CAACF,CAAG,EAAGQ,CAAA,CACR,CACH,EACA,CAACR,EAAKG,EAAYD,CAAa,CAAA,EAG3BgB,EAAeF,EAAAA,YAAY,IAAM,CACrC,MAAMR,EAAsC,CAAA,EAC5CP,EAAQ,QAASQ,GAAW,CAC1BC,EAAAA,cAAAA,IAAIF,EAAYC,EAAO,IAAK,CAAC,CAACA,EAAO,MAAM,CAC7C,CAAC,EAEDN,EAAW,CACT,GAAGD,EACH,CAACF,CAAG,EAAGQ,CAAA,CACR,CACH,EAAG,CAACR,EAAKG,EAAYD,EAAeD,CAAO,CAAC,EAE5C,MAAO,CACL,iBAAAU,EACA,oBAAAI,EACA,aAAAG,CAAA,CAEJ,EChEaC,EAAe,CAAQ,CAClC,KAAAC,EAAO,CAAA,EACP,oBAAAC,CACF,IAAgC,CAC9B,KAAM,CAACC,EAAcC,CAAe,EAAIC,WAAA,EAElCC,EAAsBT,EAAAA,YAC1B,CAACU,EAAqBC,IAAqB,CACzCJ,EAAiBK,GAAoB,CACnC,MAAMC,EAAqBT,EAAK,IAAKU,GAASA,EAAKJ,CAAM,CAAC,GAAK,CAAA,EACzDK,GACJH,GAAA,YAAAA,EAAiB,OAAQ5B,GAAQ,CAAC6B,EAAmB,SAAS7B,CAAG,KACjE,CAAA,EAEF,OAAI2B,EACK,CAAC,GAAGI,EAAoB,GAAGF,CAAkB,EAE7CE,CAEX,CAAC,CACH,EACA,CAACX,CAAI,CAAA,EAGPf,EAAAA,UAAU,IAAM,CACVgB,GACFE,EAAiBS,GACfC,EAAAA,cAAAA,QAAQD,EAAkBX,CAAmB,EACzCW,EACAX,CAAA,CAGV,EAAG,CAACA,CAAmB,CAAC,EAExB,MAAMa,EAAkBlB,EAAAA,YACtB,CAAChB,EAAyB2B,IAAqB,CAC7CJ,EAAiBK,GAAoB,CACnC,MAAMO,EAAUP,GAAmB,CAAA,EACnC,OAAID,EACK,CAAC,GAAGQ,EAASnC,CAAG,EAEhBmC,EAAQ,OAAQT,GAAWA,IAAW1B,CAAG,CAEpD,CAAC,CACH,EACA,CAAA,CAAC,EAGGoC,EAAgBpB,EAAAA,YACnBhB,GACQ,CAAC,EAACsB,GAAA,MAAAA,EAAc,SAAStB,IAElC,CAACsB,CAAY,CAAA,EAGTe,EAAoBrB,EAAAA,YACvBU,GAAsC,CACrC,MAAMG,EAAqBT,EAAK,IAAKU,GAASA,EAAKJ,CAAM,CAAC,GAAK,CAAA,EAC/D,IAAIY,EAA0B,EAC9B,UAAWtC,KAAO6B,EACZP,GAAA,MAAAA,EAAc,SAAStB,IACzBsC,IAGJ,OAAOT,EAAmB,SAAWS,EACjC,GACAA,EACE,gBACA,EACR,EACA,CAAChB,EAAcF,CAAI,CAAA,EAGrB,MAAO,CACL,aAAAE,EACA,cAAAc,EACA,kBAAAC,EACA,oBAAAZ,EACA,gBAAAS,CAAA,CAEJ,ECnFaK,EAAc,CAAQ,CACjC,UAAAC,EACA,UAAAC,EACA,kBAAAC,CACF,IAA+B,CAC7B,KAAM,CAACC,EAAYC,CAAa,EAAIpB,WAAA,EAKpCnB,EAAAA,UAAU,IAAM,CACVmC,GACFI,EAAeC,IACbA,GAAA,YAAAA,EAAW,aAAcJ,IAAaI,GAAA,YAAAA,EAAW,aAAcJ,EAC3DI,EACA,CACE,UAAAL,EACA,UAAWC,GAAa,MAAA,CAC1B,CAGV,EAAG,CAACD,EAAWC,CAAS,CAAC,EAEzB,MAAMK,EAAa9B,EAAAA,YAChB+B,GAAuB,CACtBH,EAAeI,GAAS,CAEtB,MAAMC,GADcD,GAAA,YAAAA,EAAM,aAAcD,GAEpCC,GAAA,YAAAA,EAAM,aAAcE,EAAAA,UAAU,IAC5BA,YAAU,KACV,OACFA,EAAAA,UAAU,IAERC,EAAgB,CACpB,UAAWF,EAAeF,EAAQ,OAClC,UAAWE,CAAA,EAGb,OAAIP,GACFA,EAAkBS,CAAa,EAE1BA,CACT,CAAC,CACH,EACA,CAACT,CAAiB,CAAA,EAGpB,MAAO,CACL,WAAAC,EACA,WAAAG,CAAA,CAEJ"}
1
+ {"version":3,"file":"useSortable-B3LF1tg8.cjs.js","sources":["../../src/hooks/useColumns.ts","../../src/hooks/useDataTable.ts","../../src/hooks/useSortable.ts"],"sourcesContent":["import { get, isEmpty, set } from 'lodash';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useColumnsStore } from '../stores';\nimport type { ColumnType } from '../types';\n\n/**\n * Props for the useColumns hook.\n * @template TData - The type of data associated with the columns.\n */\nexport interface UseColumnsProps<TData> {\n /** Unique key to identify the table for persisting column state. */\n key: string;\n /** Array of column definitions. */\n columns: ColumnType<TData>[];\n}\n\n/**\n * useColumns manages visibility of table columns using a persisted store.\n * Returns formatted columns and helpers to toggle/reset visibility.\n *\n * @template TData - Row data type.\n * @param props.key - Unique key for storing visibility per table.\n * @param props.columns - Original column definitions.\n */\nexport const useColumns = <TData>({\n key,\n columns = [],\n}: UseColumnsProps<TData>) => {\n const { storedColumns, setColumns } = useColumnsStore();\n\n useEffect(() => {\n if (isEmpty(get(storedColumns, key)) && !isEmpty(columns)) {\n const columnsObj = {};\n columns.forEach((column) => {\n set(columnsObj, column.key, !!column.hidden);\n });\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n }\n }, [key, columns, storedColumns, setColumns]);\n\n const formattedColumns = useMemo(() => {\n const columnsObj = get(storedColumns, key, {});\n\n return columns\n .filter((column) => column.type !== 'action')\n .map((column) => {\n const { hidden, ...rest } = column;\n return {\n ...rest,\n hidden: get(columnsObj, column.key, !!hidden),\n };\n });\n }, [key, storedColumns, columns]);\n\n const handleColumnsChange = useCallback(\n (column: ColumnType<TData>, value: boolean) => {\n const columnsObj = get(storedColumns, key, {});\n set(columnsObj, column.key, value);\n\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n },\n [key, setColumns, storedColumns]\n );\n\n const resetColumns = useCallback(() => {\n const columnsObj: Record<string, boolean> = {};\n columns.forEach((column) => {\n set(columnsObj, column.key, !!column.hidden);\n });\n\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n }, [key, setColumns, storedColumns, columns]);\n\n return {\n formattedColumns,\n handleColumnsChange,\n resetColumns,\n };\n};\n","import type { CheckedState } from '@radix-ui/react-checkbox';\nimport { isEqual } from 'lodash';\nimport { useCallback, useEffect, useState } from 'react';\n\n/**\n * Props for the useDataTable hook.\n * @template TData - The type of the data items.\n */\nexport interface UseDataTableProps<TData> {\n /** Array of data rows. */\n rows?: TData[];\n /** Array of initially selected row keys. */\n defaultSelectedRows?: TData[keyof TData][];\n}\n\n/**\n * useDataTable manages row selection state for data tables.\n * Provides helpers to select all on current page, select one, and query selection.\n *\n * @template TData - Row data type.\n * @param props.rows - Current rows rendered on the page.\n * @param props.defaultSelectedRows - Pre-selected row keys.\n */\nexport const useDataTable = <TData>({\n rows = [],\n defaultSelectedRows,\n}: UseDataTableProps<TData>) => {\n const [selectedRows, setSelectedRows] = useState<TData[keyof TData][]>();\n\n const handleSelectAllRows = useCallback(\n (rowKey: keyof TData, checked: boolean) => {\n setSelectedRows((oldSelectedRows) => {\n const currentPageRowKeys = rows.map((item) => item[rowKey]) || [];\n const otherPagesSelected =\n oldSelectedRows?.filter((key) => !currentPageRowKeys.includes(key)) ||\n [];\n\n if (checked) {\n return [...otherPagesSelected, ...currentPageRowKeys];\n } else {\n return otherPagesSelected;\n }\n });\n },\n [rows]\n );\n\n useEffect(() => {\n if (defaultSelectedRows) {\n setSelectedRows((prevSelectedRows) =>\n isEqual(prevSelectedRows, defaultSelectedRows)\n ? prevSelectedRows\n : defaultSelectedRows\n );\n }\n }, [defaultSelectedRows]);\n\n const handleSelectRow = useCallback(\n (key: TData[keyof TData], checked: boolean) => {\n setSelectedRows((oldSelectedRows) => {\n const oldRows = oldSelectedRows || [];\n if (checked) {\n return [...oldRows, key];\n } else {\n return oldRows.filter((rowKey) => rowKey !== key);\n }\n });\n },\n []\n );\n\n const isRowSelected = useCallback(\n (key: TData[keyof TData]) => {\n return !!selectedRows?.includes(key);\n },\n [selectedRows]\n );\n\n const isAllRowsSelected = useCallback(\n (rowKey: keyof TData): CheckedState => {\n const currentPageRowKeys = rows.map((item) => item[rowKey]) || [];\n let selectedRowsCountInPage = 0;\n for (const key of currentPageRowKeys) {\n if (selectedRows?.includes(key)) {\n selectedRowsCountInPage++;\n }\n }\n return currentPageRowKeys.length === selectedRowsCountInPage\n ? true\n : selectedRowsCountInPage\n ? 'indeterminate'\n : false;\n },\n [selectedRows, rows]\n );\n\n return {\n selectedRows,\n isRowSelected,\n isAllRowsSelected,\n handleSelectAllRows,\n handleSelectRow,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { SortOrder } from '../enums';\n\nexport interface UseSortableProps<TData> {\n sortField?: keyof TData;\n sortOrder?: SortOrder;\n onSortOrderChange?: (\n newSortOrder: Omit<UseSortableProps<TData>, 'onSortOrderChange'>\n ) => void;\n}\n\n/**\n * useSortable manages sort field and order for tables and lists.\n * Cycles through ASC -> DESC -> none for a given field and emits changes.\n *\n * @template TData - Row data type.\n * @param props.sortField - Current sorted field.\n * @param props.sortOrder - Current sort order.\n * @param props.onSortOrderChange - Callback with new sort state.\n */\nexport const useSortable = <TData>({\n sortField,\n sortOrder,\n onSortOrderChange,\n}: UseSortableProps<TData>) => {\n const [sortObject, setSortObject] = useState<{\n sortField?: keyof TData;\n sortOrder?: SortOrder;\n }>();\n\n useEffect(() => {\n if (sortField) {\n setSortObject((prevState) =>\n prevState?.sortField === sortOrder && prevState?.sortOrder === sortOrder\n ? prevState\n : {\n sortField,\n sortOrder: sortOrder || undefined,\n }\n );\n }\n }, [sortField, sortOrder]);\n\n const handleSort = useCallback(\n (field: keyof TData) => {\n setSortObject((prev) => {\n const isSameField = prev?.sortField === field;\n const newSortOrder = isSameField\n ? prev?.sortOrder === SortOrder.ASC\n ? SortOrder.DESC\n : undefined\n : SortOrder.ASC;\n\n const newSortObject = {\n sortField: newSortOrder ? field : undefined,\n sortOrder: newSortOrder,\n };\n\n if (onSortOrderChange) {\n onSortOrderChange(newSortObject);\n }\n return newSortObject;\n });\n },\n [onSortOrderChange]\n );\n\n return {\n sortObject,\n handleSort,\n };\n};\n"],"names":["useColumns","key","columns","storedColumns","setColumns","useColumnsStore","useEffect","isEmpty","get","columnsObj","column","set","formattedColumns","useMemo","hidden","rest","handleColumnsChange","useCallback","value","resetColumns","useDataTable","rows","defaultSelectedRows","selectedRows","setSelectedRows","useState","handleSelectAllRows","rowKey","checked","oldSelectedRows","currentPageRowKeys","item","otherPagesSelected","prevSelectedRows","isEqual","handleSelectRow","oldRows","isRowSelected","isAllRowsSelected","selectedRowsCountInPage","useSortable","sortField","sortOrder","onSortOrderChange","sortObject","setSortObject","prevState","handleSort","field","prev","newSortOrder","SortOrder","newSortObject"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { l as a } from "./lodash-CRDOWzbs.es.js";
2
2
  import { useEffect as g, useMemo as O, useCallback as m, useState as E } from "react";
3
- import { u as j } from "./useColumnsStore-DmpJsxUu.es.js";
3
+ import { u as j } from "./useColumnsStore-ByK5r4ZY.es.js";
4
4
  import { S as C } from "./SortOrder-CwuehjY1.es.js";
5
5
  const D = ({
6
6
  key: n,
@@ -132,4 +132,4 @@ export {
132
132
  D as b,
133
133
  q as u
134
134
  };
135
- //# sourceMappingURL=useSortable-DHdn9snJ.es.js.map
135
+ //# sourceMappingURL=useSortable-BXNk8Wth.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSortable-DHdn9snJ.es.js","sources":["../../src/hooks/useColumns.ts","../../src/hooks/useDataTable.ts","../../src/hooks/useSortable.ts"],"sourcesContent":["import { get, isEmpty, set } from 'lodash';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useColumnsStore } from '../stores';\nimport type { ColumnType } from '../types';\n\n/**\n * Props for the useColumns hook.\n * @template TData - The type of data associated with the columns.\n */\nexport interface UseColumnsProps<TData> {\n /** Unique key to identify the table for persisting column state. */\n key: string;\n /** Array of column definitions. */\n columns: ColumnType<TData>[];\n}\n\n/**\n * useColumns manages visibility of table columns using a persisted store.\n * Returns formatted columns and helpers to toggle/reset visibility.\n *\n * @template TData - Row data type.\n * @param props.key - Unique key for storing visibility per table.\n * @param props.columns - Original column definitions.\n */\nexport const useColumns = <TData>({\n key,\n columns = [],\n}: UseColumnsProps<TData>) => {\n const { storedColumns, setColumns } = useColumnsStore();\n\n useEffect(() => {\n if (isEmpty(get(storedColumns, key)) && !isEmpty(columns)) {\n const columnsObj = {};\n columns.forEach((column) => {\n set(columnsObj, column.key, !!column.hidden);\n });\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n }\n }, [key, columns, storedColumns, setColumns]);\n\n const formattedColumns = useMemo(() => {\n const columnsObj = get(storedColumns, key, {});\n\n return columns\n .filter((column) => column.type !== 'action')\n .map((column) => {\n const { hidden, ...rest } = column;\n return {\n ...rest,\n hidden: get(columnsObj, column.key, !!hidden),\n };\n });\n }, [key, storedColumns, columns]);\n\n const handleColumnsChange = useCallback(\n (column: ColumnType<TData>, value: boolean) => {\n const columnsObj = get(storedColumns, key, {});\n set(columnsObj, column.key, value);\n\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n },\n [key, setColumns, storedColumns]\n );\n\n const resetColumns = useCallback(() => {\n const columnsObj: Record<string, boolean> = {};\n columns.forEach((column) => {\n set(columnsObj, column.key, !!column.hidden);\n });\n\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n }, [key, setColumns, storedColumns, columns]);\n\n return {\n formattedColumns,\n handleColumnsChange,\n resetColumns,\n };\n};\n","import type { CheckedState } from '@radix-ui/react-checkbox';\nimport { isEqual } from 'lodash';\nimport { useCallback, useEffect, useState } from 'react';\n\n/**\n * Props for the useDataTable hook.\n * @template TData - The type of the data items.\n */\nexport interface UseDataTableProps<TData> {\n /** Array of data rows. */\n rows?: TData[];\n /** Array of initially selected row keys. */\n defaultSelectedRows?: TData[keyof TData][];\n}\n\n/**\n * useDataTable manages row selection state for data tables.\n * Provides helpers to select all on current page, select one, and query selection.\n *\n * @template TData - Row data type.\n * @param props.rows - Current rows rendered on the page.\n * @param props.defaultSelectedRows - Pre-selected row keys.\n */\nexport const useDataTable = <TData>({\n rows = [],\n defaultSelectedRows,\n}: UseDataTableProps<TData>) => {\n const [selectedRows, setSelectedRows] = useState<TData[keyof TData][]>();\n\n const handleSelectAllRows = useCallback(\n (rowKey: keyof TData, checked: boolean) => {\n setSelectedRows((oldSelectedRows) => {\n const currentPageRowKeys = rows.map((item) => item[rowKey]) || [];\n const otherPagesSelected =\n oldSelectedRows?.filter((key) => !currentPageRowKeys.includes(key)) ||\n [];\n\n if (checked) {\n return [...otherPagesSelected, ...currentPageRowKeys];\n } else {\n return otherPagesSelected;\n }\n });\n },\n [rows]\n );\n\n useEffect(() => {\n if (defaultSelectedRows) {\n setSelectedRows((prevSelectedRows) =>\n isEqual(prevSelectedRows, defaultSelectedRows)\n ? prevSelectedRows\n : defaultSelectedRows\n );\n }\n }, [defaultSelectedRows]);\n\n const handleSelectRow = useCallback(\n (key: TData[keyof TData], checked: boolean) => {\n setSelectedRows((oldSelectedRows) => {\n const oldRows = oldSelectedRows || [];\n if (checked) {\n return [...oldRows, key];\n } else {\n return oldRows.filter((rowKey) => rowKey !== key);\n }\n });\n },\n []\n );\n\n const isRowSelected = useCallback(\n (key: TData[keyof TData]) => {\n return !!selectedRows?.includes(key);\n },\n [selectedRows]\n );\n\n const isAllRowsSelected = useCallback(\n (rowKey: keyof TData): CheckedState => {\n const currentPageRowKeys = rows.map((item) => item[rowKey]) || [];\n let selectedRowsCountInPage = 0;\n for (const key of currentPageRowKeys) {\n if (selectedRows?.includes(key)) {\n selectedRowsCountInPage++;\n }\n }\n return currentPageRowKeys.length === selectedRowsCountInPage\n ? true\n : selectedRowsCountInPage\n ? 'indeterminate'\n : false;\n },\n [selectedRows, rows]\n );\n\n return {\n selectedRows,\n isRowSelected,\n isAllRowsSelected,\n handleSelectAllRows,\n handleSelectRow,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { SortOrder } from '../enums';\n\nexport interface UseSortableProps<TData> {\n sortField?: keyof TData;\n sortOrder?: SortOrder;\n onSortOrderChange?: (\n newSortOrder: Omit<UseSortableProps<TData>, 'onSortOrderChange'>\n ) => void;\n}\n\n/**\n * useSortable manages sort field and order for tables and lists.\n * Cycles through ASC -> DESC -> none for a given field and emits changes.\n *\n * @template TData - Row data type.\n * @param props.sortField - Current sorted field.\n * @param props.sortOrder - Current sort order.\n * @param props.onSortOrderChange - Callback with new sort state.\n */\nexport const useSortable = <TData>({\n sortField,\n sortOrder,\n onSortOrderChange,\n}: UseSortableProps<TData>) => {\n const [sortObject, setSortObject] = useState<{\n sortField?: keyof TData;\n sortOrder?: SortOrder;\n }>();\n\n useEffect(() => {\n if (sortField) {\n setSortObject((prevState) =>\n prevState?.sortField === sortOrder && prevState?.sortOrder === sortOrder\n ? prevState\n : {\n sortField,\n sortOrder: sortOrder || undefined,\n }\n );\n }\n }, [sortField, sortOrder]);\n\n const handleSort = useCallback(\n (field: keyof TData) => {\n setSortObject((prev) => {\n const isSameField = prev?.sortField === field;\n const newSortOrder = isSameField\n ? prev?.sortOrder === SortOrder.ASC\n ? SortOrder.DESC\n : undefined\n : SortOrder.ASC;\n\n const newSortObject = {\n sortField: newSortOrder ? field : undefined,\n sortOrder: newSortOrder,\n };\n\n if (onSortOrderChange) {\n onSortOrderChange(newSortObject);\n }\n return newSortObject;\n });\n },\n [onSortOrderChange]\n );\n\n return {\n sortObject,\n handleSort,\n };\n};\n"],"names":["useColumns","key","columns","storedColumns","setColumns","useColumnsStore","useEffect","isEmpty","get","columnsObj","column","set","formattedColumns","useMemo","hidden","rest","handleColumnsChange","useCallback","value","resetColumns","useDataTable","rows","defaultSelectedRows","selectedRows","setSelectedRows","useState","handleSelectAllRows","rowKey","checked","oldSelectedRows","currentPageRowKeys","item","otherPagesSelected","prevSelectedRows","isEqual","handleSelectRow","oldRows","isRowSelected","isAllRowsSelected","selectedRowsCountInPage","useSortable","sortField","sortOrder","onSortOrderChange","sortObject","setSortObject","prevState","handleSort","field","prev","newSortOrder","SortOrder","newSortObject"],"mappings":"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"}
1
+ {"version":3,"file":"useSortable-BXNk8Wth.es.js","sources":["../../src/hooks/useColumns.ts","../../src/hooks/useDataTable.ts","../../src/hooks/useSortable.ts"],"sourcesContent":["import { get, isEmpty, set } from 'lodash';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useColumnsStore } from '../stores';\nimport type { ColumnType } from '../types';\n\n/**\n * Props for the useColumns hook.\n * @template TData - The type of data associated with the columns.\n */\nexport interface UseColumnsProps<TData> {\n /** Unique key to identify the table for persisting column state. */\n key: string;\n /** Array of column definitions. */\n columns: ColumnType<TData>[];\n}\n\n/**\n * useColumns manages visibility of table columns using a persisted store.\n * Returns formatted columns and helpers to toggle/reset visibility.\n *\n * @template TData - Row data type.\n * @param props.key - Unique key for storing visibility per table.\n * @param props.columns - Original column definitions.\n */\nexport const useColumns = <TData>({\n key,\n columns = [],\n}: UseColumnsProps<TData>) => {\n const { storedColumns, setColumns } = useColumnsStore();\n\n useEffect(() => {\n if (isEmpty(get(storedColumns, key)) && !isEmpty(columns)) {\n const columnsObj = {};\n columns.forEach((column) => {\n set(columnsObj, column.key, !!column.hidden);\n });\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n }\n }, [key, columns, storedColumns, setColumns]);\n\n const formattedColumns = useMemo(() => {\n const columnsObj = get(storedColumns, key, {});\n\n return columns\n .filter((column) => column.type !== 'action')\n .map((column) => {\n const { hidden, ...rest } = column;\n return {\n ...rest,\n hidden: get(columnsObj, column.key, !!hidden),\n };\n });\n }, [key, storedColumns, columns]);\n\n const handleColumnsChange = useCallback(\n (column: ColumnType<TData>, value: boolean) => {\n const columnsObj = get(storedColumns, key, {});\n set(columnsObj, column.key, value);\n\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n },\n [key, setColumns, storedColumns]\n );\n\n const resetColumns = useCallback(() => {\n const columnsObj: Record<string, boolean> = {};\n columns.forEach((column) => {\n set(columnsObj, column.key, !!column.hidden);\n });\n\n setColumns({\n ...storedColumns,\n [key]: columnsObj,\n });\n }, [key, setColumns, storedColumns, columns]);\n\n return {\n formattedColumns,\n handleColumnsChange,\n resetColumns,\n };\n};\n","import type { CheckedState } from '@radix-ui/react-checkbox';\nimport { isEqual } from 'lodash';\nimport { useCallback, useEffect, useState } from 'react';\n\n/**\n * Props for the useDataTable hook.\n * @template TData - The type of the data items.\n */\nexport interface UseDataTableProps<TData> {\n /** Array of data rows. */\n rows?: TData[];\n /** Array of initially selected row keys. */\n defaultSelectedRows?: TData[keyof TData][];\n}\n\n/**\n * useDataTable manages row selection state for data tables.\n * Provides helpers to select all on current page, select one, and query selection.\n *\n * @template TData - Row data type.\n * @param props.rows - Current rows rendered on the page.\n * @param props.defaultSelectedRows - Pre-selected row keys.\n */\nexport const useDataTable = <TData>({\n rows = [],\n defaultSelectedRows,\n}: UseDataTableProps<TData>) => {\n const [selectedRows, setSelectedRows] = useState<TData[keyof TData][]>();\n\n const handleSelectAllRows = useCallback(\n (rowKey: keyof TData, checked: boolean) => {\n setSelectedRows((oldSelectedRows) => {\n const currentPageRowKeys = rows.map((item) => item[rowKey]) || [];\n const otherPagesSelected =\n oldSelectedRows?.filter((key) => !currentPageRowKeys.includes(key)) ||\n [];\n\n if (checked) {\n return [...otherPagesSelected, ...currentPageRowKeys];\n } else {\n return otherPagesSelected;\n }\n });\n },\n [rows]\n );\n\n useEffect(() => {\n if (defaultSelectedRows) {\n setSelectedRows((prevSelectedRows) =>\n isEqual(prevSelectedRows, defaultSelectedRows)\n ? prevSelectedRows\n : defaultSelectedRows\n );\n }\n }, [defaultSelectedRows]);\n\n const handleSelectRow = useCallback(\n (key: TData[keyof TData], checked: boolean) => {\n setSelectedRows((oldSelectedRows) => {\n const oldRows = oldSelectedRows || [];\n if (checked) {\n return [...oldRows, key];\n } else {\n return oldRows.filter((rowKey) => rowKey !== key);\n }\n });\n },\n []\n );\n\n const isRowSelected = useCallback(\n (key: TData[keyof TData]) => {\n return !!selectedRows?.includes(key);\n },\n [selectedRows]\n );\n\n const isAllRowsSelected = useCallback(\n (rowKey: keyof TData): CheckedState => {\n const currentPageRowKeys = rows.map((item) => item[rowKey]) || [];\n let selectedRowsCountInPage = 0;\n for (const key of currentPageRowKeys) {\n if (selectedRows?.includes(key)) {\n selectedRowsCountInPage++;\n }\n }\n return currentPageRowKeys.length === selectedRowsCountInPage\n ? true\n : selectedRowsCountInPage\n ? 'indeterminate'\n : false;\n },\n [selectedRows, rows]\n );\n\n return {\n selectedRows,\n isRowSelected,\n isAllRowsSelected,\n handleSelectAllRows,\n handleSelectRow,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { SortOrder } from '../enums';\n\nexport interface UseSortableProps<TData> {\n sortField?: keyof TData;\n sortOrder?: SortOrder;\n onSortOrderChange?: (\n newSortOrder: Omit<UseSortableProps<TData>, 'onSortOrderChange'>\n ) => void;\n}\n\n/**\n * useSortable manages sort field and order for tables and lists.\n * Cycles through ASC -> DESC -> none for a given field and emits changes.\n *\n * @template TData - Row data type.\n * @param props.sortField - Current sorted field.\n * @param props.sortOrder - Current sort order.\n * @param props.onSortOrderChange - Callback with new sort state.\n */\nexport const useSortable = <TData>({\n sortField,\n sortOrder,\n onSortOrderChange,\n}: UseSortableProps<TData>) => {\n const [sortObject, setSortObject] = useState<{\n sortField?: keyof TData;\n sortOrder?: SortOrder;\n }>();\n\n useEffect(() => {\n if (sortField) {\n setSortObject((prevState) =>\n prevState?.sortField === sortOrder && prevState?.sortOrder === sortOrder\n ? prevState\n : {\n sortField,\n sortOrder: sortOrder || undefined,\n }\n );\n }\n }, [sortField, sortOrder]);\n\n const handleSort = useCallback(\n (field: keyof TData) => {\n setSortObject((prev) => {\n const isSameField = prev?.sortField === field;\n const newSortOrder = isSameField\n ? prev?.sortOrder === SortOrder.ASC\n ? SortOrder.DESC\n : undefined\n : SortOrder.ASC;\n\n const newSortObject = {\n sortField: newSortOrder ? field : undefined,\n sortOrder: newSortOrder,\n };\n\n if (onSortOrderChange) {\n onSortOrderChange(newSortObject);\n }\n return newSortObject;\n });\n },\n [onSortOrderChange]\n );\n\n return {\n sortObject,\n handleSort,\n };\n};\n"],"names":["useColumns","key","columns","storedColumns","setColumns","useColumnsStore","useEffect","isEmpty","get","columnsObj","column","set","formattedColumns","useMemo","hidden","rest","handleColumnsChange","useCallback","value","resetColumns","useDataTable","rows","defaultSelectedRows","selectedRows","setSelectedRows","useState","handleSelectAllRows","rowKey","checked","oldSelectedRows","currentPageRowKeys","item","otherPagesSelected","prevSelectedRows","isEqual","handleSelectRow","oldRows","isRowSelected","isAllRowsSelected","selectedRowsCountInPage","useSortable","sortField","sortOrder","onSortOrderChange","sortObject","setSortObject","prevState","handleSort","field","prev","newSortOrder","SortOrder","newSortObject"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),J=require("../../chunks/index-ClQFzqcq.cjs.js"),V=require("dgz-ui/button"),v=require("dgz-ui/dropdown"),o=require("../../chunks/lodash-BjH0kD7j.cjs.js"),a=require("lucide-react"),z=require("react"),m=require("react-i18next"),B=require("../../chunks/useSortable-D1iGfsy3.cjs.js"),P=require("../../chunks/Actions-CXOiCjx0.cjs.js"),ee=require("../../chunks/ExportData-CrB0H1Ts.cjs.js"),_=require("../../chunks/Search-c_EapKlJ.cjs.js"),se=require("../../chunks/Loader-D_jX_Wgx.cjs.js"),L=require("../../chunks/MyPagination-CnF3468f.cjs.js"),u=require("dgz-ui/form"),c=require("dgz-ui/table"),R=require("dgz-ui/utils"),G=require("../../chunks/SortOrder-81BrXp3i.cjs.js"),le=require("../../chunks/Empty-BYOOFAab.cjs.js"),I=({rows:l=[],columns:h,onRowClick:g,rowKey:f,params:n={page:1,limit:L.DEFAULT_LIMIT},hasNumbers:q=!1,hasCheckbox:N=!1,selectedItems:D,onSelectedItemsChange:E,onSortOrderChange:y,isStickyHeader:t,className:F,...H})=>{const{sortObject:x,handleSort:M}=B.useSortable({sortField:n==null?void 0:n.sortField,sortOrder:n==null?void 0:n.sortOrder,onSortOrderChange:y}),{selectedRows:T,isRowSelected:p,isAllRowsSelected:j,handleSelectAllRows:O,handleSelectRow:k}=B.useDataTable({rows:l,defaultSelectedRows:D});return z.useEffect(()=>{JSON.stringify(D)!==JSON.stringify(T)&&T&&(E==null||E(T))},[T,D,E]),e.jsxs(c.Table,{...H,className:R.cn("relative",F),children:[e.jsx(c.TableHeader,{className:R.cn("bg-bg",t&&"sticky top-0 z-10"),children:e.jsxs(c.TableRow,{children:[N&&e.jsx(c.TableHead,{className:"w-12 p-3",children:e.jsx(u.Checkbox,{className:"mt-1",checked:j(f),onCheckedChange:s=>O(f,!!s),"aria-label":"Select all"})}),q&&e.jsx(c.TableHead,{className:"w-12 p-2",children:"#"}),h.filter(s=>!s.hidden).map(s=>e.jsx(c.TableHead,{style:s.styles,className:R.cn("p-2",s.sortable&&"cursor-pointer"),onClick:()=>s.sortable&&M(s.dataIndex),children:e.jsxs("div",{className:"flex items-center gap-2",children:[s.name," ",s.sortable&&((x==null?void 0:x.sortField)===s.key?e.jsxs(e.Fragment,{children:[(x==null?void 0:x.sortOrder)===G.SortOrder.DESC&&e.jsx(a.ArrowDownWideNarrow,{size:15}),(x==null?void 0:x.sortOrder)===G.SortOrder.ASC&&e.jsx(a.ArrowUpWideNarrow,{size:15})]}):e.jsx(a.ArrowUpDown,{size:15}))]})},s.key))]})}),e.jsx(c.TableBody,{className:"[&>tr:nth-child(even)]:bg-bg-secondary",children:l.length?l.map((s,w)=>e.jsxs(c.TableRow,{onClick:()=>g==null?void 0:g(s),className:R.cn(g&&"cursor-pointer"),"data-state":p(s[f])&&"selected",children:[N&&e.jsx(c.TableCell,{className:"w-12 p-3",onClick:d=>d.stopPropagation(),children:e.jsx(u.Checkbox,{className:"mt-1",checked:p(s[f]),onCheckedChange:d=>k(s[f],!!d),"aria-label":"Select row"})}),q&&e.jsx(c.TableCell,{className:"w-12 p-2",children:(n.page-1)*(n.limit||L.DEFAULT_LIMIT)+w+1}),h.filter(d=>!d.hidden).map(d=>e.jsx(c.TableCell,{className:"text-body-xs-medium max-w-xs p-2",style:d.styles,children:d.render?d.render(o.lodashExports.get(s,d.dataIndex),s):o.lodashExports.get(s,d.dataIndex,"")},`${w}-${d.key}`))]},`${s[f]}`)):e.jsx(c.TableRow,{children:e.jsx(c.TableCell,{colSpan:q?N?h.length+2:h.length+1:h.length,children:e.jsx(le.Empty,{})})})})]})},te=({dataSource:l,columns:h,onRowClick:g,rowKey:f,hasNumbers:n,hasSearch:q,exportOptions:N,hasCheckbox:D,hasPagination:E,isStickyHeader:y,onParamChange:t,dataKey:F="docs",loading:H,tableKey:x,filters:M,actions:T,handleFilterChange:p,params:j,exportLoading:O=!1,onColumnsUpdate:k,hasColumnsVisibilityDropdown:s,onSelectedItemsChange:w,actionProps:d,filterWrapperProps:Q,exportOptionsProps:X,columnsVisibilityProps:i,paginationProps:Y,searchProps:Z,...U})=>{const{t:$}=m.useTranslation(),[b,K]=z.useState([]),{formattedColumns:A,handleColumnsChange:S,resetColumns:C}=B.useColumns({key:x,columns:h});return z.useEffect(()=>{k==null||k(A)},[A,k]),z.useEffect(()=>{w==null||w(b)},[b,w]),e.jsxs("div",{className:"border-border-alpha-light flex grow flex-col overflow-auto rounded-xl border shadow-xs",children:[(q||s&&x||!o.lodashExports.isEmpty(N)||!o.lodashExports.isEmpty(M))&&e.jsxs("div",{className:"flex shrink-0 flex-col items-center justify-between gap-3 p-4 lg:flex-row",children:[e.jsx("div",{className:"w-full shrink",children:q&&e.jsx(_.Search,{...Z,defaultValue:o.lodashExports.get(j,"search",""),onSearchChange:r=>t==null?void 0:t({...j,search:r,page:1})})}),e.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-3",children:[N&&e.jsx(ee.ExportData,{...X,options:N,loading:O}),s&&x&&e.jsxs(v.DropdownMenu,{children:[e.jsx(v.DropdownMenuTrigger,{asChild:!0,...i==null?void 0:i.triggerProps,children:e.jsx(V.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:(i==null?void 0:i.title)||e.jsxs(e.Fragment,{children:[e.jsx(J.yn,{})," ",e.jsx("span",{className:"hidden lg:!inline",children:$("Customize columns")}),e.jsx(J.f1,{})]})})}),e.jsxs(v.DropdownMenuContent,{align:"end",...i==null?void 0:i.contentProps,children:[e.jsxs(v.DropdownMenuItem,{className:"capitalize",onClick:C,children:[e.jsx(a.RefreshCw,{})," ",(i==null?void 0:i.resetText)||$("Reset columns")]}),e.jsx(v.DropdownMenuSeparator,{}),A.map(r=>e.jsx(v.DropdownMenuCheckboxItem,{className:"capitalize",checked:!r.hidden,onCheckedChange:W=>S(r,!W),children:r.name},r.key))]})]}),T&&e.jsx(P.Actions,{...d,actions:T}),M&&e.jsx(_.FilterWrapper,{...Q,filters:M,params:j,onFilter:r=>{t==null||t({...j,...r,page:1}),p==null||p(r)}})]})]}),e.jsx("div",{className:"flex flex-col overflow-auto border-y",children:H?e.jsx(se.Loader,{}):e.jsx(I,{...U,params:{page:(l==null?void 0:l.page)||1,limit:l==null?void 0:l.limit,...j},rows:o.lodashExports.get(l,F,[]),rowKey:f,selectedItems:b,isStickyHeader:y,columns:A,hasCheckbox:D,hasNumbers:n,onRowClick:g,onSelectedItemsChange:K,onSortOrderChange:({sortField:r,sortOrder:W})=>{t==null||t({...j,sortField:r,sortOrder:W})}})}),E&&e.jsxs("div",{className:"flex shrink-0 flex-col items-center justify-between gap-3 p-4 lg:flex-row",children:[e.jsx("div",{className:"text-sm",children:e.jsx(L.MyLimitSelect,{onLimitChange:r=>t==null?void 0:t({...j,limit:r,page:1}),defaultValue:l==null?void 0:l.limit})}),e.jsx("div",{className:"text-muted-foreground text-sm",children:$("{{selectedCount}} of {{total}} row(s) selected",{selectedCount:b.length,total:(l==null?void 0:l.total)||0})}),e.jsx("div",{children:e.jsx(L.MyPagination,{...Y,onPageChange:r=>t==null?void 0:t({...j,page:r}),currentPage:l==null?void 0:l.page,totalPages:l==null?void 0:l.totalPages})})]})]})};exports.DataTable=te;exports.MyTable=I;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),J=require("../../chunks/index-ClQFzqcq.cjs.js"),V=require("dgz-ui/button"),v=require("dgz-ui/dropdown"),o=require("../../chunks/lodash-BjH0kD7j.cjs.js"),a=require("lucide-react"),z=require("react"),m=require("react-i18next"),B=require("../../chunks/useSortable-B3LF1tg8.cjs.js"),P=require("../../chunks/Actions-CXOiCjx0.cjs.js"),ee=require("../../chunks/ExportData-CrB0H1Ts.cjs.js"),_=require("../../chunks/Search-c_EapKlJ.cjs.js"),se=require("../../chunks/Loader-D_jX_Wgx.cjs.js"),L=require("../../chunks/MyPagination-CnF3468f.cjs.js"),u=require("dgz-ui/form"),c=require("dgz-ui/table"),R=require("dgz-ui/utils"),G=require("../../chunks/SortOrder-81BrXp3i.cjs.js"),le=require("../../chunks/Empty-BYOOFAab.cjs.js"),I=({rows:l=[],columns:h,onRowClick:g,rowKey:f,params:n={page:1,limit:L.DEFAULT_LIMIT},hasNumbers:q=!1,hasCheckbox:N=!1,selectedItems:D,onSelectedItemsChange:E,onSortOrderChange:y,isStickyHeader:t,className:F,...H})=>{const{sortObject:x,handleSort:M}=B.useSortable({sortField:n==null?void 0:n.sortField,sortOrder:n==null?void 0:n.sortOrder,onSortOrderChange:y}),{selectedRows:T,isRowSelected:p,isAllRowsSelected:j,handleSelectAllRows:O,handleSelectRow:k}=B.useDataTable({rows:l,defaultSelectedRows:D});return z.useEffect(()=>{JSON.stringify(D)!==JSON.stringify(T)&&T&&(E==null||E(T))},[T,D,E]),e.jsxs(c.Table,{...H,className:R.cn("relative",F),children:[e.jsx(c.TableHeader,{className:R.cn("bg-bg",t&&"sticky top-0 z-10"),children:e.jsxs(c.TableRow,{children:[N&&e.jsx(c.TableHead,{className:"w-12 p-3",children:e.jsx(u.Checkbox,{className:"mt-1",checked:j(f),onCheckedChange:s=>O(f,!!s),"aria-label":"Select all"})}),q&&e.jsx(c.TableHead,{className:"w-12 p-2",children:"#"}),h.filter(s=>!s.hidden).map(s=>e.jsx(c.TableHead,{style:s.styles,className:R.cn("p-2",s.sortable&&"cursor-pointer"),onClick:()=>s.sortable&&M(s.dataIndex),children:e.jsxs("div",{className:"flex items-center gap-2",children:[s.name," ",s.sortable&&((x==null?void 0:x.sortField)===s.key?e.jsxs(e.Fragment,{children:[(x==null?void 0:x.sortOrder)===G.SortOrder.DESC&&e.jsx(a.ArrowDownWideNarrow,{size:15}),(x==null?void 0:x.sortOrder)===G.SortOrder.ASC&&e.jsx(a.ArrowUpWideNarrow,{size:15})]}):e.jsx(a.ArrowUpDown,{size:15}))]})},s.key))]})}),e.jsx(c.TableBody,{className:"[&>tr:nth-child(even)]:bg-bg-secondary",children:l.length?l.map((s,w)=>e.jsxs(c.TableRow,{onClick:()=>g==null?void 0:g(s),className:R.cn(g&&"cursor-pointer"),"data-state":p(s[f])&&"selected",children:[N&&e.jsx(c.TableCell,{className:"w-12 p-3",onClick:d=>d.stopPropagation(),children:e.jsx(u.Checkbox,{className:"mt-1",checked:p(s[f]),onCheckedChange:d=>k(s[f],!!d),"aria-label":"Select row"})}),q&&e.jsx(c.TableCell,{className:"w-12 p-2",children:(n.page-1)*(n.limit||L.DEFAULT_LIMIT)+w+1}),h.filter(d=>!d.hidden).map(d=>e.jsx(c.TableCell,{className:"text-body-xs-medium max-w-xs p-2",style:d.styles,children:d.render?d.render(o.lodashExports.get(s,d.dataIndex),s):o.lodashExports.get(s,d.dataIndex,"")},`${w}-${d.key}`))]},`${s[f]}`)):e.jsx(c.TableRow,{children:e.jsx(c.TableCell,{colSpan:q?N?h.length+2:h.length+1:h.length,children:e.jsx(le.Empty,{})})})})]})},te=({dataSource:l,columns:h,onRowClick:g,rowKey:f,hasNumbers:n,hasSearch:q,exportOptions:N,hasCheckbox:D,hasPagination:E,isStickyHeader:y,onParamChange:t,dataKey:F="docs",loading:H,tableKey:x,filters:M,actions:T,handleFilterChange:p,params:j,exportLoading:O=!1,onColumnsUpdate:k,hasColumnsVisibilityDropdown:s,onSelectedItemsChange:w,actionProps:d,filterWrapperProps:Q,exportOptionsProps:X,columnsVisibilityProps:i,paginationProps:Y,searchProps:Z,...U})=>{const{t:$}=m.useTranslation(),[b,K]=z.useState([]),{formattedColumns:A,handleColumnsChange:S,resetColumns:C}=B.useColumns({key:x,columns:h});return z.useEffect(()=>{k==null||k(A)},[A,k]),z.useEffect(()=>{w==null||w(b)},[b,w]),e.jsxs("div",{className:"border-border-alpha-light flex grow flex-col overflow-auto rounded-xl border shadow-xs",children:[(q||s&&x||!o.lodashExports.isEmpty(N)||!o.lodashExports.isEmpty(M))&&e.jsxs("div",{className:"flex shrink-0 flex-col items-center justify-between gap-3 p-4 lg:flex-row",children:[e.jsx("div",{className:"w-full shrink",children:q&&e.jsx(_.Search,{...Z,defaultValue:o.lodashExports.get(j,"search",""),onSearchChange:r=>t==null?void 0:t({...j,search:r,page:1})})}),e.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-3",children:[N&&e.jsx(ee.ExportData,{...X,options:N,loading:O}),s&&x&&e.jsxs(v.DropdownMenu,{children:[e.jsx(v.DropdownMenuTrigger,{asChild:!0,...i==null?void 0:i.triggerProps,children:e.jsx(V.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:(i==null?void 0:i.title)||e.jsxs(e.Fragment,{children:[e.jsx(J.yn,{})," ",e.jsx("span",{className:"hidden lg:!inline",children:$("Customize columns")}),e.jsx(J.f1,{})]})})}),e.jsxs(v.DropdownMenuContent,{align:"end",...i==null?void 0:i.contentProps,children:[e.jsxs(v.DropdownMenuItem,{className:"capitalize",onClick:C,children:[e.jsx(a.RefreshCw,{})," ",(i==null?void 0:i.resetText)||$("Reset columns")]}),e.jsx(v.DropdownMenuSeparator,{}),A.map(r=>e.jsx(v.DropdownMenuCheckboxItem,{className:"capitalize",checked:!r.hidden,onCheckedChange:W=>S(r,!W),children:r.name},r.key))]})]}),T&&e.jsx(P.Actions,{...d,actions:T}),M&&e.jsx(_.FilterWrapper,{...Q,filters:M,params:j,onFilter:r=>{t==null||t({...j,...r,page:1}),p==null||p(r)}})]})]}),e.jsx("div",{className:"flex flex-col overflow-auto border-y",children:H?e.jsx(se.Loader,{}):e.jsx(I,{...U,params:{page:(l==null?void 0:l.page)||1,limit:l==null?void 0:l.limit,...j},rows:o.lodashExports.get(l,F,[]),rowKey:f,selectedItems:b,isStickyHeader:y,columns:A,hasCheckbox:D,hasNumbers:n,onRowClick:g,onSelectedItemsChange:K,onSortOrderChange:({sortField:r,sortOrder:W})=>{t==null||t({...j,sortField:r,sortOrder:W})}})}),E&&e.jsxs("div",{className:"flex shrink-0 flex-col items-center justify-between gap-3 p-4 lg:flex-row",children:[e.jsx("div",{className:"text-sm",children:e.jsx(L.MyLimitSelect,{onLimitChange:r=>t==null?void 0:t({...j,limit:r,page:1}),defaultValue:l==null?void 0:l.limit})}),e.jsx("div",{className:"text-muted-foreground text-sm",children:$("{{selectedCount}} of {{total}} row(s) selected",{selectedCount:b.length,total:(l==null?void 0:l.total)||0})}),e.jsx("div",{children:e.jsx(L.MyPagination,{...Y,onPageChange:r=>t==null?void 0:t({...j,page:r}),currentPage:l==null?void 0:l.page,totalPages:l==null?void 0:l.totalPages})})]})]})};exports.DataTable=te;exports.MyTable=I;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -6,7 +6,7 @@ import { l as E } from "../../chunks/lodash-CRDOWzbs.es.js";
6
6
  import { ArrowDownWideNarrow as re, ArrowUpWideNarrow as se, ArrowUpDown as fe, RefreshCw as ie } from "lucide-react";
7
7
  import { useEffect as _, useState as ce } from "react";
8
8
  import { useTranslation as pe } from "react-i18next";
9
- import { u as xe, a as Ne, b as he } from "../../chunks/useSortable-DHdn9snJ.es.js";
9
+ import { u as xe, a as Ne, b as he } from "../../chunks/useSortable-BXNk8Wth.es.js";
10
10
  import { A as we } from "../../chunks/Actions-Bi_vjY5M.es.js";
11
11
  import { E as ge } from "../../chunks/ExportData-CHPKm-ZY.es.js";
12
12
  import { S as ne, F as ke } from "../../chunks/Search-CigmAAd7.es.js";
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const he=require("../chunks/useSortable-D1iGfsy3.cjs.js"),V=require("react/jsx-runtime"),ee=require("../chunks/lodash-BjH0kD7j.cjs.js"),$=require("react"),U=require("../chunks/PasswordConfirm-maMQqARK.cjs.js"),Le=require("../chunks/useFilter-CsOF1_hM.cjs.js"),Ye=require("../chunks/useTheme-hjEZ-FC3.cjs.js"),We=()=>{const e=$.useCallback(({onConfirm:a})=>{const n=ee.lodashExports.uniqueId();U.y.warning(V.jsx(V.Fragment,{}),{toastId:n,autoClose:!1}),U.y.update(n,{position:"bottom-left",render:V.jsx(U.Confirm,{defaultOpen:!0,onConfirm:()=>{a(),U.y.dismiss(n)}})})},[]),o=$.useCallback(({onSubmit:a})=>{const n=ee.lodashExports.uniqueId();U.y.warning(V.jsx(V.Fragment,{}),{position:"bottom-left",toastId:n,autoClose:!1}),U.y.update(n,{render:V.jsx(U.PasswordConfirm,{defaultOpen:!0,onSubmit:f=>{a(f),U.y.dismiss(n)}})})},[]);return{confirm:e,confirmPassword:o}},Fe=(e,o=!1)=>{const a=$.useRef(document.title);$.useEffect(()=>(o&&a.current===document.title&&(a.current=document.title),document.title=e,()=>{o&&(document.title=a.current)}),[e,o])};var G={},Te;function Ue(){if(Te)return G;Te=1,G.match=c,G.parse=l;var e=/(?:(only|not)?\s*([^\s\(\)]+)(?:\s*and)?\s*)?(.+)?/i,o=/\(\s*([^\s\:\)]+)\s*(?:\:\s*([^\s\)]+))?\s*\)/,a=/^(?:(min|max)-)?(.+)/,n=/(em|rem|px|cm|mm|in|pt|pc)?$/,f=/(dpi|dpcm|dppx)?$/;function c(d,u){return l(d).some(function(m){var g=m.inverse,j=m.type==="all"||u.type===m.type;if(j&&g||!(j||g))return!1;var A=m.expressions.every(function(q){var D=q.feature,Y=q.modifier,x=q.value,S=u[D];if(!S)return!1;switch(D){case"orientation":case"scan":return S.toLowerCase()===x.toLowerCase();case"width":case"height":case"device-width":case"device-height":x=C(x),S=C(S);break;case"resolution":x=v(x),S=v(S);break;case"aspect-ratio":case"device-aspect-ratio":case"device-pixel-ratio":x=p(x),S=p(S);break;case"grid":case"color":case"color-index":case"monochrome":x=parseInt(x,10)||1,S=parseInt(S,10)||0;break}switch(Y){case"min":return S>=x;case"max":return S<=x;default:return S===x}});return A&&!g||!A&&g})}function l(d){return d.split(",").map(function(u){u=u.trim();var m=u.match(e),g=m[1],j=m[2],A=m[3]||"",q={};return q.inverse=!!g&&g.toLowerCase()==="not",q.type=j?j.toLowerCase():"all",A=A.match(/\([^\)]+\)/g)||[],q.expressions=A.map(function(D){var Y=D.match(o),x=Y[1].toLowerCase().match(a);return{modifier:x[1],feature:x[2],value:Y[2]}}),q})}function p(d){var u=Number(d),m;return u||(m=d.match(/^(\d+)\s*\/\s*(\d+)$/),u=m[1]/m[2]),u}function v(d){var u=parseFloat(d),m=String(d).match(f)[1];switch(m){case"dpcm":return u/2.54;case"dppx":return u*96;default:return u}}function C(d){var u=parseFloat(d),m=String(d).match(n)[1];switch(m){case"em":return u*16;case"rem":return u*16;case"cm":return u*96/2.54;case"mm":return u*96/2.54/10;case"in":return u*96;case"pt":return u*72;case"pc":return u*72/12;default:return u}}return G}var ue,ge;function ze(){if(ge)return ue;ge=1;var e=Ue().match,o=typeof window<"u"?window.matchMedia:null;function a(f,c,l){var p=this,v;o&&!l&&(v=o.call(window,f)),v?(this.matches=v.matches,this.media=v.media,v.addListener(u)):(this.matches=e(f,c),this.media=f),this.addListener=C,this.removeListener=d,this.dispose=m;function C(g){v&&v.addListener(g)}function d(g){v&&v.removeListener(g)}function u(g){p.matches=g.matches,p.media=g.media}function m(){v&&v.removeListener(u)}}function n(f,c,l){return new a(f,c,l)}return ue=n,ue}var Ne=ze();const Qe=ee.getDefaultExportFromCjs(Ne);var He=/[A-Z]/g,Ve=/^ms-/,fe={};function Ke(e){return"-"+e.toLowerCase()}function qe(e){if(fe.hasOwnProperty(e))return fe[e];var o=e.replace(He,Ke);return fe[e]=Ve.test(o)?"-"+o:o}function Je(e,o){if(e===o)return!0;if(!e||!o)return!1;const a=Object.keys(e),n=Object.keys(o),f=a.length;if(n.length!==f)return!1;for(let c=0;c<f;c++){const l=a[c];if(e[l]!==o[l]||!Object.prototype.hasOwnProperty.call(o,l))return!1}return!0}var Z={exports:{}},B={exports:{}},_={};/** @license React v16.13.1
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const he=require("../chunks/useSortable-B3LF1tg8.cjs.js"),V=require("react/jsx-runtime"),ee=require("../chunks/lodash-BjH0kD7j.cjs.js"),$=require("react"),U=require("../chunks/PasswordConfirm-maMQqARK.cjs.js"),Le=require("../chunks/useFilter-CsOF1_hM.cjs.js"),Ye=require("../chunks/useTheme-hjEZ-FC3.cjs.js"),We=()=>{const e=$.useCallback(({onConfirm:a})=>{const n=ee.lodashExports.uniqueId();U.y.warning(V.jsx(V.Fragment,{}),{toastId:n,autoClose:!1}),U.y.update(n,{position:"bottom-left",render:V.jsx(U.Confirm,{defaultOpen:!0,onConfirm:()=>{a(),U.y.dismiss(n)}})})},[]),o=$.useCallback(({onSubmit:a})=>{const n=ee.lodashExports.uniqueId();U.y.warning(V.jsx(V.Fragment,{}),{position:"bottom-left",toastId:n,autoClose:!1}),U.y.update(n,{render:V.jsx(U.PasswordConfirm,{defaultOpen:!0,onSubmit:f=>{a(f),U.y.dismiss(n)}})})},[]);return{confirm:e,confirmPassword:o}},Fe=(e,o=!1)=>{const a=$.useRef(document.title);$.useEffect(()=>(o&&a.current===document.title&&(a.current=document.title),document.title=e,()=>{o&&(document.title=a.current)}),[e,o])};var G={},Te;function Ue(){if(Te)return G;Te=1,G.match=c,G.parse=l;var e=/(?:(only|not)?\s*([^\s\(\)]+)(?:\s*and)?\s*)?(.+)?/i,o=/\(\s*([^\s\:\)]+)\s*(?:\:\s*([^\s\)]+))?\s*\)/,a=/^(?:(min|max)-)?(.+)/,n=/(em|rem|px|cm|mm|in|pt|pc)?$/,f=/(dpi|dpcm|dppx)?$/;function c(d,u){return l(d).some(function(m){var g=m.inverse,j=m.type==="all"||u.type===m.type;if(j&&g||!(j||g))return!1;var A=m.expressions.every(function(q){var D=q.feature,Y=q.modifier,x=q.value,S=u[D];if(!S)return!1;switch(D){case"orientation":case"scan":return S.toLowerCase()===x.toLowerCase();case"width":case"height":case"device-width":case"device-height":x=C(x),S=C(S);break;case"resolution":x=v(x),S=v(S);break;case"aspect-ratio":case"device-aspect-ratio":case"device-pixel-ratio":x=p(x),S=p(S);break;case"grid":case"color":case"color-index":case"monochrome":x=parseInt(x,10)||1,S=parseInt(S,10)||0;break}switch(Y){case"min":return S>=x;case"max":return S<=x;default:return S===x}});return A&&!g||!A&&g})}function l(d){return d.split(",").map(function(u){u=u.trim();var m=u.match(e),g=m[1],j=m[2],A=m[3]||"",q={};return q.inverse=!!g&&g.toLowerCase()==="not",q.type=j?j.toLowerCase():"all",A=A.match(/\([^\)]+\)/g)||[],q.expressions=A.map(function(D){var Y=D.match(o),x=Y[1].toLowerCase().match(a);return{modifier:x[1],feature:x[2],value:Y[2]}}),q})}function p(d){var u=Number(d),m;return u||(m=d.match(/^(\d+)\s*\/\s*(\d+)$/),u=m[1]/m[2]),u}function v(d){var u=parseFloat(d),m=String(d).match(f)[1];switch(m){case"dpcm":return u/2.54;case"dppx":return u*96;default:return u}}function C(d){var u=parseFloat(d),m=String(d).match(n)[1];switch(m){case"em":return u*16;case"rem":return u*16;case"cm":return u*96/2.54;case"mm":return u*96/2.54/10;case"in":return u*96;case"pt":return u*72;case"pc":return u*72/12;default:return u}}return G}var ue,ge;function ze(){if(ge)return ue;ge=1;var e=Ue().match,o=typeof window<"u"?window.matchMedia:null;function a(f,c,l){var p=this,v;o&&!l&&(v=o.call(window,f)),v?(this.matches=v.matches,this.media=v.media,v.addListener(u)):(this.matches=e(f,c),this.media=f),this.addListener=C,this.removeListener=d,this.dispose=m;function C(g){v&&v.addListener(g)}function d(g){v&&v.removeListener(g)}function u(g){p.matches=g.matches,p.media=g.media}function m(){v&&v.removeListener(u)}}function n(f,c,l){return new a(f,c,l)}return ue=n,ue}var Ne=ze();const Qe=ee.getDefaultExportFromCjs(Ne);var He=/[A-Z]/g,Ve=/^ms-/,fe={};function Ke(e){return"-"+e.toLowerCase()}function qe(e){if(fe.hasOwnProperty(e))return fe[e];var o=e.replace(He,Ke);return fe[e]=Ve.test(o)?"-"+o:o}function Je(e,o){if(e===o)return!0;if(!e||!o)return!1;const a=Object.keys(e),n=Object.keys(o),f=a.length;if(n.length!==f)return!1;for(let c=0;c<f;c++){const l=a[c];if(e[l]!==o[l]||!Object.prototype.hasOwnProperty.call(o,l))return!1}return!0}var Z={exports:{}},B={exports:{}},_={};/** @license React v16.13.1
2
2
  * react-is.production.min.js
3
3
  *
4
4
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -1,4 +1,4 @@
1
- import { b as qr, a as $r, u as jr } from "../chunks/useSortable-DHdn9snJ.es.js";
1
+ import { b as qr, a as $r, u as jr } from "../chunks/useSortable-BXNk8Wth.es.js";
2
2
  import { jsx as X, Fragment as Ee } from "react/jsx-runtime";
3
3
  import { l as Te, g as je } from "../chunks/lodash-CRDOWzbs.es.js";
4
4
  import { useCallback as ge, useRef as De, useEffect as F, useContext as Ue, useState as ee, createContext as Ne } from "react";
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/useColumnsStore-BGpED5bu.cjs.js"),r=e.create()(e.persist(t=>({setStoredRange:o=>{t({storedRanges:o})},storedRanges:{}}),{name:"dateRangesStore",storage:e.createJSONStorage(()=>localStorage)}));exports.useColumnsStore=e.useColumnsStore;exports.useDateRangeStore=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/useColumnsStore-BGNUm5Vi.cjs.js"),r=e.create()(e.persist(t=>({setStoredRange:o=>{t({storedRanges:o})},storedRanges:{}}),{name:"dateRangesStore",storage:e.createJSONStorage(()=>localStorage)}));exports.useColumnsStore=e.useColumnsStore;exports.useDateRangeStore=r;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,5 +1,5 @@
1
- import { c as t, p as o, a as r } from "../chunks/useColumnsStore-DmpJsxUu.es.js";
2
- import { u as c } from "../chunks/useColumnsStore-DmpJsxUu.es.js";
1
+ import { c as t, p as o, a as r } from "../chunks/useColumnsStore-ByK5r4ZY.es.js";
2
+ import { u as c } from "../chunks/useColumnsStore-ByK5r4ZY.es.js";
3
3
  const g = t()(
4
4
  o(
5
5
  (e) => ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dgz-ui-shared",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library",
5
5
  "keywords": [
6
6
  "dgz-ui",
@@ -174,10 +174,14 @@
174
174
  },
175
175
  "dependencies": {
176
176
  "@hookform/resolvers": "^5.0.1",
177
+ "dayjs": "^1.11.19",
177
178
  "file-saver": "^2.0.5",
178
179
  "lodash": "^4.17.21",
180
+ "lucide-react": "^0.563.0",
181
+ "react-hook-form": "^7.71.1",
179
182
  "react-responsive": "^10.0.1",
180
183
  "react-toastify": "^11.0.5",
184
+ "tailwindcss": "^4.1.18",
181
185
  "zod": "^3.25.67",
182
186
  "zustand": "^5.0.5"
183
187
  },
@@ -212,20 +216,13 @@
212
216
  "vitest": "^3.1.4"
213
217
  },
214
218
  "peerDependencies": {
215
- "dayjs": "^1.11.19",
216
- "dgz-ui": "^1.4.5",
219
+ "dgz-ui": "^1.4.6",
217
220
  "i18next": "^25.8.0",
218
- "lucide-react": "^0.563.0",
219
221
  "react": "^19.0.1",
220
222
  "react-dom": "^19.0.1",
221
- "react-hook-form": "^7.71.1",
222
- "react-i18next": "^16.5.4",
223
- "tailwindcss": "^4.1.18"
223
+ "react-i18next": "^16.5.4"
224
224
  },
225
225
  "peerDependenciesMeta": {
226
- "dayjs": {
227
- "optional": true
228
- },
229
226
  "i18next": {
230
227
  "optional": true
231
228
  },
@@ -1,2 +0,0 @@
1
- "use strict";const N=require("react"),R=t=>t&&t.__esModule?t:{default:t},b=R(N),H=t=>{let r;const e=new Set,o=(l,c)=>{const d=typeof l=="function"?l(r):l;if(!Object.is(d,r)){const I=r;r=c??(typeof d!="object"||d===null)?d:Object.assign({},r,d),e.forEach(g=>g(r,I))}},a=()=>r,u={setState:o,getState:a,getInitialState:()=>m,subscribe:l=>(e.add(l),()=>e.delete(l))},m=r=t(o,a,u);return u},F=(t=>t?H(t):H),P=t=>t;function x(t,r=P){const e=b.default.useSyncExternalStore(t.subscribe,b.default.useCallback(()=>r(t.getState()),[t,r]),b.default.useCallback(()=>r(t.getInitialState()),[t,r]));return b.default.useDebugValue(e),e}const j=t=>{const r=F(t),e=o=>x(r,o);return Object.assign(e,r),e},k=(t=>t?j(t):j);function w(t,r){let e;try{e=t()}catch{return}return{getItem:a=>{var s;const S=m=>m===null?null:JSON.parse(m,void 0),u=(s=e.getItem(a))!=null?s:null;return u instanceof Promise?u.then(S):S(u)},setItem:(a,s)=>e.setItem(a,JSON.stringify(s,void 0)),removeItem:a=>e.removeItem(a)}}const C=t=>r=>{try{const e=t(r);return e instanceof Promise?e:{then(o){return C(o)(e)},catch(o){return this}}}catch(e){return{then(o){return this},catch(o){return C(o)(e)}}}},D=(t,r)=>(e,o,a)=>{let s={storage:w(()=>localStorage),partialize:n=>n,version:0,merge:(n,v)=>({...v,...n}),...r},S=!1,u=0;const m=new Set,l=new Set;let c=s.storage;if(!c)return t((...n)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),e(...n)},o,a);const d=()=>{const n=s.partialize({...o()});return c.setItem(s.name,{state:n,version:s.version})},I=a.setState;a.setState=(n,v)=>(I(n,v),d());const g=t((...n)=>(e(...n),d()),o,a);a.getInitialState=()=>g;let h;const O=()=>{var n,v;if(!c)return;const p=++u;S=!1,m.forEach(i=>{var f;return i((f=o())!=null?f:g)});const y=((v=s.onRehydrateStorage)==null?void 0:v.call(s,(n=o())!=null?n:g))||void 0;return C(c.getItem.bind(c))(s.name).then(i=>{if(i)if(typeof i.version=="number"&&i.version!==s.version){if(s.migrate){const f=s.migrate(i.state,i.version);return f instanceof Promise?f.then(_=>[!0,_]):[!0,f]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,i.state];return[!1,void 0]}).then(i=>{var f;if(p!==u)return;const[_,J]=i;if(h=s.merge(J,(f=o())!=null?f:g),e(h,!0),_)return d()}).then(()=>{p===u&&(y==null||y(h,void 0),h=o(),S=!0,l.forEach(i=>i(h)))}).catch(i=>{p===u&&(y==null||y(void 0,i))})};return a.persist={setOptions:n=>{s={...s,...n},n.storage&&(c=n.storage)},clearStorage:()=>{c==null||c.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>O(),hasHydrated:()=>S,onHydrate:n=>(m.add(n),()=>{m.delete(n)}),onFinishHydration:n=>(l.add(n),()=>{l.delete(n)})},s.skipHydration||O(),h||g},E=D,L=k()(E(t=>({setColumns:r=>{t({storedColumns:r})},storedColumns:{}}),{name:"columnsStore"}));exports.create=k;exports.createJSONStorage=w;exports.persist=E;exports.useColumnsStore=L;
2
- //# sourceMappingURL=useColumnsStore-BGpED5bu.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useColumnsStore-BGpED5bu.cjs.js","sources":["../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/zustand/esm/react.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/stores/useColumnsStore.ts"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\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 `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n","import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\n/**\n * State shape for the columns store.\n */\nexport type ColumnsStoreState = {\n /** Map of stored column visibilities keyed by table key. */\n storedColumns: Record<string, Record<string, boolean>>;\n /** Action to update stored columns. */\n setColumns: (storedColumns: ColumnsStoreState['storedColumns']) => void;\n};\n\n/**\n * Zustand store to persist column visibility settings across sessions.\n */\nexport const useColumnsStore = create<ColumnsStoreState>()(\n persist(\n (set) => ({\n setColumns: (storedColumns) => {\n set({ storedColumns });\n },\n storedColumns: {},\n }),\n {\n name: 'columnsStore',\n }\n )\n);\n"],"names":["createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","initialState","createStore","identity","arg","useStore","selector","slice","React","createImpl","useBoundStore","create","createJSONStorage","getStorage","options","storage","name","_a","parse","str2","str","newValue","toThenable","fn","input","result","onFulfilled","_onRejected","_onFulfilled","onRejected","persistImpl","config","baseOptions","set","get","persistedState","currentState","hasHydrated","hydrationVersion","hydrationListeners","finishHydrationListeners","args","setItem","savedSetState","configResult","stateFromStorage","hydrate","_b","currentVersion","cb","_a2","postRehydrationCallback","deserializedStorageValue","migration","migrationResult","migrated","migratedState","e","newOptions","persist","useColumnsStore","storedColumns"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useColumnsStore-DmpJsxUu.es.js","sources":["../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/zustand/esm/react.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/stores/useColumnsStore.ts"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\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 `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n","import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\n/**\n * State shape for the columns store.\n */\nexport type ColumnsStoreState = {\n /** Map of stored column visibilities keyed by table key. */\n storedColumns: Record<string, Record<string, boolean>>;\n /** Action to update stored columns. */\n setColumns: (storedColumns: ColumnsStoreState['storedColumns']) => void;\n};\n\n/**\n * Zustand store to persist column visibility settings across sessions.\n */\nexport const useColumnsStore = create<ColumnsStoreState>()(\n persist(\n (set) => ({\n setColumns: (storedColumns) => {\n set({ storedColumns });\n },\n storedColumns: {},\n }),\n {\n name: 'columnsStore',\n }\n )\n);\n"],"names":["createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","initialState","createStore","identity","arg","useStore","selector","slice","React","createImpl","useBoundStore","create","createJSONStorage","getStorage","options","storage","name","_a","parse","str2","str","newValue","toThenable","fn","input","result","onFulfilled","_onRejected","_onFulfilled","onRejected","persistImpl","config","baseOptions","set","get","persistedState","currentState","hasHydrated","hydrationVersion","hydrationListeners","finishHydrationListeners","args","setItem","savedSetState","configResult","stateFromStorage","hydrate","_b","currentVersion","cb","_a2","postRehydrationCallback","deserializedStorageValue","migration","migrationResult","migrated","migratedState","e","newOptions","persist","useColumnsStore","storedColumns"],"mappings":"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","x_google_ignoreList":[0,1,2]}