UNPKG

@amaui/style

Version:
55 lines (45 loc) 2.72 kB
import isEnvironment from '@amaui/utils/isEnvironment'; class AmauiStyleRenderer { make() { let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { element: {}, data: {} }; let version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'style'; // Append to the bottom of head element if (isEnvironment('browser')) { const element = window.document.createElement(version); Object.keys((attributes === null || attributes === void 0 ? void 0 : attributes.element) || {}).forEach(attribute => element.setAttribute(attribute, attributes.element[attribute])); // Add attributes Object.keys((attributes === null || attributes === void 0 ? void 0 : attributes.data) || {}).forEach(attribute => { element[attribute] = attributes.data[attribute]; element.setAttribute(attribute.indexOf('data-') === 0 ? attribute : "data-".concat(attribute), attributes.data[attribute]); }); return element; } } add(value) { let priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'lower'; let attributes = arguments.length > 2 ? arguments[2] : undefined; // Append to the bottom of head element if (isEnvironment('browser')) { const styleSheets = window.document.styleSheets; if (!styleSheets.length || priority === 'upper') window.document.head.append(value);else { var _attributes$data, _styleSheets$; const reset = Array.from(styleSheets).find(item => item.ownerNode.method === 'reset'); let pure = Array.from(styleSheets).filter(item => item.ownerNode.method === 'pure'); pure = pure[pure.length - 1]; if ((attributes === null || attributes === void 0 ? void 0 : (_attributes$data = attributes.data) === null || _attributes$data === void 0 ? void 0 : _attributes$data.method) === 'reset' || priority === 'lower' && !(pure || reset)) window.document.head.insertBefore(value, ((_styleSheets$ = styleSheets[0]) === null || _styleSheets$ === void 0 ? void 0 : _styleSheets$.ownerNode) || null);else if (priority === 'lower') { if (pure) window.document.head.insertBefore(value, pure.ownerNode.nextElementSibling);else if (reset) window.document.head.insertBefore(value, reset.ownerNode.nextElementSibling); } else window.document.head.append(value); } return value; } } remove(value) { var _element; let element = value; if (value !== null && value !== void 0 && value.ownerNode) element = element.ownerNode; if ((_element = element) !== null && _element !== void 0 && _element.remove) element.remove(); } } export default AmauiStyleRenderer;