{"version":3,"file":"useSyncState.cjs","sources":["../../../../../../../packages/components/tabs/src/hooks/useSyncState.ts"],"sourcesContent":["import type { Ref } from 'vue';\nimport { ref } from 'vue';\n\ntype Updater<T> = (prev: T) => T;\n\nexport default function useSyncState<T>(\n  defaultState: T,\n  onChange: (newValue: T, prevValue: T) => void,\n): [Ref<T>, (updater: T | Updater<T>) => void] {\n  const stateRef = ref(defaultState);\n\n  function setState(updater: any) {\n    const newValue = typeof updater === 'function' ? updater(stateRef.value) : updater;\n    if (newValue !== stateRef.value)\n      onChange(newValue, stateRef.value as T);\n\n    stateRef.value = newValue;\n  }\n\n  return [stateRef as Ref<T>, setState];\n}\n"],"names":["ref"],"mappings":";;;;;;AAKwB,SAAA,YAAA,CACtB,cACA,QAC6C,EAAA;AAC7C,EAAM,MAAA,QAAA,GAAWA,QAAI,YAAY,CAAA,CAAA;AAEjC,EAAA,SAAS,SAAS,OAAc,EAAA;AAC9B,IAAA,MAAM,WAAW,OAAO,OAAA,KAAY,aAAa,OAAQ,CAAA,QAAA,CAAS,KAAK,CAAI,GAAA,OAAA,CAAA;AAC3E,IAAA,IAAI,aAAa,QAAS,CAAA,KAAA;AACxB,MAAS,QAAA,CAAA,QAAA,EAAU,SAAS,KAAU,CAAA,CAAA;AAExC,IAAA,QAAA,CAAS,KAAQ,GAAA,QAAA,CAAA;AAAA,GACnB;AAEA,EAAO,OAAA,CAAC,UAAoB,QAAQ,CAAA,CAAA;AACtC;;;;"}