summaryrefslogtreecommitdiff
path: root/packages/integrations/preact/src/signals.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/preact/src/signals.ts')
-rw-r--r--packages/integrations/preact/src/signals.ts53
1 files changed, 0 insertions, 53 deletions
diff --git a/packages/integrations/preact/src/signals.ts b/packages/integrations/preact/src/signals.ts
deleted file mode 100644
index 3fa1529f4..000000000
--- a/packages/integrations/preact/src/signals.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import type { Context } from './context';
-import { incrementId } from './context.js';
-import type { AstroPreactAttrs, PropNameToSignalMap, SignalLike } from './types';
-
-function isSignal(x: any): x is SignalLike {
- return x != null && typeof x === 'object' && typeof x.peek === 'function' && 'value' in x;
-}
-
-export function restoreSignalsOnProps(ctx: Context, props: Record<string, any>) {
- // Restore signal props that were mutated for serialization
- let propMap: PropNameToSignalMap;
- if (ctx.propsToSignals.has(props)) {
- propMap = ctx.propsToSignals.get(props)!;
- } else {
- propMap = new Map();
- ctx.propsToSignals.set(props, propMap);
- }
- for (const [key, signal] of propMap) {
- props[key] = signal;
- }
- return propMap;
-}
-
-export function serializeSignals(
- ctx: Context,
- props: Record<string, any>,
- attrs: AstroPreactAttrs,
- map: PropNameToSignalMap
-) {
- // Check for signals
- const signals: Record<string, string> = {};
- for (const [key, value] of Object.entries(props)) {
- if (isSignal(value)) {
- // Set the value to the current signal value
- // This mutates the props on purpose, so that it will be serialized correct.
- props[key] = value.peek();
- map.set(key, value);
-
- let id: string;
- if (ctx.signals.has(value)) {
- id = ctx.signals.get(value)!;
- } else {
- id = incrementId(ctx);
- ctx.signals.set(value, id);
- }
- signals[key] = id;
- }
- }
-
- if (Object.keys(signals).length) {
- attrs['data-preact-signals'] = JSON.stringify(signals);
- }
-}