@pyreon/rocketstyle 0.11.7 → 0.11.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -511,13 +511,9 @@ const rocketComponent = (options) => {
511
511
  });
512
512
  const RESERVED_STYLING_PROPS_KEYS = Object.keys(reservedPropNames);
513
513
  const $rocketstyleAccessor = () => {
514
- const { pseudo, ...mergeProps } = {
515
- ...localCtx,
516
- ...props
517
- };
518
514
  const mode = themeAttrs.mode;
519
515
  const rocketstate = _calculateStylingAttrs({
520
- props: pickStyledAttrs(mergeProps, reservedPropNames),
516
+ props: pickStyledAttrs(props, reservedPropNames),
521
517
  dimensions
522
518
  });
523
519
  const modeBaseHelper = ThemeManager$1.modeBaseTheme[mode];
@@ -533,21 +529,18 @@ const rocketComponent = (options) => {
533
529
  appTheme: theme
534
530
  });
535
531
  };
532
+ const localPseudo = localCtx?.pseudo;
533
+ const propPseudo = pick(props, [...PSEUDO_KEYS, ...PSEUDO_META_KEYS]);
536
534
  const $rocketstateAccessor = () => {
537
- const { pseudo, ...mergeProps } = {
538
- ...localCtx,
539
- ...props
540
- };
541
- const pseudoRocketstate = {
542
- ...pseudo,
543
- ...pick(props, [...PSEUDO_KEYS, ...PSEUDO_META_KEYS])
544
- };
545
535
  return {
546
536
  ..._calculateStylingAttrs({
547
- props: pickStyledAttrs(mergeProps, reservedPropNames),
537
+ props: pickStyledAttrs(props, reservedPropNames),
548
538
  dimensions
549
539
  }),
550
- pseudo: pseudoRocketstate
540
+ pseudo: {
541
+ ...localPseudo,
542
+ ...propPseudo
543
+ }
551
544
  };
552
545
  };
553
546
  const { pseudo: _pseudo, ...mergeProps } = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyreon/rocketstyle",
3
- "version": "0.11.7",
3
+ "version": "0.11.9",
4
4
  "description": "Multi-dimensional style composition for Pyreon components",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -41,15 +41,15 @@
41
41
  "typecheck": "tsc --noEmit"
42
42
  },
43
43
  "devDependencies": {
44
- "@pyreon/test-utils": "^0.11.7",
45
- "@pyreon/typescript": "^0.11.7",
44
+ "@pyreon/test-utils": "^0.11.9",
45
+ "@pyreon/typescript": "^0.11.9",
46
46
  "@vitus-labs/tools-rolldown": "^1.15.3"
47
47
  },
48
48
  "peerDependencies": {
49
- "@pyreon/core": "^0.11.7",
50
- "@pyreon/reactivity": "^0.11.7",
51
- "@pyreon/styler": "^0.11.7",
52
- "@pyreon/ui-core": "^0.11.7"
49
+ "@pyreon/core": "^0.11.9",
50
+ "@pyreon/reactivity": "^0.11.9",
51
+ "@pyreon/styler": "^0.11.9",
52
+ "@pyreon/ui-core": "^0.11.9"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">= 22"
@@ -142,18 +142,16 @@ const rocketComponent: RocketComponent = (options) => {
142
142
  // (signals, getters) produce updated dimension values.
143
143
  // --------------------------------------------------
144
144
  const $rocketstyleAccessor = () => {
145
- // Merge props fresh if parent passes reactive accessors,
146
- // spreading them here evaluates them in this reactive scope.
147
- const { pseudo, ...mergeProps } = {
148
- ...localCtx,
149
- ...props,
150
- }
151
-
145
+ // Only read mode and dimension props NOT pseudo state.
146
+ // Pseudo state (hover, focus, pressed) is read by .styles()
147
+ // via $rocketstate inside runUntracked(). Reading pseudo signals
148
+ // here would subscribe this accessor to hover/focus/pressed,
149
+ // causing CSS recomputation on every mouse event.
152
150
  const mode = themeAttrs.mode // reactive: tracks mode signal
153
151
 
154
- // Resolve active dimensions from current prop values
152
+ // Resolve active dimensions from props (not localCtx which has pseudo getters)
155
153
  const rocketstate = _calculateStylingAttrs({
156
- props: pickStyledAttrs(mergeProps, reservedPropNames),
154
+ props: pickStyledAttrs(props as Record<string, unknown>, reservedPropNames),
157
155
  dimensions,
158
156
  })
159
157
 
@@ -183,23 +181,24 @@ const rocketComponent: RocketComponent = (options) => {
183
181
  // $rocketstate as a FUNCTION ACCESSOR — reactive on prop changes.
184
182
  // Re-evaluates active dimensions + pseudo state from current props.
185
183
  // --------------------------------------------------
186
- const $rocketstateAccessor = () => {
187
- const { pseudo, ...mergeProps } = {
188
- ...localCtx,
189
- ...props,
190
- }
191
-
192
- const pseudoRocketstate = {
193
- ...pseudo,
194
- ...pick(props, [...PSEUDO_KEYS, ...PSEUDO_META_KEYS]),
195
- }
184
+ // Capture pseudo from localCtx once at setup — pseudo properties are
185
+ // getters (from createLocalProvider) that read signals lazily.
186
+ // Passing them through preserves reactivity without subscribing here.
187
+ const localPseudo = localCtx?.pseudo
188
+ const propPseudo = pick(props, [...PSEUDO_KEYS, ...PSEUDO_META_KEYS])
196
189
 
190
+ const $rocketstateAccessor = () => {
197
191
  const rocketstate = _calculateStylingAttrs({
198
- props: pickStyledAttrs(mergeProps, reservedPropNames),
192
+ props: pickStyledAttrs(props as Record<string, unknown>, reservedPropNames),
199
193
  dimensions,
200
194
  })
201
195
 
202
- return { ...rocketstate, pseudo: pseudoRocketstate }
196
+ // Pseudo state uses getter properties — they're evaluated lazily
197
+ // by .styles() inside runUntracked(), not here.
198
+ return {
199
+ ...rocketstate,
200
+ pseudo: { ...localPseudo, ...propPseudo },
201
+ }
203
202
  }
204
203
 
205
204
  // --------------------------------------------------