[ci] format
This commit is contained in:
parent
bfbd32588f
commit
d186c406b9
4 changed files with 38 additions and 29 deletions
|
@ -133,8 +133,8 @@ export async function generateHydrateScript(
|
||||||
};
|
};
|
||||||
|
|
||||||
// Attach renderer-provided attributes
|
// Attach renderer-provided attributes
|
||||||
if(attrs) {
|
if (attrs) {
|
||||||
for(const [key, value] of Object.entries(attrs)) {
|
for (const [key, value] of Object.entries(attrs)) {
|
||||||
island.props[key] = value;
|
island.props[key] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { sharedConfig } from 'solid-js';
|
import { sharedConfig } from 'solid-js';
|
||||||
import { hydrate, render, createComponent } from 'solid-js/web';
|
import { createComponent, hydrate, render } from 'solid-js/web';
|
||||||
|
|
||||||
export default (element: HTMLElement) =>
|
export default (element: HTMLElement) =>
|
||||||
(Component: any, props: any, slotted: any, { client }: { client: string }) => {
|
(Component: any, props: any, slotted: any, { client }: { client: string }) => {
|
||||||
|
@ -39,7 +39,7 @@ export default (element: HTMLElement) =>
|
||||||
}),
|
}),
|
||||||
element,
|
element,
|
||||||
{
|
{
|
||||||
renderId
|
renderId,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,19 +3,19 @@ import type { RendererContext } from './types';
|
||||||
type Context = {
|
type Context = {
|
||||||
id: string;
|
id: string;
|
||||||
c: number;
|
c: number;
|
||||||
}
|
};
|
||||||
|
|
||||||
const contexts = new WeakMap<RendererContext['result'], Context>();
|
const contexts = new WeakMap<RendererContext['result'], Context>();
|
||||||
|
|
||||||
export function getContext(result: RendererContext['result']): Context {
|
export function getContext(result: RendererContext['result']): Context {
|
||||||
if(contexts.has(result)) {
|
if (contexts.has(result)) {
|
||||||
return contexts.get(result)!;
|
return contexts.get(result)!;
|
||||||
}
|
}
|
||||||
let ctx = {
|
let ctx = {
|
||||||
c: 0,
|
c: 0,
|
||||||
get id() {
|
get id() {
|
||||||
return 's' + this.c.toString();
|
return 's' + this.c.toString();
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
contexts.set(result, ctx);
|
contexts.set(result, ctx);
|
||||||
return ctx;
|
return ctx;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import type { RendererContext } from './types';
|
import { createComponent, renderToString, ssr } from 'solid-js/web';
|
||||||
import { renderToString, ssr, createComponent } from 'solid-js/web';
|
|
||||||
import { getContext, incrementId } from './context.js';
|
import { getContext, incrementId } from './context.js';
|
||||||
|
import type { RendererContext } from './types';
|
||||||
|
|
||||||
const slotName = (str: string) => str.trim().replace(/[-_]([a-z])/g, (_, w) => w.toUpperCase());
|
const slotName = (str: string) => str.trim().replace(/[-_]([a-z])/g, (_, w) => w.toUpperCase());
|
||||||
|
|
||||||
|
@ -10,32 +10,41 @@ function check(this: RendererContext, Component: any, props: Record<string, any>
|
||||||
return typeof html === 'string';
|
return typeof html === 'string';
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderToStaticMarkup(this: RendererContext, Component: any, props: Record<string, any>, { default: children, ...slotted }: any, metadata?: undefined | Record<string, any>) {
|
function renderToStaticMarkup(
|
||||||
|
this: RendererContext,
|
||||||
|
Component: any,
|
||||||
|
props: Record<string, any>,
|
||||||
|
{ default: children, ...slotted }: any,
|
||||||
|
metadata?: undefined | Record<string, any>
|
||||||
|
) {
|
||||||
const renderId = metadata?.hydrate ? incrementId(getContext(this.result)) : '';
|
const renderId = metadata?.hydrate ? incrementId(getContext(this.result)) : '';
|
||||||
|
|
||||||
const html = renderToString(() => {
|
const html = renderToString(
|
||||||
const slots: Record<string, any> = {};
|
() => {
|
||||||
for (const [key, value] of Object.entries(slotted)) {
|
const slots: Record<string, any> = {};
|
||||||
const name = slotName(key);
|
for (const [key, value] of Object.entries(slotted)) {
|
||||||
slots[name] = ssr(`<astro-slot name="${name}">${value}</astro-slot>`);
|
const name = slotName(key);
|
||||||
}
|
slots[name] = ssr(`<astro-slot name="${name}">${value}</astro-slot>`);
|
||||||
// Note: create newProps to avoid mutating `props` before they are serialized
|
}
|
||||||
const newProps = {
|
// Note: create newProps to avoid mutating `props` before they are serialized
|
||||||
...props,
|
const newProps = {
|
||||||
...slots,
|
...props,
|
||||||
// In Solid SSR mode, `ssr` creates the expected structure for `children`.
|
...slots,
|
||||||
children: children != null ? ssr(`<astro-slot>${children}</astro-slot>`) : children,
|
// In Solid SSR mode, `ssr` creates the expected structure for `children`.
|
||||||
};
|
children: children != null ? ssr(`<astro-slot>${children}</astro-slot>`) : children,
|
||||||
|
};
|
||||||
|
|
||||||
return createComponent(Component, newProps);
|
return createComponent(Component, newProps);
|
||||||
}, {
|
},
|
||||||
renderId
|
{
|
||||||
});
|
renderId,
|
||||||
|
}
|
||||||
|
);
|
||||||
return {
|
return {
|
||||||
attrs: {
|
attrs: {
|
||||||
'data-solid-render-id': renderId
|
'data-solid-render-id': renderId,
|
||||||
},
|
},
|
||||||
html
|
html,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue