This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.

1 line
2.0 KiB
Plaintext
Raw Permalink Normal View History

2021-04-02 02:24:13 +03:00
{"version":3,"sources":["useCode.js"],"names":["React","always","block","useCode","nodeFactory","dependencies","useEffect","Function","console","warn","node","Array","animatedAlways","__attach","__detach"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,EAAiBC,KAAjB,QAA8B,SAA9B;AAEA;;;;;;AAMA;;;;;;AAKA,eAAe,SAASC,OAAT,CAAiBC,WAAjB,EAA8BC,YAA9B,EAA4C;AACzD,MAAI,EAAEL,KAAK,CAACM,SAAN,YAA2BC,QAA7B,CAAJ,EAA4C;AAE5CP,EAAAA,KAAK,CAACM,SAAN,CAAgB,MAAM;AACpB;AACA,QAAI,EAAEF,WAAW,YAAYG,QAAzB,CAAJ,EAAwC;AACtCC,MAAAA,OAAO,CAACC,IAAR,CACE,+EADF;AAIA,YAAMC,IAAI,GAAGN,WAAb;;AACAA,MAAAA,WAAW,GAAG,MAAMM,IAApB;AACD;;AAED,QAAIA,IAAI,GAAGN,WAAW,EAAtB;;AACA,QAAIM,IAAJ,EAAU;AACR;AACA,UAAIA,IAAI,YAAYC,KAApB,EAA2BD,IAAI,GAAGR,KAAK,CAACQ,IAAD,CAAZ;AAE3B,YAAME,cAAc,GAAGX,MAAM,CAACS,IAAD,CAA7B;;AACAE,MAAAA,cAAc,CAACC,QAAf,GALQ,CAOR;;;AACA,aAAO,MAAMD,cAAc,CAACE,QAAf,EAAb;AACD;AACF,GAtBD,EAsBGT,YAtBH;AAuBD","sourcesContent":["import React from 'react';\nimport { always, block } from '../base';\n\n/**\n * @callback NodeFactory\n * Function to create a node or an array of nodes.\n * @returns {(Node[] | Node | null | undefined | Boolean)}\n */\n\n/**\n * React hook to run a node.\n * @param {NodeFactory} nodeFactory Function to build the node to run.\n * @param dependencies Array of dependencies. Refresh the node on changes.\n */\nexport default function useCode(nodeFactory, dependencies) {\n if (!(React.useEffect instanceof Function)) return;\n\n React.useEffect(() => {\n // check and correct 1st parameter\n if (!(nodeFactory instanceof Function)) {\n console.warn(\n 'useCode() first argument should be a function that returns an animation node.'\n );\n\n const node = nodeFactory;\n nodeFactory = () => node;\n }\n\n let node = nodeFactory();\n if (node) {\n // allow factory to return array\n if (node instanceof Array) node = block(node);\n\n const animatedAlways = always(node);\n animatedAlways.__attach();\n\n // return undo function\n return () => animatedAlways.__detach();\n }\n }, dependencies);\n}\n"]}