UNPKG

@appbuckets/react-ui-core

Version:

Core utilities built for AppBuckets React UI Framework

81 lines (75 loc) 2.84 kB
'use strict'; var tslib = require('tslib'); var difference = require('lodash/difference'); var forEach = require('lodash/forEach'); var isNil = require('lodash/isNil'); var flow = require('lodash/fp/flow'); var toArray = require('lodash/fp/toArray'); var map = require('lodash/fp/map'); var flatMap = require('lodash/fp/flatMap'); var split = require('lodash/fp/split'); var filter = require('lodash/fp/filter'); var identity = require('lodash/fp/identity'); var uniq = require('lodash/fp/uniq'); function _interopDefaultLegacy(e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var difference__default = /*#__PURE__*/ _interopDefaultLegacy(difference); var forEach__default = /*#__PURE__*/ _interopDefaultLegacy(forEach); var isNil__default = /*#__PURE__*/ _interopDefaultLegacy(isNil); var flow__default = /*#__PURE__*/ _interopDefaultLegacy(flow); var toArray__default = /*#__PURE__*/ _interopDefaultLegacy(toArray); var map__default = /*#__PURE__*/ _interopDefaultLegacy(map); var flatMap__default = /*#__PURE__*/ _interopDefaultLegacy(flatMap); var split__default = /*#__PURE__*/ _interopDefaultLegacy(split); var filter__default = /*#__PURE__*/ _interopDefaultLegacy(filter); var identity__default = /*#__PURE__*/ _interopDefaultLegacy(identity); var uniq__default = /*#__PURE__*/ _interopDefaultLegacy(uniq); var computeClassNames = flow__default['default']( toArray__default['default'], map__default['default']('props.className'), flatMap__default['default'](split__default['default'](/\s+/)), filter__default['default'](identity__default['default']), uniq__default['default'] ); var computeClassNameDifference = function (prev, curr) { return [ difference__default['default']( curr, prev !== null && prev !== void 0 ? prev : [] ), difference__default['default']( prev, curr !== null && curr !== void 0 ? curr : [] ), ]; }; var prevClassName = new Map(); function handleClassNamesChange(ref, components) { if (isNil__default['default'](ref) || isNil__default['default'](components)) { return; } var currentClassNames = computeClassNames(components); var _a = tslib.__read( computeClassNameDifference(prevClassName.get(ref), currentClassNames), 2 ), toAdd = _a[0], toRemove = _a[1]; if (ref.current !== null) { forEach__default['default'](toAdd, function (className) { var _a; return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.classList.add(className); }); forEach__default['default'](toRemove, function (className) { var _a; return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.classList.remove(className); }); } prevClassName.set(ref, currentClassNames); } module.exports = handleClassNamesChange;