UNPKG

@wix/design-system

Version:

@wix/design-system

95 lines 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.injectCSS = exports.statesRuntime = exports.classesRuntime = void 0; function createStateClass(namespace, stateName, stateValue) { if (stateValue === false || stateValue === undefined || stateValue === null || stateValue !== stateValue // check NaN ) { return ''; } if (stateValue === true) { // boolean state return namespace + '--' + stateName; } var param = stateValue.toString(); return namespace + '---' + stateName + '-' + param.length + '-' + param.replace(/\s/gm, '_'); } function classesRuntime(namespace) { var classNames = []; for (var i = 1; i < arguments.length; i++) { // eslint-disable-next-line prefer-rest-params var item = arguments[i]; if (item) { if (typeof item === 'string') { classNames[classNames.length] = item; } else if (i === 2) { for (var stateName in item) { var stateValue = item[stateName]; var stateClass = createStateClass(namespace, stateName, stateValue); if (stateClass) { classNames[classNames.length] = stateClass; } } } } } return classNames.join(' '); } exports.classesRuntime = classesRuntime; function statesRuntime(namespace, stateMapping) { var classNames = []; for (var stateName in stateMapping) { var stateValue = stateMapping[stateName]; var stateClass = createStateClass(namespace, stateName, stateValue); if (stateClass) { classNames.push(stateClass); } } return classNames.join(' '); } exports.statesRuntime = statesRuntime; function injectCSS(id, css, depth, runtimeId) { if (typeof document === 'undefined') { return; } var d = document; var head = d.head; var style = d.createElement('style'); style.setAttribute('st_id', id); style.setAttribute('st_depth', depth); style.setAttribute('st_runtime', runtimeId); style.textContent = css; var loadedStyleElements = head.querySelectorAll('style[st_runtime="' + runtimeId + '"]'); var inserted = false; var insertAfter; for (var i = 0; i < loadedStyleElements.length; i++) { var styleElement = loadedStyleElements[i]; var existingStId = styleElement.getAttribute('st_id'); var existingStDepth = Number(styleElement.getAttribute('st_depth')); if (existingStId === id) { if (existingStDepth === depth) { head.replaceChild(style, styleElement); return; } else { styleElement.parentElement.removeChild(styleElement); continue; } } if (!inserted && depth < existingStDepth) { head.insertBefore(style, styleElement); inserted = true; } insertAfter = styleElement; } if (!inserted) { insertAfter ? head.insertBefore(style, insertAfter.nextElementSibling) : head.appendChild(style); } } exports.injectCSS = injectCSS; //# sourceMappingURL=pure.js.map