@myop/angular 0.0.32 → 0.0.34

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 CHANGED
@@ -2,12 +2,13 @@
2
2
 
3
3
  Official Angular bindings for embedding [Myop](https://myop.dev) components in your Angular applications.
4
4
 
5
- Myop components are framework-agnostic UI components that can be updated in real-time without redeploying your application. Build once, embed anywhere, and iterate instantly.
5
+ Myop components are framework-agnostic UI components that can be updated in real-time without redeploying your application. Build once, embed anywhere, and iterate instantly. Perfect for teams that need to ship UI changes fast, A/B test components, or empower non-developers to customize the interface. Myop is also the safest way to adopt AI-generated components in your application—whether created by developers or non-developers—with built-in sandboxing and controlled integration.
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/@myop/angular.svg)](https://www.npmjs.com/package/@myop/angular)
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
9
+ [![Discord](https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord&logoColor=white)](https://myop.dev/discord)
9
10
 
10
- [Website](https://www.myop.dev/) | [Documentation](https://docs.myop.dev/) | [Dashboard](https://dashboard.myop.dev/)
11
+ [Website](https://www.myop.dev/) | [Documentation](https://docs.myop.dev/) | [Dashboard](https://dashboard.myop.dev/) | [Discord](https://myop.dev/discord)
11
12
 
12
13
  ## Installation
13
14
 
@@ -15,8 +16,240 @@ Myop components are framework-agnostic UI components that can be updated in real
15
16
  npm install @myop/angular
16
17
  ```
17
18
 
19
+ ```bash
20
+ yarn add @myop/angular
21
+ ```
22
+
23
+ ```bash
24
+ pnpm add @myop/angular
25
+ ```
26
+
27
+ ## Auto-Generated Angular Components
28
+
29
+ Myop automatically generates a typed Angular component package for every component you create in the [dashboard](https://dashboard.myop.dev/). Install it directly via npm:
30
+
31
+ ```bash
32
+ npm install https://cloud.myop.dev/npm/{component-id}/angular
33
+ ```
34
+
35
+ ### Setup (One-Time Configuration)
36
+
37
+ Add `node_modules/@myop` to your TypeScript compilation in `tsconfig.app.json`:
38
+
39
+ ```json
40
+ {
41
+ "extends": "./tsconfig.json",
42
+ "compilerOptions": {
43
+ "outDir": "./out-tsc/app"
44
+ },
45
+ "include": [
46
+ "src/**/*.d.ts",
47
+ "src/**/*.ts",
48
+ "node_modules/@myop/**/*.ts"
49
+ ]
50
+ }
51
+ ```
52
+
53
+ This allows Angular to compile the auto-generated component packages alongside your application code.
54
+
55
+ ### Usage
56
+
57
+ Import and use the generated component directly. For example, if you created a table component called "users-table" in the dashboard:
58
+
59
+ ```typescript
60
+ import { Component } from "@angular/core";
61
+ import { UsersTableComponent, UsersTableCtaPayloads, CtaEvent } from "@myop/users-table";
62
+
63
+ @Component({
64
+ selector: "app-root",
65
+ standalone: true,
66
+ imports: [UsersTableComponent],
67
+ template: `
68
+ <users-table
69
+ [data]="{ rows: users }"
70
+ (cta)="onCta($event)"
71
+ />
72
+ `,
73
+ })
74
+ export class AppComponent {
75
+ users = [
76
+ { id: 1, name: "Alice", email: "alice@example.com", role: "Admin" },
77
+ { id: 2, name: "Bob", email: "bob@example.com", role: "User" },
78
+ { id: 3, name: "Charlie", email: "charlie@example.com", role: "User" },
79
+ ];
80
+
81
+ onCta(event: CtaEvent<UsersTableCtaPayloads>) {
82
+ switch (event.action) {
83
+ case "rowClicked":
84
+ console.log("Selected user:", event.payload.rowData);
85
+ break;
86
+ case "deleteClicked":
87
+ this.deleteUser(event.payload.userId);
88
+ break;
89
+ case "exportRequested":
90
+ this.exportToFormat(event.payload.format);
91
+ break;
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+ **Why this is powerful:**
98
+
99
+ - **Fully typed** — The generated package includes complete TypeScript types for your component's data interface and all CTA event payloads
100
+ - **Auto loaded** — Components are fetched and rendered automatically, no manual setup required
101
+ - **Not in your code** — The actual component implementation lives on Myop and is loaded at runtime. Update your component in the dashboard and it's instantly live—no rebuild, no redeploy
102
+ - **Zero bundle impact** — The entire `@myop/angular` package costs only ~6KB gzipped—and that's the total cost whether you use 1, 2, or 1,000 components. Auto-generated component packages are just thin typed wrappers. The actual component implementations are loaded at runtime, meaning your Myop components can be as complex, feature-rich, and heavy as you need without adding a single byte to your application bundle. Consider typical bundle costs: a chart library (~60KB), a map component (~200KB), a data grid (~150KB), a rich text editor (~100KB), or a chat widget with emoji picker (~80KB). With Myop, all of these cost ~0KB to your bundle—they load on-demand when needed
103
+
104
+ **Environment options:**
105
+
106
+ Set the default environment for all components using `setEnvironment`:
107
+
108
+ ```typescript
109
+ import { setEnvironment } from "@myop/angular";
110
+
111
+ // Set default environment for all component loads
112
+ setEnvironment("staging");
113
+ ```
114
+
115
+ You can also override the environment directly on a specific component:
116
+
117
+ ```html
118
+ <myop-users-table
119
+ [data]="{ rows: users }"
120
+ [preview]="true"
121
+ environment="staging"
122
+ />
123
+ ```
124
+
125
+ Environments are fully configurable in the [dashboard](https://dashboard.myop.dev/), allowing you to test changes in staging before publishing to production.
126
+
127
+ For more details on auto-generated packages, see the [Auto-Generated Packages documentation](https://docs.myop.dev/docs/learnMyop/AutoGeneratedPackages).
128
+
129
+ ## Requirements
130
+
131
+ - Angular 17.0+
132
+
18
133
  ## Quick Start
19
134
 
135
+ ```typescript
136
+ import { Component } from "@angular/core";
137
+ import { MyopComponent } from "@myop/angular";
138
+
139
+ @Component({
140
+ selector: "app-root",
141
+ standalone: true,
142
+ imports: [MyopComponent],
143
+ template: `
144
+ <myop-component
145
+ [componentId]="'your-component-id'"
146
+ [style]="{ width: '600px', height: '400px' }"
147
+ (action)="onAction($event)"
148
+ />
149
+ `,
150
+ })
151
+ export class AppComponent {
152
+ onAction(event: { action: string; payload: any }) {
153
+ console.log("Action:", event.action, "Payload:", event.payload);
154
+ }
155
+ }
156
+ ```
157
+
158
+ ## Components
159
+
160
+ ### `myop-component`
161
+
162
+ The main component for embedding Myop components.
163
+
164
+ ```typescript
165
+ import { Component } from "@angular/core";
166
+ import { MyopComponent } from "@myop/angular";
167
+
168
+ @Component({
169
+ selector: "app-dashboard",
170
+ standalone: true,
171
+ imports: [MyopComponent],
172
+ template: `
173
+ <myop-component
174
+ [componentId]="'abc123'"
175
+ [data]="{ items: items }"
176
+ (rowClicked)="onRowClicked($event)"
177
+ (load)="onLoad($event)"
178
+ (error)="onError($event)"
179
+ />
180
+ `,
181
+ })
182
+ export class DashboardComponent {
183
+ items = [
184
+ { id: 1, name: "Item 1" },
185
+ { id: 2, name: "Item 2" },
186
+ ];
187
+
188
+ onRowClicked(payload: any) {
189
+ console.log("Row clicked:", payload);
190
+ }
191
+
192
+ onLoad(component: any) {
193
+ console.log("Loaded!", component);
194
+ }
195
+
196
+ onError(error: string) {
197
+ console.error("Error:", error);
198
+ }
199
+ }
200
+ ```
201
+
202
+ #### Inputs
203
+
204
+ | Input | Type | Description |
205
+ |-------|------|-------------|
206
+ | `componentId` | `string` | The ID of the Myop component to load |
207
+ | `data` | `object` | Data to pass to the component via `myop_init_interface` |
208
+ | `style` | `object` | CSS styles for the container |
209
+ | `fadeDuration` | `number` | Loader fade-out duration in ms (default: `200`) |
210
+ | `environment` | `string` | Load from a specific environment (e.g., `"staging"`, `"prod"`) |
211
+ | `preview` | `boolean` | Load the unpublished preview version of the component |
212
+
213
+ #### Outputs
214
+
215
+ | Output | Type | Description |
216
+ |--------|------|-------------|
217
+ | `(action)` | `EventEmitter<{action, payload}>` | Generic handler for all CTA events |
218
+ | `([actionName])` | `EventEmitter<payload>` | Handler for specific actions (e.g., `(rowClicked)`) |
219
+ | `(load)` | `EventEmitter<component>` | Called when the component finishes loading |
220
+ | `(error)` | `EventEmitter<string>` | Called when loading fails |
221
+
222
+ #### Inputs for Loading/Fallback
223
+
224
+ | Input | Type | Description |
225
+ |-------|------|-------------|
226
+ | `loader` | `TemplateRef` | Loading indicator template (default: `null` - no loader). Use `MyopLoader` for default Myop loader |
227
+ | `fallback` | `TemplateRef` | Error fallback template (default: built-in `MyopFallback`). Override with custom template |
228
+
229
+ #### Environments & Preview
230
+
231
+ Myop supports multiple environments, allowing you to test changes before going live:
232
+
233
+ ```html
234
+ <!-- Production (default) -->
235
+ <myop-component [componentId]="'abc123'" />
236
+
237
+ <!-- Load from staging environment -->
238
+ <myop-component [componentId]="'abc123'" environment="staging" />
239
+
240
+ <!-- Load unpublished preview version (for testing before publishing) -->
241
+ <myop-component [componentId]="'abc123'" [preview]="true" />
242
+
243
+ <!-- Combine both: preview version in staging -->
244
+ <myop-component [componentId]="'abc123'" environment="staging" [preview]="true" />
245
+ ```
246
+
247
+ Environments are configured in the [dashboard](https://dashboard.myop.dev/). Use `[preview]="true"` to test unpublished changes before making them live.
248
+
249
+ ### `myop-container` (Legacy)
250
+
251
+ The legacy container component. Use `myop-component` for new projects.
252
+
20
253
  ```typescript
21
254
  import { Component } from "@angular/core";
22
255
  import { MyopContainerComponent } from "@myop/angular";
@@ -27,24 +260,256 @@ import { MyopContainerComponent } from "@myop/angular";
27
260
  imports: [MyopContainerComponent],
28
261
  template: `
29
262
  <myop-container
30
- [componentId]="'your-component-id'"
31
- [inputs]="{ data: myData }"
263
+ [componentId]="'abc123'"
32
264
  (componentReady)="onReady($event)"
33
265
  />
34
266
  `,
35
267
  })
36
268
  export class AppComponent {
37
- myData = { items: [] };
38
-
39
269
  onReady(component: any) {
40
- console.log("Component loaded!", component);
270
+ console.log("Ready!", component);
41
271
  }
42
272
  }
43
273
  ```
44
274
 
45
- ## Requirements
275
+ ## Type-Safe Event Handlers
46
276
 
47
- - Angular 17.0+
277
+ Define your CTA payloads for fully typed event handlers:
278
+
279
+ ```typescript
280
+ import { Component } from "@angular/core";
281
+ import { MyopComponent } from "@myop/angular";
282
+
283
+ // Define your component's data and CTA payload types
284
+ interface MyData {
285
+ items: { id: string; name: string }[];
286
+ }
287
+
288
+ interface RowClickedPayload {
289
+ rowIndex: number;
290
+ rowData: any;
291
+ }
292
+
293
+ interface ItemSelectedPayload {
294
+ itemId: string;
295
+ }
296
+
297
+ interface ExportRequestedPayload {
298
+ format: "csv" | "json";
299
+ }
300
+
301
+ @Component({
302
+ selector: "app-dashboard",
303
+ standalone: true,
304
+ imports: [MyopComponent],
305
+ template: `
306
+ <myop-component
307
+ [componentId]="'dashboard-component'"
308
+ [data]="data"
309
+ (rowClicked)="onRowClicked($event)"
310
+ (itemSelected)="onItemSelected($event)"
311
+ (action)="onAction($event)"
312
+ />
313
+ `,
314
+ })
315
+ export class DashboardComponent {
316
+ data: MyData = {
317
+ items: [
318
+ { id: "1", name: "Item 1" },
319
+ { id: "2", name: "Item 2" },
320
+ ],
321
+ };
322
+
323
+ onRowClicked(payload: RowClickedPayload) {
324
+ console.log("Row clicked:", payload.rowIndex);
325
+ }
326
+
327
+ onItemSelected(payload: ItemSelectedPayload) {
328
+ console.log("Item selected:", payload.itemId);
329
+ }
330
+
331
+ onAction(event: { action: string; payload: any }) {
332
+ console.log(event.action, event.payload);
333
+ }
334
+ }
335
+ ```
336
+
337
+ ## Configuration
338
+
339
+ ### Preloading Components
340
+
341
+ Preload components for faster rendering:
342
+
343
+ ```typescript
344
+ import { preloadComponents, isPreloaded } from "@myop/angular";
345
+
346
+ // Preload multiple components
347
+ await preloadComponents(["component-1", "component-2"]);
348
+
349
+ // Check if a component is preloaded
350
+ if (isPreloaded("component-1")) {
351
+ console.log("Component is cached and ready");
352
+ }
353
+ ```
354
+
355
+ ### Custom Repository URL
356
+
357
+ ```typescript
358
+ import { setCloudRepositoryUrl } from "@myop/angular";
359
+
360
+ // Point to a custom Myop server
361
+ setCloudRepositoryUrl("https://your-custom-server.com");
362
+ ```
363
+
364
+ ### Environment Configuration
365
+
366
+ ```typescript
367
+ import { setEnvironment } from "@myop/angular";
368
+
369
+ // Set default environment for all component loads
370
+ setEnvironment("staging");
371
+ ```
372
+
373
+ ### Local Development
374
+
375
+ ```typescript
376
+ import { enableLocalDev } from "@myop/angular";
377
+
378
+ // Connect to local Myop development server (localhost:9292)
379
+ enableLocalDev();
380
+ ```
381
+
382
+ ### Advanced: Custom Repository
383
+
384
+ ```typescript
385
+ import { setCloudRepository, getCloudRepository } from "@myop/angular";
386
+ import { CloudRepository } from "@myop/sdk/helpers";
387
+
388
+ // Set a custom CloudRepository instance
389
+ const customRepo = new CloudRepository("https://custom-url.com");
390
+ setCloudRepository(customRepo);
391
+
392
+ // Get the current repository
393
+ const repo = getCloudRepository();
394
+ ```
395
+
396
+ ## Loading & Error States
397
+
398
+ By default, no loader is shown while the component loads. The Myop-branded fallback is displayed automatically on error.
399
+
400
+ ### Using the Default Myop Loader
401
+
402
+ ```typescript
403
+ import { Component } from "@angular/core";
404
+ import { MyopComponent, MyopLoader } from "@myop/angular";
405
+
406
+ @Component({
407
+ selector: "app-example",
408
+ standalone: true,
409
+ imports: [MyopComponent, MyopLoader],
410
+ template: `
411
+ <myop-component [componentId]="'my-component'" [loader]="loaderTpl" [fadeDuration]="300">
412
+ </myop-component>
413
+
414
+ <ng-template #loaderTpl>
415
+ <myop-loader></myop-loader>
416
+ </ng-template>
417
+ `,
418
+ })
419
+ export class ExampleComponent {}
420
+ ```
421
+
422
+ ### Custom Loading State
423
+
424
+ ```typescript
425
+ @Component({
426
+ selector: "app-example",
427
+ standalone: true,
428
+ imports: [MyopComponent],
429
+ template: `
430
+ <myop-component [componentId]="'my-component'" [loader]="loaderTpl" [fadeDuration]="300">
431
+ </myop-component>
432
+
433
+ <ng-template #loaderTpl>
434
+ <div class="custom-loader">
435
+ <app-spinner />
436
+ <p>Loading component...</p>
437
+ </div>
438
+ </ng-template>
439
+ `,
440
+ })
441
+ export class ExampleComponent {}
442
+ ```
443
+
444
+ ### Custom Error Fallback
445
+
446
+ ```typescript
447
+ import { Component } from "@angular/core";
448
+ import { MyopComponent, MyopFallback } from "@myop/angular";
449
+
450
+ @Component({
451
+ selector: "app-example",
452
+ standalone: true,
453
+ imports: [MyopComponent, MyopFallback],
454
+ template: `
455
+ <myop-component [componentId]="'my-component'" [fallback]="fallbackTpl">
456
+ </myop-component>
457
+
458
+ <!-- Custom fallback -->
459
+ <ng-template #fallbackTpl>
460
+ <div class="error-state">
461
+ <p>Failed to load component</p>
462
+ <button (click)="retry()">Retry</button>
463
+ </div>
464
+ </ng-template>
465
+
466
+ <!-- Or use default Myop fallback explicitly -->
467
+ <ng-template #myopFallbackTpl>
468
+ <myop-fallback></myop-fallback>
469
+ </ng-template>
470
+ `,
471
+ })
472
+ export class ExampleComponent {
473
+ retry() {
474
+ window.location.reload();
475
+ }
476
+ }
477
+ ```
478
+
479
+ ## Using in NgModules
480
+
481
+ If you're not using standalone components, import in your module:
482
+
483
+ ```typescript
484
+ import { NgModule } from "@angular/core";
485
+ import { BrowserModule } from "@angular/platform-browser";
486
+ import { MyopComponent } from "@myop/angular";
487
+ import { AppComponent } from "./app.component";
488
+
489
+ @NgModule({
490
+ declarations: [AppComponent],
491
+ imports: [BrowserModule, MyopComponent],
492
+ bootstrap: [AppComponent],
493
+ })
494
+ export class AppModule {}
495
+ ```
496
+
497
+ ## API Reference
498
+
499
+ ### Exports
500
+
501
+ | Export | Description |
502
+ |--------|-------------|
503
+ | `MyopComponent` | Main component for embedding Myop components |
504
+ | `MyopLoader` / `MyopLoaderComponent` | Default Myop-branded loading indicator (opt-in) |
505
+ | `MyopFallback` / `MyopFallbackComponent` | Default Myop-branded error fallback |
506
+ | `preloadComponents` | Preload components for faster rendering |
507
+ | `isPreloaded` | Check if a component is cached |
508
+ | `enableLocalDev` | Enable local development mode |
509
+ | `setCloudRepositoryUrl` | Set custom server URL |
510
+ | `setCloudRepository` | Set custom CloudRepository instance |
511
+ | `getCloudRepository` | Get current CloudRepository instance |
512
+ | `setEnvironment` | Set default environment |
48
513
 
49
514
  ## License
50
515
 
@@ -65,7 +65,7 @@ class MyopComponentV2 {
65
65
  componentConfig;
66
66
  data;
67
67
  fadeDuration = 200;
68
- autoSize = false;
68
+ autoSize = true;
69
69
  environment;
70
70
  preview;
71
71
  on;
@@ -88,6 +88,7 @@ class MyopComponentV2 {
88
88
  showFallback = false;
89
89
  isComponentLoaded = false;
90
90
  autoSizeResult;
91
+ sizeMode = { fillWidth: false, fillHeight: false };
91
92
  // Logo path for template
92
93
  logoPath = MYOP_LOGO_PATH$2;
93
94
  // Private state
@@ -202,13 +203,21 @@ class MyopComponentV2 {
202
203
  return;
203
204
  }
204
205
  this.isComponentLoaded = true;
205
- // For non-autoSize mode, hide loader immediately
206
- if (!this.autoSize) {
206
+ // Read sizeMeta (parsed from <meta name="myop:size"> before iframe creation)
207
+ const sm = this.myopComponent?.sizeMeta;
208
+ const isFillWidth = sm?.width === "100%";
209
+ const isFillHeight = sm?.height === "100%";
210
+ this.sizeMode = { fillWidth: isFillWidth, fillHeight: isFillHeight };
211
+ // hideLoader strategy:
212
+ // - autoSize=false → hide immediately (fill-parent mode, no auto-sizing)
213
+ // - fill mode (both dims explicit via sizeMeta) → hide immediately
214
+ // - content mode → hideLoader is called after first auto-size measurement
215
+ const bothDimsExplicit = isFillWidth && isFillHeight;
216
+ if (!this.autoSize || bothDimsExplicit) {
207
217
  this.hideLoader();
208
218
  }
209
- else {
210
- this.setupAutoSize();
211
- }
219
+ // Always setup auto-size (SDK handles fill vs content mode)
220
+ this.setupAutoSize();
212
221
  // Setup CTA handler
213
222
  if (this.myopComponent?.props) {
214
223
  this.myopComponent.props.myop_cta_handler = (action, payload) => {
@@ -257,6 +266,7 @@ class MyopComponentV2 {
257
266
  }
258
267
  let isFirstMeasurement = true;
259
268
  this.autoSizeCleanup = this.myopComponent.observeAutoSize({
269
+ // SDK resolves: host props → sizeMeta → defaults (width: "100%", height: auto-size)
260
270
  explicitWidth: undefined,
261
271
  explicitHeight: undefined,
262
272
  forceAutoSize: this.autoSize,
@@ -291,31 +301,48 @@ class MyopComponentV2 {
291
301
  this.cdr.markForCheck();
292
302
  }
293
303
  // Computed styles
294
- get shouldAutoSize() {
295
- return !!(this.autoSizeResult?.autoSizingWidth ||
296
- this.autoSizeResult?.autoSizingHeight);
297
- }
298
304
  get loaderMinHeight() {
299
305
  return this.showLoader ? "50px" : undefined;
300
306
  }
307
+ get isFillMode() {
308
+ return !this.autoSize || !this.isComponentLoaded || this.sizeMode.fillHeight;
309
+ }
301
310
  get outerStyle() {
311
+ if (this.isFillMode) {
312
+ // Fill mode: component fills parent container
313
+ return {
314
+ position: "relative",
315
+ width: "100%",
316
+ height: "100%",
317
+ minHeight: this.loaderMinHeight || "",
318
+ };
319
+ }
320
+ // Content mode (default): component grows with content
302
321
  return {
303
322
  position: "relative",
304
323
  width: this.autoSizeResult?.autoSizingWidth
305
324
  ? `${this.autoSizeResult.width}px`
306
325
  : "100%",
307
- height: this.autoSizeResult?.autoSizingHeight
326
+ height: this.autoSizeResult?.height
308
327
  ? `${this.autoSizeResult.height}px`
309
- : "100%",
328
+ : "",
310
329
  minHeight: this.loaderMinHeight || "",
311
- overflow: this.shouldAutoSize ? "hidden" : "inherit",
312
330
  };
313
331
  }
314
332
  get innerStyle() {
333
+ if (this.isFillMode) {
334
+ // Fill mode: absolute positioning to fill parent
335
+ return {
336
+ position: "absolute",
337
+ inset: "0",
338
+ };
339
+ }
340
+ // Content mode: flow layout, height from auto-size
315
341
  return {
316
- position: "absolute",
317
- inset: "0",
318
- overflow: this.shouldAutoSize ? "hidden" : "",
342
+ width: "100%",
343
+ height: this.autoSizeResult?.height
344
+ ? `${this.autoSizeResult.height}px`
345
+ : "",
319
346
  };
320
347
  }
321
348
  // Loader styles using SDK gradient
@@ -1 +1 @@
1
- {"version":3,"file":"myop-angular.mjs","sources":["../../../projects/components/src/config.ts","../../../projects/components/src/lib/myop.component.ts","../../../projects/components/src/lib/myop-loader.component.ts","../../../projects/components/src/lib/myop-fallback.component.ts","../../../projects/components/src/public-api.ts","../../../projects/components/src/myop-angular.ts"],"sourcesContent":["import { CloudRepository } from \"@myop/sdk/helpers\";\n\nlet _cloudRepository = CloudRepository.Main;\n\n/**\n * Get the current CloudRepository instance\n */\nexport const getCloudRepository = () => _cloudRepository;\n\n/**\n * Check if a component is already preloaded/cached\n * If env/preview not provided, checks if ANY version is preloaded\n */\nexport const isPreloaded = (\n componentId: string,\n env?: string,\n preview?: boolean\n): boolean => {\n return _cloudRepository.isPreloaded(componentId, env, preview);\n};\n\n/**\n * Get the preloaded params for a component\n */\nexport const getPreloadedParams = (componentId: string) => {\n return _cloudRepository.getPreloadedParams(componentId);\n};\n\n/**\n * Enable local development mode\n */\nexport const enableLocalDev = () => {\n _cloudRepository = new CloudRepository(\"http://localhost:9292\");\n};\n\n/**\n * Set a custom CloudRepository URL\n */\nexport const setCloudRepositoryUrl = (url: string) => {\n _cloudRepository = new CloudRepository(url);\n};\n\n/**\n * Set a custom CloudRepository instance\n */\nexport const setCloudRepository = (repository: CloudRepository) => {\n _cloudRepository = repository;\n};\n\n/**\n * Set the default environment for component loading\n */\nexport const setEnvironment = (env: string) => {\n _cloudRepository.setEnvironment(env);\n};\n\n/**\n * Preload components for faster rendering.\n * Continues even if some components fail to load.\n */\nexport const preloadComponents = async (\n ids: string[],\n env?: string,\n preview?: boolean\n) => {\n return Promise.allSettled(\n ids.map((id) => _cloudRepository.fetchComponentV2(id, env, preview))\n );\n};\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n TemplateRef,\n ContentChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n NgZone,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport {\n hostSDK,\n type IMyopComponent,\n LOADER_GRADIENT,\n FALLBACK_GRADIENT,\n} from \"@myop/sdk/host\";\nimport { getCloudRepository, isPreloaded } from \"../config\";\n\n// Myop Logo SVG path (shared with SDK)\nconst MYOP_LOGO_PATH =\n \"M151.438 2.7168C177.625 2.76042 248.179 4.2832 300.4 56.7441C350.671 107.245 364.44 114.452 389.967 119.211C392.576 119.436 397.472 119.394 400.802 116.521C403.011 114.614 403.921 109.518 404.265 104.627V5.95996C404.265 4.85556 405.16 3.96023 406.265 3.95996H522.711C523.815 3.95996 524.711 4.85539 524.711 5.95996V122.405C524.711 123.51 523.815 124.405 522.711 124.405H421.998C418.579 124.728 413.852 125.627 410.974 128.095C407.879 130.748 407.042 137.805 406.845 142.661V240.414C406.845 241.436 406.111 242.292 405.093 242.38C366.548 245.717 277.079 228.462 235.837 173.668C202.909 129.919 173.882 122.474 151.458 122.077C150.354 122.058 149.459 121.164 149.459 120.06V4.71582C149.459 3.6114 150.334 2.71519 151.438 2.7168ZM62.2031 0C96.5566 0.000213148 124.405 27.8496 124.405 62.2031C124.405 96.5564 96.5564 124.405 62.2031 124.405C27.8496 124.405 0.000213175 96.5566 0 62.2031C0 27.8495 27.8495 0 62.2031 0Z\";\n\nexport interface IComponentInstanceConfig {\n id: string;\n componentId: string;\n componentName: string;\n skinSelector: { [key: string]: any };\n nestedComponents?: IComponentInstanceConfig[];\n resolvedExperiences?: { [key: string]: any }[];\n resolvedNestedComponents?: { [key: string]: any }[];\n [key: string]: any;\n}\n\nexport interface SizeInfo {\n width: number;\n height: number;\n autoSizingWidth: boolean;\n autoSizingHeight: boolean;\n}\n\nexport interface CtaEvent<TCtaPayloads extends Record<string, any> = Record<string, any>> {\n action: keyof TCtaPayloads | string;\n payload: TCtaPayloads[keyof TCtaPayloads] | any;\n}\n\n/**\n * Converts kebab-case string to PascalCase\n * e.g., 'column-reordered' -> 'ColumnReordered'\n */\nexport type KebabToPascal<S extends string> =\n S extends `${infer First}-${infer Rest}`\n ? `${Capitalize<First>}${KebabToPascal<Rest>}`\n : Capitalize<S>;\n\n/**\n * Generates typed event handler props from CTA payloads.\n * e.g., `{ 'row-clicked': { rowIndex: number } }` -> `{ onRowClicked?: (payload: { rowIndex: number }) => void }`\n */\nexport type EventHandlerProps<TPayloads extends Record<string, any>> =\n string extends keyof TPayloads\n ? {}\n : {\n [K in keyof TPayloads as `on${KebabToPascal<K & string>}`]?: (\n payload: TPayloads[K]\n ) => void;\n };\n\n/**\n * Type for the `on` callback prop.\n */\ntype OnCallback<TPayloads extends Record<string, any>> =\n string extends keyof TPayloads\n ? (action: string, payload: any) => void\n : <K extends keyof TPayloads>(action: K, payload: TPayloads[K]) => void;\n\n/**\n * Typed props interface for accessing component.props with autocomplete.\n * Contains myop_init_interface and myop_cta_handler with proper types.\n */\nexport interface IMyopComponentProps<\n TData = any,\n TCtaPayloads extends Record<string, any> = Record<string, any>\n> {\n /** Initialize the component with data */\n myop_init_interface?: (data: TData) => void;\n /** Handle CTA events from the component */\n myop_cta_handler?: <K extends keyof TCtaPayloads>(action: K, payload: TCtaPayloads[K]) => void;\n}\n\n/**\n * Typed Myop component interface with typed props.\n * Use this type for the component returned in load event.\n */\nexport type ITypedMyopComponent<\n TData = any,\n TCtaPayloads extends Record<string, any> = Record<string, any>\n> = Omit<IMyopComponent, 'props'> & {\n /** Typed props for the component */\n props: IMyopComponentProps<TData, TCtaPayloads> | null;\n};\n\n/**\n * Base props interface for MyopComponent\n */\ninterface IBaseProps<\n TData = any,\n TCtaPayloads extends Record<string, any> = Record<string, any>\n> {\n componentId?: string;\n componentConfig?: IComponentInstanceConfig;\n data?: TData;\n fadeDuration?: number;\n autoSize?: boolean;\n environment?: string;\n preview?: boolean;\n on?: OnCallback<TCtaPayloads>;\n}\n\n/**\n * Full props type including generated event handlers.\n * Supports both generic `on` callback and individual typed handlers like `onRowClicked`.\n */\nexport type IPropTypes<\n TData = any,\n TCtaPayloads extends Record<string, any> = Record<string, any>\n> = IBaseProps<TData, TCtaPayloads> & EventHandlerProps<TCtaPayloads>;\n\n@Component({\n selector: \"myop-component\",\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [ngStyle]=\"outerStyle\">\n <div #myopContainer [ngStyle]=\"innerStyle\"></div>\n @if (showLoader && resolvedLoader) {\n <div [ngStyle]=\"loaderContainerStyle\">\n <ng-container *ngTemplateOutlet=\"resolvedLoader\"></ng-container>\n </div>\n }\n @if (showFallback) {\n @if (resolvedFallback) {\n <div [ngStyle]=\"fallbackContainerStyle\">\n <ng-container *ngTemplateOutlet=\"resolvedFallback\"></ng-container>\n </div>\n } @else {\n <div [ngStyle]=\"fallbackStyle\">\n <svg\n width=\"80\"\n viewBox=\"0 0 525 243\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path [attr.d]=\"logoPath\" fill=\"white\" />\n </svg>\n </div>\n }\n }\n </div>\n `,\n})\nexport class MyopComponentV2<TData = any, TCtaPayloads extends Record<string, any> = Record<string, any>>\n implements OnInit, OnChanges, OnDestroy\n{\n // Inputs\n @Input() componentId?: string;\n @Input() componentConfig?: IComponentInstanceConfig;\n @Input() data?: TData;\n @Input() fadeDuration: number = 200;\n @Input() autoSize: boolean = false;\n @Input() environment?: string;\n @Input() preview?: boolean;\n @Input() on?: (action: string, payload: any) => void;\n\n // Outputs\n @Output() load = new EventEmitter<ITypedMyopComponent<TData, TCtaPayloads>>();\n @Output() error = new EventEmitter<string>();\n @Output() sizeChange = new EventEmitter<SizeInfo>();\n @Output() cta = new EventEmitter<CtaEvent<TCtaPayloads>>();\n\n // View refs\n @ViewChild(\"myopContainer\", { static: true })\n myopContainer!: ElementRef<HTMLDivElement>;\n\n // Content projection refs (for ng-template approach)\n @ContentChild(\"loader\") customLoader?: TemplateRef<any>;\n @ContentChild(\"fallback\") customFallback?: TemplateRef<any>;\n\n // Input refs (for component approach - e.g., [loader]=\"loaderTemplate\")\n @Input() loader?: TemplateRef<any>;\n @Input() fallback?: TemplateRef<any>;\n\n // Internal state\n showLoader: boolean = true;\n loaderOpacity: number = 1;\n showFallback: boolean = false;\n isComponentLoaded: boolean = false;\n autoSizeResult?: SizeInfo;\n\n // Logo path for template\n readonly logoPath = MYOP_LOGO_PATH;\n\n // Private state\n private myopComponent: IMyopComponent | null = null;\n private isLoading: boolean = false;\n private pendingLoad: boolean = false;\n private autoSizeCleanup: (() => void) | null = null;\n private isCancelled: boolean = false;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\n // Check if preloaded to skip loader\n if (this.componentId && isPreloaded(this.componentId)) {\n this.showLoader = false;\n }\n\n if (this.componentId || this.componentConfig) {\n this.renderComponent();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Handle componentId change - reload component\n if (changes[\"componentId\"] && !changes[\"componentId\"].firstChange) {\n this.reloadComponent();\n }\n\n // Handle data change - call myop_init_interface\n if (changes[\"data\"] && !changes[\"data\"].firstChange) {\n this.updateData(changes[\"data\"].currentValue);\n }\n }\n\n ngOnDestroy(): void {\n this.isCancelled = true;\n this.cleanup();\n }\n\n private cleanup(): void {\n if (this.autoSizeCleanup) {\n this.autoSizeCleanup();\n this.autoSizeCleanup = null;\n }\n if (this.myopComponent) {\n this.myopComponent.dispose();\n this.myopComponent = null;\n }\n }\n\n private async reloadComponent(): Promise<void> {\n // Reset state\n this.isComponentLoaded = false;\n this.showFallback = false;\n this.showLoader = true;\n this.loaderOpacity = 1;\n\n // Cleanup old component\n this.cleanup();\n\n if (this.isLoading) {\n this.pendingLoad = true;\n } else {\n await this.renderComponent();\n }\n\n this.cdr.markForCheck();\n }\n\n private async renderComponent(): Promise<void> {\n this.isLoading = true;\n this.isCancelled = false;\n\n try {\n if (!this.componentId && !this.componentConfig) {\n this.handleError(\"No component configuration provided\");\n return;\n }\n\n // Only pass preview if explicitly true (Angular may default undefined to falsy)\n const previewParam = this.preview === true ? true : undefined;\n\n const componentConfig = (this.componentConfig\n ? this.componentConfig\n : await getCloudRepository().fetchComponentV2(\n this.componentId!,\n this.environment,\n previewParam\n )) as any;\n\n if (this.isCancelled) return;\n\n if (!this.myopContainer?.nativeElement) {\n this.handleError(\"Container element not found\");\n return;\n }\n\n const loadedComponent = await hostSDK.loadComponent(\n componentConfig,\n this.myopContainer.nativeElement,\n {\n data: this.data,\n _environment: {\n props: {\n componentId: this.componentId,\n data: this.data,\n environment: this.environment,\n preview: this.preview,\n autoSize: this.autoSize,\n },\n },\n }\n );\n\n if (this.isCancelled) {\n loadedComponent.dispose();\n return;\n }\n\n this.myopComponent = loadedComponent;\n\n // Wait for component to be fully initiated\n await this.myopComponent.initiated();\n\n if (this.isCancelled) {\n this.myopComponent?.dispose();\n return;\n }\n\n // Wait for browser paint\n await new Promise((resolve) => requestAnimationFrame(resolve));\n\n if (\n this.isCancelled ||\n !this.myopComponent ||\n this.myopComponent.markedForDisposed\n ) {\n if (this.myopComponent && !this.myopComponent.markedForDisposed) {\n this.myopComponent.dispose();\n }\n return;\n }\n\n this.isComponentLoaded = true;\n\n // For non-autoSize mode, hide loader immediately\n if (!this.autoSize) {\n this.hideLoader();\n } else {\n this.setupAutoSize();\n }\n\n // Setup CTA handler\n if (this.myopComponent?.props) {\n this.myopComponent.props.myop_cta_handler = (\n action: string,\n payload?: any\n ) => {\n // Run in Angular zone to trigger change detection\n this.ngZone.run(() => {\n // Call generic `on` handler if provided\n if (this.on) {\n this.on(action, payload);\n }\n\n this.cta.emit({ action, payload });\n });\n };\n }\n\n this.ngZone.run(() => {\n this.load.emit(this.myopComponent!);\n this.cdr.markForCheck();\n });\n } catch (err: any) {\n if (!this.isCancelled) {\n this.handleError(err?.message || \"Unknown error\");\n }\n } finally {\n this.isLoading = false;\n\n // Handle pending load\n if (this.pendingLoad && !this.isCancelled) {\n this.pendingLoad = false;\n await this.renderComponent();\n }\n }\n }\n\n private updateData(newData: TData): void {\n if (!this.isComponentLoaded || !this.myopComponent) {\n return;\n }\n\n // Call myop_init_interface to update the component with new data\n const initInterface = this.myopComponent.props?.myop_init_interface;\n if (initInterface) {\n initInterface(newData);\n }\n }\n\n private setupAutoSize(): void {\n if (!this.isComponentLoaded || !this.myopComponent?.observeAutoSize) {\n return;\n }\n\n let isFirstMeasurement = true;\n\n this.autoSizeCleanup = this.myopComponent.observeAutoSize({\n explicitWidth: undefined,\n explicitHeight: undefined,\n forceAutoSize: this.autoSize,\n loaderMinHeight: 50,\n onSizeChange: (result: SizeInfo) => {\n this.ngZone.run(() => {\n this.sizeChange.emit(result);\n this.autoSizeResult = result;\n\n // Hide loader after first measurement\n if (isFirstMeasurement) {\n isFirstMeasurement = false;\n this.hideLoader();\n }\n\n this.cdr.markForCheck();\n });\n },\n });\n }\n\n private hideLoader(): void {\n this.loaderOpacity = 0;\n this.cdr.markForCheck();\n\n setTimeout(() => {\n this.showLoader = false;\n this.cdr.markForCheck();\n }, this.fadeDuration);\n }\n\n private handleError(errorMsg: string): void {\n console.error(\"[MyopComponent] Error:\", errorMsg);\n this.hideLoader();\n this.showFallback = true;\n this.error.emit(errorMsg);\n this.cdr.markForCheck();\n }\n\n // Computed styles\n get shouldAutoSize(): boolean {\n return !!(\n this.autoSizeResult?.autoSizingWidth ||\n this.autoSizeResult?.autoSizingHeight\n );\n }\n\n get loaderMinHeight(): string | undefined {\n return this.showLoader ? \"50px\" : undefined;\n }\n\n get outerStyle(): { [key: string]: string } {\n return {\n position: \"relative\",\n width: this.autoSizeResult?.autoSizingWidth\n ? `${this.autoSizeResult.width}px`\n : \"100%\",\n height: this.autoSizeResult?.autoSizingHeight\n ? `${this.autoSizeResult.height}px`\n : \"100%\",\n minHeight: this.loaderMinHeight || \"\",\n overflow: this.shouldAutoSize ? \"hidden\" : \"inherit\",\n };\n }\n\n get innerStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n inset: \"0\",\n overflow: this.shouldAutoSize ? \"hidden\" : \"\",\n };\n }\n\n // Loader styles using SDK gradient\n get loaderStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n zIndex: \"1\",\n background: LOADER_GRADIENT,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n opacity: String(this.loaderOpacity),\n transition: `opacity ${this.fadeDuration}ms ease-out`,\n };\n }\n\n // Fallback styles using SDK gradient (kept for backwards compatibility)\n get fallbackStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n background: FALLBACK_GRADIENT,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n };\n }\n\n // Resolved loader template (input takes precedence over content projection)\n get resolvedLoader(): TemplateRef<any> | undefined {\n return this.loader || this.customLoader;\n }\n\n // Resolved fallback template (input takes precedence over content projection)\n get resolvedFallback(): TemplateRef<any> | undefined {\n return this.fallback || this.customFallback;\n }\n\n // Container style for loader (no background - let the template handle styling)\n get loaderContainerStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n zIndex: \"1\",\n opacity: String(this.loaderOpacity),\n transition: `opacity ${this.fadeDuration}ms ease-out`,\n };\n }\n\n // Container style for fallback (no background - let the template handle styling)\n get fallbackContainerStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n };\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { LOADER_GRADIENT } from \"@myop/sdk/host\";\n\n// Myop Logo SVG path\nconst MYOP_LOGO_PATH =\n \"M151.438 2.7168C177.625 2.76042 248.179 4.2832 300.4 56.7441C350.671 107.245 364.44 114.452 389.967 119.211C392.576 119.436 397.472 119.394 400.802 116.521C403.011 114.614 403.921 109.518 404.265 104.627V5.95996C404.265 4.85556 405.16 3.96023 406.265 3.95996H522.711C523.815 3.95996 524.711 4.85539 524.711 5.95996V122.405C524.711 123.51 523.815 124.405 522.711 124.405H421.998C418.579 124.728 413.852 125.627 410.974 128.095C407.879 130.748 407.042 137.805 406.845 142.661V240.414C406.845 241.436 406.111 242.292 405.093 242.38C366.548 245.717 277.079 228.462 235.837 173.668C202.909 129.919 173.882 122.474 151.458 122.077C150.354 122.058 149.459 121.164 149.459 120.06V4.71582C149.459 3.6114 150.334 2.71519 151.438 2.7168ZM62.2031 0C96.5566 0.000213148 124.405 27.8496 124.405 62.2031C124.405 96.5564 96.5564 124.405 62.2031 124.405C27.8496 124.405 0.000213175 96.5566 0 62.2031C0 27.8495 27.8495 0 62.2031 0Z\";\n\n@Component({\n selector: \"myop-loader\",\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [ngStyle]=\"loaderStyle\">\n <svg\n width=\"80\"\n viewBox=\"0 0 525 243\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path [attr.d]=\"logoPath\" fill=\"white\" />\n </svg>\n </div>\n `,\n})\nexport class MyopLoaderComponent {\n readonly logoPath = MYOP_LOGO_PATH;\n\n get loaderStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n background: LOADER_GRADIENT,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n };\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FALLBACK_GRADIENT } from \"@myop/sdk/host\";\n\n// Myop Logo SVG path\nconst MYOP_LOGO_PATH =\n \"M151.438 2.7168C177.625 2.76042 248.179 4.2832 300.4 56.7441C350.671 107.245 364.44 114.452 389.967 119.211C392.576 119.436 397.472 119.394 400.802 116.521C403.011 114.614 403.921 109.518 404.265 104.627V5.95996C404.265 4.85556 405.16 3.96023 406.265 3.95996H522.711C523.815 3.95996 524.711 4.85539 524.711 5.95996V122.405C524.711 123.51 523.815 124.405 522.711 124.405H421.998C418.579 124.728 413.852 125.627 410.974 128.095C407.879 130.748 407.042 137.805 406.845 142.661V240.414C406.845 241.436 406.111 242.292 405.093 242.38C366.548 245.717 277.079 228.462 235.837 173.668C202.909 129.919 173.882 122.474 151.458 122.077C150.354 122.058 149.459 121.164 149.459 120.06V4.71582C149.459 3.6114 150.334 2.71519 151.438 2.7168ZM62.2031 0C96.5566 0.000213148 124.405 27.8496 124.405 62.2031C124.405 96.5564 96.5564 124.405 62.2031 124.405C27.8496 124.405 0.000213175 96.5566 0 62.2031C0 27.8495 27.8495 0 62.2031 0Z\";\n\n@Component({\n selector: \"myop-fallback\",\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [ngStyle]=\"fallbackStyle\">\n <svg\n width=\"80\"\n viewBox=\"0 0 525 243\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path [attr.d]=\"logoPath\" fill=\"white\" />\n </svg>\n </div>\n `,\n})\nexport class MyopFallbackComponent {\n readonly logoPath = MYOP_LOGO_PATH;\n\n get fallbackStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n background: FALLBACK_GRADIENT,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n };\n }\n}\n","/*\n * Public API Surface of @myop/angular\n */\n\n// Main component\nexport { MyopComponentV2 as MyopComponent } from \"./lib/myop.component\";\nexport type {\n IComponentInstanceConfig,\n SizeInfo,\n CtaEvent,\n IPropTypes,\n KebabToPascal,\n EventHandlerProps,\n IMyopComponentProps,\n ITypedMyopComponent,\n} from \"./lib/myop.component\";\n\n// Loader and Fallback components (for opt-in usage)\nexport { MyopLoaderComponent, MyopLoaderComponent as MyopLoader } from \"./lib/myop-loader.component\";\nexport { MyopFallbackComponent, MyopFallbackComponent as MyopFallback } from \"./lib/myop-fallback.component\";\n\n// Configuration utilities\nexport {\n getCloudRepository,\n isPreloaded,\n getPreloadedParams,\n enableLocalDev,\n setCloudRepositoryUrl,\n setCloudRepository,\n setEnvironment,\n preloadComponents,\n} from \"./config\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["MYOP_LOGO_PATH"],"mappings":"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"}
1
+ {"version":3,"file":"myop-angular.mjs","sources":["../../../projects/components/src/config.ts","../../../projects/components/src/lib/myop.component.ts","../../../projects/components/src/lib/myop-loader.component.ts","../../../projects/components/src/lib/myop-fallback.component.ts","../../../projects/components/src/public-api.ts","../../../projects/components/src/myop-angular.ts"],"sourcesContent":["import { CloudRepository } from \"@myop/sdk/helpers\";\n\nlet _cloudRepository = CloudRepository.Main;\n\n/**\n * Get the current CloudRepository instance\n */\nexport const getCloudRepository = () => _cloudRepository;\n\n/**\n * Check if a component is already preloaded/cached\n * If env/preview not provided, checks if ANY version is preloaded\n */\nexport const isPreloaded = (\n componentId: string,\n env?: string,\n preview?: boolean\n): boolean => {\n return _cloudRepository.isPreloaded(componentId, env, preview);\n};\n\n/**\n * Get the preloaded params for a component\n */\nexport const getPreloadedParams = (componentId: string) => {\n return _cloudRepository.getPreloadedParams(componentId);\n};\n\n/**\n * Enable local development mode\n */\nexport const enableLocalDev = () => {\n _cloudRepository = new CloudRepository(\"http://localhost:9292\");\n};\n\n/**\n * Set a custom CloudRepository URL\n */\nexport const setCloudRepositoryUrl = (url: string) => {\n _cloudRepository = new CloudRepository(url);\n};\n\n/**\n * Set a custom CloudRepository instance\n */\nexport const setCloudRepository = (repository: CloudRepository) => {\n _cloudRepository = repository;\n};\n\n/**\n * Set the default environment for component loading\n */\nexport const setEnvironment = (env: string) => {\n _cloudRepository.setEnvironment(env);\n};\n\n/**\n * Preload components for faster rendering.\n * Continues even if some components fail to load.\n */\nexport const preloadComponents = async (\n ids: string[],\n env?: string,\n preview?: boolean\n) => {\n return Promise.allSettled(\n ids.map((id) => _cloudRepository.fetchComponentV2(id, env, preview))\n );\n};\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n TemplateRef,\n ContentChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n NgZone,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport {\n hostSDK,\n type IMyopComponent,\n LOADER_GRADIENT,\n FALLBACK_GRADIENT,\n} from \"@myop/sdk/host\";\nimport { getCloudRepository, isPreloaded } from \"../config\";\n\n// Myop Logo SVG path (shared with SDK)\nconst MYOP_LOGO_PATH =\n \"M151.438 2.7168C177.625 2.76042 248.179 4.2832 300.4 56.7441C350.671 107.245 364.44 114.452 389.967 119.211C392.576 119.436 397.472 119.394 400.802 116.521C403.011 114.614 403.921 109.518 404.265 104.627V5.95996C404.265 4.85556 405.16 3.96023 406.265 3.95996H522.711C523.815 3.95996 524.711 4.85539 524.711 5.95996V122.405C524.711 123.51 523.815 124.405 522.711 124.405H421.998C418.579 124.728 413.852 125.627 410.974 128.095C407.879 130.748 407.042 137.805 406.845 142.661V240.414C406.845 241.436 406.111 242.292 405.093 242.38C366.548 245.717 277.079 228.462 235.837 173.668C202.909 129.919 173.882 122.474 151.458 122.077C150.354 122.058 149.459 121.164 149.459 120.06V4.71582C149.459 3.6114 150.334 2.71519 151.438 2.7168ZM62.2031 0C96.5566 0.000213148 124.405 27.8496 124.405 62.2031C124.405 96.5564 96.5564 124.405 62.2031 124.405C27.8496 124.405 0.000213175 96.5566 0 62.2031C0 27.8495 27.8495 0 62.2031 0Z\";\n\nexport interface IComponentInstanceConfig {\n id: string;\n componentId: string;\n componentName: string;\n skinSelector: { [key: string]: any };\n nestedComponents?: IComponentInstanceConfig[];\n resolvedExperiences?: { [key: string]: any }[];\n resolvedNestedComponents?: { [key: string]: any }[];\n [key: string]: any;\n}\n\nexport interface SizeInfo {\n width: number;\n height: number;\n autoSizingWidth: boolean;\n autoSizingHeight: boolean;\n}\n\nexport interface CtaEvent<TCtaPayloads extends Record<string, any> = Record<string, any>> {\n action: keyof TCtaPayloads | string;\n payload: TCtaPayloads[keyof TCtaPayloads] | any;\n}\n\n/**\n * Converts kebab-case string to PascalCase\n * e.g., 'column-reordered' -> 'ColumnReordered'\n */\nexport type KebabToPascal<S extends string> =\n S extends `${infer First}-${infer Rest}`\n ? `${Capitalize<First>}${KebabToPascal<Rest>}`\n : Capitalize<S>;\n\n/**\n * Generates typed event handler props from CTA payloads.\n * e.g., `{ 'row-clicked': { rowIndex: number } }` -> `{ onRowClicked?: (payload: { rowIndex: number }) => void }`\n */\nexport type EventHandlerProps<TPayloads extends Record<string, any>> =\n string extends keyof TPayloads\n ? {}\n : {\n [K in keyof TPayloads as `on${KebabToPascal<K & string>}`]?: (\n payload: TPayloads[K]\n ) => void;\n };\n\n/**\n * Type for the `on` callback prop.\n */\ntype OnCallback<TPayloads extends Record<string, any>> =\n string extends keyof TPayloads\n ? (action: string, payload: any) => void\n : <K extends keyof TPayloads>(action: K, payload: TPayloads[K]) => void;\n\n/**\n * Typed props interface for accessing component.props with autocomplete.\n * Contains myop_init_interface and myop_cta_handler with proper types.\n */\nexport interface IMyopComponentProps<\n TData = any,\n TCtaPayloads extends Record<string, any> = Record<string, any>\n> {\n /** Initialize the component with data */\n myop_init_interface?: (data: TData) => void;\n /** Handle CTA events from the component */\n myop_cta_handler?: <K extends keyof TCtaPayloads>(action: K, payload: TCtaPayloads[K]) => void;\n}\n\n/**\n * Typed Myop component interface with typed props.\n * Use this type for the component returned in load event.\n */\nexport type ITypedMyopComponent<\n TData = any,\n TCtaPayloads extends Record<string, any> = Record<string, any>\n> = Omit<IMyopComponent, 'props'> & {\n /** Typed props for the component */\n props: IMyopComponentProps<TData, TCtaPayloads> | null;\n};\n\n/**\n * Base props interface for MyopComponent\n */\ninterface IBaseProps<\n TData = any,\n TCtaPayloads extends Record<string, any> = Record<string, any>\n> {\n componentId?: string;\n componentConfig?: IComponentInstanceConfig;\n data?: TData;\n fadeDuration?: number;\n autoSize?: boolean;\n environment?: string;\n preview?: boolean;\n on?: OnCallback<TCtaPayloads>;\n}\n\n/**\n * Full props type including generated event handlers.\n * Supports both generic `on` callback and individual typed handlers like `onRowClicked`.\n */\nexport type IPropTypes<\n TData = any,\n TCtaPayloads extends Record<string, any> = Record<string, any>\n> = IBaseProps<TData, TCtaPayloads> & EventHandlerProps<TCtaPayloads>;\n\n@Component({\n selector: \"myop-component\",\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [ngStyle]=\"outerStyle\">\n <div #myopContainer [ngStyle]=\"innerStyle\"></div>\n @if (showLoader && resolvedLoader) {\n <div [ngStyle]=\"loaderContainerStyle\">\n <ng-container *ngTemplateOutlet=\"resolvedLoader\"></ng-container>\n </div>\n }\n @if (showFallback) {\n @if (resolvedFallback) {\n <div [ngStyle]=\"fallbackContainerStyle\">\n <ng-container *ngTemplateOutlet=\"resolvedFallback\"></ng-container>\n </div>\n } @else {\n <div [ngStyle]=\"fallbackStyle\">\n <svg\n width=\"80\"\n viewBox=\"0 0 525 243\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path [attr.d]=\"logoPath\" fill=\"white\" />\n </svg>\n </div>\n }\n }\n </div>\n `,\n})\nexport class MyopComponentV2<TData = any, TCtaPayloads extends Record<string, any> = Record<string, any>>\n implements OnInit, OnChanges, OnDestroy\n{\n // Inputs\n @Input() componentId?: string;\n @Input() componentConfig?: IComponentInstanceConfig;\n @Input() data?: TData;\n @Input() fadeDuration: number = 200;\n @Input() autoSize: boolean = true;\n @Input() environment?: string;\n @Input() preview?: boolean;\n @Input() on?: (action: string, payload: any) => void;\n\n // Outputs\n @Output() load = new EventEmitter<ITypedMyopComponent<TData, TCtaPayloads>>();\n @Output() error = new EventEmitter<string>();\n @Output() sizeChange = new EventEmitter<SizeInfo>();\n @Output() cta = new EventEmitter<CtaEvent<TCtaPayloads>>();\n\n // View refs\n @ViewChild(\"myopContainer\", { static: true })\n myopContainer!: ElementRef<HTMLDivElement>;\n\n // Content projection refs (for ng-template approach)\n @ContentChild(\"loader\") customLoader?: TemplateRef<any>;\n @ContentChild(\"fallback\") customFallback?: TemplateRef<any>;\n\n // Input refs (for component approach - e.g., [loader]=\"loaderTemplate\")\n @Input() loader?: TemplateRef<any>;\n @Input() fallback?: TemplateRef<any>;\n\n // Internal state\n showLoader: boolean = true;\n loaderOpacity: number = 1;\n showFallback: boolean = false;\n isComponentLoaded: boolean = false;\n autoSizeResult?: SizeInfo;\n private sizeMode: { fillWidth: boolean; fillHeight: boolean } = { fillWidth: false, fillHeight: false };\n\n // Logo path for template\n readonly logoPath = MYOP_LOGO_PATH;\n\n // Private state\n private myopComponent: IMyopComponent | null = null;\n private isLoading: boolean = false;\n private pendingLoad: boolean = false;\n private autoSizeCleanup: (() => void) | null = null;\n private isCancelled: boolean = false;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\n // Check if preloaded to skip loader\n if (this.componentId && isPreloaded(this.componentId)) {\n this.showLoader = false;\n }\n\n if (this.componentId || this.componentConfig) {\n this.renderComponent();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Handle componentId change - reload component\n if (changes[\"componentId\"] && !changes[\"componentId\"].firstChange) {\n this.reloadComponent();\n }\n\n // Handle data change - call myop_init_interface\n if (changes[\"data\"] && !changes[\"data\"].firstChange) {\n this.updateData(changes[\"data\"].currentValue);\n }\n }\n\n ngOnDestroy(): void {\n this.isCancelled = true;\n this.cleanup();\n }\n\n private cleanup(): void {\n if (this.autoSizeCleanup) {\n this.autoSizeCleanup();\n this.autoSizeCleanup = null;\n }\n if (this.myopComponent) {\n this.myopComponent.dispose();\n this.myopComponent = null;\n }\n }\n\n private async reloadComponent(): Promise<void> {\n // Reset state\n this.isComponentLoaded = false;\n this.showFallback = false;\n this.showLoader = true;\n this.loaderOpacity = 1;\n\n // Cleanup old component\n this.cleanup();\n\n if (this.isLoading) {\n this.pendingLoad = true;\n } else {\n await this.renderComponent();\n }\n\n this.cdr.markForCheck();\n }\n\n private async renderComponent(): Promise<void> {\n this.isLoading = true;\n this.isCancelled = false;\n\n try {\n if (!this.componentId && !this.componentConfig) {\n this.handleError(\"No component configuration provided\");\n return;\n }\n\n // Only pass preview if explicitly true (Angular may default undefined to falsy)\n const previewParam = this.preview === true ? true : undefined;\n\n const componentConfig = (this.componentConfig\n ? this.componentConfig\n : await getCloudRepository().fetchComponentV2(\n this.componentId!,\n this.environment,\n previewParam\n )) as any;\n\n if (this.isCancelled) return;\n\n if (!this.myopContainer?.nativeElement) {\n this.handleError(\"Container element not found\");\n return;\n }\n\n const loadedComponent = await hostSDK.loadComponent(\n componentConfig,\n this.myopContainer.nativeElement,\n {\n data: this.data,\n _environment: {\n props: {\n componentId: this.componentId,\n data: this.data,\n environment: this.environment,\n preview: this.preview,\n autoSize: this.autoSize,\n },\n },\n }\n );\n\n if (this.isCancelled) {\n loadedComponent.dispose();\n return;\n }\n\n this.myopComponent = loadedComponent;\n\n // Wait for component to be fully initiated\n await this.myopComponent.initiated();\n\n if (this.isCancelled) {\n this.myopComponent?.dispose();\n return;\n }\n\n // Wait for browser paint\n await new Promise((resolve) => requestAnimationFrame(resolve));\n\n if (\n this.isCancelled ||\n !this.myopComponent ||\n this.myopComponent.markedForDisposed\n ) {\n if (this.myopComponent && !this.myopComponent.markedForDisposed) {\n this.myopComponent.dispose();\n }\n return;\n }\n\n this.isComponentLoaded = true;\n\n // Read sizeMeta (parsed from <meta name=\"myop:size\"> before iframe creation)\n const sm = this.myopComponent?.sizeMeta;\n const isFillWidth = sm?.width === \"100%\";\n const isFillHeight = sm?.height === \"100%\";\n this.sizeMode = { fillWidth: isFillWidth, fillHeight: isFillHeight };\n\n // hideLoader strategy:\n // - autoSize=false → hide immediately (fill-parent mode, no auto-sizing)\n // - fill mode (both dims explicit via sizeMeta) → hide immediately\n // - content mode → hideLoader is called after first auto-size measurement\n const bothDimsExplicit = isFillWidth && isFillHeight;\n if (!this.autoSize || bothDimsExplicit) {\n this.hideLoader();\n }\n\n // Always setup auto-size (SDK handles fill vs content mode)\n this.setupAutoSize();\n\n // Setup CTA handler\n if (this.myopComponent?.props) {\n this.myopComponent.props.myop_cta_handler = (\n action: string,\n payload?: any\n ) => {\n // Run in Angular zone to trigger change detection\n this.ngZone.run(() => {\n // Call generic `on` handler if provided\n if (this.on) {\n this.on(action, payload);\n }\n\n this.cta.emit({ action, payload });\n });\n };\n }\n\n this.ngZone.run(() => {\n this.load.emit(this.myopComponent!);\n this.cdr.markForCheck();\n });\n } catch (err: any) {\n if (!this.isCancelled) {\n this.handleError(err?.message || \"Unknown error\");\n }\n } finally {\n this.isLoading = false;\n\n // Handle pending load\n if (this.pendingLoad && !this.isCancelled) {\n this.pendingLoad = false;\n await this.renderComponent();\n }\n }\n }\n\n private updateData(newData: TData): void {\n if (!this.isComponentLoaded || !this.myopComponent) {\n return;\n }\n\n // Call myop_init_interface to update the component with new data\n const initInterface = this.myopComponent.props?.myop_init_interface;\n if (initInterface) {\n initInterface(newData);\n }\n }\n\n private setupAutoSize(): void {\n if (!this.isComponentLoaded || !this.myopComponent?.observeAutoSize) {\n return;\n }\n\n let isFirstMeasurement = true;\n\n this.autoSizeCleanup = this.myopComponent.observeAutoSize({\n // SDK resolves: host props → sizeMeta → defaults (width: \"100%\", height: auto-size)\n explicitWidth: undefined,\n explicitHeight: undefined,\n forceAutoSize: this.autoSize,\n loaderMinHeight: 50,\n onSizeChange: (result: SizeInfo) => {\n this.ngZone.run(() => {\n this.sizeChange.emit(result);\n this.autoSizeResult = result;\n\n // Hide loader after first measurement\n if (isFirstMeasurement) {\n isFirstMeasurement = false;\n this.hideLoader();\n }\n\n this.cdr.markForCheck();\n });\n },\n });\n }\n\n private hideLoader(): void {\n this.loaderOpacity = 0;\n this.cdr.markForCheck();\n\n setTimeout(() => {\n this.showLoader = false;\n this.cdr.markForCheck();\n }, this.fadeDuration);\n }\n\n private handleError(errorMsg: string): void {\n console.error(\"[MyopComponent] Error:\", errorMsg);\n this.hideLoader();\n this.showFallback = true;\n this.error.emit(errorMsg);\n this.cdr.markForCheck();\n }\n\n // Computed styles\n get loaderMinHeight(): string | undefined {\n return this.showLoader ? \"50px\" : undefined;\n }\n\n get isFillMode(): boolean {\n return !this.autoSize || !this.isComponentLoaded || this.sizeMode.fillHeight;\n }\n\n get outerStyle(): { [key: string]: string } {\n if (this.isFillMode) {\n // Fill mode: component fills parent container\n return {\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n minHeight: this.loaderMinHeight || \"\",\n };\n }\n // Content mode (default): component grows with content\n return {\n position: \"relative\",\n width: this.autoSizeResult?.autoSizingWidth\n ? `${this.autoSizeResult.width}px`\n : \"100%\",\n height: this.autoSizeResult?.height\n ? `${this.autoSizeResult.height}px`\n : \"\",\n minHeight: this.loaderMinHeight || \"\",\n };\n }\n\n get innerStyle(): { [key: string]: string } {\n if (this.isFillMode) {\n // Fill mode: absolute positioning to fill parent\n return {\n position: \"absolute\",\n inset: \"0\",\n };\n }\n // Content mode: flow layout, height from auto-size\n return {\n width: \"100%\",\n height: this.autoSizeResult?.height\n ? `${this.autoSizeResult.height}px`\n : \"\",\n };\n }\n\n // Loader styles using SDK gradient\n get loaderStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n zIndex: \"1\",\n background: LOADER_GRADIENT,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n opacity: String(this.loaderOpacity),\n transition: `opacity ${this.fadeDuration}ms ease-out`,\n };\n }\n\n // Fallback styles using SDK gradient (kept for backwards compatibility)\n get fallbackStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n background: FALLBACK_GRADIENT,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n };\n }\n\n // Resolved loader template (input takes precedence over content projection)\n get resolvedLoader(): TemplateRef<any> | undefined {\n return this.loader || this.customLoader;\n }\n\n // Resolved fallback template (input takes precedence over content projection)\n get resolvedFallback(): TemplateRef<any> | undefined {\n return this.fallback || this.customFallback;\n }\n\n // Container style for loader (no background - let the template handle styling)\n get loaderContainerStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n zIndex: \"1\",\n opacity: String(this.loaderOpacity),\n transition: `opacity ${this.fadeDuration}ms ease-out`,\n };\n }\n\n // Container style for fallback (no background - let the template handle styling)\n get fallbackContainerStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n };\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { LOADER_GRADIENT } from \"@myop/sdk/host\";\n\n// Myop Logo SVG path\nconst MYOP_LOGO_PATH =\n \"M151.438 2.7168C177.625 2.76042 248.179 4.2832 300.4 56.7441C350.671 107.245 364.44 114.452 389.967 119.211C392.576 119.436 397.472 119.394 400.802 116.521C403.011 114.614 403.921 109.518 404.265 104.627V5.95996C404.265 4.85556 405.16 3.96023 406.265 3.95996H522.711C523.815 3.95996 524.711 4.85539 524.711 5.95996V122.405C524.711 123.51 523.815 124.405 522.711 124.405H421.998C418.579 124.728 413.852 125.627 410.974 128.095C407.879 130.748 407.042 137.805 406.845 142.661V240.414C406.845 241.436 406.111 242.292 405.093 242.38C366.548 245.717 277.079 228.462 235.837 173.668C202.909 129.919 173.882 122.474 151.458 122.077C150.354 122.058 149.459 121.164 149.459 120.06V4.71582C149.459 3.6114 150.334 2.71519 151.438 2.7168ZM62.2031 0C96.5566 0.000213148 124.405 27.8496 124.405 62.2031C124.405 96.5564 96.5564 124.405 62.2031 124.405C27.8496 124.405 0.000213175 96.5566 0 62.2031C0 27.8495 27.8495 0 62.2031 0Z\";\n\n@Component({\n selector: \"myop-loader\",\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [ngStyle]=\"loaderStyle\">\n <svg\n width=\"80\"\n viewBox=\"0 0 525 243\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path [attr.d]=\"logoPath\" fill=\"white\" />\n </svg>\n </div>\n `,\n})\nexport class MyopLoaderComponent {\n readonly logoPath = MYOP_LOGO_PATH;\n\n get loaderStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n background: LOADER_GRADIENT,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n };\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FALLBACK_GRADIENT } from \"@myop/sdk/host\";\n\n// Myop Logo SVG path\nconst MYOP_LOGO_PATH =\n \"M151.438 2.7168C177.625 2.76042 248.179 4.2832 300.4 56.7441C350.671 107.245 364.44 114.452 389.967 119.211C392.576 119.436 397.472 119.394 400.802 116.521C403.011 114.614 403.921 109.518 404.265 104.627V5.95996C404.265 4.85556 405.16 3.96023 406.265 3.95996H522.711C523.815 3.95996 524.711 4.85539 524.711 5.95996V122.405C524.711 123.51 523.815 124.405 522.711 124.405H421.998C418.579 124.728 413.852 125.627 410.974 128.095C407.879 130.748 407.042 137.805 406.845 142.661V240.414C406.845 241.436 406.111 242.292 405.093 242.38C366.548 245.717 277.079 228.462 235.837 173.668C202.909 129.919 173.882 122.474 151.458 122.077C150.354 122.058 149.459 121.164 149.459 120.06V4.71582C149.459 3.6114 150.334 2.71519 151.438 2.7168ZM62.2031 0C96.5566 0.000213148 124.405 27.8496 124.405 62.2031C124.405 96.5564 96.5564 124.405 62.2031 124.405C27.8496 124.405 0.000213175 96.5566 0 62.2031C0 27.8495 27.8495 0 62.2031 0Z\";\n\n@Component({\n selector: \"myop-fallback\",\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [ngStyle]=\"fallbackStyle\">\n <svg\n width=\"80\"\n viewBox=\"0 0 525 243\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path [attr.d]=\"logoPath\" fill=\"white\" />\n </svg>\n </div>\n `,\n})\nexport class MyopFallbackComponent {\n readonly logoPath = MYOP_LOGO_PATH;\n\n get fallbackStyle(): { [key: string]: string } {\n return {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n background: FALLBACK_GRADIENT,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n };\n }\n}\n","/*\n * Public API Surface of @myop/angular\n */\n\n// Main component\nexport { MyopComponentV2 as MyopComponent } from \"./lib/myop.component\";\nexport type {\n IComponentInstanceConfig,\n SizeInfo,\n CtaEvent,\n IPropTypes,\n KebabToPascal,\n EventHandlerProps,\n IMyopComponentProps,\n ITypedMyopComponent,\n} from \"./lib/myop.component\";\n\n// Loader and Fallback components (for opt-in usage)\nexport { MyopLoaderComponent, MyopLoaderComponent as MyopLoader } from \"./lib/myop-loader.component\";\nexport { MyopFallbackComponent, MyopFallbackComponent as MyopFallback } from \"./lib/myop-fallback.component\";\n\n// Configuration utilities\nexport {\n getCloudRepository,\n isPreloaded,\n getPreloadedParams,\n enableLocalDev,\n setCloudRepositoryUrl,\n setCloudRepository,\n setEnvironment,\n preloadComponents,\n} from \"./config\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["MYOP_LOGO_PATH"],"mappings":"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"}
@@ -104,6 +104,7 @@ export declare class MyopComponentV2<TData = any, TCtaPayloads extends Record<st
104
104
  showFallback: boolean;
105
105
  isComponentLoaded: boolean;
106
106
  autoSizeResult?: SizeInfo;
107
+ private sizeMode;
107
108
  readonly logoPath = "M151.438 2.7168C177.625 2.76042 248.179 4.2832 300.4 56.7441C350.671 107.245 364.44 114.452 389.967 119.211C392.576 119.436 397.472 119.394 400.802 116.521C403.011 114.614 403.921 109.518 404.265 104.627V5.95996C404.265 4.85556 405.16 3.96023 406.265 3.95996H522.711C523.815 3.95996 524.711 4.85539 524.711 5.95996V122.405C524.711 123.51 523.815 124.405 522.711 124.405H421.998C418.579 124.728 413.852 125.627 410.974 128.095C407.879 130.748 407.042 137.805 406.845 142.661V240.414C406.845 241.436 406.111 242.292 405.093 242.38C366.548 245.717 277.079 228.462 235.837 173.668C202.909 129.919 173.882 122.474 151.458 122.077C150.354 122.058 149.459 121.164 149.459 120.06V4.71582C149.459 3.6114 150.334 2.71519 151.438 2.7168ZM62.2031 0C96.5566 0.000213148 124.405 27.8496 124.405 62.2031C124.405 96.5564 96.5564 124.405 62.2031 124.405C27.8496 124.405 0.000213175 96.5566 0 62.2031C0 27.8495 27.8495 0 62.2031 0Z";
108
109
  private myopComponent;
109
110
  private isLoading;
@@ -121,8 +122,8 @@ export declare class MyopComponentV2<TData = any, TCtaPayloads extends Record<st
121
122
  private setupAutoSize;
122
123
  private hideLoader;
123
124
  private handleError;
124
- get shouldAutoSize(): boolean;
125
125
  get loaderMinHeight(): string | undefined;
126
+ get isFillMode(): boolean;
126
127
  get outerStyle(): {
127
128
  [key: string]: string;
128
129
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myop/angular",
3
- "version": "0.0.32",
3
+ "version": "0.0.34",
4
4
  "keywords": [
5
5
  "myop",
6
6
  "angular",