UNPKG

react-native-web-internals

Version:

React Native for Web

95 lines (94 loc) 3.24 kB
var slice = Array.prototype.slice; function createOrderedCSSStyleSheet(sheet) { var groups = {}, selectors = {}; if (sheet != null) { var group; slice.call(sheet.cssRules).forEach(function (cssRule, i) { var cssText = cssRule.cssText; if (cssText.indexOf("stylesheet-group") > -1) group = decodeGroupRule(cssRule), groups[group] = { start: i, rules: [cssText] };else { var selectorText = getSelectorText(cssText); selectorText != null && (selectors[selectorText] = !0, groups[group].rules.push(cssText)); } }); } function sheetInsert(sheet2, group2, text) { var orderedGroups = getOrderedGroups(groups), groupIndex = orderedGroups.indexOf(group2), nextGroupIndex = groupIndex + 1, nextGroup = orderedGroups[nextGroupIndex], position = nextGroup != null && groups[nextGroup].start != null ? groups[nextGroup].start : sheet2.cssRules.length, isInserted = insertRuleAt(sheet2, text, position); if (isInserted) { groups[group2].start == null && (groups[group2].start = position); for (var i = nextGroupIndex; i < orderedGroups.length; i += 1) { var groupNumber = orderedGroups[i], previousStart = groups[groupNumber].start || 0; groups[groupNumber].start = previousStart + 1; } } return isInserted; } var OrderedCSSStyleSheet = { /** * The textContent of the style sheet. */ getTextContent() { return getOrderedGroups(groups).map(function (group2) { var rules = groups[group2].rules, marker = rules.shift(); return rules.sort(), rules.unshift(marker), rules.join(` `); }).join(` `); }, /** * Insert a rule into the style sheet */ insert(cssText, groupValue) { var group2 = Number(groupValue); if (groups[group2] == null) { var markerRule = encodeGroupRule(group2); groups[group2] = { start: null, rules: [markerRule] }, sheet != null && sheetInsert(sheet, group2, markerRule); } var selectorText = getSelectorText(cssText); if (selectorText != null && selectors[selectorText] == null && (selectors[selectorText] = !0, groups[group2].rules.push(cssText), sheet != null)) { var isInserted = sheetInsert(sheet, group2, cssText); isInserted || groups[group2].rules.pop(); } } }; return OrderedCSSStyleSheet; } function encodeGroupRule(group) { return `[stylesheet-group="${group}"]{}`; } var groupPattern = /["']/g; function decodeGroupRule(cssRule) { return Number(cssRule.selectorText.split(groupPattern)[1]); } function getOrderedGroups(obj) { return Object.keys(obj).map(Number).sort(function (a, b) { return a > b ? 1 : -1; }); } var selectorPattern = /\s*([,])\s*/g; function getSelectorText(cssText) { var selector = cssText.split("{")[0].trim(); return selector !== "" ? selector.replace(selectorPattern, "$1") : null; } function insertRuleAt(root, cssText, position) { try { return root.insertRule(cssText, position), !0; } catch { return !1; } } export { createOrderedCSSStyleSheet as default }; //# sourceMappingURL=createOrderedCSSStyleSheet.native.js.map