UNPKG

4.67 kBSource Map (JSON)View Raw
1{"version":3,"file":"react-use-control.umd.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