@ng-prism/core 21.4.3 → 21.4.5

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
@@ -57,7 +57,7 @@ export class ButtonComponent {
57
57
  ### 3. Run the schematic
58
58
 
59
59
  ```bash
60
- ng add ng-prism
60
+ ng add @ng-prism/core
61
61
  ```
62
62
 
63
63
  This creates the prism app project, configures Angular builders, and generates `ng-prism.config.ts`.
@@ -1,7 +1,9 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class PrismPageRendererComponent {
3
3
  private readonly nav;
4
+ private readonly host;
4
5
  protected readonly page: import("@angular/core").Signal<import("../../index.js").StyleguidePage | null>;
6
+ constructor();
5
7
  static ɵfac: i0.ɵɵFactoryDeclaration<PrismPageRendererComponent, never>;
6
8
  static ɵcmp: i0.ɵɵComponentDeclaration<PrismPageRendererComponent, "prism-page-renderer", never, {}, {}, never, never, true, never>;
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prism-page-renderer.component.d.ts","sourceRoot":"","sources":["../../../src/app/page-renderer/prism-page-renderer.component.ts"],"names":[],"mappings":";AAIA,qBAiDa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,SAAS,CAAC,QAAQ,CAAC,IAAI,iFAAuB;yCAFnC,0BAA0B;2CAA1B,0BAA0B;CAGtC"}
1
+ {"version":3,"file":"prism-page-renderer.component.d.ts","sourceRoot":"","sources":["../../../src/app/page-renderer/prism-page-renderer.component.ts"],"names":[],"mappings":";AAIA,qBAiDa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;IACxD,SAAS,CAAC,QAAQ,CAAC,IAAI,iFAAuB;;yCAHnC,0BAA0B;2CAA1B,0BAA0B;CAWtC"}
@@ -1,4 +1,4 @@
1
- import { Component, inject } from '@angular/core';
1
+ import { Component, effect, ElementRef, inject } from '@angular/core';
2
2
  import { NgComponentOutlet } from '@angular/common';
3
3
  import { PrismNavigationService } from '../services/prism-navigation.service.js';
4
4
  import * as i0 from "@angular/core";
@@ -40,7 +40,14 @@ function PrismPageRendererComponent_Conditional_0_Template(rf, ctx) { if (rf & 1
40
40
  } }
41
41
  export class PrismPageRendererComponent {
42
42
  nav = inject(PrismNavigationService);
43
+ host = inject((ElementRef));
43
44
  page = this.nav.activePage;
45
+ constructor() {
46
+ effect(() => {
47
+ this.page();
48
+ this.host.nativeElement.scrollTop = 0;
49
+ });
50
+ }
44
51
  static ɵfac = function PrismPageRendererComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismPageRendererComponent)(); };
45
52
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismPageRendererComponent, selectors: [["prism-page-renderer"]], decls: 1, vars: 1, consts: [[1, "prism-page-renderer"], [1, "prism-page-renderer__title"], [1, "prism-page-renderer__json"], [1, "prism-page-renderer__component"], [4, "ngComponentOutlet"]], template: function PrismPageRendererComponent_Template(rf, ctx) { if (rf & 1) {
46
53
  i0.ɵɵconditionalCreate(0, PrismPageRendererComponent_Conditional_0_Template, 5, 2, "div", 0);
@@ -68,5 +75,5 @@ export class PrismPageRendererComponent {
68
75
  </div>
69
76
  }
70
77
  `, styles: ["\n :host { display: block; flex: 1; overflow-y: auto; }\n .prism-page-renderer__title {\n margin: 0;\n padding: 16px 20px;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: -0.01em;\n color: var(--prism-text);\n font-family: var(--prism-font-sans);\n border-bottom: 1px solid var(--prism-border);\n border-left: 3px solid;\n border-image: linear-gradient(180deg, var(--prism-primary-from), var(--prism-primary-to)) 1;\n background: var(--prism-bg-surface);\n }\n .prism-page-renderer__component {\n padding: 16px 20px;\n }\n .prism-page-renderer__json {\n margin: 0;\n padding: 24px;\n font-size: 12px;\n font-family: monospace;\n color: var(--prism-text-muted);\n white-space: pre-wrap;\n }\n "] }]
71
- }], null, null); })();
78
+ }], () => [], null); })();
72
79
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismPageRendererComponent, { className: "PrismPageRendererComponent", filePath: "app/page-renderer/prism-page-renderer.component.ts", lineNumber: 54 }); })();
@@ -11,6 +11,7 @@ export declare class PrismRendererComponent {
11
11
  private readonly manifestService;
12
12
  private readonly injector;
13
13
  private readonly destroyRef;
14
+ private readonly host;
14
15
  private readonly rendererHooks;
15
16
  private readonly outlet;
16
17
  private componentRef;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-renderer.component.d.ts","sourceRoot":"","sources":["../../../src/app/renderer/prism-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,QAAQ,EAER,KAAK,IAAI,EAIV,MAAM,eAAe,CAAC;AAOvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAIpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;;AAG7E,qBA4Ka,sBAAsB;IACjC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,yBAAkC;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoD;IAElF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4D;IACnF,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,oBAAoB,CAA0D;IACtF,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,QAAQ,CAAC,aAAa,+DAAsC;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa;;MAA6C;IAE7E,SAAS,CAAC,QAAQ,CAAC,eAAe,yFAG/B;IAEH,QAAQ,CAAC,WAAW,kDAAiB;IAErC,QAAQ,CAAC,OAAO,yCAgBb;;IAiFH,OAAO,CAAC,eAAe;IAiEvB,OAAO,CAAC,OAAO;yCA9LJ,sBAAsB;2CAAtB,sBAAsB;CA4MlC"}
1
+ {"version":3,"file":"prism-renderer.component.d.ts","sourceRoot":"","sources":["../../../src/app/renderer/prism-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,QAAQ,EAER,KAAK,IAAI,EAIV,MAAM,eAAe,CAAC;AAOvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAIpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;;AAG7E,qBA4Ka,sBAAsB;IACjC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,yBAAkC;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoD;IAElF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4D;IACnF,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,oBAAoB,CAA0D;IACtF,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,QAAQ,CAAC,aAAa,+DAAsC;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa;;MAA6C;IAE7E,SAAS,CAAC,QAAQ,CAAC,eAAe,yFAG/B;IAEH,QAAQ,CAAC,WAAW,kDAAiB;IAErC,QAAQ,CAAC,OAAO,yCAgBb;;IAkFH,OAAO,CAAC,eAAe;IAiEvB,OAAO,CAAC,OAAO;yCAhMJ,sBAAsB;2CAAtB,sBAAsB;CA8MlC"}
@@ -1,4 +1,4 @@
1
- import { Component, computed, DestroyRef, effect, inject, Injector, signal, untracked, viewChild, ViewContainerRef, } from '@angular/core';
1
+ import { Component, computed, DestroyRef, effect, ElementRef, inject, Injector, signal, untracked, viewChild, ViewContainerRef, } from '@angular/core';
2
2
  import { NgComponentOutlet } from '@angular/common';
3
3
  import { Highlight } from 'ngx-highlightjs';
4
4
  import { PrismManifestService } from '../services/prism-manifest.service.js';
@@ -80,6 +80,7 @@ export class PrismRendererComponent {
80
80
  manifestService = inject(PrismManifestService);
81
81
  injector = inject(Injector);
82
82
  destroyRef = inject(DestroyRef);
83
+ host = inject((ElementRef));
83
84
  rendererHooks = inject(PRISM_RENDERER_HOOKS, { optional: true });
84
85
  outlet = viewChild.required('outlet', { read: ViewContainerRef });
85
86
  componentRef = null;
@@ -113,6 +114,7 @@ export class PrismRendererComponent {
113
114
  if (!comp)
114
115
  return;
115
116
  untracked(() => {
117
+ this.host.nativeElement.scrollTop = 0;
116
118
  this.codeVisible.set(false);
117
119
  this.rendererService.reconcileForComponent(comp);
118
120
  this.createComponent(comp);
@@ -320,7 +322,7 @@ export class PrismRendererComponent {
320
322
  </div>
321
323
  `, styles: ["\n .prism-renderer {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n }\n\n .prism-renderer__toolbar {\n display: flex;\n align-items: center;\n padding: 0 8px;\n border-bottom: 1px solid var(--prism-border);\n flex-shrink: 0;\n background: var(--prism-bg-elevated);\n }\n .prism-renderer__variant {\n padding: 8px 14px;\n font-size: 13px;\n font-family: var(--prism-font-sans);\n border: none;\n background: none;\n color: var(--prism-text-muted);\n cursor: pointer;\n position: relative;\n margin-bottom: -1px;\n transition: color 0.12s;\n }\n .prism-renderer__variant::after {\n content: '';\n position: absolute;\n bottom: 0; left: 0; right: 0;\n height: 2px;\n background: linear-gradient(90deg, var(--prism-primary-from), var(--prism-primary-to));\n opacity: 0;\n transition: opacity 0.12s;\n }\n .prism-renderer__variant:hover { color: var(--prism-text); }\n .prism-renderer__variant--active { color: var(--prism-primary); }\n .prism-renderer__variant--active::after { opacity: 1; }\n\n .prism-renderer__canvas {\n position: relative;\n flex: 1;\n padding: 48px 40px;\n overflow: auto;\n background-color: var(--prism-bg-surface);\n background-image: radial-gradient(\n circle,\n color-mix(in srgb, var(--prism-primary) 15%, transparent) 1px,\n transparent 1px\n );\n background-size: 20px 20px;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n transition: filter 0.2s;\n }\n .prism-renderer__canvas--sr {\n filter: brightness(0.82) saturate(0.7);\n }\n\n .prism-renderer__code-bar {\n display: flex;\n align-items: center;\n padding: 0 12px;\n border-top: 1px solid var(--prism-border);\n flex-shrink: 0;\n background: var(--prism-bg-elevated);\n }\n .prism-renderer__code-button {\n display: flex;\n align-items: center;\n gap: 5px;\n padding: 6px 8px;\n font-size: 11.5px;\n font-family: var(--prism-font-mono, monospace);\n border: none;\n background: none;\n color: var(--prism-text-muted);\n cursor: pointer;\n position: relative;\n transition: color 0.12s;\n margin-bottom: -1px;\n }\n .prism-renderer__code-button::after {\n content: '';\n position: absolute;\n bottom: 0; left: 4px; right: 4px;\n height: 2px;\n background: linear-gradient(90deg, var(--prism-primary-from), var(--prism-primary-to));\n opacity: 0;\n transition: opacity 0.12s;\n }\n .prism-renderer__code-button:hover { color: var(--prism-text-2); }\n .prism-renderer__code-button--active { color: var(--prism-primary); }\n .prism-renderer__code-button--active::after { opacity: 1; }\n\n .prism-renderer__code {\n border-top: 1px solid var(--prism-border);\n overflow: auto;\n flex-shrink: 0;\n max-height: 240px;\n background: var(--prism-void);\n }\n .prism-renderer__code pre {\n margin: 0;\n padding: 20px 24px;\n font-size: 12.5px;\n line-height: 1.65;\n font-family: var(--prism-font-mono);\n }\n .prism-renderer__code code { font-family: inherit; }\n :host ::ng-deep .prism-renderer__code .hljs {\n background: transparent;\n color: var(--prism-text-2);\n }\n :host ::ng-deep .prism-renderer__code .hljs-tag { color: var(--prism-text-muted); }\n :host ::ng-deep .prism-renderer__code .hljs-name { color: var(--prism-primary); }\n :host ::ng-deep .prism-renderer__code .hljs-attr { color: #93c5fd; }\n :host ::ng-deep .prism-renderer__code .hljs-string { color: #7dd3fc; }\n "] }]
322
324
  }], () => [], { outlet: [{ type: i0.ViewChild, args: ['outlet', { ...{ read: ViewContainerRef }, isSignal: true }] }] }); })();
323
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismRendererComponent, { className: "PrismRendererComponent", filePath: "app/renderer/prism-renderer.component.ts", lineNumber: 203 }); })();
325
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismRendererComponent, { className: "PrismRendererComponent", filePath: "app/renderer/prism-renderer.component.ts", lineNumber: 204 }); })();
324
326
  function parseContentToNodes(content) {
325
327
  if (typeof content === 'string') {
326
328
  return [htmlToNodes(content)];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schematics/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,IAAI,EAIV,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAqOtD,wBAAgB,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAOvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schematics/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,IAAI,EAIV,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAqOtD,wBAAgB,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAOvD"}
@@ -1,4 +1,5 @@
1
1
  import { chain, SchematicsException, } from '@angular-devkit/schematics';
2
+ import { parse as parseJsonc } from 'jsonc-parser';
2
3
  function readWorkspace(tree) {
3
4
  const buffer = tree.read('angular.json');
4
5
  if (!buffer) {
@@ -140,7 +141,7 @@ function addTsConfigPaths(options) {
140
141
  if (!buffer) {
141
142
  return tree;
142
143
  }
143
- const tsConfig = JSON.parse(buffer.toString('utf-8'));
144
+ const tsConfig = parseJsonc(buffer.toString('utf-8'));
144
145
  if (!tsConfig.compilerOptions) {
145
146
  tsConfig.compilerOptions = {};
146
147
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-prism/core",
3
- "version": "21.4.3",
3
+ "version": "21.4.5",
4
4
  "description": "Lightweight Angular-native component showcase — no story files needed.",
5
5
  "keywords": [
6
6
  "angular",
@@ -43,11 +43,11 @@
43
43
  "!**/*.tsbuildinfo"
44
44
  ],
45
45
  "peerDependencies": {
46
- "@angular/core": ">=19.0.0",
47
- "@angular/common": ">=19.0.0",
48
- "@angular-devkit/architect": ">=0.1900.0",
49
- "@angular-devkit/core": ">=19.0.0",
50
- "@angular-devkit/schematics": ">=19.0.0",
46
+ "@angular/core": ">=21.0.0",
47
+ "@angular/common": ">=21.0.0",
48
+ "@angular-devkit/architect": ">=0.2100.0",
49
+ "@angular-devkit/core": ">=21.0.0",
50
+ "@angular-devkit/schematics": ">=21.0.0",
51
51
  "typescript": ">=5.5.0",
52
52
  "highlight.js": ">=11.0.0",
53
53
  "ngx-highlightjs": ">=14.0.0"