@alepha/react 0.13.8 → 0.14.1
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.
- package/README.md +1 -1
- package/dist/auth/index.d.ts +12 -1267
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/core/index.d.ts +38 -1537
- package/dist/core/index.d.ts.map +1 -0
- package/dist/form/index.d.ts +6 -205
- package/dist/form/index.d.ts.map +1 -0
- package/dist/head/index.browser.js +189 -17
- package/dist/head/index.browser.js.map +1 -1
- package/dist/head/index.d.ts +106 -975
- package/dist/head/index.d.ts.map +1 -0
- package/dist/head/index.js +195 -18
- package/dist/head/index.js.map +1 -1
- package/dist/i18n/index.d.ts +11 -280
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/websocket/index.d.ts +3 -159
- package/dist/websocket/index.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/head/helpers/SeoExpander.ts +141 -0
- package/src/head/index.browser.ts +1 -0
- package/src/head/index.ts +1 -0
- package/src/head/interfaces/Head.ts +66 -27
- package/src/head/providers/BrowserHeadProvider.ts +45 -12
- package/src/head/providers/HeadProvider.ts +26 -7
- package/src/head/providers/ServerHeadProvider.ts +14 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/components/ClientOnly.tsx","../../src/core/errors/Redirection.ts","../../src/core/providers/ReactPageProvider.ts","../../src/core/services/ReactPageService.ts","../../src/core/primitives/$page.ts","../../src/core/providers/ReactBrowserRouterProvider.ts","../../src/core/providers/ReactBrowserProvider.ts","../../src/core/contexts/AlephaProvider.tsx","../../src/core/contexts/AlephaContext.ts","../../src/core/hooks/useAction.ts","../../src/core/hooks/useAlepha.ts","../../src/core/hooks/useClient.ts","../../src/core/hooks/useEvents.ts","../../src/core/hooks/useInject.ts","../../src/core/hooks/useSchema.ts","../../src/core/hooks/useStore.ts","../../src/core/components/ErrorBoundary.tsx","../../src/core/components/ErrorViewer.tsx","../../src/core/components/Link.tsx","../../src/core/components/NestedView.tsx","../../src/core/components/NotFound.tsx","../../src/core/contexts/RouterLayerContext.ts","../../src/core/hooks/useActive.ts","../../src/core/hooks/useQueryParams.ts","../../src/core/services/ReactRouter.ts","../../src/core/hooks/useRouter.ts","../../src/core/hooks/useRouterState.ts","../../src/core/providers/ReactServerProvider.ts","../../src/core/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/form/index.d.ts
CHANGED
|
@@ -1,209 +1,10 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import { Alepha,
|
|
1
|
+
import * as alepha0 from "alepha";
|
|
2
|
+
import { Alepha, Static, TArray, TObject, TSchema, TypeBoxError } from "alepha";
|
|
3
3
|
import { InputHTMLAttributes, ReactNode } from "react";
|
|
4
|
-
import
|
|
5
|
-
import DayjsApi, { Dayjs, ManipulateType, PluginFunc } from "dayjs";
|
|
4
|
+
import * as alepha_logger0 from "alepha/logger";
|
|
6
5
|
|
|
7
|
-
//#region ../../../alepha/src/logger/schemas/logEntrySchema.d.ts
|
|
8
|
-
declare const logEntrySchema: alepha8.TObject<{
|
|
9
|
-
level: alepha8.TUnsafe<"SILENT" | "TRACE" | "DEBUG" | "INFO" | "WARN" | "ERROR">;
|
|
10
|
-
message: alepha8.TString;
|
|
11
|
-
service: alepha8.TString;
|
|
12
|
-
module: alepha8.TString;
|
|
13
|
-
context: alepha8.TOptional<alepha8.TString>;
|
|
14
|
-
app: alepha8.TOptional<alepha8.TString>;
|
|
15
|
-
data: alepha8.TOptional<alepha8.TAny>;
|
|
16
|
-
timestamp: alepha8.TNumber;
|
|
17
|
-
}>;
|
|
18
|
-
type LogEntry = Static<typeof logEntrySchema>;
|
|
19
|
-
//#endregion
|
|
20
|
-
//#region ../../../alepha/src/datetime/providers/DateTimeProvider.d.ts
|
|
21
|
-
type DateTime = DayjsApi.Dayjs;
|
|
22
|
-
type Duration = dayjsDuration.Duration;
|
|
23
|
-
type DurationLike = number | dayjsDuration.Duration | [number, ManipulateType];
|
|
24
|
-
declare class DateTimeProvider {
|
|
25
|
-
static PLUGINS: Array<PluginFunc<any>>;
|
|
26
|
-
protected alepha: Alepha;
|
|
27
|
-
protected ref: DateTime | null;
|
|
28
|
-
protected readonly timeouts: Timeout[];
|
|
29
|
-
protected readonly intervals: Interval[];
|
|
30
|
-
constructor();
|
|
31
|
-
protected readonly onStart: alepha8.HookPrimitive<"start">;
|
|
32
|
-
protected readonly onStop: alepha8.HookPrimitive<"stop">;
|
|
33
|
-
setLocale(locale: string): void;
|
|
34
|
-
isDateTime(value: unknown): value is DateTime;
|
|
35
|
-
/**
|
|
36
|
-
* Create a new UTC DateTime instance.
|
|
37
|
-
*/
|
|
38
|
-
utc(date: string | number | Date | Dayjs | null | undefined): DateTime;
|
|
39
|
-
/**
|
|
40
|
-
* Create a new DateTime instance.
|
|
41
|
-
*/
|
|
42
|
-
of(date: string | number | Date | Dayjs | null | undefined): DateTime;
|
|
43
|
-
/**
|
|
44
|
-
* Get the current date as a string.
|
|
45
|
-
*/
|
|
46
|
-
toISOString(date?: Date | string | DateTime): string;
|
|
47
|
-
/**
|
|
48
|
-
* Get the current date.
|
|
49
|
-
*/
|
|
50
|
-
now(): DateTime;
|
|
51
|
-
/**
|
|
52
|
-
* Get the current date as a string.
|
|
53
|
-
*
|
|
54
|
-
* This is much faster than `DateTimeProvider.now().toISOString()` as it avoids creating a DateTime instance.
|
|
55
|
-
*/
|
|
56
|
-
nowISOString(): string;
|
|
57
|
-
/**
|
|
58
|
-
* Get the current date as milliseconds since epoch.
|
|
59
|
-
*
|
|
60
|
-
* This is much faster than `DateTimeProvider.now().valueOf()` as it avoids creating a DateTime instance.
|
|
61
|
-
*/
|
|
62
|
-
nowMillis(): number;
|
|
63
|
-
/**
|
|
64
|
-
* Get the current date as a string.
|
|
65
|
-
*
|
|
66
|
-
* @protected
|
|
67
|
-
*/
|
|
68
|
-
protected getCurrentDate(): DateTime;
|
|
69
|
-
/**
|
|
70
|
-
* Create a new Duration instance.
|
|
71
|
-
*/
|
|
72
|
-
duration: (duration: DurationLike, unit?: ManipulateType) => Duration;
|
|
73
|
-
isDurationLike(value: unknown): value is DurationLike;
|
|
74
|
-
/**
|
|
75
|
-
* Return a promise that resolves after the next tick.
|
|
76
|
-
* It uses `setTimeout` with 0 ms delay.
|
|
77
|
-
*/
|
|
78
|
-
tick(): Promise<void>;
|
|
79
|
-
/**
|
|
80
|
-
* Wait for a certain duration.
|
|
81
|
-
*
|
|
82
|
-
* You can clear the timeout by using the `AbortSignal` API.
|
|
83
|
-
* Aborted signal will resolve the promise immediately, it does not reject it.
|
|
84
|
-
*/
|
|
85
|
-
wait(duration: DurationLike, options?: {
|
|
86
|
-
signal?: AbortSignal;
|
|
87
|
-
now?: number;
|
|
88
|
-
}): Promise<void>;
|
|
89
|
-
createInterval(run: () => unknown, duration: DurationLike, start?: boolean): Interval;
|
|
90
|
-
/**
|
|
91
|
-
* Run a callback after a certain duration.
|
|
92
|
-
*/
|
|
93
|
-
createTimeout(callback: () => void, duration: DurationLike, now?: number): Timeout;
|
|
94
|
-
clearTimeout(timeout: Timeout): void;
|
|
95
|
-
clearInterval(interval: Interval): void;
|
|
96
|
-
/**
|
|
97
|
-
* Run a function with a deadline.
|
|
98
|
-
*/
|
|
99
|
-
deadline<T>(fn: (signal: AbortSignal) => Promise<T>, duration: DurationLike): Promise<T>;
|
|
100
|
-
/**
|
|
101
|
-
* Add time to the current date.
|
|
102
|
-
*/
|
|
103
|
-
travel(duration: DurationLike, unit?: ManipulateType): Promise<void>;
|
|
104
|
-
/**
|
|
105
|
-
* Stop the time.
|
|
106
|
-
*/
|
|
107
|
-
pause(): DateTime;
|
|
108
|
-
/**
|
|
109
|
-
* Reset the reference date.
|
|
110
|
-
*/
|
|
111
|
-
reset(): void;
|
|
112
|
-
}
|
|
113
|
-
interface Interval {
|
|
114
|
-
timer?: any;
|
|
115
|
-
duration: number;
|
|
116
|
-
run: () => unknown;
|
|
117
|
-
}
|
|
118
|
-
interface Timeout {
|
|
119
|
-
now: number;
|
|
120
|
-
timer?: any;
|
|
121
|
-
duration: number;
|
|
122
|
-
callback: () => void;
|
|
123
|
-
clear: () => void;
|
|
124
|
-
}
|
|
125
|
-
//#endregion
|
|
126
|
-
//#region ../../../alepha/src/logger/providers/LogDestinationProvider.d.ts
|
|
127
|
-
declare abstract class LogDestinationProvider {
|
|
128
|
-
abstract write(message: string, entry: LogEntry): void;
|
|
129
|
-
}
|
|
130
|
-
//#endregion
|
|
131
|
-
//#region ../../../alepha/src/logger/providers/LogFormatterProvider.d.ts
|
|
132
|
-
declare abstract class LogFormatterProvider {
|
|
133
|
-
abstract format(entry: LogEntry): string;
|
|
134
|
-
}
|
|
135
|
-
//#endregion
|
|
136
|
-
//#region ../../../alepha/src/logger/services/Logger.d.ts
|
|
137
|
-
declare class Logger implements LoggerInterface {
|
|
138
|
-
protected readonly alepha: Alepha;
|
|
139
|
-
protected readonly formatter: LogFormatterProvider;
|
|
140
|
-
protected readonly destination: LogDestinationProvider;
|
|
141
|
-
protected readonly dateTimeProvider: DateTimeProvider;
|
|
142
|
-
protected readonly levels: Record<string, number>;
|
|
143
|
-
protected readonly service: string;
|
|
144
|
-
protected readonly module: string;
|
|
145
|
-
protected readonly app?: string;
|
|
146
|
-
protected appLogLevel: string;
|
|
147
|
-
protected logLevel: LogLevel;
|
|
148
|
-
constructor(service: string, module: string);
|
|
149
|
-
get context(): string | undefined;
|
|
150
|
-
get level(): string;
|
|
151
|
-
parseLevel(level: string, app: string): LogLevel;
|
|
152
|
-
private matchesPattern;
|
|
153
|
-
asLogLevel(something: string): LogLevel;
|
|
154
|
-
error(message: string, data?: unknown): void;
|
|
155
|
-
warn(message: string, data?: unknown): void;
|
|
156
|
-
info(message: string, data?: unknown): void;
|
|
157
|
-
debug(message: string, data?: unknown): void;
|
|
158
|
-
trace(message: string, data?: unknown): void;
|
|
159
|
-
protected log(level: LogLevel, message: string, data?: unknown): void;
|
|
160
|
-
protected emit(entry: LogEntry, message?: string): void;
|
|
161
|
-
}
|
|
162
|
-
//#endregion
|
|
163
|
-
//#region ../../../alepha/src/logger/index.d.ts
|
|
164
|
-
declare const envSchema: alepha8.TObject<{
|
|
165
|
-
/**
|
|
166
|
-
* Default log level for the application.
|
|
167
|
-
*
|
|
168
|
-
* Default by environment:
|
|
169
|
-
* - dev = info
|
|
170
|
-
* - prod = info
|
|
171
|
-
* - test = error
|
|
172
|
-
*
|
|
173
|
-
* Levels are: "trace" | "debug" | "info" | "warn" | "error" | "silent"
|
|
174
|
-
*
|
|
175
|
-
* Level can be set for a specific module:
|
|
176
|
-
*
|
|
177
|
-
* @example
|
|
178
|
-
* LOG_LEVEL=my.module.name:debug,info # Set debug level for my.module.name and info for all other modules
|
|
179
|
-
* LOG_LEVEL=alepha:trace, info # Set trace level for all alepha modules and info for all other modules
|
|
180
|
-
*/
|
|
181
|
-
LOG_LEVEL: alepha8.TOptional<alepha8.TString>;
|
|
182
|
-
/**
|
|
183
|
-
* Built-in log formats.
|
|
184
|
-
* - "json" - JSON format, useful for structured logging and log aggregation. {@link JsonFormatterProvider}
|
|
185
|
-
* - "pretty" - Simple text format, human-readable, with colors. {@link PrettyFormatterProvider}
|
|
186
|
-
* - "raw" - Raw format, no formatting, just the message. {@link RawFormatterProvider}
|
|
187
|
-
*/
|
|
188
|
-
LOG_FORMAT: alepha8.TOptional<alepha8.TUnsafe<"json" | "pretty" | "raw">>;
|
|
189
|
-
}>;
|
|
190
|
-
declare module "alepha" {
|
|
191
|
-
interface Env extends Partial<Static<typeof envSchema>> {}
|
|
192
|
-
interface State {
|
|
193
|
-
/**
|
|
194
|
-
* Current log level for the application or specific modules.
|
|
195
|
-
*/
|
|
196
|
-
"alepha.logger.level"?: string;
|
|
197
|
-
}
|
|
198
|
-
interface Hooks {
|
|
199
|
-
log: {
|
|
200
|
-
message?: string;
|
|
201
|
-
entry: LogEntry;
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
//#endregion
|
|
206
6
|
//#region ../../src/form/services/FormModel.d.ts
|
|
7
|
+
|
|
207
8
|
/**
|
|
208
9
|
* FormModel is a dynamic form handler that generates form inputs based on a provided TypeBox schema.
|
|
209
10
|
* It manages form state, handles input changes, and processes form submissions with validation.
|
|
@@ -215,7 +16,7 @@ declare module "alepha" {
|
|
|
215
16
|
declare class FormModel<T extends TObject> {
|
|
216
17
|
readonly id: string;
|
|
217
18
|
readonly options: FormCtrlOptions<T>;
|
|
218
|
-
protected readonly log: Logger;
|
|
19
|
+
protected readonly log: alepha_logger0.Logger;
|
|
219
20
|
protected readonly alepha: Alepha;
|
|
220
21
|
protected readonly values: Record<string, any>;
|
|
221
22
|
protected submitInProgress: boolean;
|
|
@@ -421,7 +222,7 @@ declare module "alepha" {
|
|
|
421
222
|
* @see {@link useForm}
|
|
422
223
|
* @module alepha.react.form
|
|
423
224
|
*/
|
|
424
|
-
declare const AlephaReactForm:
|
|
225
|
+
declare const AlephaReactForm: alepha0.Service<alepha0.Module>;
|
|
425
226
|
//#endregion
|
|
426
227
|
export { AlephaReactForm, ArrayInputField, BaseInputField, FormCtrlOptions, FormEventLike, FormModel, FormState, FormValidationError, InputField, InputHTMLAttributesLike, ObjectInputField, SchemaToInput, UseFormStateReturn, useForm, useFormState };
|
|
427
228
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/form/services/FormModel.ts","../../src/form/components/FormState.tsx","../../src/form/hooks/useForm.ts","../../src/form/hooks/useFormState.ts","../../src/form/errors/FormValidationError.ts","../../src/form/index.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -2,25 +2,174 @@ import { AlephaReact, useInject } from "@alepha/react";
|
|
|
2
2
|
import { $hook, $inject, $module, Alepha, KIND, Primitive, createPrimitive } from "alepha";
|
|
3
3
|
import { useCallback, useEffect, useMemo } from "react";
|
|
4
4
|
|
|
5
|
+
//#region ../../src/head/helpers/SeoExpander.ts
|
|
6
|
+
/**
|
|
7
|
+
* Expands Head configuration into SEO meta tags.
|
|
8
|
+
*
|
|
9
|
+
* Generates:
|
|
10
|
+
* - `<meta name="description">` from head.description
|
|
11
|
+
* - `<meta property="og:*">` OpenGraph tags
|
|
12
|
+
* - `<meta name="twitter:*">` Twitter Card tags
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const helper = new SeoExpander();
|
|
17
|
+
* const { meta, link } = helper.expand({
|
|
18
|
+
* title: "My App",
|
|
19
|
+
* description: "Build amazing apps",
|
|
20
|
+
* image: "https://example.com/og.png",
|
|
21
|
+
* url: "https://example.com/",
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
var SeoExpander = class {
|
|
26
|
+
expand(head) {
|
|
27
|
+
const meta = [];
|
|
28
|
+
const link = [];
|
|
29
|
+
if (!(head.description || head.image || head.url || head.siteName || head.locale || head.type || head.og || head.twitter)) return {
|
|
30
|
+
meta,
|
|
31
|
+
link
|
|
32
|
+
};
|
|
33
|
+
if (head.description) meta.push({
|
|
34
|
+
name: "description",
|
|
35
|
+
content: head.description
|
|
36
|
+
});
|
|
37
|
+
if (head.url) link.push({
|
|
38
|
+
rel: "canonical",
|
|
39
|
+
href: head.url
|
|
40
|
+
});
|
|
41
|
+
this.expandOpenGraph(head, meta);
|
|
42
|
+
this.expandTwitter(head, meta);
|
|
43
|
+
return {
|
|
44
|
+
meta,
|
|
45
|
+
link
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
expandOpenGraph(head, meta) {
|
|
49
|
+
const ogTitle = head.og?.title ?? head.title;
|
|
50
|
+
const ogDescription = head.og?.description ?? head.description;
|
|
51
|
+
const ogImage = head.og?.image ?? head.image;
|
|
52
|
+
if (head.type || ogTitle) meta.push({
|
|
53
|
+
property: "og:type",
|
|
54
|
+
content: head.type ?? "website"
|
|
55
|
+
});
|
|
56
|
+
if (head.url) meta.push({
|
|
57
|
+
property: "og:url",
|
|
58
|
+
content: head.url
|
|
59
|
+
});
|
|
60
|
+
if (ogTitle) meta.push({
|
|
61
|
+
property: "og:title",
|
|
62
|
+
content: ogTitle
|
|
63
|
+
});
|
|
64
|
+
if (ogDescription) meta.push({
|
|
65
|
+
property: "og:description",
|
|
66
|
+
content: ogDescription
|
|
67
|
+
});
|
|
68
|
+
if (ogImage) {
|
|
69
|
+
meta.push({
|
|
70
|
+
property: "og:image",
|
|
71
|
+
content: ogImage
|
|
72
|
+
});
|
|
73
|
+
if (head.imageWidth) meta.push({
|
|
74
|
+
property: "og:image:width",
|
|
75
|
+
content: String(head.imageWidth)
|
|
76
|
+
});
|
|
77
|
+
if (head.imageHeight) meta.push({
|
|
78
|
+
property: "og:image:height",
|
|
79
|
+
content: String(head.imageHeight)
|
|
80
|
+
});
|
|
81
|
+
if (head.imageAlt) meta.push({
|
|
82
|
+
property: "og:image:alt",
|
|
83
|
+
content: head.imageAlt
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
if (head.siteName) meta.push({
|
|
87
|
+
property: "og:site_name",
|
|
88
|
+
content: head.siteName
|
|
89
|
+
});
|
|
90
|
+
if (head.locale) meta.push({
|
|
91
|
+
property: "og:locale",
|
|
92
|
+
content: head.locale
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
expandTwitter(head, meta) {
|
|
96
|
+
const twitterTitle = head.twitter?.title ?? head.title;
|
|
97
|
+
const twitterDescription = head.twitter?.description ?? head.description;
|
|
98
|
+
const twitterImage = head.twitter?.image ?? head.image;
|
|
99
|
+
if (head.twitter?.card || twitterTitle || twitterImage) meta.push({
|
|
100
|
+
name: "twitter:card",
|
|
101
|
+
content: head.twitter?.card ?? (twitterImage ? "summary_large_image" : "summary")
|
|
102
|
+
});
|
|
103
|
+
if (head.url) meta.push({
|
|
104
|
+
name: "twitter:url",
|
|
105
|
+
content: head.url
|
|
106
|
+
});
|
|
107
|
+
if (twitterTitle) meta.push({
|
|
108
|
+
name: "twitter:title",
|
|
109
|
+
content: twitterTitle
|
|
110
|
+
});
|
|
111
|
+
if (twitterDescription) meta.push({
|
|
112
|
+
name: "twitter:description",
|
|
113
|
+
content: twitterDescription
|
|
114
|
+
});
|
|
115
|
+
if (twitterImage) {
|
|
116
|
+
meta.push({
|
|
117
|
+
name: "twitter:image",
|
|
118
|
+
content: twitterImage
|
|
119
|
+
});
|
|
120
|
+
if (head.imageAlt) meta.push({
|
|
121
|
+
name: "twitter:image:alt",
|
|
122
|
+
content: head.imageAlt
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
if (head.twitter?.site) meta.push({
|
|
126
|
+
name: "twitter:site",
|
|
127
|
+
content: head.twitter.site
|
|
128
|
+
});
|
|
129
|
+
if (head.twitter?.creator) meta.push({
|
|
130
|
+
name: "twitter:creator",
|
|
131
|
+
content: head.twitter.creator
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
//#endregion
|
|
5
137
|
//#region ../../src/head/providers/HeadProvider.ts
|
|
6
138
|
var HeadProvider = class {
|
|
139
|
+
seoExpander = $inject(SeoExpander);
|
|
7
140
|
global = [];
|
|
8
141
|
fillHead(state) {
|
|
9
142
|
state.head = { ...state.head };
|
|
10
143
|
for (const h of this.global ?? []) {
|
|
11
144
|
const head = typeof h === "function" ? h() : h;
|
|
12
|
-
state
|
|
13
|
-
...state.head,
|
|
14
|
-
...head,
|
|
15
|
-
meta: [...state.head.meta ?? [], ...head.meta ?? []]
|
|
16
|
-
};
|
|
145
|
+
this.mergeHead(state, head);
|
|
17
146
|
}
|
|
18
147
|
for (const layer of state.layers) if (layer.route?.head && !layer.error) this.fillHeadByPage(layer.route, state, layer.props ?? {});
|
|
19
148
|
}
|
|
149
|
+
mergeHead(state, head) {
|
|
150
|
+
const { meta, link } = this.seoExpander.expand(head);
|
|
151
|
+
state.head = {
|
|
152
|
+
...state.head,
|
|
153
|
+
...head,
|
|
154
|
+
meta: [
|
|
155
|
+
...state.head.meta ?? [],
|
|
156
|
+
...meta,
|
|
157
|
+
...head.meta ?? []
|
|
158
|
+
],
|
|
159
|
+
link: [
|
|
160
|
+
...state.head.link ?? [],
|
|
161
|
+
...link,
|
|
162
|
+
...head.link ?? []
|
|
163
|
+
]
|
|
164
|
+
};
|
|
165
|
+
}
|
|
20
166
|
fillHeadByPage(page, state, props) {
|
|
21
167
|
if (!page.head) return;
|
|
22
168
|
state.head ??= {};
|
|
23
169
|
const head = typeof page.head === "function" ? page.head(props, state.head) : page.head;
|
|
170
|
+
const { meta, link } = this.seoExpander.expand(head);
|
|
171
|
+
state.head.meta = [...state.head.meta ?? [], ...meta];
|
|
172
|
+
state.head.link = [...state.head.link ?? [], ...link];
|
|
24
173
|
if (head.title) {
|
|
25
174
|
state.head ??= {};
|
|
26
175
|
if (state.head.titleSeparator) state.head.title = `${head.title}${state.head.titleSeparator}${state.head.title}`;
|
|
@@ -36,6 +185,7 @@ var HeadProvider = class {
|
|
|
36
185
|
...head.bodyAttributes
|
|
37
186
|
};
|
|
38
187
|
if (head.meta) state.head.meta = [...state.head.meta ?? [], ...head.meta ?? []];
|
|
188
|
+
if (head.link) state.head.link = [...state.head.link ?? [], ...head.link ?? []];
|
|
39
189
|
}
|
|
40
190
|
};
|
|
41
191
|
|
|
@@ -101,6 +251,14 @@ var BrowserHeadProvider = class {
|
|
|
101
251
|
content
|
|
102
252
|
});
|
|
103
253
|
}
|
|
254
|
+
for (const meta of document.head.querySelectorAll("meta[property]")) {
|
|
255
|
+
const property = meta.getAttribute("property");
|
|
256
|
+
const content = meta.getAttribute("content");
|
|
257
|
+
if (property && content) metas.push({
|
|
258
|
+
property,
|
|
259
|
+
content
|
|
260
|
+
});
|
|
261
|
+
}
|
|
104
262
|
return metas;
|
|
105
263
|
}
|
|
106
264
|
};
|
|
@@ -111,17 +269,7 @@ var BrowserHeadProvider = class {
|
|
|
111
269
|
else document.body.removeAttribute(key);
|
|
112
270
|
if (head.htmlAttributes) for (const [key, value] of Object.entries(head.htmlAttributes)) if (value) document.documentElement.setAttribute(key, value);
|
|
113
271
|
else document.documentElement.removeAttribute(key);
|
|
114
|
-
if (head.meta) for (const it of head.meta)
|
|
115
|
-
const { name, content } = it;
|
|
116
|
-
const meta = document.querySelector(`meta[name="${name}"]`);
|
|
117
|
-
if (meta) meta.setAttribute("content", content);
|
|
118
|
-
else {
|
|
119
|
-
const newMeta = document.createElement("meta");
|
|
120
|
-
newMeta.setAttribute("name", name);
|
|
121
|
-
newMeta.setAttribute("content", content);
|
|
122
|
-
document.head.appendChild(newMeta);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
272
|
+
if (head.meta) for (const it of head.meta) this.renderMetaTag(document, it);
|
|
125
273
|
if (head.link) for (const it of head.link) {
|
|
126
274
|
const { rel, href } = it;
|
|
127
275
|
let link = document.querySelector(`link[rel="${rel}"][href="${href}"]`);
|
|
@@ -133,6 +281,30 @@ var BrowserHeadProvider = class {
|
|
|
133
281
|
}
|
|
134
282
|
}
|
|
135
283
|
}
|
|
284
|
+
renderMetaTag(document, meta) {
|
|
285
|
+
const { content } = meta;
|
|
286
|
+
if (meta.property) {
|
|
287
|
+
const existing = document.querySelector(`meta[property="${meta.property}"]`);
|
|
288
|
+
if (existing) existing.setAttribute("content", content);
|
|
289
|
+
else {
|
|
290
|
+
const newMeta = document.createElement("meta");
|
|
291
|
+
newMeta.setAttribute("property", meta.property);
|
|
292
|
+
newMeta.setAttribute("content", content);
|
|
293
|
+
document.head.appendChild(newMeta);
|
|
294
|
+
}
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
if (meta.name) {
|
|
298
|
+
const existing = document.querySelector(`meta[name="${meta.name}"]`);
|
|
299
|
+
if (existing) existing.setAttribute("content", content);
|
|
300
|
+
else {
|
|
301
|
+
const newMeta = document.createElement("meta");
|
|
302
|
+
newMeta.setAttribute("name", meta.name);
|
|
303
|
+
newMeta.setAttribute("content", content);
|
|
304
|
+
document.head.appendChild(newMeta);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
136
308
|
};
|
|
137
309
|
|
|
138
310
|
//#endregion
|
|
@@ -185,5 +357,5 @@ const AlephaReactHead = $module({
|
|
|
185
357
|
});
|
|
186
358
|
|
|
187
359
|
//#endregion
|
|
188
|
-
export { $head, AlephaReactHead, BrowserHeadProvider, HeadPrimitive, useHead };
|
|
360
|
+
export { $head, AlephaReactHead, BrowserHeadProvider, HeadPrimitive, SeoExpander, useHead };
|
|
189
361
|
//# sourceMappingURL=index.browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.js","names":["attrs: Record<string, string>","metas: { name: string; content: string }[]"],"sources":["../../src/head/providers/HeadProvider.ts","../../src/head/primitives/$head.ts","../../src/head/providers/BrowserHeadProvider.ts","../../src/head/hooks/useHead.ts","../../src/head/index.browser.ts"],"sourcesContent":["import type { PageRoute, ReactRouterState } from \"@alepha/react\";\nimport type { Head } from \"../interfaces/Head.ts\";\n\nexport class HeadProvider {\n public global?: Array<Head | (() => Head)> = [];\n\n public fillHead(state: ReactRouterState) {\n state.head = {\n ...state.head,\n };\n\n for (const h of this.global ?? []) {\n const head =\n typeof h === \"function\" ? h() : h;\n state.head = {\n ...state.head,\n ...head,\n meta: [...(state.head.meta ?? []), ...(head.meta ?? [])],\n };\n }\n\n for (const layer of state.layers) {\n if (layer.route?.head && !layer.error) {\n this.fillHeadByPage(layer.route, state, layer.props ?? {});\n }\n }\n }\n\n protected fillHeadByPage(\n page: PageRoute,\n state: ReactRouterState,\n props: Record<string, any>,\n ): void {\n if (!page.head) {\n return;\n }\n\n state.head ??= {};\n\n const head =\n typeof page.head === \"function\"\n ? page.head(props, state.head)\n : page.head;\n\n if (head.title) {\n state.head ??= {};\n\n if (state.head.titleSeparator) {\n state.head.title = `${head.title}${state.head.titleSeparator}${state.head.title}`;\n } else {\n state.head.title = head.title;\n }\n\n state.head.titleSeparator = head.titleSeparator;\n }\n\n if (head.htmlAttributes) {\n state.head.htmlAttributes = {\n ...state.head.htmlAttributes,\n ...head.htmlAttributes,\n };\n }\n\n if (head.bodyAttributes) {\n state.head.bodyAttributes = {\n ...state.head.bodyAttributes,\n ...head.bodyAttributes,\n };\n }\n\n if (head.meta) {\n state.head.meta = [...(state.head.meta ?? []), ...(head.meta ?? [])];\n }\n }\n}\n","import { $inject, createPrimitive, Primitive, KIND } from \"alepha\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { HeadProvider } from \"../providers/HeadProvider.ts\";\n\n/**\n * Set global `<head>` options for the application.\n */\nexport const $head = (options: HeadPrimitiveOptions) => {\n return createPrimitive(HeadPrimitive, options);\n};\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type HeadPrimitiveOptions = Head | (() => Head);\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport class HeadPrimitive extends Primitive<HeadPrimitiveOptions> {\n protected readonly provider = $inject(HeadProvider);\n protected onInit() {\n this.provider.global = [\n ...(this.provider.global ?? []),\n this.options,\n ];\n }\n}\n\n$head[KIND] = HeadPrimitive;\n","import { $hook, $inject } from \"alepha\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { HeadProvider } from \"./HeadProvider.ts\";\n\nexport class BrowserHeadProvider {\n protected readonly headProvider = $inject(HeadProvider);\n\n protected get document(): Document {\n return window.document;\n }\n\n protected readonly onBrowserRender = $hook({\n on: \"react:browser:render\",\n handler: async ({ state }) => {\n this.headProvider.fillHead(state);\n if (state.head) {\n this.renderHead(this.document, state.head);\n }\n },\n });\n\n protected readonly onTransitionEnd = $hook({\n on: \"react:transition:end\",\n handler: async ({ state }) => {\n this.headProvider.fillHead(state);\n if (state.head) {\n this.renderHead(this.document, state.head);\n }\n },\n });\n\n public getHead(document: Document): Head {\n return {\n get title() {\n return document.title;\n },\n get htmlAttributes() {\n const attrs: Record<string, string> = {};\n for (const attr of document.documentElement.attributes) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n },\n get bodyAttributes() {\n const attrs: Record<string, string> = {};\n for (const attr of document.body.attributes) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n },\n get meta() {\n const metas: { name: string; content: string }[] = [];\n for (const meta of document.head.querySelectorAll(\"meta[name]\")) {\n const name = meta.getAttribute(\"name\");\n const content = meta.getAttribute(\"content\");\n if (name && content) {\n metas.push({ name, content });\n }\n }\n return metas;\n },\n };\n }\n\n public renderHead(document: Document, head: Head): void {\n if (head.title) {\n document.title = head.title;\n }\n\n if (head.bodyAttributes) {\n for (const [key, value] of Object.entries(head.bodyAttributes)) {\n if (value) {\n document.body.setAttribute(key, value);\n } else {\n document.body.removeAttribute(key);\n }\n }\n }\n\n if (head.htmlAttributes) {\n for (const [key, value] of Object.entries(head.htmlAttributes)) {\n if (value) {\n document.documentElement.setAttribute(key, value);\n } else {\n document.documentElement.removeAttribute(key);\n }\n }\n }\n\n if (head.meta) {\n for (const it of head.meta) {\n const { name, content } = it;\n const meta = document.querySelector(`meta[name=\"${name}\"]`);\n if (meta) {\n meta.setAttribute(\"content\", content);\n } else {\n const newMeta = document.createElement(\"meta\");\n newMeta.setAttribute(\"name\", name);\n newMeta.setAttribute(\"content\", content);\n document.head.appendChild(newMeta);\n }\n }\n }\n\n if (head.link) {\n for (const it of head.link) {\n const { rel, href } = it;\n let link = document.querySelector(`link[rel=\"${rel}\"][href=\"${href}\"]`);\n if (!link) {\n link = document.createElement(\"link\");\n link.setAttribute(\"rel\", rel);\n link.setAttribute(\"href\", href);\n document.head.appendChild(link);\n }\n }\n }\n }\n}\n","import { useInject } from \"@alepha/react\";\nimport { Alepha } from \"alepha\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { BrowserHeadProvider } from \"../providers/BrowserHeadProvider.ts\";\n\n/**\n * ```tsx\n * const App = () => {\n * const [head, setHead] = useHead({\n * // will set the document title on the first render\n * title: \"My App\",\n * });\n *\n * return (\n * // This will update the document title when the button is clicked\n * <button onClick={() => setHead({ title: \"Change Title\" })}>\n * Change Title {head.title}\n * </button>\n * );\n * }\n * ```\n */\nexport const useHead = (options?: UseHeadOptions): UseHeadReturn => {\n const alepha = useInject(Alepha);\n\n const current = useMemo(() => {\n if (!alepha.isBrowser()) {\n return {};\n }\n\n return alepha.inject(BrowserHeadProvider).getHead(window.document);\n }, []);\n\n const setHead = useCallback((head?: Head | ((previous?: Head) => Head)) => {\n if (!alepha.isBrowser()) {\n return;\n }\n\n alepha\n .inject(BrowserHeadProvider)\n .renderHead(\n window.document,\n typeof head === \"function\" ? head(current) : head || {},\n );\n }, []);\n\n useEffect(() => {\n if (options) {\n setHead(options);\n }\n }, []);\n\n return [current, setHead];\n};\n\nexport type UseHeadOptions = Head | ((previous?: Head) => Head);\n\nexport type UseHeadReturn = [\n Head,\n (head?: Head | ((previous?: Head) => Head)) => void,\n];\n","import { AlephaReact } from \"@alepha/react\";\nimport { $module } from \"alepha\";\nimport { $head } from \"./primitives/$head.ts\";\nimport { BrowserHeadProvider } from \"./providers/BrowserHeadProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./primitives/$head.ts\";\nexport * from \"./hooks/useHead.ts\";\nexport * from \"./interfaces/Head.ts\";\nexport * from \"./providers/BrowserHeadProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Alepha React Head Module\n *\n * @see {@link BrowserHeadProvider}\n * @module alepha.react.head\n */\nexport const AlephaReactHead = $module({\n name: \"alepha.react.head\",\n primitives: [$head],\n services: [AlephaReact, BrowserHeadProvider],\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.browser.js","names":["meta: HeadMeta[]","link: Array<{ rel: string; href: string }>","attrs: Record<string, string>","metas: HeadMeta[]"],"sources":["../../src/head/helpers/SeoExpander.ts","../../src/head/providers/HeadProvider.ts","../../src/head/primitives/$head.ts","../../src/head/providers/BrowserHeadProvider.ts","../../src/head/hooks/useHead.ts","../../src/head/index.browser.ts"],"sourcesContent":["import type { Head, HeadMeta } from \"../interfaces/Head.ts\";\n\n/**\n * Expands Head configuration into SEO meta tags.\n *\n * Generates:\n * - `<meta name=\"description\">` from head.description\n * - `<meta property=\"og:*\">` OpenGraph tags\n * - `<meta name=\"twitter:*\">` Twitter Card tags\n *\n * @example\n * ```ts\n * const helper = new SeoExpander();\n * const { meta, link } = helper.expand({\n * title: \"My App\",\n * description: \"Build amazing apps\",\n * image: \"https://example.com/og.png\",\n * url: \"https://example.com/\",\n * });\n * ```\n */\nexport class SeoExpander {\n public expand(head: Head): {\n meta: HeadMeta[];\n link: Array<{ rel: string; href: string }>;\n } {\n const meta: HeadMeta[] = [];\n const link: Array<{ rel: string; href: string }> = [];\n\n // Only expand SEO if there's meaningful content beyond just title\n const hasSeoContent =\n head.description ||\n head.image ||\n head.url ||\n head.siteName ||\n head.locale ||\n head.type ||\n head.og ||\n head.twitter;\n\n if (!hasSeoContent) {\n return { meta, link };\n }\n\n // Base description\n if (head.description) {\n meta.push({ name: \"description\", content: head.description });\n }\n\n // Canonical URL\n if (head.url) {\n link.push({ rel: \"canonical\", href: head.url });\n }\n\n // OpenGraph tags\n this.expandOpenGraph(head, meta);\n\n // Twitter Card tags\n this.expandTwitter(head, meta);\n\n return { meta, link };\n }\n\n protected expandOpenGraph(head: Head, meta: HeadMeta[]): void {\n const ogTitle = head.og?.title ?? head.title;\n const ogDescription = head.og?.description ?? head.description;\n const ogImage = head.og?.image ?? head.image;\n\n if (head.type || ogTitle) {\n meta.push({ property: \"og:type\", content: head.type ?? \"website\" });\n }\n if (head.url) {\n meta.push({ property: \"og:url\", content: head.url });\n }\n if (ogTitle) {\n meta.push({ property: \"og:title\", content: ogTitle });\n }\n if (ogDescription) {\n meta.push({ property: \"og:description\", content: ogDescription });\n }\n if (ogImage) {\n meta.push({ property: \"og:image\", content: ogImage });\n if (head.imageWidth) {\n meta.push({\n property: \"og:image:width\",\n content: String(head.imageWidth),\n });\n }\n if (head.imageHeight) {\n meta.push({\n property: \"og:image:height\",\n content: String(head.imageHeight),\n });\n }\n if (head.imageAlt) {\n meta.push({ property: \"og:image:alt\", content: head.imageAlt });\n }\n }\n if (head.siteName) {\n meta.push({ property: \"og:site_name\", content: head.siteName });\n }\n if (head.locale) {\n meta.push({ property: \"og:locale\", content: head.locale });\n }\n }\n\n protected expandTwitter(head: Head, meta: HeadMeta[]): void {\n const twitterTitle = head.twitter?.title ?? head.title;\n const twitterDescription = head.twitter?.description ?? head.description;\n const twitterImage = head.twitter?.image ?? head.image;\n\n if (head.twitter?.card || twitterTitle || twitterImage) {\n meta.push({\n name: \"twitter:card\",\n content:\n head.twitter?.card ?? (twitterImage ? \"summary_large_image\" : \"summary\"),\n });\n }\n if (head.url) {\n meta.push({ name: \"twitter:url\", content: head.url });\n }\n if (twitterTitle) {\n meta.push({ name: \"twitter:title\", content: twitterTitle });\n }\n if (twitterDescription) {\n meta.push({ name: \"twitter:description\", content: twitterDescription });\n }\n if (twitterImage) {\n meta.push({ name: \"twitter:image\", content: twitterImage });\n if (head.imageAlt) {\n meta.push({ name: \"twitter:image:alt\", content: head.imageAlt });\n }\n }\n if (head.twitter?.site) {\n meta.push({ name: \"twitter:site\", content: head.twitter.site });\n }\n if (head.twitter?.creator) {\n meta.push({ name: \"twitter:creator\", content: head.twitter.creator });\n }\n }\n}\n","import type { PageRoute, ReactRouterState } from \"@alepha/react\";\nimport { $inject } from \"alepha\";\nimport { SeoExpander } from \"../helpers/SeoExpander.ts\";\nimport type { Head } from \"../interfaces/Head.ts\";\n\nexport class HeadProvider {\n protected readonly seoExpander = $inject(SeoExpander);\n\n public global?: Array<Head | (() => Head)> = [];\n\n public fillHead(state: ReactRouterState) {\n state.head = {\n ...state.head,\n };\n\n for (const h of this.global ?? []) {\n const head = typeof h === \"function\" ? h() : h;\n this.mergeHead(state, head);\n }\n\n for (const layer of state.layers) {\n if (layer.route?.head && !layer.error) {\n this.fillHeadByPage(layer.route, state, layer.props ?? {});\n }\n }\n }\n\n protected mergeHead(state: ReactRouterState, head: Head): void {\n // Expand SEO fields into meta tags\n const { meta, link } = this.seoExpander.expand(head);\n state.head = {\n ...state.head,\n ...head,\n meta: [...(state.head.meta ?? []), ...meta, ...(head.meta ?? [])],\n link: [...(state.head.link ?? []), ...link, ...(head.link ?? [])],\n };\n }\n\n protected fillHeadByPage(\n page: PageRoute,\n state: ReactRouterState,\n props: Record<string, any>,\n ): void {\n if (!page.head) {\n return;\n }\n\n state.head ??= {};\n\n const head =\n typeof page.head === \"function\"\n ? page.head(props, state.head)\n : page.head;\n\n // Expand SEO fields into meta tags\n const { meta, link } = this.seoExpander.expand(head);\n state.head.meta = [...(state.head.meta ?? []), ...meta];\n state.head.link = [...(state.head.link ?? []), ...link];\n\n if (head.title) {\n state.head ??= {};\n\n if (state.head.titleSeparator) {\n state.head.title = `${head.title}${state.head.titleSeparator}${state.head.title}`;\n } else {\n state.head.title = head.title;\n }\n\n state.head.titleSeparator = head.titleSeparator;\n }\n\n if (head.htmlAttributes) {\n state.head.htmlAttributes = {\n ...state.head.htmlAttributes,\n ...head.htmlAttributes,\n };\n }\n\n if (head.bodyAttributes) {\n state.head.bodyAttributes = {\n ...state.head.bodyAttributes,\n ...head.bodyAttributes,\n };\n }\n\n if (head.meta) {\n state.head.meta = [...(state.head.meta ?? []), ...(head.meta ?? [])];\n }\n\n if (head.link) {\n state.head.link = [...(state.head.link ?? []), ...(head.link ?? [])];\n }\n }\n}\n","import { $inject, createPrimitive, Primitive, KIND } from \"alepha\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { HeadProvider } from \"../providers/HeadProvider.ts\";\n\n/**\n * Set global `<head>` options for the application.\n */\nexport const $head = (options: HeadPrimitiveOptions) => {\n return createPrimitive(HeadPrimitive, options);\n};\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type HeadPrimitiveOptions = Head | (() => Head);\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport class HeadPrimitive extends Primitive<HeadPrimitiveOptions> {\n protected readonly provider = $inject(HeadProvider);\n protected onInit() {\n this.provider.global = [\n ...(this.provider.global ?? []),\n this.options,\n ];\n }\n}\n\n$head[KIND] = HeadPrimitive;\n","import { $hook, $inject } from \"alepha\";\nimport type { Head, HeadMeta } from \"../interfaces/Head.ts\";\nimport { HeadProvider } from \"./HeadProvider.ts\";\n\nexport class BrowserHeadProvider {\n protected readonly headProvider = $inject(HeadProvider);\n\n protected get document(): Document {\n return window.document;\n }\n\n protected readonly onBrowserRender = $hook({\n on: \"react:browser:render\",\n handler: async ({ state }) => {\n this.headProvider.fillHead(state);\n if (state.head) {\n this.renderHead(this.document, state.head);\n }\n },\n });\n\n protected readonly onTransitionEnd = $hook({\n on: \"react:transition:end\",\n handler: async ({ state }) => {\n this.headProvider.fillHead(state);\n if (state.head) {\n this.renderHead(this.document, state.head);\n }\n },\n });\n\n public getHead(document: Document): Head {\n return {\n get title() {\n return document.title;\n },\n get htmlAttributes() {\n const attrs: Record<string, string> = {};\n for (const attr of document.documentElement.attributes) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n },\n get bodyAttributes() {\n const attrs: Record<string, string> = {};\n for (const attr of document.body.attributes) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n },\n get meta() {\n const metas: HeadMeta[] = [];\n // Get meta tags with name attribute\n for (const meta of document.head.querySelectorAll(\"meta[name]\")) {\n const name = meta.getAttribute(\"name\");\n const content = meta.getAttribute(\"content\");\n if (name && content) {\n metas.push({ name, content });\n }\n }\n // Get meta tags with property attribute (OpenGraph)\n for (const meta of document.head.querySelectorAll(\"meta[property]\")) {\n const property = meta.getAttribute(\"property\");\n const content = meta.getAttribute(\"content\");\n if (property && content) {\n metas.push({ property, content });\n }\n }\n return metas;\n },\n };\n }\n\n public renderHead(document: Document, head: Head): void {\n if (head.title) {\n document.title = head.title;\n }\n\n if (head.bodyAttributes) {\n for (const [key, value] of Object.entries(head.bodyAttributes)) {\n if (value) {\n document.body.setAttribute(key, value);\n } else {\n document.body.removeAttribute(key);\n }\n }\n }\n\n if (head.htmlAttributes) {\n for (const [key, value] of Object.entries(head.htmlAttributes)) {\n if (value) {\n document.documentElement.setAttribute(key, value);\n } else {\n document.documentElement.removeAttribute(key);\n }\n }\n }\n\n if (head.meta) {\n for (const it of head.meta) {\n this.renderMetaTag(document, it);\n }\n }\n\n if (head.link) {\n for (const it of head.link) {\n const { rel, href } = it;\n let link = document.querySelector(`link[rel=\"${rel}\"][href=\"${href}\"]`);\n if (!link) {\n link = document.createElement(\"link\");\n link.setAttribute(\"rel\", rel);\n link.setAttribute(\"href\", href);\n document.head.appendChild(link);\n }\n }\n }\n }\n\n protected renderMetaTag(document: Document, meta: HeadMeta): void {\n const { content } = meta;\n\n // Handle OpenGraph tags (property attribute)\n if (meta.property) {\n const existing = document.querySelector(\n `meta[property=\"${meta.property}\"]`,\n );\n if (existing) {\n existing.setAttribute(\"content\", content);\n } else {\n const newMeta = document.createElement(\"meta\");\n newMeta.setAttribute(\"property\", meta.property);\n newMeta.setAttribute(\"content\", content);\n document.head.appendChild(newMeta);\n }\n return;\n }\n\n // Handle standard meta tags (name attribute)\n if (meta.name) {\n const existing = document.querySelector(`meta[name=\"${meta.name}\"]`);\n if (existing) {\n existing.setAttribute(\"content\", content);\n } else {\n const newMeta = document.createElement(\"meta\");\n newMeta.setAttribute(\"name\", meta.name);\n newMeta.setAttribute(\"content\", content);\n document.head.appendChild(newMeta);\n }\n }\n }\n}\n","import { useInject } from \"@alepha/react\";\nimport { Alepha } from \"alepha\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { BrowserHeadProvider } from \"../providers/BrowserHeadProvider.ts\";\n\n/**\n * ```tsx\n * const App = () => {\n * const [head, setHead] = useHead({\n * // will set the document title on the first render\n * title: \"My App\",\n * });\n *\n * return (\n * // This will update the document title when the button is clicked\n * <button onClick={() => setHead({ title: \"Change Title\" })}>\n * Change Title {head.title}\n * </button>\n * );\n * }\n * ```\n */\nexport const useHead = (options?: UseHeadOptions): UseHeadReturn => {\n const alepha = useInject(Alepha);\n\n const current = useMemo(() => {\n if (!alepha.isBrowser()) {\n return {};\n }\n\n return alepha.inject(BrowserHeadProvider).getHead(window.document);\n }, []);\n\n const setHead = useCallback((head?: Head | ((previous?: Head) => Head)) => {\n if (!alepha.isBrowser()) {\n return;\n }\n\n alepha\n .inject(BrowserHeadProvider)\n .renderHead(\n window.document,\n typeof head === \"function\" ? head(current) : head || {},\n );\n }, []);\n\n useEffect(() => {\n if (options) {\n setHead(options);\n }\n }, []);\n\n return [current, setHead];\n};\n\nexport type UseHeadOptions = Head | ((previous?: Head) => Head);\n\nexport type UseHeadReturn = [\n Head,\n (head?: Head | ((previous?: Head) => Head)) => void,\n];\n","import { AlephaReact } from \"@alepha/react\";\nimport { $module } from \"alepha\";\nimport { $head } from \"./primitives/$head.ts\";\nimport { BrowserHeadProvider } from \"./providers/BrowserHeadProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./primitives/$head.ts\";\nexport * from \"./hooks/useHead.ts\";\nexport * from \"./interfaces/Head.ts\";\nexport * from \"./helpers/SeoExpander.ts\";\nexport * from \"./providers/BrowserHeadProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Alepha React Head Module\n *\n * @see {@link BrowserHeadProvider}\n * @module alepha.react.head\n */\nexport const AlephaReactHead = $module({\n name: \"alepha.react.head\",\n primitives: [$head],\n services: [AlephaReact, BrowserHeadProvider],\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqBA,IAAa,cAAb,MAAyB;CACvB,AAAO,OAAO,MAGZ;EACA,MAAMA,OAAmB,EAAE;EAC3B,MAAMC,OAA6C,EAAE;AAarD,MAAI,EATF,KAAK,eACL,KAAK,SACL,KAAK,OACL,KAAK,YACL,KAAK,UACL,KAAK,QACL,KAAK,MACL,KAAK,SAGL,QAAO;GAAE;GAAM;GAAM;AAIvB,MAAI,KAAK,YACP,MAAK,KAAK;GAAE,MAAM;GAAe,SAAS,KAAK;GAAa,CAAC;AAI/D,MAAI,KAAK,IACP,MAAK,KAAK;GAAE,KAAK;GAAa,MAAM,KAAK;GAAK,CAAC;AAIjD,OAAK,gBAAgB,MAAM,KAAK;AAGhC,OAAK,cAAc,MAAM,KAAK;AAE9B,SAAO;GAAE;GAAM;GAAM;;CAGvB,AAAU,gBAAgB,MAAY,MAAwB;EAC5D,MAAM,UAAU,KAAK,IAAI,SAAS,KAAK;EACvC,MAAM,gBAAgB,KAAK,IAAI,eAAe,KAAK;EACnD,MAAM,UAAU,KAAK,IAAI,SAAS,KAAK;AAEvC,MAAI,KAAK,QAAQ,QACf,MAAK,KAAK;GAAE,UAAU;GAAW,SAAS,KAAK,QAAQ;GAAW,CAAC;AAErE,MAAI,KAAK,IACP,MAAK,KAAK;GAAE,UAAU;GAAU,SAAS,KAAK;GAAK,CAAC;AAEtD,MAAI,QACF,MAAK,KAAK;GAAE,UAAU;GAAY,SAAS;GAAS,CAAC;AAEvD,MAAI,cACF,MAAK,KAAK;GAAE,UAAU;GAAkB,SAAS;GAAe,CAAC;AAEnE,MAAI,SAAS;AACX,QAAK,KAAK;IAAE,UAAU;IAAY,SAAS;IAAS,CAAC;AACrD,OAAI,KAAK,WACP,MAAK,KAAK;IACR,UAAU;IACV,SAAS,OAAO,KAAK,WAAW;IACjC,CAAC;AAEJ,OAAI,KAAK,YACP,MAAK,KAAK;IACR,UAAU;IACV,SAAS,OAAO,KAAK,YAAY;IAClC,CAAC;AAEJ,OAAI,KAAK,SACP,MAAK,KAAK;IAAE,UAAU;IAAgB,SAAS,KAAK;IAAU,CAAC;;AAGnE,MAAI,KAAK,SACP,MAAK,KAAK;GAAE,UAAU;GAAgB,SAAS,KAAK;GAAU,CAAC;AAEjE,MAAI,KAAK,OACP,MAAK,KAAK;GAAE,UAAU;GAAa,SAAS,KAAK;GAAQ,CAAC;;CAI9D,AAAU,cAAc,MAAY,MAAwB;EAC1D,MAAM,eAAe,KAAK,SAAS,SAAS,KAAK;EACjD,MAAM,qBAAqB,KAAK,SAAS,eAAe,KAAK;EAC7D,MAAM,eAAe,KAAK,SAAS,SAAS,KAAK;AAEjD,MAAI,KAAK,SAAS,QAAQ,gBAAgB,aACxC,MAAK,KAAK;GACR,MAAM;GACN,SACE,KAAK,SAAS,SAAS,eAAe,wBAAwB;GACjE,CAAC;AAEJ,MAAI,KAAK,IACP,MAAK,KAAK;GAAE,MAAM;GAAe,SAAS,KAAK;GAAK,CAAC;AAEvD,MAAI,aACF,MAAK,KAAK;GAAE,MAAM;GAAiB,SAAS;GAAc,CAAC;AAE7D,MAAI,mBACF,MAAK,KAAK;GAAE,MAAM;GAAuB,SAAS;GAAoB,CAAC;AAEzE,MAAI,cAAc;AAChB,QAAK,KAAK;IAAE,MAAM;IAAiB,SAAS;IAAc,CAAC;AAC3D,OAAI,KAAK,SACP,MAAK,KAAK;IAAE,MAAM;IAAqB,SAAS,KAAK;IAAU,CAAC;;AAGpE,MAAI,KAAK,SAAS,KAChB,MAAK,KAAK;GAAE,MAAM;GAAgB,SAAS,KAAK,QAAQ;GAAM,CAAC;AAEjE,MAAI,KAAK,SAAS,QAChB,MAAK,KAAK;GAAE,MAAM;GAAmB,SAAS,KAAK,QAAQ;GAAS,CAAC;;;;;;ACpI3E,IAAa,eAAb,MAA0B;CACxB,AAAmB,cAAc,QAAQ,YAAY;CAErD,AAAO,SAAsC,EAAE;CAE/C,AAAO,SAAS,OAAyB;AACvC,QAAM,OAAO,EACX,GAAG,MAAM,MACV;AAED,OAAK,MAAM,KAAK,KAAK,UAAU,EAAE,EAAE;GACjC,MAAM,OAAO,OAAO,MAAM,aAAa,GAAG,GAAG;AAC7C,QAAK,UAAU,OAAO,KAAK;;AAG7B,OAAK,MAAM,SAAS,MAAM,OACxB,KAAI,MAAM,OAAO,QAAQ,CAAC,MAAM,MAC9B,MAAK,eAAe,MAAM,OAAO,OAAO,MAAM,SAAS,EAAE,CAAC;;CAKhE,AAAU,UAAU,OAAyB,MAAkB;EAE7D,MAAM,EAAE,MAAM,SAAS,KAAK,YAAY,OAAO,KAAK;AACpD,QAAM,OAAO;GACX,GAAG,MAAM;GACT,GAAG;GACH,MAAM;IAAC,GAAI,MAAM,KAAK,QAAQ,EAAE;IAAG,GAAG;IAAM,GAAI,KAAK,QAAQ,EAAE;IAAE;GACjE,MAAM;IAAC,GAAI,MAAM,KAAK,QAAQ,EAAE;IAAG,GAAG;IAAM,GAAI,KAAK,QAAQ,EAAE;IAAE;GAClE;;CAGH,AAAU,eACR,MACA,OACA,OACM;AACN,MAAI,CAAC,KAAK,KACR;AAGF,QAAM,SAAS,EAAE;EAEjB,MAAM,OACJ,OAAO,KAAK,SAAS,aACjB,KAAK,KAAK,OAAO,MAAM,KAAK,GAC5B,KAAK;EAGX,MAAM,EAAE,MAAM,SAAS,KAAK,YAAY,OAAO,KAAK;AACpD,QAAM,KAAK,OAAO,CAAC,GAAI,MAAM,KAAK,QAAQ,EAAE,EAAG,GAAG,KAAK;AACvD,QAAM,KAAK,OAAO,CAAC,GAAI,MAAM,KAAK,QAAQ,EAAE,EAAG,GAAG,KAAK;AAEvD,MAAI,KAAK,OAAO;AACd,SAAM,SAAS,EAAE;AAEjB,OAAI,MAAM,KAAK,eACb,OAAM,KAAK,QAAQ,GAAG,KAAK,QAAQ,MAAM,KAAK,iBAAiB,MAAM,KAAK;OAE1E,OAAM,KAAK,QAAQ,KAAK;AAG1B,SAAM,KAAK,iBAAiB,KAAK;;AAGnC,MAAI,KAAK,eACP,OAAM,KAAK,iBAAiB;GAC1B,GAAG,MAAM,KAAK;GACd,GAAG,KAAK;GACT;AAGH,MAAI,KAAK,eACP,OAAM,KAAK,iBAAiB;GAC1B,GAAG,MAAM,KAAK;GACd,GAAG,KAAK;GACT;AAGH,MAAI,KAAK,KACP,OAAM,KAAK,OAAO,CAAC,GAAI,MAAM,KAAK,QAAQ,EAAE,EAAG,GAAI,KAAK,QAAQ,EAAE,CAAE;AAGtE,MAAI,KAAK,KACP,OAAM,KAAK,OAAO,CAAC,GAAI,MAAM,KAAK,QAAQ,EAAE,EAAG,GAAI,KAAK,QAAQ,EAAE,CAAE;;;;;;;;;ACnF1E,MAAa,SAAS,YAAkC;AACtD,QAAO,gBAAgB,eAAe,QAAQ;;AAShD,IAAa,gBAAb,cAAmC,UAAgC;CACjE,AAAmB,WAAW,QAAQ,aAAa;CACnD,AAAU,SAAS;AACjB,OAAK,SAAS,SAAS,CACrB,GAAI,KAAK,SAAS,UAAU,EAAE,EAC9B,KAAK,QACN;;;AAIL,MAAM,QAAQ;;;;ACvBd,IAAa,sBAAb,MAAiC;CAC/B,AAAmB,eAAe,QAAQ,aAAa;CAEvD,IAAc,WAAqB;AACjC,SAAO,OAAO;;CAGhB,AAAmB,kBAAkB,MAAM;EACzC,IAAI;EACJ,SAAS,OAAO,EAAE,YAAY;AAC5B,QAAK,aAAa,SAAS,MAAM;AACjC,OAAI,MAAM,KACR,MAAK,WAAW,KAAK,UAAU,MAAM,KAAK;;EAG/C,CAAC;CAEF,AAAmB,kBAAkB,MAAM;EACzC,IAAI;EACJ,SAAS,OAAO,EAAE,YAAY;AAC5B,QAAK,aAAa,SAAS,MAAM;AACjC,OAAI,MAAM,KACR,MAAK,WAAW,KAAK,UAAU,MAAM,KAAK;;EAG/C,CAAC;CAEF,AAAO,QAAQ,UAA0B;AACvC,SAAO;GACL,IAAI,QAAQ;AACV,WAAO,SAAS;;GAElB,IAAI,iBAAiB;IACnB,MAAMC,QAAgC,EAAE;AACxC,SAAK,MAAM,QAAQ,SAAS,gBAAgB,WAC1C,OAAM,KAAK,QAAQ,KAAK;AAE1B,WAAO;;GAET,IAAI,iBAAiB;IACnB,MAAMA,QAAgC,EAAE;AACxC,SAAK,MAAM,QAAQ,SAAS,KAAK,WAC/B,OAAM,KAAK,QAAQ,KAAK;AAE1B,WAAO;;GAET,IAAI,OAAO;IACT,MAAMC,QAAoB,EAAE;AAE5B,SAAK,MAAM,QAAQ,SAAS,KAAK,iBAAiB,aAAa,EAAE;KAC/D,MAAM,OAAO,KAAK,aAAa,OAAO;KACtC,MAAM,UAAU,KAAK,aAAa,UAAU;AAC5C,SAAI,QAAQ,QACV,OAAM,KAAK;MAAE;MAAM;MAAS,CAAC;;AAIjC,SAAK,MAAM,QAAQ,SAAS,KAAK,iBAAiB,iBAAiB,EAAE;KACnE,MAAM,WAAW,KAAK,aAAa,WAAW;KAC9C,MAAM,UAAU,KAAK,aAAa,UAAU;AAC5C,SAAI,YAAY,QACd,OAAM,KAAK;MAAE;MAAU;MAAS,CAAC;;AAGrC,WAAO;;GAEV;;CAGH,AAAO,WAAW,UAAoB,MAAkB;AACtD,MAAI,KAAK,MACP,UAAS,QAAQ,KAAK;AAGxB,MAAI,KAAK,eACP,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,eAAe,CAC5D,KAAI,MACF,UAAS,KAAK,aAAa,KAAK,MAAM;MAEtC,UAAS,KAAK,gBAAgB,IAAI;AAKxC,MAAI,KAAK,eACP,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,eAAe,CAC5D,KAAI,MACF,UAAS,gBAAgB,aAAa,KAAK,MAAM;MAEjD,UAAS,gBAAgB,gBAAgB,IAAI;AAKnD,MAAI,KAAK,KACP,MAAK,MAAM,MAAM,KAAK,KACpB,MAAK,cAAc,UAAU,GAAG;AAIpC,MAAI,KAAK,KACP,MAAK,MAAM,MAAM,KAAK,MAAM;GAC1B,MAAM,EAAE,KAAK,SAAS;GACtB,IAAI,OAAO,SAAS,cAAc,aAAa,IAAI,WAAW,KAAK,IAAI;AACvE,OAAI,CAAC,MAAM;AACT,WAAO,SAAS,cAAc,OAAO;AACrC,SAAK,aAAa,OAAO,IAAI;AAC7B,SAAK,aAAa,QAAQ,KAAK;AAC/B,aAAS,KAAK,YAAY,KAAK;;;;CAMvC,AAAU,cAAc,UAAoB,MAAsB;EAChE,MAAM,EAAE,YAAY;AAGpB,MAAI,KAAK,UAAU;GACjB,MAAM,WAAW,SAAS,cACxB,kBAAkB,KAAK,SAAS,IACjC;AACD,OAAI,SACF,UAAS,aAAa,WAAW,QAAQ;QACpC;IACL,MAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,YAAQ,aAAa,YAAY,KAAK,SAAS;AAC/C,YAAQ,aAAa,WAAW,QAAQ;AACxC,aAAS,KAAK,YAAY,QAAQ;;AAEpC;;AAIF,MAAI,KAAK,MAAM;GACb,MAAM,WAAW,SAAS,cAAc,cAAc,KAAK,KAAK,IAAI;AACpE,OAAI,SACF,UAAS,aAAa,WAAW,QAAQ;QACpC;IACL,MAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,YAAQ,aAAa,QAAQ,KAAK,KAAK;AACvC,YAAQ,aAAa,WAAW,QAAQ;AACxC,aAAS,KAAK,YAAY,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;AC3H1C,MAAa,WAAW,YAA4C;CAClE,MAAM,SAAS,UAAU,OAAO;CAEhC,MAAM,UAAU,cAAc;AAC5B,MAAI,CAAC,OAAO,WAAW,CACrB,QAAO,EAAE;AAGX,SAAO,OAAO,OAAO,oBAAoB,CAAC,QAAQ,OAAO,SAAS;IACjE,EAAE,CAAC;CAEN,MAAM,UAAU,aAAa,SAA8C;AACzE,MAAI,CAAC,OAAO,WAAW,CACrB;AAGF,SACG,OAAO,oBAAoB,CAC3B,WACC,OAAO,UACP,OAAO,SAAS,aAAa,KAAK,QAAQ,GAAG,QAAQ,EAAE,CACxD;IACF,EAAE,CAAC;AAEN,iBAAgB;AACd,MAAI,QACF,SAAQ,QAAQ;IAEjB,EAAE,CAAC;AAEN,QAAO,CAAC,SAAS,QAAQ;;;;;;;;;;;AChC3B,MAAa,kBAAkB,QAAQ;CACrC,MAAM;CACN,YAAY,CAAC,MAAM;CACnB,UAAU,CAAC,aAAa,oBAAoB;CAC7C,CAAC"}
|