react-native-web-internals
Version:
React Native for Web
44 lines (43 loc) • 2.07 kB
JavaScript
import canUseDOM from "../../modules/canUseDOM.native.js";
import createCSSStyleSheet from "./createCSSStyleSheet.native.js";
import createOrderedCSSStyleSheet from "./createOrderedCSSStyleSheet.native.js";
var 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) {
var id = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultId,
sheet;
if (canUseDOM) {
var rootNode = root != null ? root.getRootNode() : document;
if (sheets.length === 0) sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id)), initialRules.forEach(function (rule) {
sheet.insert(rule, 0);
}), roots.set(rootNode, sheets.length), sheets.push(sheet);else {
var index = roots.get(rootNode);
if (index == null) {
var 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(function (rule) {
sheet.insert(rule, 0);
}), sheets.push(sheet)) : sheet = sheets[0];
return {
getTextContent() {
return sheet.getTextContent();
},
id,
insert(cssText, groupValue) {
sheets.forEach(function (s) {
s.insert(cssText, groupValue);
});
}
};
}
export { createSheet };
//# sourceMappingURL=index.native.js.map