@absolutejs/absolute 0.19.0-beta.706 → 0.19.0-beta.708

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 (106) hide show
  1. package/dist/angular/browser.js +1 -19
  2. package/dist/angular/browser.js.map +3 -3
  3. package/dist/angular/components/constants.js +78 -0
  4. package/dist/angular/components/core/streamingSlotRegistrar.js +58 -0
  5. package/dist/angular/components/core/streamingSlotRegistry.js +114 -0
  6. package/dist/angular/components/defer-slot-payload.js +6 -0
  7. package/dist/angular/components/defer-slot-templates.directive.js +44 -0
  8. package/dist/angular/components/defer-slot.component.js +149 -0
  9. package/dist/angular/components/image.component.js +202 -0
  10. package/dist/angular/components/index.js +4 -0
  11. package/dist/angular/components/stream-slot.component.js +103 -0
  12. package/dist/angular/index.js +91 -36
  13. package/dist/angular/index.js.map +6 -6
  14. package/dist/angular/server.js +91 -36
  15. package/dist/angular/server.js.map +6 -6
  16. package/dist/build.js +242 -162
  17. package/dist/build.js.map +12 -12
  18. package/dist/cli/index.js +214 -142
  19. package/dist/client/index.js +86 -31
  20. package/dist/client/index.js.map +4 -4
  21. package/dist/core/streamingSlotRegistrar.js +1 -19
  22. package/dist/core/streamingSlotRegistrar.js.map +2 -2
  23. package/dist/core/streamingSlotRegistry.js +1 -19
  24. package/dist/core/streamingSlotRegistry.js.map +2 -2
  25. package/dist/dev/client/constants.ts +26 -0
  26. package/dist/dev/client/cssUtils.ts +307 -0
  27. package/dist/dev/client/domDiff.ts +226 -0
  28. package/dist/dev/client/domState.ts +421 -0
  29. package/dist/dev/client/domTracker.ts +61 -0
  30. package/dist/dev/client/errorOverlay.ts +184 -0
  31. package/dist/dev/client/frameworkDetect.ts +63 -0
  32. package/dist/dev/client/handlers/angular.ts +578 -0
  33. package/dist/dev/client/handlers/angularRuntime.ts +231 -0
  34. package/dist/dev/client/handlers/html.ts +364 -0
  35. package/dist/dev/client/handlers/htmx.ts +278 -0
  36. package/dist/dev/client/handlers/react.ts +108 -0
  37. package/dist/dev/client/handlers/rebuild.ts +153 -0
  38. package/dist/dev/client/handlers/svelte.ts +334 -0
  39. package/dist/dev/client/handlers/vue.ts +292 -0
  40. package/dist/dev/client/headPatch.ts +233 -0
  41. package/dist/dev/client/hmrClient.ts +273 -0
  42. package/dist/dev/client/hmrState.ts +14 -0
  43. package/dist/dev/client/moduleVersions.ts +62 -0
  44. package/dist/dev/client/reactRefreshSetup.ts +31 -0
  45. package/dist/index.js +282 -187
  46. package/dist/index.js.map +15 -15
  47. package/dist/islands/browser.js +1 -19
  48. package/dist/islands/browser.js.map +2 -2
  49. package/dist/islands/index.js +80 -26
  50. package/dist/islands/index.js.map +5 -5
  51. package/dist/react/browser.js +7 -25
  52. package/dist/react/browser.js.map +2 -2
  53. package/dist/react/components/browser/index.js +101 -101
  54. package/dist/react/components/index.js +104 -122
  55. package/dist/react/components/index.js.map +3 -3
  56. package/dist/react/hooks/index.js +1 -19
  57. package/dist/react/hooks/index.js.map +2 -2
  58. package/dist/react/index.js +101 -46
  59. package/dist/react/index.js.map +6 -6
  60. package/dist/react/jsxDevRuntimeCompat.js +1 -19
  61. package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
  62. package/dist/react/server.js +13 -30
  63. package/dist/react/server.js.map +4 -4
  64. package/dist/src/angular/components/constants.d.ts +75 -0
  65. package/dist/src/angular/components/defer-slot-templates.directive.d.ts +7 -0
  66. package/dist/src/angular/components/defer-slot.component.d.ts +5 -2
  67. package/dist/src/angular/components/image.component.d.ts +5 -2
  68. package/dist/src/angular/components/index.d.ts +4 -4
  69. package/dist/src/angular/components/stream-slot.component.d.ts +3 -0
  70. package/dist/src/client/streamSwap.d.ts +0 -10
  71. package/dist/src/constants.d.ts +1 -0
  72. package/dist/src/dev/rebuildTrigger.d.ts +1 -1
  73. package/dist/src/svelte/renderToPipeableStream.d.ts +2 -2
  74. package/dist/src/svelte/renderToReadableStream.d.ts +2 -2
  75. package/dist/src/svelte/renderToString.d.ts +2 -2
  76. package/dist/src/vue/components/Image.d.ts +3 -3
  77. package/dist/svelte/browser.js +1 -19
  78. package/dist/svelte/browser.js.map +2 -2
  79. package/dist/svelte/components/AwaitSlot.svelte +39 -0
  80. package/dist/svelte/components/AwaitSlot.svelte.d.ts +2 -0
  81. package/dist/svelte/components/Head.svelte +144 -0
  82. package/dist/svelte/components/Head.svelte.d.ts +2 -0
  83. package/dist/svelte/components/Image.svelte +164 -0
  84. package/dist/svelte/components/Image.svelte.d.ts +5 -0
  85. package/dist/svelte/components/Island.svelte +71 -0
  86. package/dist/svelte/components/Island.svelte.d.ts +5 -0
  87. package/dist/svelte/components/JsonLd.svelte +21 -0
  88. package/dist/svelte/components/JsonLd.svelte.d.ts +2 -0
  89. package/dist/svelte/components/StreamSlot.svelte +41 -0
  90. package/dist/svelte/components/StreamSlot.svelte.d.ts +2 -0
  91. package/dist/svelte/index.js +93 -37
  92. package/dist/svelte/index.js.map +7 -7
  93. package/dist/svelte/server.js +16 -32
  94. package/dist/svelte/server.js.map +5 -5
  95. package/dist/types/globals.d.ts +130 -0
  96. package/dist/vue/browser.js +1 -19
  97. package/dist/vue/browser.js.map +2 -2
  98. package/dist/vue/components/Image.js +1 -19
  99. package/dist/vue/components/Image.js.map +3 -3
  100. package/dist/vue/components/index.js +1 -19
  101. package/dist/vue/components/index.js.map +3 -3
  102. package/dist/vue/index.js +91 -36
  103. package/dist/vue/index.js.map +7 -7
  104. package/dist/vue/server.js +13 -30
  105. package/dist/vue/server.js.map +4 -4
  106. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ export const ANGULAR_INIT_TIMEOUT_MS = 500;
2
+ export const ANSI_ESCAPE_CODE = 27;
3
+ export const ANSI_ESCAPE_LENGTH = 3;
4
+ export const ASCII_SPACE = 32;
5
+ export const BASE_36_RADIX = 36;
6
+ export const BUN_BUILD_WARNING_SUPPRESSION = 'wildcard sideEffects are not supported yet';
7
+ export const BODY_SLICE_LENGTH = 2000;
8
+ export const BYTES_PER_KILOBYTE = 1024;
9
+ export const CLI_ARGS_OFFSET = 3;
10
+ export const CSS_ERROR_RESOLVE_DELAY_MS = 50;
11
+ export const CSS_MAX_CHECK_ATTEMPTS = 10;
12
+ export const CSS_MAX_PARSE_TIMEOUT_MS = 500;
13
+ export const CSS_SHEET_READY_TIMEOUT_MS = 100;
14
+ export const DEFAULT_CHUNK_SIZE = 16_384;
15
+ export const DEFAULT_DEBOUNCE_MS = 15;
16
+ export const DEFAULT_PORT = 3000;
17
+ export const DEV_SERVER_RESTART_DEBOUNCE_MS = 100;
18
+ export const DOM_UPDATE_DELAY_MS = 50;
19
+ export const FILE_PROTOCOL_PREFIX_LENGTH = 7;
20
+ export const FOCUS_ID_PREFIX_LENGTH = 3;
21
+ export const FOCUS_IDX_PREFIX_LENGTH = 4;
22
+ export const FOCUS_NAME_PREFIX_LENGTH = 5;
23
+ export const HMR_UPDATE_TIMEOUT_MS = 2000;
24
+ export const HOOK_SIGNATURE_LENGTH = 12;
25
+ export const EXCLUDE_LAST_OFFSET = -1;
26
+ export const HTTP_STATUS_OK = 200;
27
+ export const HTTP_STATUS_BAD_REQUEST = 400;
28
+ export const HTTP_STATUS_NOT_FOUND = 404;
29
+ export const HOURS_IN_DAY = 24;
30
+ export const HOURS_IN_HALF_DAY = 12;
31
+ export const MAX_ERROR_LENGTH = 200;
32
+ export const MAX_RECONNECT_ATTEMPTS = 60;
33
+ export const MILLISECONDS_IN_A_SECOND = 1000;
34
+ export const MINUTES_IN_AN_HOUR = 60;
35
+ export const SECONDS_IN_A_MINUTE = 60;
36
+ export const MILLISECONDS_IN_A_MINUTE = MILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;
37
+ export const MILLISECONDS_IN_A_DAY = MILLISECONDS_IN_A_SECOND *
38
+ SECONDS_IN_A_MINUTE *
39
+ MINUTES_IN_AN_HOUR *
40
+ HOURS_IN_DAY;
41
+ export const OVERLAY_FADE_DURATION_MS = 150;
42
+ export const PING_INTERVAL_MS = 30_000;
43
+ export const RAF_BATCH_COUNT = 3;
44
+ export const RANDOM_ID_END_INDEX = 11;
45
+ export const REBUILD_BATCH_DELAY_MS = 10;
46
+ export const REBUILD_RELOAD_DELAY_MS = 200;
47
+ export const RECONNECT_INITIAL_DELAY_MS = 500;
48
+ export const RECONNECT_POLL_INTERVAL_MS = 300;
49
+ export const REACT_STREAM_SLOT_FAST_DELAY_MS = 5;
50
+ export const REACT_STREAM_SLOT_SLOW_DELAY_MS = 20;
51
+ export const SIGINT_EXIT_CODE = 130;
52
+ export const SIGTERM_EXIT_CODE = 143;
53
+ export const SVELTE_CSS_LOAD_TIMEOUT_MS = 500;
54
+ export const TIME_PRECISION = 2;
55
+ export const TWO_THIRDS = 2 / 3;
56
+ export const UNFOUND_INDEX = -1;
57
+ export const WEBSOCKET_NORMAL_CLOSURE = 1000;
58
+ export const WORKSPACE_COMMAND_ARGS_OFFSET = 3;
59
+ export const WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30;
60
+ export const WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60;
61
+ export const WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5_000;
62
+ export const WORKSPACE_READY_PROBE_INTERVAL_MS = 250;
63
+ export const WORKSPACE_READY_TIMEOUT_MS = 30_000;
64
+ export const WORKSPACE_SHUTDOWN_TIMEOUT_MS = 10_000;
65
+ export const WORKSPACE_TUI_DEFAULT_HEIGHT = 28;
66
+ export const WORKSPACE_TUI_DEFAULT_WIDTH = 100;
67
+ export const WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30;
68
+ export const WORKSPACE_TUI_FOOTER_LINE_COUNT = 3;
69
+ export const WORKSPACE_TUI_MIN_LOG_HEIGHT = 3;
70
+ export const WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7;
71
+ export const WORKSPACE_TUI_MIN_TARGET_WIDTH = 8;
72
+ export const WORKSPACE_TUI_MIN_WRAP_WIDTH = 12;
73
+ export const WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3;
74
+ export const WORKSPACE_TUI_RECENT_LOG_LIMIT = 40;
75
+ export const WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16;
76
+ export const WORKSPACE_TUI_STATUS_WIDTH = 10;
77
+ export const WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6;
78
+ export const WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
@@ -0,0 +1,58 @@
1
+ // @bun
2
+ var __require = import.meta.require;
3
+
4
+ // .angular-partial-tmp/src/core/streamingSlotRegistrar.ts
5
+ var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
+ var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
+ var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
8
+ var getRegisteredStreamingSlotRegistrar = () => {
9
+ const value = Reflect.get(globalThis, STREAMING_SLOT_REGISTRAR_KEY);
10
+ if (typeof value === "function" || value === null) {
11
+ return value;
12
+ }
13
+ return;
14
+ };
15
+ var isObjectRecord = (value) => Boolean(value) && typeof value === "object";
16
+ var isStreamingSlotWarningController = (value) => isObjectRecord(value) && ("maybeWarn" in value) && typeof value.maybeWarn === "function";
17
+ var isStreamingSlotCollectionController = (value) => isObjectRecord(value) && ("isCollecting" in value) && typeof value.isCollecting === "function";
18
+ var getWarningController = () => {
19
+ const value = Reflect.get(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY);
20
+ if (value === null || typeof value === "undefined")
21
+ return;
22
+ return isStreamingSlotWarningController(value) ? value : undefined;
23
+ };
24
+ var getCollectionController = () => {
25
+ const value = Reflect.get(globalThis, STREAMING_SLOT_COLLECTION_STORAGE_KEY);
26
+ if (value === null || typeof value === "undefined")
27
+ return;
28
+ return isStreamingSlotCollectionController(value) ? value : undefined;
29
+ };
30
+ var hasRegisteredStreamingSlotRegistrar = () => typeof getRegisteredStreamingSlotRegistrar() === "function";
31
+ var isStreamingSlotCollectionActive = () => getCollectionController()?.isCollecting() === true;
32
+ var registerStreamingSlot = (slot) => {
33
+ getRegisteredStreamingSlotRegistrar()?.(slot);
34
+ };
35
+ var setStreamingSlotCollectionController = (controller) => {
36
+ Reflect.set(globalThis, STREAMING_SLOT_COLLECTION_STORAGE_KEY, controller);
37
+ };
38
+ var setStreamingSlotRegistrar = (nextRegistrar) => {
39
+ Reflect.set(globalThis, STREAMING_SLOT_REGISTRAR_KEY, nextRegistrar);
40
+ };
41
+ var setStreamingSlotWarningController = (controller) => {
42
+ Reflect.set(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY, controller);
43
+ };
44
+ var warnMissingStreamingSlotCollector = (primitiveName) => {
45
+ if (isStreamingSlotCollectionActive()) {
46
+ return;
47
+ }
48
+ getWarningController()?.maybeWarn(primitiveName);
49
+ };
50
+ export {
51
+ warnMissingStreamingSlotCollector,
52
+ setStreamingSlotWarningController,
53
+ setStreamingSlotRegistrar,
54
+ setStreamingSlotCollectionController,
55
+ registerStreamingSlot,
56
+ isStreamingSlotCollectionActive,
57
+ hasRegisteredStreamingSlotRegistrar
58
+ };
@@ -0,0 +1,114 @@
1
+ // @bun
2
+ var __require = import.meta.require;
3
+
4
+ // .angular-partial-tmp/src/core/streamingSlotRegistrar.ts
5
+ var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
+ var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
+ var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
8
+ var getRegisteredStreamingSlotRegistrar = () => {
9
+ const value = Reflect.get(globalThis, STREAMING_SLOT_REGISTRAR_KEY);
10
+ if (typeof value === "function" || value === null) {
11
+ return value;
12
+ }
13
+ return;
14
+ };
15
+ var isObjectRecord = (value) => Boolean(value) && typeof value === "object";
16
+ var isStreamingSlotWarningController = (value) => isObjectRecord(value) && ("maybeWarn" in value) && typeof value.maybeWarn === "function";
17
+ var isStreamingSlotCollectionController = (value) => isObjectRecord(value) && ("isCollecting" in value) && typeof value.isCollecting === "function";
18
+ var getWarningController = () => {
19
+ const value = Reflect.get(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY);
20
+ if (value === null || typeof value === "undefined")
21
+ return;
22
+ return isStreamingSlotWarningController(value) ? value : undefined;
23
+ };
24
+ var getCollectionController = () => {
25
+ const value = Reflect.get(globalThis, STREAMING_SLOT_COLLECTION_STORAGE_KEY);
26
+ if (value === null || typeof value === "undefined")
27
+ return;
28
+ return isStreamingSlotCollectionController(value) ? value : undefined;
29
+ };
30
+ var hasRegisteredStreamingSlotRegistrar = () => typeof getRegisteredStreamingSlotRegistrar() === "function";
31
+ var isStreamingSlotCollectionActive = () => getCollectionController()?.isCollecting() === true;
32
+ var registerStreamingSlot = (slot) => {
33
+ getRegisteredStreamingSlotRegistrar()?.(slot);
34
+ };
35
+ var setStreamingSlotCollectionController = (controller) => {
36
+ Reflect.set(globalThis, STREAMING_SLOT_COLLECTION_STORAGE_KEY, controller);
37
+ };
38
+ var setStreamingSlotRegistrar = (nextRegistrar) => {
39
+ Reflect.set(globalThis, STREAMING_SLOT_REGISTRAR_KEY, nextRegistrar);
40
+ };
41
+ var setStreamingSlotWarningController = (controller) => {
42
+ Reflect.set(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY, controller);
43
+ };
44
+ var warnMissingStreamingSlotCollector = (primitiveName) => {
45
+ if (isStreamingSlotCollectionActive()) {
46
+ return;
47
+ }
48
+ getWarningController()?.maybeWarn(primitiveName);
49
+ };
50
+
51
+ // .angular-partial-tmp/src/core/streamingSlotRegistry.ts
52
+ var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
53
+ var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
54
+ var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
55
+ var getStorageGlobal = () => {
56
+ const value = Reflect.get(globalThis, STREAMING_SLOT_STORAGE_KEY);
57
+ if (value === null || typeof value === "undefined") {
58
+ return value;
59
+ }
60
+ return isAsyncLocalStorage(value) ? value : undefined;
61
+ };
62
+ var isServerRuntime = () => typeof process !== "undefined" && typeof process.versions?.node === "string";
63
+ var ensureAsyncLocalStorage = async () => {
64
+ const storage = getStorageGlobal();
65
+ if (typeof storage !== "undefined") {
66
+ return storage;
67
+ }
68
+ if (!isServerRuntime()) {
69
+ Reflect.set(globalThis, STREAMING_SLOT_STORAGE_KEY, null);
70
+ return getStorageGlobal();
71
+ }
72
+ const mod = await import("async_hooks");
73
+ Reflect.set(globalThis, STREAMING_SLOT_STORAGE_KEY, new mod.AsyncLocalStorage);
74
+ return getStorageGlobal();
75
+ };
76
+ var getActiveSlotStore = () => {
77
+ const storage = getStorageGlobal();
78
+ if (!storage)
79
+ return;
80
+ return storage.getStore();
81
+ };
82
+ var registerStreamingSlot2 = (slot) => {
83
+ const store = getActiveSlotStore();
84
+ if (!store)
85
+ return;
86
+ store.set(slot.id, slot);
87
+ };
88
+ setStreamingSlotRegistrar(registerStreamingSlot2);
89
+ setStreamingSlotCollectionController({
90
+ isCollecting: () => getActiveSlotStore() !== undefined
91
+ });
92
+ var hasActiveStreamingSlotRegistry = () => getActiveSlotStore() !== undefined;
93
+ var runWithStreamingSlotRegistry = async (task) => {
94
+ const storage = await ensureAsyncLocalStorage();
95
+ if (!storage) {
96
+ const slots = [];
97
+ return {
98
+ result: await task(),
99
+ slots
100
+ };
101
+ }
102
+ return storage.run(new Map, async () => {
103
+ const result = await task();
104
+ const store = storage.getStore();
105
+ return {
106
+ result,
107
+ slots: store ? [...store.values()] : []
108
+ };
109
+ });
110
+ };
111
+ export {
112
+ runWithStreamingSlotRegistry,
113
+ hasActiveStreamingSlotRegistry
114
+ };
@@ -0,0 +1,6 @@
1
+ const isObjectRecord = (value) => Boolean(value) && typeof value === 'object';
2
+ export const isAngularDeferSlotPayload = (value) => {
3
+ if (!isObjectRecord(value))
4
+ return false;
5
+ return value.kind === 'angular-defer' && typeof value.html === 'string';
6
+ };
@@ -0,0 +1,44 @@
1
+ import { Directive, TemplateRef, inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DeferErrorTemplateDirective {
4
+ constructor() {
5
+ this.templateRef = inject(TemplateRef);
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DeferErrorTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: DeferErrorTemplateDirective, isStandalone: true, selector: "ng-template[absDeferError]", ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DeferErrorTemplateDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: 'ng-template[absDeferError]',
14
+ standalone: true
15
+ }]
16
+ }] });
17
+ export class DeferFallbackTemplateDirective {
18
+ constructor() {
19
+ this.templateRef = inject(TemplateRef);
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DeferFallbackTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
22
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: DeferFallbackTemplateDirective, isStandalone: true, selector: "ng-template[absDeferFallback]", ngImport: i0 }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DeferFallbackTemplateDirective, decorators: [{
25
+ type: Directive,
26
+ args: [{
27
+ selector: 'ng-template[absDeferFallback]',
28
+ standalone: true
29
+ }]
30
+ }] });
31
+ export class DeferResolvedTemplateDirective {
32
+ constructor() {
33
+ this.templateRef = inject(TemplateRef);
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DeferResolvedTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: DeferResolvedTemplateDirective, isStandalone: true, selector: "ng-template[absDeferResolved]", ngImport: i0 }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DeferResolvedTemplateDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: 'ng-template[absDeferResolved]',
42
+ standalone: true
43
+ }]
44
+ }] });
@@ -0,0 +1,149 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Input, inject, signal } from '@angular/core';
2
+ import { NgTemplateOutlet } from '@angular/common';
3
+ import { isStreamingSlotCollectionActive, registerStreamingSlot, warnMissingStreamingSlotCollector } from './core/streamingSlotRegistrar.js';
4
+ import { isAngularDeferSlotPayload } from './defer-slot-payload.js';
5
+ import { DeferErrorTemplateDirective, DeferFallbackTemplateDirective, DeferResolvedTemplateDirective } from './defer-slot-templates.directive.js';
6
+ import * as i0 from "@angular/core";
7
+ export class DeferSlotComponent {
8
+ constructor() {
9
+ this.cdr = inject(ChangeDetectorRef);
10
+ this.runtimeReady = signal(false, ...(ngDevMode ? [{ debugName: "runtimeReady" }] : /* istanbul ignore next */ []));
11
+ this.serverSlotRegistered = false;
12
+ this.id = '';
13
+ this.slotData = signal({}, ...(ngDevMode ? [{ debugName: "slotData" }] : /* istanbul ignore next */ []));
14
+ this.state = signal('fallback', ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
15
+ this.activeTemplate = () => {
16
+ if (this.state() === 'resolved') {
17
+ return this.resolvedTemplate?.templateRef ?? null;
18
+ }
19
+ if (this.state() === 'error') {
20
+ return (this.errorTemplate?.templateRef ??
21
+ this.fallbackTemplate?.templateRef ??
22
+ null);
23
+ }
24
+ return (this.fallbackTemplate?.templateRef ??
25
+ this.resolvedTemplate?.templateRef ??
26
+ null);
27
+ };
28
+ this.templateContext = () => {
29
+ const slotData = this.slotData();
30
+ return {
31
+ $implicit: slotData,
32
+ slotData
33
+ };
34
+ };
35
+ }
36
+ ngOnInit() {
37
+ const { id } = this;
38
+ if (!id)
39
+ return;
40
+ if (this.registerServerSlot()) {
41
+ return;
42
+ }
43
+ const consumers = (window.__ABS_SLOT_CONSUMERS__ =
44
+ window.__ABS_SLOT_CONSUMERS__ ?? {});
45
+ consumers[id] = (payload) => {
46
+ if (!this.runtimeReady())
47
+ return false;
48
+ this.applyPatchPayload(payload);
49
+ return true;
50
+ };
51
+ }
52
+ ngAfterViewInit() {
53
+ if (this.registerServerSlot())
54
+ return;
55
+ if (typeof window === 'undefined')
56
+ return;
57
+ requestAnimationFrame(() => {
58
+ this.runtimeReady.set(true);
59
+ this.cdr.markForCheck();
60
+ window.__ABS_SLOT_FLUSH__?.();
61
+ });
62
+ }
63
+ ngOnDestroy() {
64
+ if (typeof window === 'undefined')
65
+ return;
66
+ const { id } = this;
67
+ if (!id)
68
+ return;
69
+ delete window.__ABS_SLOT_CONSUMERS__?.[id];
70
+ }
71
+ registerServerSlot() {
72
+ const { id, resolve } = this;
73
+ if (this.serverSlotRegistered || !id || !resolve) {
74
+ return false;
75
+ }
76
+ if (!isStreamingSlotCollectionActive()) {
77
+ warnMissingStreamingSlotCollector('DeferSlot');
78
+ return false;
79
+ }
80
+ registerStreamingSlot({
81
+ id,
82
+ resolve
83
+ });
84
+ this.serverSlotRegistered = true;
85
+ return true;
86
+ }
87
+ applyPatchPayload(payload) {
88
+ if (payload === null || typeof payload === 'undefined')
89
+ return;
90
+ if (isAngularDeferSlotPayload(payload)) {
91
+ const data = payload.data && typeof payload.data === 'object'
92
+ ? payload.data
93
+ : {};
94
+ this.slotData.set(data);
95
+ this.state.set(payload.state === 'error' ? 'error' : 'resolved');
96
+ this.cdr.markForCheck();
97
+ return;
98
+ }
99
+ this.slotData.set({});
100
+ this.state.set(payload === '' ? 'fallback' : 'resolved');
101
+ this.cdr.markForCheck();
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DeferSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: DeferSlotComponent, isStandalone: true, selector: "abs-defer-slot", inputs: { className: "className", id: "id", resolve: "resolve" }, queries: [{ propertyName: "resolvedTemplate", first: true, predicate: DeferResolvedTemplateDirective, descendants: true }, { propertyName: "fallbackTemplate", first: true, predicate: DeferFallbackTemplateDirective, descendants: true }, { propertyName: "errorTemplate", first: true, predicate: DeferErrorTemplateDirective, descendants: true }], ngImport: i0, template: `
105
+ <div [attr.id]="id" [attr.class]="className" data-absolute-slot="true">
106
+ <ng-container
107
+ [ngTemplateOutlet]="activeTemplate()"
108
+ [ngTemplateOutletContext]="templateContext()"
109
+ ></ng-container>
110
+ </div>
111
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
112
+ }
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DeferSlotComponent, decorators: [{
114
+ type: Component,
115
+ args: [{
116
+ changeDetection: ChangeDetectionStrategy.OnPush,
117
+ imports: [
118
+ NgTemplateOutlet,
119
+ DeferResolvedTemplateDirective,
120
+ DeferFallbackTemplateDirective,
121
+ DeferErrorTemplateDirective
122
+ ],
123
+ selector: 'abs-defer-slot',
124
+ standalone: true,
125
+ template: `
126
+ <div [attr.id]="id" [attr.class]="className" data-absolute-slot="true">
127
+ <ng-container
128
+ [ngTemplateOutlet]="activeTemplate()"
129
+ [ngTemplateOutletContext]="templateContext()"
130
+ ></ng-container>
131
+ </div>
132
+ `
133
+ }]
134
+ }], propDecorators: { className: [{
135
+ type: Input
136
+ }], id: [{
137
+ type: Input
138
+ }], resolve: [{
139
+ type: Input
140
+ }], resolvedTemplate: [{
141
+ type: ContentChild,
142
+ args: [DeferResolvedTemplateDirective]
143
+ }], fallbackTemplate: [{
144
+ type: ContentChild,
145
+ args: [DeferFallbackTemplateDirective]
146
+ }], errorTemplate: [{
147
+ type: ContentChild,
148
+ args: [DeferErrorTemplateDirective]
149
+ }] } });
@@ -0,0 +1,202 @@
1
+ import { Component, computed, input, signal } from '@angular/core';
2
+ import { NgStyle } from '@angular/common';
3
+ import { DEFAULT_QUALITY, buildOptimizedUrl, generateBlurSvg, generateSrcSet } from '@absolutejs/absolute/image';
4
+ import * as i0 from "@angular/core";
5
+ /** Resolve the blur background CSS value from placeholder config */
6
+ const resolveBlurBg = (placeholderValue, blurDataUrl) => {
7
+ if (typeof placeholderValue === 'string' &&
8
+ placeholderValue !== 'blur' &&
9
+ placeholderValue.startsWith('data:')) {
10
+ return generateBlurSvg(placeholderValue);
11
+ }
12
+ if (blurDataUrl)
13
+ return generateBlurSvg(blurDataUrl);
14
+ return undefined;
15
+ };
16
+ export class ImageComponent {
17
+ constructor() {
18
+ // ── Inputs ──────────────────────────────────────────────────
19
+ this.alt = input.required(...(ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []));
20
+ this.blurDataURL = input(...(ngDevMode ? [undefined, { debugName: "blurDataURL" }] : /* istanbul ignore next */ []));
21
+ this.className = input(...(ngDevMode ? [undefined, { debugName: "className" }] : /* istanbul ignore next */ []));
22
+ this.crossOrigin = input(...(ngDevMode ? [undefined, { debugName: "crossOrigin" }] : /* istanbul ignore next */ []));
23
+ this.fetchPriority = input(...(ngDevMode ? [undefined, { debugName: "fetchPriority" }] : /* istanbul ignore next */ []));
24
+ this.fill = input(false, ...(ngDevMode ? [{ debugName: "fill" }] : /* istanbul ignore next */ []));
25
+ this.height = input(...(ngDevMode ? [undefined, { debugName: "height" }] : /* istanbul ignore next */ []));
26
+ this.loader = input(...(ngDevMode ? [undefined, { debugName: "loader" }] : /* istanbul ignore next */ []));
27
+ this.loading = input('lazy', ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
28
+ this.onError = input(...(ngDevMode ? [undefined, { debugName: "onError" }] : /* istanbul ignore next */ []));
29
+ this.onLoad = input(...(ngDevMode ? [undefined, { debugName: "onLoad" }] : /* istanbul ignore next */ []));
30
+ this.overrideSrc = input(...(ngDevMode ? [undefined, { debugName: "overrideSrc" }] : /* istanbul ignore next */ []));
31
+ this.placeholder = input('empty', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
32
+ this.priority = input(false, ...(ngDevMode ? [{ debugName: "priority" }] : /* istanbul ignore next */ []));
33
+ this.quality = input(DEFAULT_QUALITY, ...(ngDevMode ? [{ debugName: "quality" }] : /* istanbul ignore next */ []));
34
+ this.referrerPolicy = input(...(ngDevMode ? [undefined, { debugName: "referrerPolicy" }] : /* istanbul ignore next */ []));
35
+ this.sizes = input(...(ngDevMode ? [undefined, { debugName: "sizes" }] : /* istanbul ignore next */ []));
36
+ this.src = input.required(...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
37
+ this.style = input(...(ngDevMode ? [undefined, { debugName: "style" }] : /* istanbul ignore next */ []));
38
+ this.unoptimized = input(false, ...(ngDevMode ? [{ debugName: "unoptimized" }] : /* istanbul ignore next */ []));
39
+ this.width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : /* istanbul ignore next */ []));
40
+ // ── Internal state ──────────────────────────────────────────
41
+ this.blurRemoved = signal(false, ...(ngDevMode ? [{ debugName: "blurRemoved" }] : /* istanbul ignore next */ []));
42
+ // ── Computed ────────────────────────────────────────────────
43
+ this.resolvedSrc = computed(() => {
44
+ const override = this.overrideSrc();
45
+ if (override)
46
+ return override;
47
+ if (this.unoptimized())
48
+ return this.src();
49
+ const loaderFn = this.loader();
50
+ if (loaderFn)
51
+ return loaderFn({
52
+ quality: this.quality(),
53
+ src: this.src(),
54
+ width: this.width() ?? 0
55
+ });
56
+ const currentWidth = this.width();
57
+ if (!currentWidth)
58
+ return buildOptimizedUrl(this.src(), 0, this.quality());
59
+ return buildOptimizedUrl(this.src(), currentWidth, this.quality());
60
+ }, ...(ngDevMode ? [{ debugName: "resolvedSrc" }] : /* istanbul ignore next */ []));
61
+ this.srcSet = computed(() => this.unoptimized()
62
+ ? null
63
+ : (generateSrcSet(this.src(), this.width(), this.sizes(), undefined, this.loader() ?? undefined) ?? null), ...(ngDevMode ? [{ debugName: "srcSet" }] : /* istanbul ignore next */ []));
64
+ this.resolvedSrcSet = computed(() => this.srcSet() ?? null, ...(ngDevMode ? [{ debugName: "resolvedSrcSet" }] : /* istanbul ignore next */ []));
65
+ this.resolvedSizes = computed(() => this.sizes() ?? (this.fill() ? '100vw' : null), ...(ngDevMode ? [{ debugName: "resolvedSizes" }] : /* istanbul ignore next */ []));
66
+ this.resolvedCrossOrigin = computed(() => this.crossOrigin() ?? null, ...(ngDevMode ? [{ debugName: "resolvedCrossOrigin" }] : /* istanbul ignore next */ []));
67
+ this.resolvedReferrerPolicy = computed(() => this.referrerPolicy() ?? null, ...(ngDevMode ? [{ debugName: "resolvedReferrerPolicy" }] : /* istanbul ignore next */ []));
68
+ this.resolvedLoading = computed(() => this.priority() ? 'eager' : this.loading(), ...(ngDevMode ? [{ debugName: "resolvedLoading" }] : /* istanbul ignore next */ []));
69
+ this.resolvedFetchPriority = computed(() => this.priority() ? 'high' : (this.fetchPriority() ?? null), ...(ngDevMode ? [{ debugName: "resolvedFetchPriority" }] : /* istanbul ignore next */ []));
70
+ this.imgStyle = computed(() => {
71
+ const base = {
72
+ ...(this.style() ?? {}),
73
+ color: 'transparent'
74
+ };
75
+ const hasBlur = !this.blurRemoved() &&
76
+ (this.placeholder() === 'blur' ||
77
+ (typeof this.placeholder() === 'string' &&
78
+ this.placeholder() !== 'empty' &&
79
+ (this.placeholder() ?? '').startsWith('data:')));
80
+ const blurValue = hasBlur
81
+ ? resolveBlurBg(this.placeholder(), this.blurDataURL())
82
+ : undefined;
83
+ if (blurValue) {
84
+ base['background-image'] = blurValue;
85
+ base['background-position'] = 'center';
86
+ base['background-repeat'] = 'no-repeat';
87
+ base['background-size'] = 'cover';
88
+ }
89
+ if (this.fill()) {
90
+ base.height = '100%';
91
+ base.inset = '0';
92
+ base['object-fit'] = 'cover';
93
+ base.position = 'absolute';
94
+ base.width = '100%';
95
+ }
96
+ return base;
97
+ }, ...(ngDevMode ? [{ debugName: "imgStyle" }] : /* istanbul ignore next */ []));
98
+ }
99
+ // ── Event handlers ──────────────────────────────────────────
100
+ handleLoad(event) {
101
+ this.blurRemoved.set(true);
102
+ const callback = this.onLoad();
103
+ if (callback)
104
+ callback(event);
105
+ }
106
+ handleError(event) {
107
+ const callback = this.onError();
108
+ if (callback)
109
+ callback(event);
110
+ }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ImageComponent, isStandalone: true, selector: "abs-image", inputs: { alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: true, transformFunction: null }, blurDataURL: { classPropertyName: "blurDataURL", publicName: "blurDataURL", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, crossOrigin: { classPropertyName: "crossOrigin", publicName: "crossOrigin", isSignal: true, isRequired: false, transformFunction: null }, fetchPriority: { classPropertyName: "fetchPriority", publicName: "fetchPriority", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, loader: { classPropertyName: "loader", publicName: "loader", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, onError: { classPropertyName: "onError", publicName: "onError", isSignal: true, isRequired: false, transformFunction: null }, onLoad: { classPropertyName: "onLoad", publicName: "onLoad", isSignal: true, isRequired: false, transformFunction: null }, overrideSrc: { classPropertyName: "overrideSrc", publicName: "overrideSrc", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "priority", isSignal: true, isRequired: false, transformFunction: null }, quality: { classPropertyName: "quality", publicName: "quality", isSignal: true, isRequired: false, transformFunction: null }, referrerPolicy: { classPropertyName: "referrerPolicy", publicName: "referrerPolicy", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, unoptimized: { classPropertyName: "unoptimized", publicName: "unoptimized", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
113
+ @if (fill()) {
114
+ <span
115
+ style="position:relative;overflow:hidden;display:block;width:100%;height:100%"
116
+ >
117
+ <img
118
+ [alt]="alt()"
119
+ [src]="resolvedSrc()"
120
+ [attr.srcset]="resolvedSrcSet()"
121
+ [attr.sizes]="resolvedSizes()"
122
+ [loading]="resolvedLoading()"
123
+ [class]="className()"
124
+ [ngStyle]="imgStyle()"
125
+ [attr.crossorigin]="resolvedCrossOrigin()"
126
+ [attr.referrerpolicy]="resolvedReferrerPolicy()"
127
+ [attr.fetchpriority]="resolvedFetchPriority()"
128
+ decoding="async"
129
+ (load)="handleLoad($event)"
130
+ (error)="handleError($event)"
131
+ />
132
+ </span>
133
+ } @else {
134
+ <img
135
+ [alt]="alt()"
136
+ [src]="resolvedSrc()"
137
+ [attr.srcset]="resolvedSrcSet()"
138
+ [attr.sizes]="resolvedSizes()"
139
+ [width]="width()"
140
+ [height]="height()"
141
+ [loading]="resolvedLoading()"
142
+ [class]="className()"
143
+ [ngStyle]="imgStyle()"
144
+ [attr.crossorigin]="resolvedCrossOrigin()"
145
+ [attr.referrerpolicy]="resolvedReferrerPolicy()"
146
+ [attr.fetchpriority]="resolvedFetchPriority()"
147
+ decoding="async"
148
+ (load)="handleLoad($event)"
149
+ (error)="handleError($event)"
150
+ />
151
+ }
152
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
153
+ }
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ImageComponent, decorators: [{
155
+ type: Component,
156
+ args: [{
157
+ imports: [NgStyle],
158
+ selector: 'abs-image',
159
+ standalone: true,
160
+ template: `
161
+ @if (fill()) {
162
+ <span
163
+ style="position:relative;overflow:hidden;display:block;width:100%;height:100%"
164
+ >
165
+ <img
166
+ [alt]="alt()"
167
+ [src]="resolvedSrc()"
168
+ [attr.srcset]="resolvedSrcSet()"
169
+ [attr.sizes]="resolvedSizes()"
170
+ [loading]="resolvedLoading()"
171
+ [class]="className()"
172
+ [ngStyle]="imgStyle()"
173
+ [attr.crossorigin]="resolvedCrossOrigin()"
174
+ [attr.referrerpolicy]="resolvedReferrerPolicy()"
175
+ [attr.fetchpriority]="resolvedFetchPriority()"
176
+ decoding="async"
177
+ (load)="handleLoad($event)"
178
+ (error)="handleError($event)"
179
+ />
180
+ </span>
181
+ } @else {
182
+ <img
183
+ [alt]="alt()"
184
+ [src]="resolvedSrc()"
185
+ [attr.srcset]="resolvedSrcSet()"
186
+ [attr.sizes]="resolvedSizes()"
187
+ [width]="width()"
188
+ [height]="height()"
189
+ [loading]="resolvedLoading()"
190
+ [class]="className()"
191
+ [ngStyle]="imgStyle()"
192
+ [attr.crossorigin]="resolvedCrossOrigin()"
193
+ [attr.referrerpolicy]="resolvedReferrerPolicy()"
194
+ [attr.fetchpriority]="resolvedFetchPriority()"
195
+ decoding="async"
196
+ (load)="handleLoad($event)"
197
+ (error)="handleError($event)"
198
+ />
199
+ }
200
+ `
201
+ }]
202
+ }], propDecorators: { alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: true }] }], blurDataURL: [{ type: i0.Input, args: [{ isSignal: true, alias: "blurDataURL", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], crossOrigin: [{ type: i0.Input, args: [{ isSignal: true, alias: "crossOrigin", required: false }] }], fetchPriority: [{ type: i0.Input, args: [{ isSignal: true, alias: "fetchPriority", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], loader: [{ type: i0.Input, args: [{ isSignal: true, alias: "loader", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], onError: [{ type: i0.Input, args: [{ isSignal: true, alias: "onError", required: false }] }], onLoad: [{ type: i0.Input, args: [{ isSignal: true, alias: "onLoad", required: false }] }], overrideSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "overrideSrc", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], priority: [{ type: i0.Input, args: [{ isSignal: true, alias: "priority", required: false }] }], quality: [{ type: i0.Input, args: [{ isSignal: true, alias: "quality", required: false }] }], referrerPolicy: [{ type: i0.Input, args: [{ isSignal: true, alias: "referrerPolicy", required: false }] }], sizes: [{ type: i0.Input, args: [{ isSignal: true, alias: "sizes", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: true }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], unoptimized: [{ type: i0.Input, args: [{ isSignal: true, alias: "unoptimized", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });