Skip to content

Commit a60c620

Browse files
authored
compat: Remove fromEntries for older browser support (#385)
Functionally the same thing - fromEntries requires Chrome 73. This will allow renderer to work on older devices a bit easier without vite needing to transpile it away.
2 parents dbb3314 + 00de948 commit a60c620

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/core/text-rendering/renderers/TextRenderer.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -431,24 +431,24 @@ export abstract class TextRenderer<
431431
};
432432
// For each prop setter add a wrapper method that checks if the prop is
433433
// different before calling the setter
434-
this.set = Object.freeze(
435-
Object.fromEntries(
436-
Object.entries(propSetters).map(([key, setter]) => {
437-
return [
438-
key as keyof TrProps,
439-
(state: StateT, value: TrProps[keyof TrProps]) => {
440-
if (state.props[key as keyof TrProps] !== value) {
441-
setter(state, value as never);
442-
// Assume any prop change will require a render
443-
// This is required because otherwise a paused RAF will result
444-
// in renders when text props are changed.
445-
this.stage.requestRender();
446-
}
447-
},
448-
];
449-
}),
450-
),
451-
) as typeof this.set;
434+
const propSet = {};
435+
Object.keys(propSetters).forEach((key) => {
436+
Object.defineProperty(propSet, key, {
437+
value: (state: StateT, value: TrProps[keyof TrProps]) => {
438+
// Check if the current prop value is different before calling the setter
439+
if (state.props[key as keyof TrProps] !== value) {
440+
propSetters[key as keyof TrPropSetters](state, value as never);
441+
442+
// Assume any prop change will require a render
443+
// This ensures that renders are triggered appropriately even with RAF paused
444+
this.stage.requestRender();
445+
}
446+
},
447+
writable: false, // Prevents property from being changed
448+
configurable: false, // Prevents property from being deleted
449+
});
450+
});
451+
this.set = propSet as Readonly<TrPropSetters<StateT>>;
452452
}
453453

454454
setStatus(state: StateT, status: StateT['status'], error?: Error) {

0 commit comments

Comments
 (0)