UNPKG

react-native-web-internals

Version:

React Native for Web

50 lines (49 loc) 1.99 kB
import canUseDOM from "../../modules/canUseDOM"; import createCSSStyleSheet from "./createCSSStyleSheet"; import createOrderedCSSStyleSheet from "./createOrderedCSSStyleSheet"; const defaultId = "react-native-stylesheet", roots = /* @__PURE__ */ new WeakMap(), sheets = [], initialRules = [ // minimal top-level reset "html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}", "body{margin:0;}", // minimal form pseudo-element reset "button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}", "input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}" ]; function createSheet(root, id = defaultId) { let sheet; if (canUseDOM) { const rootNode = root != null ? root.getRootNode() : document; if (sheets.length === 0) sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id)), initialRules.forEach((rule) => { sheet.insert(rule, 0); }), roots.set(rootNode, sheets.length), sheets.push(sheet); else { const index = roots.get(rootNode); if (index == null) { const initialSheet = sheets[0], textContent = initialSheet != null ? initialSheet.getTextContent() : ""; sheet = createOrderedCSSStyleSheet( createCSSStyleSheet(id, rootNode, textContent) ), roots.set(rootNode, sheets.length), sheets.push(sheet); } else sheet = sheets[index]; } } else sheets.length === 0 ? (sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id)), initialRules.forEach((rule) => { sheet.insert(rule, 0); }), sheets.push(sheet)) : sheet = sheets[0]; return { getTextContent() { return sheet.getTextContent(); }, id, insert(cssText, groupValue) { sheets.forEach((s) => { s.insert(cssText, groupValue); }); } }; } export { createSheet }; //# sourceMappingURL=index.js.map