@appbuckets/react-ui-core
Version:
Core utilities built for AppBuckets React UI Framework
81 lines (75 loc) • 2.84 kB
JavaScript
;
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;