Skip to content

Commit ec442cd

Browse files
authored
Merge pull request #488 from matthewp/chore/format
Reformat source files with the latest version of prettier
2 parents 7d7c6d9 + 889d014 commit ec442cd

40 files changed

+998
-726
lines changed

custom-elements-manifest.config.js

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
import { jsdocFunctionPlugin } from 'cem-plugin-jsdoc-function';
1+
import { jsdocFunctionPlugin } from "cem-plugin-jsdoc-function";
22

33
/** @type {{ plugins: import('@custom-elements-manifest/analyzer').Plugin[] }} */
4-
export default ({
5-
globs: [
6-
'haunted.js',
7-
'core.js',
8-
'lib/*.js',
9-
],
10-
plugins: [
11-
jsdocFunctionPlugin()
12-
]
13-
})
4+
export default {
5+
globs: ["haunted.js", "core.js", "lib/*.js"],
6+
plugins: [jsdocFunctionPlugin()],
7+
};

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"changeset": "changeset",
1212
"analyze": "tsc; cem analyze",
1313
"preversion": "tsc",
14-
"test": "web-test-runner \"test/**/*.test.ts\" --node-resolve",
15-
"test:watch": "web-test-runner test/**/*.test.ts --node-resolve --watch",
14+
"test": "wtr",
15+
"test:watch": "wtr --watch",
1616
"start": "rocket start",
1717
"docs": "rocket build"
1818
},

rocket.config.js

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,60 @@
1-
import helmet from 'eleventy-plugin-helmet';
1+
import helmet from "eleventy-plugin-helmet";
22

3-
import { rocketLaunch } from '@rocket/launch';
4-
import { rocketSearch } from '@rocket/search';
5-
import { codeTabs } from 'rocket-preset-code-tabs';
6-
import { customElementsManifest } from 'rocket-preset-custom-elements-manifest';
7-
import { playgroundElements } from 'rocket-preset-playground-elements';
3+
import { rocketLaunch } from "@rocket/launch";
4+
import { rocketSearch } from "@rocket/search";
5+
import { codeTabs } from "rocket-preset-code-tabs";
6+
import { customElementsManifest } from "rocket-preset-custom-elements-manifest";
7+
import { playgroundElements } from "rocket-preset-playground-elements";
88

9-
import { absoluteBaseUrlNetlify } from '@rocket/core/helpers';
9+
import { absoluteBaseUrlNetlify } from "@rocket/core/helpers";
1010

1111
/** @type {import('@rocket/cli').RocketCliConfig} */
12-
export default ({
13-
absoluteBaseUrl: absoluteBaseUrlNetlify('http://localhost:8080'),
12+
export default {
13+
absoluteBaseUrl: absoluteBaseUrlNetlify("http://localhost:8080"),
1414
presets: [
1515
rocketLaunch(),
1616
rocketSearch(),
1717

1818
codeTabs({
1919
collections: {
2020
packageManagers: {
21-
npm: { label: 'NPM', iconHref: '/_merged_assets/_static/logos/npm.svg' },
22-
yarn: { label: 'Yarn', iconHref: '/_merged_assets/_static/logos/yarn.svg' },
23-
pnpm: { label: 'PNPM', iconHref: '/_merged_assets/_static/logos/pnpm.svg' },
21+
npm: {
22+
label: "NPM",
23+
iconHref: "/_merged_assets/_static/logos/npm.svg",
24+
},
25+
yarn: {
26+
label: "Yarn",
27+
iconHref: "/_merged_assets/_static/logos/yarn.svg",
28+
},
29+
pnpm: {
30+
label: "PNPM",
31+
iconHref: "/_merged_assets/_static/logos/pnpm.svg",
32+
},
2433
},
2534
},
2635
}),
2736

2837
customElementsManifest({
29-
package: 'package.json'
38+
package: "package.json",
3039
}),
3140

3241
playgroundElements({
3342
importMap: {
34-
"haunted": "https://cdn.pika.dev/haunted",
43+
haunted: "https://cdn.pika.dev/haunted",
3544
"haunted/core": "https://cdn.pika.dev/haunted",
36-
"lighterhtml": "https://unpkg.com/lighterhtml?module"
37-
}
45+
lighterhtml: "https://unpkg.com/lighterhtml?module",
46+
},
3847
}),
3948
],
4049

4150
eleventy(eleventyConfig) {
4251
eleventyConfig.addPlugin(helmet);
43-
eleventyConfig.addWatchTarget('_assets/**/*.css');
44-
eleventyConfig.addTransform('fix-noscript', content =>
52+
eleventyConfig.addWatchTarget("_assets/**/*.css");
53+
eleventyConfig.addTransform("fix-noscript", (content) =>
4554
content
46-
.replace(/&#x26;#x3C;(link|style)/g, '<$1')
47-
.replace(/&#x26;(link|style)/g, '<$1')
48-
.replace(/&#x3C;(link|style)/g, '<$1')
55+
.replace(/&#x26;#x3C;(link|style)/g, "<$1")
56+
.replace(/&#x26;(link|style)/g, "<$1")
57+
.replace(/&#x3C;(link|style)/g, "<$1")
4958
);
5059
},
51-
52-
});
60+
};

src/component.ts

Lines changed: 76 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { GenericRenderer, RenderFunction } from './core';
2-
import { BaseScheduler } from './scheduler';
1+
import { GenericRenderer, RenderFunction } from "./core";
2+
import { BaseScheduler } from "./scheduler";
33

4-
const toCamelCase = (val = ''): string =>
5-
val.replace(/-+([a-z])?/g, (_, char) => char ? char.toUpperCase() : '');
4+
const toCamelCase = (val = ""): string =>
5+
val.replace(/-+([a-z])?/g, (_, char) => (char ? char.toUpperCase() : ""));
66

77
interface Renderer<P extends object> extends GenericRenderer<HTMLElement, P> {
88
(this: Component<P>, host: Component<P>): unknown | void;
@@ -15,8 +15,15 @@ type Constructor<P extends object> = new (...args: unknown[]) => Component<P>;
1515

1616
interface Creator {
1717
<P extends object>(renderer: Renderer<P>): Constructor<P>;
18-
<P extends object>(renderer: Renderer<P>, options: Options<P>): Constructor<P>;
19-
<P extends object>(renderer: Renderer<P>, baseElement: Constructor<{}>, options: Omit<Options<P>, 'baseElement'>): Constructor<P>;
18+
<P extends object>(
19+
renderer: Renderer<P>,
20+
options: Options<P>
21+
): Constructor<P>;
22+
<P extends object>(
23+
renderer: Renderer<P>,
24+
baseElement: Constructor<{}>,
25+
options: Omit<Options<P>, "baseElement">
26+
): Constructor<P>;
2027
}
2128

2229
interface Options<P> {
@@ -27,12 +34,25 @@ interface Options<P> {
2734
}
2835

2936
function makeComponent(render: RenderFunction): Creator {
30-
class Scheduler<P extends object> extends BaseScheduler<P, HTMLElement, Renderer<P>, Component<P>> {
37+
class Scheduler<P extends object> extends BaseScheduler<
38+
P,
39+
HTMLElement,
40+
Renderer<P>,
41+
Component<P>
42+
> {
3143
frag: DocumentFragment | HTMLElement;
3244

33-
constructor(renderer: Renderer<P>, frag: DocumentFragment, host: HTMLElement);
45+
constructor(
46+
renderer: Renderer<P>,
47+
frag: DocumentFragment,
48+
host: HTMLElement
49+
);
3450
constructor(renderer: Renderer<P>, host: HTMLElement);
35-
constructor(renderer: Renderer<P>, frag: DocumentFragment | HTMLElement, host?: HTMLElement) {
51+
constructor(
52+
renderer: Renderer<P>,
53+
frag: DocumentFragment | HTMLElement,
54+
host?: HTMLElement
55+
) {
3656
super(renderer, (host || frag) as Component<P>);
3757
this.frag = frag;
3858
}
@@ -43,11 +63,28 @@ function makeComponent(render: RenderFunction): Creator {
4363
}
4464

4565
function component<P extends object>(renderer: Renderer<P>): Constructor<P>;
46-
function component<P extends object>(renderer: Renderer<P>, options: Options<P>): Constructor<P>;
47-
function component<P extends object>(renderer: Renderer<P>, baseElement: Constructor<P>, options: Omit<Options<P>, 'baseElement'>): Constructor<P>;
48-
function component<P extends object>(renderer: Renderer<P>, baseElementOrOptions?: Constructor<P> | Options<P>, options?: Options<P>): Constructor<P> {
49-
const BaseElement = (options || baseElementOrOptions as Options<P> || {}).baseElement || HTMLElement;
50-
const {observedAttributes = [], useShadowDOM = true, shadowRootInit = {}} = options || baseElementOrOptions as Options<P> || {};
66+
function component<P extends object>(
67+
renderer: Renderer<P>,
68+
options: Options<P>
69+
): Constructor<P>;
70+
function component<P extends object>(
71+
renderer: Renderer<P>,
72+
baseElement: Constructor<P>,
73+
options: Omit<Options<P>, "baseElement">
74+
): Constructor<P>;
75+
function component<P extends object>(
76+
renderer: Renderer<P>,
77+
baseElementOrOptions?: Constructor<P> | Options<P>,
78+
options?: Options<P>
79+
): Constructor<P> {
80+
const BaseElement =
81+
(options || (baseElementOrOptions as Options<P>) || {}).baseElement ||
82+
HTMLElement;
83+
const {
84+
observedAttributes = [],
85+
useShadowDOM = true,
86+
shadowRootInit = {},
87+
} = options || (baseElementOrOptions as Options<P>) || {};
5188

5289
class Element extends BaseElement {
5390
_scheduler: Scheduler<P>;
@@ -61,7 +98,7 @@ function makeComponent(render: RenderFunction): Creator {
6198
if (useShadowDOM === false) {
6299
this._scheduler = new Scheduler(renderer, this);
63100
} else {
64-
this.attachShadow({ mode: 'open', ...shadowRootInit });
101+
this.attachShadow({ mode: "open", ...shadowRootInit });
65102
this._scheduler = new Scheduler(renderer, this.shadowRoot!, this);
66103
}
67104
}
@@ -74,14 +111,18 @@ function makeComponent(render: RenderFunction): Creator {
74111
this._scheduler.teardown();
75112
}
76113

77-
attributeChangedCallback(name: string, oldValue: unknown, newValue: unknown): void {
78-
if(oldValue === newValue) {
114+
attributeChangedCallback(
115+
name: string,
116+
oldValue: unknown,
117+
newValue: unknown
118+
): void {
119+
if (oldValue === newValue) {
79120
return;
80121
}
81-
let val = newValue === '' ? true : newValue;
122+
let val = newValue === "" ? true : newValue;
82123
Reflect.set(this, toCamelCase(name), val);
83124
}
84-
};
125+
}
85126

86127
function reflectiveProp<T>(initialValue: T): Readonly<PropertyDescriptor> {
87128
let value = initialValue;
@@ -97,11 +138,11 @@ function makeComponent(render: RenderFunction): Creator {
97138
if (isSetup && value === newValue) return;
98139
isSetup = true;
99140
value = newValue;
100-
if(this._scheduler) {
141+
if (this._scheduler) {
101142
this._scheduler.update();
102143
}
103-
}
104-
})
144+
},
145+
});
105146
}
106147

107148
const proto = new Proxy(BaseElement.prototype, {
@@ -111,35 +152,35 @@ function makeComponent(render: RenderFunction): Creator {
111152

112153
set(target, key: string, value, receiver): boolean {
113154
let desc: PropertyDescriptor | undefined;
114-
if(key in target) {
155+
if (key in target) {
115156
desc = Object.getOwnPropertyDescriptor(target, key);
116-
if(desc && desc.set) {
157+
if (desc && desc.set) {
117158
desc.set.call(receiver, value);
118159
return true;
119160
}
120161

121162
Reflect.set(target, key, value, receiver);
122-
return true
163+
return true;
123164
}
124165

125-
if(typeof key === 'symbol' || key[0] === '_') {
166+
if (typeof key === "symbol" || key[0] === "_") {
126167
desc = {
127168
enumerable: true,
128169
configurable: true,
129170
writable: true,
130-
value
171+
value,
131172
};
132173
} else {
133174
desc = reflectiveProp(value);
134175
}
135176
Object.defineProperty(receiver, key, desc);
136177

137-
if(desc.set) {
178+
if (desc.set) {
138179
desc.set.call(receiver, value);
139180
}
140181

141182
return true;
142-
}
183+
},
143184
});
144185

145186
Object.setPrototypeOf(Element.prototype, proto);
@@ -150,4 +191,9 @@ function makeComponent(render: RenderFunction): Creator {
150191
return component;
151192
}
152193

153-
export { makeComponent, Component, Constructor as ComponentConstructor, Creator as ComponentCreator };
194+
export {
195+
makeComponent,
196+
Component,
197+
Constructor as ComponentConstructor,
198+
Creator as ComponentCreator,
199+
};

src/core.ts

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,53 @@
1-
import { makeComponent, ComponentCreator } from './component';
2-
import { makeContext, ContextCreator } from './create-context';
3-
import { ChildPart } from 'lit/html';
1+
import { makeComponent, ComponentCreator } from "./component";
2+
import { makeContext, ContextCreator } from "./create-context";
3+
import { ChildPart } from "lit/html";
44

55
type Component<P> = HTMLElement & P;
66

77
type ComponentOrVirtualComponent<
8-
T extends HTMLElement|ChildPart,
9-
P extends object
10-
> = T extends HTMLElement ? Component<P> : ChildPart;
8+
T extends HTMLElement | ChildPart,
9+
P extends object
10+
> = T extends HTMLElement ? Component<P> : ChildPart;
1111

12-
type GenericRenderer<T extends HTMLElement|ChildPart, P extends object = {}> =
13-
(this: ComponentOrVirtualComponent<T, P>, ...args: any[]) => unknown | void;
14-
type RenderFunction = (result: unknown, container: DocumentFragment | HTMLElement) => void;
12+
type GenericRenderer<
13+
T extends HTMLElement | ChildPart,
14+
P extends object = {}
15+
> = (this: ComponentOrVirtualComponent<T, P>, ...args: any[]) => unknown | void;
16+
type RenderFunction = (
17+
result: unknown,
18+
container: DocumentFragment | HTMLElement
19+
) => void;
1520

1621
interface Options {
1722
render: RenderFunction;
1823
}
1924

20-
function haunted({ render }: Options): { component: ComponentCreator, createContext: ContextCreator } {
25+
function haunted({ render }: Options): {
26+
component: ComponentCreator;
27+
createContext: ContextCreator;
28+
} {
2129
const component = makeComponent(render);
2230
const createContext = makeContext(component);
2331

2432
return { component, createContext };
2533
}
2634

27-
export { haunted as default, Options, GenericRenderer, RenderFunction, ComponentOrVirtualComponent };
28-
export { useCallback } from './use-callback';
29-
export { useController } from './use-controller';
30-
export { useEffect } from './use-effect';
31-
export { useLayoutEffect } from './use-layout-effect';
32-
export { useState } from './use-state';
33-
export { useReducer } from './use-reducer';
34-
export { useMemo } from './use-memo';
35-
export { useContext } from './use-context';
36-
export { useRef } from './use-ref';
37-
export { hook, Hook } from './hook';
38-
export { BaseScheduler } from './scheduler';
39-
export { State } from './state';
35+
export {
36+
haunted as default,
37+
Options,
38+
GenericRenderer,
39+
RenderFunction,
40+
ComponentOrVirtualComponent,
41+
};
42+
export { useCallback } from "./use-callback";
43+
export { useController } from "./use-controller";
44+
export { useEffect } from "./use-effect";
45+
export { useLayoutEffect } from "./use-layout-effect";
46+
export { useState } from "./use-state";
47+
export { useReducer } from "./use-reducer";
48+
export { useMemo } from "./use-memo";
49+
export { useContext } from "./use-context";
50+
export { useRef } from "./use-ref";
51+
export { hook, Hook } from "./hook";
52+
export { BaseScheduler } from "./scheduler";
53+
export { State } from "./state";

0 commit comments

Comments
 (0)