UNPKG

4.66 kBSource Map (JSON)View Raw
1{"version":3,"file":"react-use-control.esm.js","sources":["../src/index.js"],"sourcesContent":["// TODO: combine multiple controls\n\nimport * as React from 'react';\n\nconst controlSymbol = Symbol('control');\n\nexport function isControl(obj) {\n return obj && obj[controlSymbol];\n}\n\n// TODO: 同一个 control 传给多个 组件实例\nexport function useProp(control, prop, initial) {\n // if (__DEV__) {\n // // eslint-disable-next-line no-prototype-builtins\n // if (React.useRef(control.hasOwnProperty(prop)).current)\n // throw new Error('Could not use prop multiple times.');\n // }\n\n if (!control) return React.useState(initial);\n const {state, transform} = control[prop] || {};\n const isSource = React.useRef(!state).current;\n const s = isSource ? React.useState(initial) : state;\n return transform ? transform(s) : s;\n}\n\n/**\n * Create or reuse a control\n * @param {object} [control] state store\n * @param {object | array} [transforms] state transforms\n * @return {array} control and useProp\n */\nexport default function useControl(control, transforms) {\n const m = isControl(control)\n ? Object.create(control)\n : {[controlSymbol]: true};\n if (transforms) {\n (Array.isArray(transforms)\n ? transforms\n : Object.entries(transforms)\n ).forEach(([prop, t]) => {\n const {state, transform} = m[prop] || {};\n m[prop] = {state, transform: transform ? (s) => transform(t(s)) : t};\n });\n }\n\n return [\n m,\n function useProp$(prop, initial) {\n const state = useProp(control, prop, initial);\n m[prop] = {transform: transforms && transforms[prop], state};\n return state;\n }\n ];\n}\n\nexport function useControlProp(control) {\n return function useProp$(prop, initial) {\n return useProp(control, prop, initial);\n };\n}\n\nexport function usePick(control, props) {\n const [m, useProp] = useControl();\n if (control) {\n props.forEach((prop) => {\n const [from, to] = Array.isArray(prop) ? prop : [prop, prop];\n m[to || from] = control[from];\n });\n }\n return [m, useProp];\n}\n\n// TODO: useWatch\n"],"names":["controlSymbol","Symbol","isControl","obj","useProp","control","prop","initial","React","state","transform","isSource","current","s","useControl","transforms","m","Object","create","Array","isArray","entries","forEach","t","useProp$","useControlProp","usePick","props","from","to"],"mappings":"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"}
\No newline at end of file