UNPKG

react-native-web-internals

Version:

React Native for Web

112 lines (111 loc) 4.18 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: !0 }); }, __copyProps = (to, from, except, desc) => { if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); var createOrderedCSSStyleSheet_exports = {}; __export(createOrderedCSSStyleSheet_exports, { default: () => createOrderedCSSStyleSheet }); module.exports = __toCommonJS(createOrderedCSSStyleSheet_exports); 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; } } //# sourceMappingURL=createOrderedCSSStyleSheet.js.map