MCPcopy
hub / github.com/cssinjs/jss / StyleRule

Class StyleRule

packages/jss/src/plugins/styleRule.js:63–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61}
62
63export class StyleRule extends BaseStyleRule {
64 constructor(key, style, options) {
65 super(key, style, options)
66 const {selector, scoped, sheet, generateId} = options
67 if (selector) {
68 this.selectorText = selector
69 } else if (scoped !== false) {
70 this.id = generateId(this, sheet)
71 this.selectorText = `.${escape(this.id)}`
72 }
73 }
74
75 /**
76 * Set selector string.
77 * Attention: use this with caution. Most browsers didn't implement
78 * selectorText setter, so this may result in rerendering of entire Style Sheet.
79 */
80 set selector(selector) {
81 if (selector === this.selectorText) return
82
83 this.selectorText = selector
84
85 const {renderer, renderable} = this
86
87 if (!renderable || !renderer) return
88
89 const hasChanged = renderer.setSelector(renderable, selector)
90
91 // If selector setter is not implemented, rerender the rule.
92 if (!hasChanged) {
93 renderer.replaceRule(renderable, this)
94 }
95 }
96
97 /**
98 * Get selector string.
99 */
100 get selector() {
101 return this.selectorText
102 }
103
104 /**
105 * Apply rule to an element inline.
106 */
107 applyTo(renderable) {
108 const {renderer} = this
109 if (renderer) {
110 const json = this.toJSON()
111 for (const prop in json) {
112 renderer.setProperty(renderable, prop, json[prop])
113 }
114 }
115 return this
116 }
117
118 /**
119 * Returns JSON representation of the rule.
120 * Fallbacks are not supported.

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…