@piying-lib/angular-core 1.0.7 → 1.0.9

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.
@@ -1,10 +1,11 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { computed, viewChild, input, inject, TemplateRef, Component } from '@angular/core';
3
+ import { computed, viewChild, input, inject, TemplateRef, forwardRef, Component } from '@angular/core';
4
4
  import { MatIcon } from '@angular/material/icon';
5
5
  import { SelectorlessOutlet } from '@cyia/ngx-common/directive';
6
6
  import { PurePipe } from '@cyia/ngx-common/pipe';
7
- import { PiyingView, PI_INPUT_OPTIONS_TOKEN } from '@piying/view-angular';
7
+ import { BaseControl, PiyingView, PI_INPUT_OPTIONS_TOKEN } from '@piying/view-angular';
8
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
9
 
9
10
  const DefaultOptionConvert = {
10
11
  label: (item) => (typeof item !== 'object' ? item : item.label),
@@ -63,12 +64,15 @@ function isSchema(input) {
63
64
  return (input && typeof input === 'object' && '~run' in input && 'kind' in input && 'type' in input);
64
65
  }
65
66
 
66
- class StrOrTemplateComponent {
67
+ class StrOrTemplateComponent extends BaseControl {
67
68
  static __version = 2;
68
69
  PiyingView = PiyingView;
69
70
  templateRef = viewChild.required('templateRef');
70
71
  content = input(...(ngDevMode ? [undefined, { debugName: "content" }] : []));
71
72
  context = input(...(ngDevMode ? [undefined, { debugName: "context" }] : []));
73
+ content$$ = computed(() => {
74
+ return this.content() ?? this.value$();
75
+ }, ...(ngDevMode ? [{ debugName: "content$$" }] : []));
72
76
  parentPyOptions = inject(PI_INPUT_OPTIONS_TOKEN, { optional: true });
73
77
  schemaOptions$$ = computed(() => {
74
78
  return {
@@ -93,12 +97,24 @@ class StrOrTemplateComponent {
93
97
  selectorless: true,
94
98
  };
95
99
  };
96
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: StrOrTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
97
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: StrOrTemplateComponent, isStandalone: true, selector: "app-str-or-template", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #templateRef>\n @let data = $any(content());\n @if (isString | pure: data) {\n {{ data }}\n } @else if (isTemplateRef | pure: data) {\n <ng-container *ngTemplateOutlet=\"$any(data)\"></ng-container>\n } @else if (isSchema | pure: data) {\n <ng-container\n [selectlessOutlet]=\"PiyingView\"\n [selectlessOutletInputs]=\"piyingInput | pure: content : schemaOptions$$\"\n ></ng-container>\n } @else if (isObject | pure: data) {\n @if (data['image']; as image) {\n <img [src]=\"image.src\" [alt]=\"image.alt\" />\n }\n @if (data['icon']; as icon) {\n <mat-icon\n [inline]=\"icon.inline\"\n [fontIcon]=\"icon.fontIcon\"\n [fontSet]=\"icon.fontSet\"\n [svgIcon]=\"icon.svgIcon\"\n ></mat-icon>\n }\n @if (data['title']) {\n <span>\n {{ data['title'] }}\n </span>\n }\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: SelectorlessOutlet, selector: "[selectlessOutlet]", inputs: ["selectlessOutlet", "selectlessOutletInputs", "selectlessOutletOutputs", "selectlessOutletDirectives", "selectlessOutletInjector", "selectlessOutletEnvironmentInjector"], exportAs: ["selectlessOutlet"] }, { kind: "pipe", type: PurePipe, name: "pure" }] });
100
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: StrOrTemplateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
101
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: StrOrTemplateComponent, isStandalone: true, selector: "app-str-or-template", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
102
+ {
103
+ provide: NG_VALUE_ACCESSOR,
104
+ useExisting: forwardRef(() => StrOrTemplateComponent),
105
+ multi: true,
106
+ },
107
+ ], viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateRef>\n @let data = $any(content$$());\n @if (isString | pure: data) {\n {{ data }}\n } @else if (isTemplateRef | pure: data) {\n <ng-container *ngTemplateOutlet=\"$any(data)\"></ng-container>\n } @else if (isSchema | pure: data) {\n <ng-container\n [selectlessOutlet]=\"PiyingView\"\n [selectlessOutletInputs]=\"piyingInput | pure: content$$ : schemaOptions$$\"\n ></ng-container>\n } @else if (isObject | pure: data) {\n @if (data['image']; as image) {\n <img [src]=\"image.src\" [alt]=\"image.alt\" />\n }\n @if (data['icon']; as icon) {\n <mat-icon\n [inline]=\"icon.inline\"\n [fontIcon]=\"icon.fontIcon\"\n [fontSet]=\"icon.fontSet\"\n [svgIcon]=\"icon.svgIcon\"\n ></mat-icon>\n }\n @if (data['title']) {\n <span>\n {{ data['title'] }}\n </span>\n }\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: SelectorlessOutlet, selector: "[selectlessOutlet]", inputs: ["selectlessOutlet", "selectlessOutletInputs", "selectlessOutletOutputs", "selectlessOutletDirectives", "selectlessOutletInjector", "selectlessOutletEnvironmentInjector"], exportAs: ["selectlessOutlet"] }, { kind: "pipe", type: PurePipe, name: "pure" }] });
98
108
  }
99
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: StrOrTemplateComponent, decorators: [{
100
110
  type: Component,
101
- args: [{ selector: 'app-str-or-template', imports: [PurePipe, NgTemplateOutlet, MatIcon, SelectorlessOutlet, PiyingView], template: "<ng-template #templateRef>\n @let data = $any(content());\n @if (isString | pure: data) {\n {{ data }}\n } @else if (isTemplateRef | pure: data) {\n <ng-container *ngTemplateOutlet=\"$any(data)\"></ng-container>\n } @else if (isSchema | pure: data) {\n <ng-container\n [selectlessOutlet]=\"PiyingView\"\n [selectlessOutletInputs]=\"piyingInput | pure: content : schemaOptions$$\"\n ></ng-container>\n } @else if (isObject | pure: data) {\n @if (data['image']; as image) {\n <img [src]=\"image.src\" [alt]=\"image.alt\" />\n }\n @if (data['icon']; as icon) {\n <mat-icon\n [inline]=\"icon.inline\"\n [fontIcon]=\"icon.fontIcon\"\n [fontSet]=\"icon.fontSet\"\n [svgIcon]=\"icon.svgIcon\"\n ></mat-icon>\n }\n @if (data['title']) {\n <span>\n {{ data['title'] }}\n </span>\n }\n }\n</ng-template>\n" }]
111
+ args: [{ selector: 'app-str-or-template', imports: [PurePipe, NgTemplateOutlet, MatIcon, SelectorlessOutlet, PiyingView], providers: [
112
+ {
113
+ provide: NG_VALUE_ACCESSOR,
114
+ useExisting: forwardRef(() => StrOrTemplateComponent),
115
+ multi: true,
116
+ },
117
+ ], template: "<ng-template #templateRef>\n @let data = $any(content$$());\n @if (isString | pure: data) {\n {{ data }}\n } @else if (isTemplateRef | pure: data) {\n <ng-container *ngTemplateOutlet=\"$any(data)\"></ng-container>\n } @else if (isSchema | pure: data) {\n <ng-container\n [selectlessOutlet]=\"PiyingView\"\n [selectlessOutletInputs]=\"piyingInput | pure: content$$ : schemaOptions$$\"\n ></ng-container>\n } @else if (isObject | pure: data) {\n @if (data['image']; as image) {\n <img [src]=\"image.src\" [alt]=\"image.alt\" />\n }\n @if (data['icon']; as icon) {\n <mat-icon\n [inline]=\"icon.inline\"\n [fontIcon]=\"icon.fontIcon\"\n [fontSet]=\"icon.fontSet\"\n [svgIcon]=\"icon.svgIcon\"\n ></mat-icon>\n }\n @if (data['title']) {\n <span>\n {{ data['title'] }}\n </span>\n }\n }\n</ng-template>\n" }]
102
118
  }], propDecorators: { templateRef: [{ type: i0.ViewChild, args: ['templateRef', { isSignal: true }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: false }] }] } });
103
119
 
104
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"piying-lib-angular-core.mjs","sources":["../../../projects/core/util/options.ts","../../../projects/core/util/computed-with-prev.ts","../../../projects/core/util/is.ts","../../../projects/core/str-template/component.ts","../../../projects/core/str-template/component.html","../../../projects/core/piying-lib-angular-core.ts"],"sourcesContent":["export interface Option1 {\n label: string;\n value: any;\n disabled?: boolean;\n type?: 'option';\n description?: string;\n}\nexport interface OptionGroup {\n disabled?: boolean;\n label: string;\n children: Option1[];\n type: 'group';\n description?: string;\n}\nexport interface ResolvedOption {\n label: string;\n value: any;\n disabled?: boolean;\n type: 'option' | 'group' | (string & {});\n children?: ResolvedOption[];\n description?: string;\n origin: any;\n}\nexport interface OptionConvert {\n label: (input: any) => string;\n description: (input: any) => string;\n value: (input: any) => any;\n isGroup: (input: any) => boolean;\n children: (input: any) => any[];\n disabled?: (input: any) => boolean;\n type?: (input: any) => string;\n}\nexport type Option2 = string;\n\nexport const DefaultOptionConvert: OptionConvert = {\n label: (item) => (typeof item !== 'object' ? item : item.label),\n description: (item) => item.description,\n value: (item) => (typeof item !== 'object' ? item : item.value),\n disabled: (item) => typeof item === 'object' && item.disabled,\n isGroup: (item) => typeof item === 'object' && item.type === 'group',\n type: (item) => (typeof item === 'object' ? item.type : 'option'),\n children: (item) => item.children,\n};\n\nexport function transformOptions(options: any[], optionConvert: OptionConvert): ResolvedOption[] {\n return options.map((option) => {\n const resolvedItem: ResolvedOption = {\n ...option,\n label: optionConvert.label(option),\n value: optionConvert.value(option),\n disabled: optionConvert.disabled?.(option) ?? false,\n type: 'option',\n description: optionConvert.description(option),\n };\n if (optionConvert.isGroup(option)) {\n resolvedItem.type = 'group';\n resolvedItem.children = transformOptions(optionConvert.children(option), optionConvert);\n return resolvedItem;\n }\n return resolvedItem;\n });\n}\nexport function transformOption(option: any, optionConvert: OptionConvert): ResolvedOption {\n const resolvedItem: ResolvedOption = {\n label: optionConvert.label(option),\n value: optionConvert.value(option),\n disabled: optionConvert.disabled?.(option) ?? false,\n type: optionConvert.type?.(option) ?? 'option',\n description: optionConvert.description(option),\n origin: option,\n };\n if (optionConvert.isGroup(option)) {\n resolvedItem.type = 'group';\n resolvedItem.children = transformOptions(optionConvert.children(option), optionConvert);\n return resolvedItem;\n }\n return resolvedItem;\n}\n\nexport interface SelectOption {\n readonly label?: string;\n readonly value: any;\n readonly description?: string;\n readonly disabled?: boolean;\n /** 样式代替label */\n readonly style?: any;\n}\n","import { computed, CreateComputedOptions, Signal } from '@angular/core';\n\nexport function computedWithPrev<T>(\n computation: (prev: T | undefined) => T,\n options?: CreateComputedOptions<T>,\n): Signal<T> {\n let previous: T | undefined;\n return computed(() => {\n const newValue = computation(previous);\n previous = newValue;\n return newValue;\n }, options);\n}\n","export function isSchema(input: any) {\n return (\n input && typeof input === 'object' && '~run' in input && 'kind' in input && 'type' in input\n );\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, inject, input, TemplateRef, viewChild } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { SelectorlessOutlet } from '@cyia/ngx-common/directive';\nimport { PurePipe } from '@cyia/ngx-common/pipe';\nimport { isSchema } from '../util';\nimport { PI_INPUT_OPTIONS_TOKEN, PiyingView } from '@piying/view-angular';\n\n@Component({\n selector: 'app-str-or-template',\n templateUrl: './component.html',\n imports: [PurePipe, NgTemplateOutlet, MatIcon, SelectorlessOutlet, PiyingView],\n})\nexport class StrOrTemplateComponent {\n static __version = 2;\n readonly PiyingView = PiyingView;\n templateRef = viewChild.required('templateRef');\n content = input();\n context = input();\n parentPyOptions = inject(PI_INPUT_OPTIONS_TOKEN, { optional: true });\n schemaOptions$$ = computed(() => {\n return {\n ...this.parentPyOptions!(),\n context: { ...this.parentPyOptions!().context, ...(this.context() as any) },\n };\n });\n\n isString(input: any) {\n return typeof input === 'string' || typeof input === 'number' || typeof input === 'boolean';\n }\n isTemplateRef(input: any) {\n return input instanceof TemplateRef;\n }\n isObject(input: any) {\n return typeof input === 'object';\n }\n isSchema = isSchema;\n piyingInput = (schema: any, options: any) => {\n return {\n schema,\n options,\n selectorless: true,\n };\n };\n}\n","<ng-template #templateRef>\n @let data = $any(content());\n @if (isString | pure: data) {\n {{ data }}\n } @else if (isTemplateRef | pure: data) {\n <ng-container *ngTemplateOutlet=\"$any(data)\"></ng-container>\n } @else if (isSchema | pure: data) {\n <ng-container\n [selectlessOutlet]=\"PiyingView\"\n [selectlessOutletInputs]=\"piyingInput | pure: content : schemaOptions$$\"\n ></ng-container>\n } @else if (isObject | pure: data) {\n @if (data['image']; as image) {\n <img [src]=\"image.src\" [alt]=\"image.alt\" />\n }\n @if (data['icon']; as icon) {\n <mat-icon\n [inline]=\"icon.inline\"\n [fontIcon]=\"icon.fontIcon\"\n [fontSet]=\"icon.fontSet\"\n [svgIcon]=\"icon.svgIcon\"\n ></mat-icon>\n }\n @if (data['title']) {\n <span>\n {{ data['title'] }}\n </span>\n }\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"piying-lib-angular-core.mjs","sources":["../../../projects/core/util/options.ts","../../../projects/core/util/computed-with-prev.ts","../../../projects/core/util/is.ts","../../../projects/core/str-template/component.ts","../../../projects/core/str-template/component.html","../../../projects/core/piying-lib-angular-core.ts"],"sourcesContent":["export interface Option1 {\n label: string;\n value: any;\n disabled?: boolean;\n type?: 'option';\n description?: string;\n}\nexport interface OptionGroup {\n disabled?: boolean;\n label: string;\n children: Option1[];\n type: 'group';\n description?: string;\n}\nexport interface ResolvedOption {\n label: string;\n value: any;\n disabled?: boolean;\n type: 'option' | 'group' | (string & {});\n children?: ResolvedOption[];\n description?: string;\n origin: any;\n}\nexport interface OptionConvert {\n label: (input: any) => string;\n description: (input: any) => string;\n value: (input: any) => any;\n isGroup: (input: any) => boolean;\n children: (input: any) => any[];\n disabled?: (input: any) => boolean;\n type?: (input: any) => string;\n}\nexport type Option2 = string;\n\nexport const DefaultOptionConvert: OptionConvert = {\n label: (item) => (typeof item !== 'object' ? item : item.label),\n description: (item) => item.description,\n value: (item) => (typeof item !== 'object' ? item : item.value),\n disabled: (item) => typeof item === 'object' && item.disabled,\n isGroup: (item) => typeof item === 'object' && item.type === 'group',\n type: (item) => (typeof item === 'object' ? item.type : 'option'),\n children: (item) => item.children,\n};\n\nexport function transformOptions(options: any[], optionConvert: OptionConvert): ResolvedOption[] {\n return options.map((option) => {\n const resolvedItem: ResolvedOption = {\n ...option,\n label: optionConvert.label(option),\n value: optionConvert.value(option),\n disabled: optionConvert.disabled?.(option) ?? false,\n type: 'option',\n description: optionConvert.description(option),\n };\n if (optionConvert.isGroup(option)) {\n resolvedItem.type = 'group';\n resolvedItem.children = transformOptions(optionConvert.children(option), optionConvert);\n return resolvedItem;\n }\n return resolvedItem;\n });\n}\nexport function transformOption(option: any, optionConvert: OptionConvert): ResolvedOption {\n const resolvedItem: ResolvedOption = {\n label: optionConvert.label(option),\n value: optionConvert.value(option),\n disabled: optionConvert.disabled?.(option) ?? false,\n type: optionConvert.type?.(option) ?? 'option',\n description: optionConvert.description(option),\n origin: option,\n };\n if (optionConvert.isGroup(option)) {\n resolvedItem.type = 'group';\n resolvedItem.children = transformOptions(optionConvert.children(option), optionConvert);\n return resolvedItem;\n }\n return resolvedItem;\n}\n\nexport interface SelectOption {\n readonly label?: string;\n readonly value: any;\n readonly description?: string;\n readonly disabled?: boolean;\n /** 样式代替label */\n readonly style?: any;\n}\n","import { computed, CreateComputedOptions, Signal } from '@angular/core';\n\nexport function computedWithPrev<T>(\n computation: (prev: T | undefined) => T,\n options?: CreateComputedOptions<T>,\n): Signal<T> {\n let previous: T | undefined;\n return computed(() => {\n const newValue = computation(previous);\n previous = newValue;\n return newValue;\n }, options);\n}\n","export function isSchema(input: any) {\n return (\n input && typeof input === 'object' && '~run' in input && 'kind' in input && 'type' in input\n );\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n computed,\n forwardRef,\n inject,\n input,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { SelectorlessOutlet } from '@cyia/ngx-common/directive';\nimport { PurePipe } from '@cyia/ngx-common/pipe';\nimport { isSchema } from '../util';\nimport { BaseControl, PI_INPUT_OPTIONS_TOKEN, PiyingView } from '@piying/view-angular';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-str-or-template',\n templateUrl: './component.html',\n imports: [PurePipe, NgTemplateOutlet, MatIcon, SelectorlessOutlet, PiyingView],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => StrOrTemplateComponent),\n multi: true,\n },\n ],\n})\nexport class StrOrTemplateComponent extends BaseControl {\n static __version = 2;\n readonly PiyingView = PiyingView;\n templateRef = viewChild.required('templateRef');\n content = input();\n context = input();\n content$$ = computed(() => {\n return this.content() ?? this.value$();\n });\n parentPyOptions = inject(PI_INPUT_OPTIONS_TOKEN, { optional: true });\n schemaOptions$$ = computed(() => {\n return {\n ...this.parentPyOptions!(),\n context: { ...this.parentPyOptions!().context, ...(this.context() as any) },\n };\n });\n\n isString(input: any) {\n return typeof input === 'string' || typeof input === 'number' || typeof input === 'boolean';\n }\n isTemplateRef(input: any) {\n return input instanceof TemplateRef;\n }\n isObject(input: any) {\n return typeof input === 'object';\n }\n isSchema = isSchema;\n piyingInput = (schema: any, options: any) => {\n return {\n schema,\n options,\n selectorless: true,\n };\n };\n}\n","<ng-template #templateRef>\n @let data = $any(content$$());\n @if (isString | pure: data) {\n {{ data }}\n } @else if (isTemplateRef | pure: data) {\n <ng-container *ngTemplateOutlet=\"$any(data)\"></ng-container>\n } @else if (isSchema | pure: data) {\n <ng-container\n [selectlessOutlet]=\"PiyingView\"\n [selectlessOutletInputs]=\"piyingInput | pure: content$$ : schemaOptions$$\"\n ></ng-container>\n } @else if (isObject | pure: data) {\n @if (data['image']; as image) {\n <img [src]=\"image.src\" [alt]=\"image.alt\" />\n }\n @if (data['icon']; as icon) {\n <mat-icon\n [inline]=\"icon.inline\"\n [fontIcon]=\"icon.fontIcon\"\n [fontSet]=\"icon.fontSet\"\n [svgIcon]=\"icon.svgIcon\"\n ></mat-icon>\n }\n @if (data['title']) {\n <span>\n {{ data['title'] }}\n </span>\n }\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as valibot from 'valibot';
2
2
  import * as _piying_view_angular from '@piying/view-angular';
3
- import { PiyingView } from '@piying/view-angular';
3
+ import { BaseControl, PiyingView } from '@piying/view-angular';
4
4
  import * as _piying_valibot_visit from '@piying/valibot-visit';
5
5
  import * as _piying_view_angular_core from '@piying/view-angular-core';
6
6
  import * as _angular_core from '@angular/core';
@@ -65,12 +65,13 @@ declare function computedWithPrev<T>(computation: (prev: T | undefined) => T, op
65
65
 
66
66
  declare function isSchema(input: any): any;
67
67
 
68
- declare class StrOrTemplateComponent {
68
+ declare class StrOrTemplateComponent extends BaseControl {
69
69
  static __version: number;
70
70
  readonly PiyingView: typeof PiyingView;
71
71
  templateRef: _angular_core.Signal<unknown>;
72
72
  content: _angular_core.InputSignal<unknown>;
73
73
  context: _angular_core.InputSignal<unknown>;
74
+ content$$: _angular_core.Signal<any>;
74
75
  parentPyOptions: _angular_core.Signal<Omit<_piying_view_angular_core.SetOptional<Omit<_piying_valibot_visit.ConvertOptions<typeof _piying_view_angular_core.CoreSchemaHandle>, "handle"> & Partial<Pick<_piying_valibot_visit.ConvertOptions<typeof _piying_view_angular_core.CoreSchemaHandle>, "handle">> & {
75
76
  builder: typeof _piying_view_angular_core.FormBuilder;
76
77
  fieldGlobalConfig?: _piying_view_angular.PiViewConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piying-lib/angular-core",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.3.0",
6
6
  "@angular/core": ">=20.3.0"