UNPKG

react-hifi

Version:

A set of react components wich provides simple abstraption to manipulate HTML5 AudioContext API (Equalizer, visualisation, stereo, basic controls)

41 lines 1.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = __importDefault(require("react")); var memo = react_1.default.memo, useState = react_1.default.useState, useEffect = react_1.default.useEffect; function pluginFactory(_a) { var createNode = _a.createNode, updateNode = _a.updateNode, _b = _a.shouldNotUpdate, shouldNotUpdate = _b === void 0 ? function () { return true; } : _b; return memo(function (props) { var _a = useState(), node = _a[0], setNode = _a[1]; useEffect(function () { if (props.previousNode && props.audioContext && !node) { var createdNode = createNode(props.audioContext, props); if (Array.isArray(createdNode)) { var lastInChain = createdNode[0]; props.previousNode.connect(lastInChain); for (var i = 1; i < createdNode.length; i++) { lastInChain.connect(createdNode[i]); lastInChain = createdNode[i]; } } else { props.previousNode.connect(createdNode); } setNode(createdNode); } }); useEffect(function () { if (node) { props.onRegister && props.onRegister(Array.isArray(node) ? node[node.length - 1] : node); } }, [node]); node && updateNode && props.audioContext && updateNode(node, props, props.audioContext); return null; }, function (prevProps, nextProps) { return prevProps.previousNode === nextProps.previousNode && shouldNotUpdate(prevProps, nextProps); }); } exports.pluginFactory = pluginFactory; //# sourceMappingURL=plugin-factory.js.map