elegance-js 1.0.0

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.
Files changed (93) hide show
  1. package/README.md +4 -0
  2. package/dist/build.d.ts +22 -0
  3. package/dist/build.mjs +1060 -0
  4. package/dist/client/client.d.ts +1 -0
  5. package/dist/client/client.mjs +272 -0
  6. package/dist/client/watcher.d.ts +1 -0
  7. package/dist/client/watcher.mjs +26 -0
  8. package/dist/compile_docs.d.ts +1 -0
  9. package/dist/compile_docs.mjs +1087 -0
  10. package/dist/components/Breakpoint.d.ts +3 -0
  11. package/dist/components/Breakpoint.mjs +17 -0
  12. package/dist/components/Link.d.ts +1 -0
  13. package/dist/components/Link.mjs +116 -0
  14. package/dist/docs/components/Header.d.ts +1 -0
  15. package/dist/docs/components/Header.mjs +219 -0
  16. package/dist/docs/components/RootLayout.d.ts +1 -0
  17. package/dist/docs/components/RootLayout.mjs +10 -0
  18. package/dist/docs/docs/basics/page.d.ts +2 -0
  19. package/dist/docs/docs/basics/page.mjs +1174 -0
  20. package/dist/docs/docs/compilations/page.d.ts +2 -0
  21. package/dist/docs/docs/compilations/page.mjs +15 -0
  22. package/dist/docs/docs/components/CodeBlock.d.ts +2 -0
  23. package/dist/docs/docs/components/CodeBlock.mjs +316 -0
  24. package/dist/docs/docs/components/DocsLayout.d.ts +1 -0
  25. package/dist/docs/docs/components/DocsLayout.mjs +465 -0
  26. package/dist/docs/docs/components/Header.d.ts +1 -0
  27. package/dist/docs/docs/components/Header.mjs +163 -0
  28. package/dist/docs/docs/components/Mono.d.ts +1 -0
  29. package/dist/docs/docs/components/Mono.mjs +7 -0
  30. package/dist/docs/docs/components/PageHeading.d.ts +1 -0
  31. package/dist/docs/docs/components/PageHeading.mjs +9 -0
  32. package/dist/docs/docs/components/Paragraph.d.ts +1 -0
  33. package/dist/docs/docs/components/Paragraph.mjs +10 -0
  34. package/dist/docs/docs/components/Separator.d.ts +1 -0
  35. package/dist/docs/docs/components/Separator.mjs +7 -0
  36. package/dist/docs/docs/components/SubHeading.d.ts +1 -0
  37. package/dist/docs/docs/components/SubHeading.mjs +8 -0
  38. package/dist/docs/docs/components/SubSeparator.d.ts +1 -0
  39. package/dist/docs/docs/components/SubSeparator.mjs +7 -0
  40. package/dist/docs/docs/components/Subtext.d.ts +1 -0
  41. package/dist/docs/docs/components/Subtext.mjs +8 -0
  42. package/dist/docs/docs/concepts/page.d.ts +2 -0
  43. package/dist/docs/docs/concepts/page.mjs +892 -0
  44. package/dist/docs/docs/page-files/page.d.ts +2 -0
  45. package/dist/docs/docs/page-files/page.mjs +1144 -0
  46. package/dist/docs/docs/page.d.ts +2 -0
  47. package/dist/docs/docs/page.mjs +49 -0
  48. package/dist/docs/docs/route.d.ts +2 -0
  49. package/dist/docs/docs/route.mjs +8 -0
  50. package/dist/docs/docs/running/page.d.ts +2 -0
  51. package/dist/docs/docs/running/page.mjs +7 -0
  52. package/dist/docs/nullpage/page.d.ts +2 -0
  53. package/dist/docs/nullpage/page.mjs +52 -0
  54. package/dist/docs/page.d.ts +2 -0
  55. package/dist/docs/page.mjs +405 -0
  56. package/dist/docs/utils/MEGALEXER.d.ts +1 -0
  57. package/dist/docs/utils/MEGALEXER.mjs +171 -0
  58. package/dist/global.d.ts +290 -0
  59. package/dist/global.mjs +0 -0
  60. package/dist/helpers/ObjectAttributeType.d.ts +7 -0
  61. package/dist/helpers/ObjectAttributeType.mjs +12 -0
  62. package/dist/helpers/camelToKebab.d.ts +1 -0
  63. package/dist/helpers/camelToKebab.mjs +7 -0
  64. package/dist/index.d.ts +0 -0
  65. package/dist/index.mjs +0 -0
  66. package/dist/server/createReference.d.ts +6 -0
  67. package/dist/server/createReference.mjs +18 -0
  68. package/dist/server/createState.d.ts +47 -0
  69. package/dist/server/createState.mjs +50 -0
  70. package/dist/server/generateHTMLTemplate.d.ts +7 -0
  71. package/dist/server/generateHTMLTemplate.mjs +222 -0
  72. package/dist/server/layout.d.ts +3 -0
  73. package/dist/server/layout.mjs +17 -0
  74. package/dist/server/loadHook.d.ts +29 -0
  75. package/dist/server/loadHook.mjs +28 -0
  76. package/dist/server/observe.d.ts +19 -0
  77. package/dist/server/observe.mjs +16 -0
  78. package/dist/server/pageShimmer.d.ts +2 -0
  79. package/dist/server/pageShimmer.mjs +5 -0
  80. package/dist/server/render.d.ts +5 -0
  81. package/dist/server/render.mjs +210 -0
  82. package/dist/server/server.d.ts +9 -0
  83. package/dist/server/server.mjs +184 -0
  84. package/dist/shared/bindServerElements.d.ts +1 -0
  85. package/dist/shared/bindServerElements.mjs +145 -0
  86. package/dist/shared/serverElements.d.ts +11 -0
  87. package/dist/shared/serverElements.mjs +165 -0
  88. package/dist/types/Metadata.d.ts +19 -0
  89. package/dist/types/Metadata.mjs +15 -0
  90. package/package.json +38 -0
  91. package/scripts/dev.js +25 -0
  92. package/scripts/export.js +20 -0
  93. package/scripts/prod.js +21 -0
@@ -0,0 +1,171 @@
1
+ // src/docs/utils/MEGALEXER.ts
2
+ var tokenize = (input) => {
3
+ const tokens = [];
4
+ const length = input.length;
5
+ let index = 0;
6
+ const keywords = /* @__PURE__ */ new Set([
7
+ "if",
8
+ "else",
9
+ "for",
10
+ "while",
11
+ "function",
12
+ "return",
13
+ "class",
14
+ "const",
15
+ "let",
16
+ "var",
17
+ "interface",
18
+ "extends",
19
+ "implements",
20
+ "export",
21
+ "import",
22
+ "from"
23
+ ]);
24
+ const operatorChars = /* @__PURE__ */ new Set([
25
+ "+",
26
+ "-",
27
+ "*",
28
+ "/",
29
+ "%",
30
+ "=",
31
+ ">",
32
+ "<",
33
+ "!",
34
+ "&",
35
+ "|",
36
+ "^",
37
+ "~",
38
+ "?",
39
+ ":"
40
+ ]);
41
+ const punctuationChars = /* @__PURE__ */ new Set([
42
+ ";",
43
+ ",",
44
+ ".",
45
+ "(",
46
+ ")",
47
+ "{",
48
+ "}",
49
+ "[",
50
+ "]"
51
+ ]);
52
+ const peek = (offset = 1) => index + offset < length ? input[index + offset] : "";
53
+ const readWhile = (predicate) => {
54
+ const start = index;
55
+ while (index < length && predicate(input[index])) {
56
+ index++;
57
+ }
58
+ return input.slice(start, index);
59
+ };
60
+ const readString = (quoteType) => {
61
+ let value = input[index++];
62
+ while (index < length && input[index] !== quoteType) {
63
+ if (input[index] === "\\") {
64
+ value += input[index++];
65
+ if (index < length) {
66
+ value += input[index++];
67
+ }
68
+ } else {
69
+ value += input[index++];
70
+ }
71
+ }
72
+ if (index < length) {
73
+ value += input[index++];
74
+ }
75
+ return value;
76
+ };
77
+ const readLineComment = () => {
78
+ const start = index;
79
+ index += 2;
80
+ while (index < length && input[index] !== "\n") {
81
+ index++;
82
+ }
83
+ return input.slice(start, index);
84
+ };
85
+ const readBlockComment = () => {
86
+ const start = index;
87
+ index += 2;
88
+ while (index < length && !(input[index] === "*" && peek() === "/")) {
89
+ index++;
90
+ }
91
+ if (index < length) {
92
+ index += 2;
93
+ }
94
+ return input.slice(start, index);
95
+ };
96
+ while (index < length) {
97
+ const char = input[index];
98
+ const startPos = index;
99
+ if (/\s/.test(char)) {
100
+ const value = readWhile((c) => /\s/.test(c));
101
+ tokens.push({ type: "" /* Whitespace */, value, position: startPos });
102
+ continue;
103
+ }
104
+ if (char === "/") {
105
+ if (peek() === "/") {
106
+ const value = readLineComment();
107
+ tokens.push({ type: "text-gray-400" /* Comment */, value, position: startPos });
108
+ continue;
109
+ } else if (peek() === "*") {
110
+ const value = readBlockComment();
111
+ tokens.push({ type: "text-gray-400" /* Comment */, value, position: startPos });
112
+ continue;
113
+ }
114
+ }
115
+ if (char === '"' || char === "'") {
116
+ const value = readString(char);
117
+ tokens.push({ type: "text-green-200" /* String */, value, position: startPos });
118
+ continue;
119
+ }
120
+ if (/\d/.test(char)) {
121
+ const value = readWhile((c) => /[\d\.]/.test(c));
122
+ tokens.push({ type: "text-blue-400" /* Number */, value, position: startPos });
123
+ continue;
124
+ }
125
+ if (/[a-zA-Z_$]/.test(char)) {
126
+ const value = readWhile((c) => /[a-zA-Z0-9_$]/.test(c));
127
+ let type = "text-orange-300" /* Identifier */;
128
+ if (keywords.has(value)) {
129
+ type = "text-amber-100 font-semibold" /* Keyword */;
130
+ } else if (value === "true" || value === "false") {
131
+ type = "text-blue-200" /* Boolean */;
132
+ }
133
+ let tempIndex = index;
134
+ while (tempIndex < length && /\s/.test(input[tempIndex])) {
135
+ tempIndex++;
136
+ }
137
+ if (tempIndex < length && input[tempIndex] === "(") {
138
+ type = "text-red-300" /* FunctionCall */;
139
+ }
140
+ tokens.push({ type, value, position: startPos });
141
+ continue;
142
+ }
143
+ if (operatorChars.has(char)) {
144
+ let value = char;
145
+ index++;
146
+ if (index < length && operatorChars.has(input[index])) {
147
+ value += input[index++];
148
+ }
149
+ tokens.push({ type: "" /* Operator */, value, position: startPos });
150
+ continue;
151
+ }
152
+ if (punctuationChars.has(char)) {
153
+ tokens.push({ type: "text-gray-400" /* Punctuation */, value: char, position: startPos });
154
+ index++;
155
+ continue;
156
+ }
157
+ tokens.push({ type: "" /* Unknown */, value: char, position: startPos });
158
+ index++;
159
+ }
160
+ return tokens;
161
+ };
162
+ var escapeHtml = (text) => text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
163
+ var highlightCode = (code) => {
164
+ const tokens = tokenize(code);
165
+ return tokens.map(
166
+ (token) => token.type === "" /* Whitespace */ ? token.value : `<span class="${token.type}">${escapeHtml(token.value)}</span>`
167
+ ).join("");
168
+ };
169
+ export {
170
+ highlightCode
171
+ };
@@ -0,0 +1,290 @@
1
+ import { ObjectAttributeType } from "./helpers/ObjectAttributeType";
2
+ declare global {
3
+ type NonVoid<T> = T extends void ? never : T;
4
+ var __ELEGANCE_SERVER_DATA__: any;
5
+ var __SERVER_CURRENT_STATE_ID__: number;
6
+ var __SERVER_CURRENT_REF_ID__: number;
7
+ var __SERVER_CURRENT_STATE__: Array<{
8
+ value: unknown;
9
+ type: ObjectAttributeType;
10
+ id: number;
11
+ bind?: number;
12
+ }>;
13
+ var __SERVER_CURRENT_LOADHOOKS__: Array<any>;
14
+ var __SERVER_CURRENT_LAYOUTS__: Map<string, number>;
15
+ var __SERVER_CURRENT_LAYOUT_ID__: number;
16
+ type AnyBuiltElement = BuiltElement<ElementTags> | ChildrenLessBuiltElement<ChildrenlessElementTags>;
17
+ type BuiltElement<T> = {
18
+ tag: T;
19
+ children: ElementChildren;
20
+ options: Record<string, any> | Child;
21
+ };
22
+ type ChildrenLessBuiltElement<T> = {
23
+ tag: T;
24
+ children: null;
25
+ options: Record<string, any> | Child;
26
+ };
27
+ type PageOptions = {
28
+ build: "once" | "interval" | "request";
29
+ };
30
+ type Page = (AnyBuiltElement) | (() => AnyBuiltElement);
31
+ type ObjectAttribute<T> = T extends ObjectAttributeType.STATE ? {
32
+ type: ObjectAttributeType;
33
+ id: string | number;
34
+ value: any;
35
+ bind?: string;
36
+ } : T extends ObjectAttributeType.OBSERVER ? {
37
+ type: ObjectAttributeType;
38
+ refs: {
39
+ id: number;
40
+ bind?: string;
41
+ }[];
42
+ initialValues: any[];
43
+ update: (...value: any) => any;
44
+ } : {
45
+ type: ObjectAttributeType;
46
+ };
47
+ type ElementOptions = {
48
+ [key: string]: string | number | boolean | {
49
+ type: ObjectAttributeType;
50
+ id: string | number;
51
+ value: any;
52
+ } | {
53
+ type: ObjectAttributeType;
54
+ refs: {
55
+ id: number;
56
+ bind?: string;
57
+ }[];
58
+ initialValues: any[];
59
+ update: (...value: any) => any;
60
+ } | {
61
+ type: ObjectAttributeType;
62
+ };
63
+ } & GlobalAttributes & EventHandlers;
64
+ type EleganceElement<T> = (options?: ElementOptions | Child, ...children: ElementChildren) => BuiltElement<T>;
65
+ type EleganceChildrenlessElement<T> = (options?: ElementOptions) => ChildrenLessBuiltElement<T>;
66
+ type Child = BuiltElement<ElementTags> | ChildrenLessBuiltElement<ChildrenlessElementTags> | string | boolean | number | Array<number | string | boolean>;
67
+ type ElementChildren = Array<Child>;
68
+ type OmitSomething<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
69
+ type AllowedHTMLElements = OmitSomething<HTMLElementTagNameMap, "var">;
70
+ interface GlobalAttributes {
71
+ [key: `data-${string}`]: string | undefined;
72
+ [key: `aria-${string}`]: string | undefined;
73
+ }
74
+ type ChildrenlessElementTags = "area" | "base" | "br" | "col" | "embed" | "hr" | "img" | "input" | "link" | "meta" | "source" | "track" | "path" | "rect";
75
+ type ElementTags = "a" | "address" | "article" | "aside" | "audio" | "blockquote" | "body" | "button" | "canvas" | "caption" | "colgroup" | "data" | "span" | "datalist" | "dd" | "del" | "details" | "dialog" | "div" | "dl" | "dt" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "html" | "iframe" | "ins" | "label" | "legend" | "li" | "main" | "map" | "meter" | "menu" | "nav" | "noscript" | "object" | "ol" | "optgroup" | "option" | "output" | "p" | "picture" | "pre" | "progress" | "q" | "script" | "search" | "section" | "select" | "slot" | "summary" | "table" | "tbody" | "td" | "template" | "textarea" | "tfoot" | "th" | "thead" | "time" | "tr" | "ul" | "video" | "abbr" | "b" | "bdi" | "bdo" | "cite" | "code" | "dfn" | "em" | "i" | "kbd" | "mark" | "rp" | "rt" | "ruby" | "s" | "samp" | "small" | "strong" | "sub" | "sup" | "title" | "u" | "wbr" | "svg";
76
+ var area: EleganceChildrenlessElement<"area">;
77
+ var base: EleganceChildrenlessElement<"base">;
78
+ var br: EleganceChildrenlessElement<"br">;
79
+ var col: EleganceChildrenlessElement<"col">;
80
+ var embed: EleganceChildrenlessElement<"embed">;
81
+ var hr: EleganceChildrenlessElement<"hr">;
82
+ var img: EleganceChildrenlessElement<"img">;
83
+ var input: EleganceChildrenlessElement<"input">;
84
+ var link: EleganceChildrenlessElement<"link">;
85
+ var meta: EleganceChildrenlessElement<"meta">;
86
+ var source: EleganceChildrenlessElement<"source">;
87
+ var track: EleganceChildrenlessElement<"track">;
88
+ var path: EleganceChildrenlessElement<"path">;
89
+ var rect: EleganceChildrenlessElement<"rect">;
90
+ var svg: EleganceElement<"svg">;
91
+ var a: EleganceElement<"a">;
92
+ var address: EleganceElement<"address">;
93
+ var article: EleganceElement<"article">;
94
+ var aside: EleganceElement<"aside">;
95
+ var audio: EleganceElement<"audio">;
96
+ var blockquote: EleganceElement<"blockquote">;
97
+ var body: EleganceElement<"body">;
98
+ var button: EleganceElement<"button">;
99
+ var canvas: EleganceElement<"canvas">;
100
+ var caption: EleganceElement<"caption">;
101
+ var colgroup: EleganceElement<"colgroup">;
102
+ var data: EleganceElement<"data">;
103
+ var datalist: EleganceElement<"datalist">;
104
+ var dd: EleganceElement<"dd">;
105
+ var del: EleganceElement<"del">;
106
+ var details: EleganceElement<"details">;
107
+ var dialog: EleganceElement<"dialog">;
108
+ var div: EleganceElement<"div">;
109
+ var dl: EleganceElement<"dl">;
110
+ var dt: EleganceElement<"dt">;
111
+ var fieldset: EleganceElement<"fieldset">;
112
+ var figcaption: EleganceElement<"figcaption">;
113
+ var figure: EleganceElement<"figure">;
114
+ var footer: EleganceElement<"footer">;
115
+ var form: EleganceElement<"form">;
116
+ var h1: EleganceElement<"h1">;
117
+ var h2: EleganceElement<"h2">;
118
+ var h3: EleganceElement<"h3">;
119
+ var h4: EleganceElement<"h4">;
120
+ var h5: EleganceElement<"h5">;
121
+ var h6: EleganceElement<"h6">;
122
+ var head: EleganceElement<"head">;
123
+ var header: EleganceElement<"header">;
124
+ var hgroup: EleganceElement<"hgroup">;
125
+ var html: EleganceElement<"html">;
126
+ var iframe: EleganceElement<"iframe">;
127
+ var ins: EleganceElement<"ins">;
128
+ var label: EleganceElement<"label">;
129
+ var legend: EleganceElement<"legend">;
130
+ var li: EleganceElement<"li">;
131
+ var main: EleganceElement<"main">;
132
+ var map: EleganceElement<"map">;
133
+ var meter: EleganceElement<"meter">;
134
+ var menu: EleganceElement<"menu">;
135
+ var nav: EleganceElement<"nav">;
136
+ var noscript: EleganceElement<"noscript">;
137
+ var object: EleganceElement<"object">;
138
+ var ol: EleganceElement<"ol">;
139
+ var optgroup: EleganceElement<"optgroup">;
140
+ var option: EleganceElement<"option">;
141
+ var output: EleganceElement<"output">;
142
+ var p: EleganceElement<"p">;
143
+ var picture: EleganceElement<"picture">;
144
+ var pre: EleganceElement<"pre">;
145
+ var progress: EleganceElement<"progress">;
146
+ var q: EleganceElement<"q">;
147
+ var script: EleganceElement<"script">;
148
+ var search: EleganceElement<"search">;
149
+ var section: EleganceElement<"section">;
150
+ var select: EleganceElement<"select">;
151
+ var slot: EleganceElement<"slot">;
152
+ var style: EleganceElement<"style">;
153
+ var summary: EleganceElement<"summary">;
154
+ var table: EleganceElement<"table">;
155
+ var tbody: EleganceElement<"tbody">;
156
+ var td: EleganceElement<"td">;
157
+ var template: EleganceElement<"template">;
158
+ var textarea: EleganceElement<"textarea">;
159
+ var tfoot: EleganceElement<"tfoot">;
160
+ var th: EleganceElement<"th">;
161
+ var thead: EleganceElement<"thead">;
162
+ var time: EleganceElement<"time">;
163
+ var tr: EleganceElement<"tr">;
164
+ var ul: EleganceElement<"ul">;
165
+ var video: EleganceElement<"video">;
166
+ var abbr: EleganceElement<"abbr">;
167
+ var b: EleganceElement<"b">;
168
+ var bdi: EleganceElement<"bdi">;
169
+ var bdo: EleganceElement<"bdo">;
170
+ var cite: EleganceElement<"cite">;
171
+ var code: EleganceElement<"code">;
172
+ var dfn: EleganceElement<"dfn">;
173
+ var em: EleganceElement<"em">;
174
+ var i: EleganceElement<"i">;
175
+ var kbd: EleganceElement<"kbd">;
176
+ var mark: EleganceElement<"mark">;
177
+ var rp: EleganceElement<"rp">;
178
+ var rt: EleganceElement<"rt">;
179
+ var ruby: EleganceElement<"ruby">;
180
+ var s: EleganceElement<"s">;
181
+ var samp: EleganceElement<"samp">;
182
+ var small: EleganceElement<"small">;
183
+ var span: EleganceElement<"span">;
184
+ var strong: EleganceElement<"strong">;
185
+ var sub: EleganceElement<"sub">;
186
+ var sup: EleganceElement<"sup">;
187
+ var u: EleganceElement<"u">;
188
+ var wbr: EleganceElement<"wbr">;
189
+ var title: EleganceElement<"title">;
190
+ type EleganceEventListener = ObjectAttribute<ObjectAttributeType.STATE>;
191
+ interface EventHandlers {
192
+ onCopy?: EleganceEventListener;
193
+ onCut?: EleganceEventListener;
194
+ onPaste?: EleganceEventListener;
195
+ onCompositionStart?: EleganceEventListener;
196
+ onCompositionUpdate?: EleganceEventListener;
197
+ onCompositionEnd?: EleganceEventListener;
198
+ onKeyDown?: EleganceEventListener;
199
+ onKeyPress?: EleganceEventListener;
200
+ onKeyUp?: EleganceEventListener;
201
+ onFocus?: EleganceEventListener;
202
+ onBlur?: EleganceEventListener;
203
+ onChange?: EleganceEventListener;
204
+ onInput?: EleganceEventListener;
205
+ onInvalid?: EleganceEventListener;
206
+ onSubmit?: EleganceEventListener;
207
+ onClick?: EleganceEventListener;
208
+ onDoubleClick?: EleganceEventListener;
209
+ onMouseDown?: EleganceEventListener;
210
+ onMouseUp?: EleganceEventListener;
211
+ onMouseEnter?: EleganceEventListener;
212
+ onMouseLeave?: EleganceEventListener;
213
+ onMouseMove?: EleganceEventListener;
214
+ onMouseOver?: EleganceEventListener;
215
+ onMouseOut?: EleganceEventListener;
216
+ onContextMenu?: EleganceEventListener;
217
+ onDrag?: EleganceEventListener;
218
+ onDragStart?: EleganceEventListener;
219
+ onDragEnd?: EleganceEventListener;
220
+ onDragEnter?: EleganceEventListener;
221
+ onDragLeave?: EleganceEventListener;
222
+ onDragOver?: EleganceEventListener;
223
+ onDrop?: EleganceEventListener;
224
+ onScroll?: EleganceEventListener;
225
+ onWheel?: EleganceEventListener;
226
+ onTouchStart?: EleganceEventListener;
227
+ onTouchMove?: EleganceEventListener;
228
+ onTouchEnd?: EleganceEventListener;
229
+ onTouchCancel?: EleganceEventListener;
230
+ onPointerDown?: EleganceEventListener;
231
+ onPointerUp?: EleganceEventListener;
232
+ onPointerCancel?: EleganceEventListener;
233
+ onPointerEnter?: EleganceEventListener;
234
+ onPointerLeave?: EleganceEventListener;
235
+ onPointerMove?: EleganceEventListener;
236
+ onPointerOver?: EleganceEventListener;
237
+ onPointerOut?: EleganceEventListener;
238
+ onGotPointerCapture?: EleganceEventListener;
239
+ onLostPointerCapture?: EleganceEventListener;
240
+ onLoad?: EleganceEventListener;
241
+ onError?: EleganceEventListener;
242
+ onAbort?: EleganceEventListener;
243
+ onCanPlay?: EleganceEventListener;
244
+ onCanPlayThrough?: EleganceEventListener;
245
+ onDurationChange?: EleganceEventListener;
246
+ onEmptied?: EleganceEventListener;
247
+ onEnded?: EleganceEventListener;
248
+ onLoadedData?: EleganceEventListener;
249
+ onLoadedMetadata?: EleganceEventListener;
250
+ onLoadStart?: EleganceEventListener;
251
+ onPause?: EleganceEventListener;
252
+ onPlay?: EleganceEventListener;
253
+ onPlaying?: EleganceEventListener;
254
+ onProgress?: EleganceEventListener;
255
+ onRateChange?: EleganceEventListener;
256
+ onSeeked?: EleganceEventListener;
257
+ onSeeking?: EleganceEventListener;
258
+ onStalled?: EleganceEventListener;
259
+ onSuspend?: EleganceEventListener;
260
+ onTimeUpdate?: EleganceEventListener;
261
+ onVolumeChange?: EleganceEventListener;
262
+ onWaiting?: EleganceEventListener;
263
+ onAnimationStart?: EleganceEventListener;
264
+ onAnimationEnd?: EleganceEventListener;
265
+ onAnimationIteration?: EleganceEventListener;
266
+ onTransitionEnd?: EleganceEventListener;
267
+ onToggle?: EleganceEventListener;
268
+ }
269
+ var pd: Record<string, any>;
270
+ var client: {
271
+ navigateLocally: (target: string, pushState?: boolean) => any;
272
+ fetchPage: (targetURL: URL) => Promise<Document | void>;
273
+ currentPage: string;
274
+ sanitizePathname: (target: string) => string;
275
+ getReference: (id: number) => HTMLElement | null;
276
+ };
277
+ type ClientSubject = {
278
+ id: number;
279
+ value: any;
280
+ observers: Map<string, (value: any) => any>;
281
+ pathname: string;
282
+ signal: () => void;
283
+ };
284
+ type State = {
285
+ subjects: ClientSubject[];
286
+ get: (id: number) => ClientSubject | undefined;
287
+ observe: (subject: ClientSubject, observer: (value: any) => any) => void;
288
+ };
289
+ }
290
+ export {};
File without changes
@@ -0,0 +1,7 @@
1
+ export declare enum ObjectAttributeType {
2
+ GENERIC = 0,
3
+ STATE = 1,
4
+ OBSERVER = 2,
5
+ EVENT_LISTENER = 3,
6
+ REFERENCE = 4
7
+ }
@@ -0,0 +1,12 @@
1
+ // src/helpers/ObjectAttributeType.ts
2
+ var ObjectAttributeType = /* @__PURE__ */ ((ObjectAttributeType2) => {
3
+ ObjectAttributeType2[ObjectAttributeType2["GENERIC"] = 0] = "GENERIC";
4
+ ObjectAttributeType2[ObjectAttributeType2["STATE"] = 1] = "STATE";
5
+ ObjectAttributeType2[ObjectAttributeType2["OBSERVER"] = 2] = "OBSERVER";
6
+ ObjectAttributeType2[ObjectAttributeType2["EVENT_LISTENER"] = 3] = "EVENT_LISTENER";
7
+ ObjectAttributeType2[ObjectAttributeType2["REFERENCE"] = 4] = "REFERENCE";
8
+ return ObjectAttributeType2;
9
+ })(ObjectAttributeType || {});
10
+ export {
11
+ ObjectAttributeType
12
+ };
@@ -0,0 +1 @@
1
+ export declare const camelToKebabCase: (input: string) => string;
@@ -0,0 +1,7 @@
1
+ // src/helpers/camelToKebab.ts
2
+ var camelToKebabCase = (input) => {
3
+ return input.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
4
+ };
5
+ export {
6
+ camelToKebabCase
7
+ };
File without changes
package/dist/index.mjs ADDED
File without changes
@@ -0,0 +1,6 @@
1
+ import { ObjectAttributeType } from "../helpers/ObjectAttributeType";
2
+ export declare const getReference: (ref: number) => Element | null;
3
+ export declare const createReference: () => {
4
+ type: ObjectAttributeType;
5
+ value: number;
6
+ };
@@ -0,0 +1,18 @@
1
+ // src/server/createReference.ts
2
+ if (!globalThis.__SERVER_CURRENT_REF_ID__) {
3
+ globalThis.__SERVER_CURRENT_REF_ID__ = 0;
4
+ }
5
+ var currentRefId = globalThis.__SERVER_CURRENT_REF_ID__;
6
+ var getReference = (ref) => {
7
+ return document.querySelector(`[ref="${ref}]"`);
8
+ };
9
+ var createReference = () => {
10
+ return {
11
+ type: 4 /* REFERENCE */,
12
+ value: currentRefId++
13
+ };
14
+ };
15
+ export {
16
+ createReference,
17
+ getReference
18
+ };
@@ -0,0 +1,47 @@
1
+ import { ObjectAttributeType } from "../helpers/ObjectAttributeType";
2
+ type ClientSubjectGeneric<T> = Omit<ClientSubject, "value"> & {
3
+ value: T;
4
+ };
5
+ type Widen<T> = T extends number ? number : T extends string ? string : T extends boolean ? boolean : T extends {} ? T & Record<string, any> : T;
6
+ export declare const createState: <U extends number | string | boolean | {}>(value: U, options?: {
7
+ bind?: number;
8
+ }) => {
9
+ id: number;
10
+ value: Widen<U>;
11
+ type: ObjectAttributeType.STATE;
12
+ bind: string | undefined;
13
+ };
14
+ type Dependencies = {
15
+ type: ObjectAttributeType;
16
+ value: unknown;
17
+ id: number;
18
+ bind?: string;
19
+ }[];
20
+ type Parameters = {};
21
+ export type SetEvent<E, CT> = Omit<Parameters, "event"> & {
22
+ event: Omit<E, "currentTarget"> & {
23
+ currentTarget: CT;
24
+ };
25
+ };
26
+ export type CreateEventListenerOptions<D extends Dependencies, P extends {} = {}> = {
27
+ dependencies?: [...D] | [];
28
+ eventListener: (params: P & {
29
+ event: Event;
30
+ }, ...subjects: {
31
+ [K in keyof D]: ClientSubjectGeneric<D[K]["value"]>;
32
+ }) => void;
33
+ params?: P | null;
34
+ };
35
+ export declare const createEventListener: <D extends Dependencies, P extends Parameters>({ eventListener, dependencies, params, }: CreateEventListenerOptions<D, P>) => {
36
+ id: number;
37
+ type: ObjectAttributeType;
38
+ value: Function;
39
+ };
40
+ export declare const initializeState: () => never[];
41
+ export declare const getState: () => {
42
+ value: unknown;
43
+ type: ObjectAttributeType;
44
+ id: number;
45
+ bind?: number;
46
+ }[];
47
+ export {};
@@ -0,0 +1,50 @@
1
+ // src/server/createState.ts
2
+ if (!globalThis.__SERVER_CURRENT_STATE_ID__) {
3
+ globalThis.__SERVER_CURRENT_STATE_ID__ = 0;
4
+ }
5
+ var currentId = globalThis.__SERVER_CURRENT_STATE_ID__;
6
+ var createState = (value, options) => {
7
+ const serverStateEntry = {
8
+ id: currentId += 1,
9
+ value,
10
+ type: 1 /* STATE */,
11
+ bind: options?.bind
12
+ };
13
+ globalThis.__SERVER_CURRENT_STATE__.push(serverStateEntry);
14
+ return serverStateEntry;
15
+ };
16
+ var createEventListener = ({
17
+ eventListener,
18
+ dependencies = [],
19
+ params
20
+ }) => {
21
+ const deps = dependencies.map((dep) => ({ id: dep.id, bind: dep.bind }));
22
+ let dependencyString = "[";
23
+ for (const dep of deps) {
24
+ dependencyString += `{id:${dep.id}`;
25
+ if (dep.bind) dependencyString += `,bind:${dep.bind}`;
26
+ dependencyString += `},`;
27
+ }
28
+ dependencyString += "]";
29
+ const value = {
30
+ id: currentId += 1,
31
+ type: 1 /* STATE */,
32
+ value: new Function(
33
+ "state",
34
+ "event",
35
+ `(${eventListener.toString()})({ event, ...${JSON.stringify(params || {})} }, ...state.getAll(${dependencyString}))`
36
+ )
37
+ };
38
+ globalThis.__SERVER_CURRENT_STATE__.push(value);
39
+ return value;
40
+ };
41
+ var initializeState = () => globalThis.__SERVER_CURRENT_STATE__ = [];
42
+ var getState = () => {
43
+ return globalThis.__SERVER_CURRENT_STATE__;
44
+ };
45
+ export {
46
+ createEventListener,
47
+ createState,
48
+ getState,
49
+ initializeState
50
+ };
@@ -0,0 +1,7 @@
1
+ export declare const generateHTMLTemplate: ({ pageURL, head, serverData, addPageScriptTag, name, }: {
2
+ addPageScriptTag: boolean;
3
+ pageURL: string;
4
+ head: () => BuiltElement<"head">;
5
+ serverData?: string | null;
6
+ name: string;
7
+ }) => string;