@teiler/svelte 0.0.6 → 0.0.8

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.
@@ -0,0 +1,55 @@
1
+ import type { Compiler, HTMLElements, Properties, StyleDefinition, TeilerComponent } from '@teiler/core'
2
+ import type { ComponentType, SvelteComponent } from 'svelte'
3
+
4
+ import { component, global, keyframes, styled, tags } from '@teiler/core'
5
+ import Styled from './Styled.svelte'
6
+
7
+ type SvelteTeilerComponent<Target extends HTMLElements, Props> = TeilerComponent<Target, Props> & ComponentType<SvelteComponent>
8
+
9
+ const createComponent = <Target extends HTMLElements, Props>(styleDefinition: StyleDefinition<Target, Props>): SvelteTeilerComponent<Target, Props> => {
10
+ return class extends Styled {
11
+ static styleDefinition = styleDefinition
12
+
13
+ constructor(options) {
14
+ super({
15
+ ...options,
16
+ props: {
17
+ ...options.props,
18
+ styleDefinition,
19
+ },
20
+ })
21
+ }
22
+ }
23
+ }
24
+
25
+ type InferProps<Component, Props> = Component extends SvelteTeilerComponent<HTMLElements, infer P> ? P & Props : Props
26
+ type InferComponent<Component, Props> = Component extends SvelteTeilerComponent<infer E, infer P> ? SvelteTeilerComponent<E, Props & P> : SvelteTeilerComponent<HTMLElements, Props>
27
+
28
+ type Component<Target extends HTMLElements> = {
29
+ <Props extends object = {}>(string: TemplateStringsArray, ...properties: Properties<Props>[]): SvelteTeilerComponent<Target, Props>
30
+ <Component>(binded: Component): <Props extends object = {}>(string: TemplateStringsArray, ...properties: Properties<InferProps<Component, Props>>[]) => InferComponent<Component, Props>
31
+ }
32
+
33
+ type Global = {
34
+ <Props extends object = {}>(string: TemplateStringsArray, ...properties: Properties<Props>[]): SvelteTeilerComponent<HTMLElements, Props>
35
+ }
36
+
37
+ type ComponentWithTags = Component<'div'> & { [K in HTMLElements]: Component<K> }
38
+
39
+ const construct = (tag: HTMLElements, compiler: Compiler) => {
40
+ return <Props extends object = {}>(stringOrBinded: TeilerComponent<HTMLElements, Props> | TemplateStringsArray, ...properties: Properties<Props>[]) => {
41
+ return styled<Props, SvelteTeilerComponent<HTMLElements, Props>>(tag, compiler, createComponent, stringOrBinded, ...properties)
42
+ }
43
+ }
44
+
45
+ const baseComponent = construct('div', component)
46
+
47
+ tags.forEach((tag) => {
48
+ baseComponent[tag] = construct(tag, component)
49
+ })
50
+
51
+ const svelteComponent = baseComponent as ComponentWithTags
52
+
53
+ const svelteGlobal = construct(null, global) as Global
54
+
55
+ export { svelteComponent as component, svelteGlobal as global, keyframes, createComponent }
package/src/index.ts CHANGED
@@ -1,59 +1,2 @@
1
- import type { Compile, Properties, Style, Target, TeilerComponent } from '@teiler/core'
2
- import type { ComponentType, SvelteComponent } from 'svelte'
3
-
4
- import { component, global, keyframes, styled } from '@teiler/core'
5
- import Styled from './Styled.svelte'
6
- import tags from './tags'
7
-
8
- type SvelteTeilerComponent<Target, Props> = TeilerComponent<Target, Props> & ComponentType<SvelteComponent>
9
-
10
- const createComponent = <Target, Props>(compile: Compile, tag: Target, styles: Array<Style<Props>>): SvelteTeilerComponent<Target, Props> => {
11
- return class extends Styled {
12
- static styles = styles
13
- static tag = tag
14
-
15
- constructor(options) {
16
- super({
17
- ...options,
18
- props: {
19
- ...options.props,
20
- compile,
21
- tag,
22
- styles,
23
- },
24
- })
25
- }
26
- }
27
- }
28
-
29
- type InferProps<Component, Props> = Component extends SvelteTeilerComponent<Target, infer P> ? P & Props : Props
30
- type InferComponent<Component, Props> = Component extends SvelteTeilerComponent<infer E, infer P> ? SvelteTeilerComponent<E, Props & P> : SvelteTeilerComponent<Target, Props>
31
-
32
- type Component<Target> = {
33
- <Props extends object = {}>(string: TemplateStringsArray, ...properties: Properties<Props>[]): SvelteTeilerComponent<Target, Props>
34
- <Component>(binded: Component): <Props extends object = {}>(string: TemplateStringsArray, ...properties: Properties<InferProps<Component, Props>>[]) => InferComponent<Component, Props>
35
- }
36
-
37
- type Global = {
38
- <Props extends object = {}>(string: TemplateStringsArray, ...properties: Properties<Props>[]): SvelteTeilerComponent<unknown, Props>
39
- }
40
-
41
- type ComponentWithTags = Component<'div'> & { [K in (typeof tags)[number]]: Component<K> }
42
-
43
- const construct = (tag: string, compile: Compile) => {
44
- return <Props extends object = {}>(stringOrBinded: TeilerComponent<Target, Props> | TemplateStringsArray, ...properties: Properties<Props>[]) => {
45
- const binded = createComponent.bind(null, compile, (stringOrBinded as TeilerComponent<Target, Props>).tag || tag)
46
- return styled<Props, SvelteTeilerComponent<Target, Props>>(binded, stringOrBinded, ...properties)
47
- }
48
- }
49
-
50
- const svelteComponent = construct('div', component)
51
-
52
- tags.forEach((tag) => {
53
- svelteComponent[tag] = construct(tag, component)
54
- })
55
-
56
- const svelteGlobal = construct(null, global) as Global
57
-
58
- export { svelteGlobal as global, keyframes, createComponent }
59
- export default svelteComponent as ComponentWithTags
1
+ export { component, global, keyframes, createComponent } from './component'
2
+ export { default as ThemeProvider } from './ThemeProvider.svelte'
package/src/sheet.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { type Sheet, createStyleSheet } from "@teiler/core";
2
- import { getContext } from "svelte";
1
+ import { type Sheet, createStyleSheet } from '@teiler/core'
2
+ import { getContext } from 'svelte'
3
3
 
4
4
  export const styleSheet = createStyleSheet({})
5
5
 
6
6
  export const StyleSheet = 'STYLE_SHEET'
7
7
 
8
8
  export function getStyleSheet(): Sheet {
9
- return getContext(StyleSheet) || styleSheet;
9
+ return getContext(StyleSheet) || styleSheet
10
10
  }
package/src/tags.ts DELETED
@@ -1,140 +0,0 @@
1
- const tags = [
2
- 'a',
3
- 'abbr',
4
- 'address',
5
- 'area',
6
- 'article',
7
- 'aside',
8
- 'audio',
9
- 'b',
10
- 'base',
11
- 'bdi',
12
- 'bdo',
13
- 'big',
14
- 'blockquote',
15
- 'body',
16
- 'br',
17
- 'button',
18
- 'canvas',
19
- 'caption',
20
- 'cite',
21
- 'code',
22
- 'col',
23
- 'colgroup',
24
- 'data',
25
- 'datalist',
26
- 'dd',
27
- 'del',
28
- 'details',
29
- 'dfn',
30
- 'dialog',
31
- 'div',
32
- 'dl',
33
- 'dt',
34
- 'em',
35
- 'embed',
36
- 'fieldset',
37
- 'figcaption',
38
- 'figure',
39
- 'footer',
40
- 'form',
41
- 'h1',
42
- 'h2',
43
- 'h3',
44
- 'h4',
45
- 'h5',
46
- 'h6',
47
- 'head',
48
- 'header',
49
- 'hgroup',
50
- 'hr',
51
- 'html',
52
- 'i',
53
- 'iframe',
54
- 'img',
55
- 'input',
56
- 'ins',
57
- 'kbd',
58
- 'keygen',
59
- 'label',
60
- 'legend',
61
- 'li',
62
- 'link',
63
- 'main',
64
- 'map',
65
- 'mark',
66
- 'marquee',
67
- 'menu',
68
- 'menuitem',
69
- 'meta',
70
- 'meter',
71
- 'nav',
72
- 'noscript',
73
- 'object',
74
- 'ol',
75
- 'optgroup',
76
- 'option',
77
- 'output',
78
- 'p',
79
- 'param',
80
- 'picture',
81
- 'pre',
82
- 'progress',
83
- 'q',
84
- 'rp',
85
- 'rt',
86
- 'ruby',
87
- 's',
88
- 'samp',
89
- 'script',
90
- 'section',
91
- 'select',
92
- 'small',
93
- 'source',
94
- 'span',
95
- 'strong',
96
- 'style',
97
- 'sub',
98
- 'summary',
99
- 'sup',
100
- 'table',
101
- 'tbody',
102
- 'td',
103
- 'textarea',
104
- 'tfoot',
105
- 'th',
106
- 'thead',
107
- 'time',
108
- 'title',
109
- 'tr',
110
- 'track',
111
- 'u',
112
- 'ul',
113
- 'var',
114
- 'video',
115
- 'wbr',
116
-
117
- // SVG
118
- 'circle',
119
- 'clipPath',
120
- 'defs',
121
- 'ellipse',
122
- 'foreignObject',
123
- 'g',
124
- 'image',
125
- 'line',
126
- 'linearGradient',
127
- 'mask',
128
- 'path',
129
- 'pattern',
130
- 'polygon',
131
- 'polyline',
132
- 'radialGradient',
133
- 'rect',
134
- 'stop',
135
- 'svg',
136
- 'text',
137
- 'tspan'
138
- ] as const
139
-
140
- export default tags