@libs-ui/components-preview-text-data 0.2.357-2 → 0.2.357-21

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.
@@ -30,6 +30,21 @@ export declare class LibsUiComponentsPreviewTextDataComponent implements OnInit,
30
30
  readonly langsChangeLabel: import("@angular/core").InputSignal<ILanguageOptions | undefined>;
31
31
  readonly editable: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
32
32
  readonly hiddenAction: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
33
+ /** Số dòng tối thiểu: nếu content ít dòng hơn sẽ tự bù dòng trống (xử lý 1 lần khi khởi tạo editor). Bỏ trống = không bù. */
34
+ readonly minLines: import("@angular/core").InputSignal<number | undefined>;
35
+ /** Số dòng tối đa: vượt quá editor sẽ giới hạn chiều cao và xuất hiện vùng cuộn (xử lý 1 lần khi khởi tạo editor). Bỏ trống = không giới hạn. */
36
+ readonly maxLines: import("@angular/core").InputSignal<number | undefined>;
37
+ /**
38
+ * Element container bên ngoài để editor tự tính chiều cao theo `min-height`/`max-height` (CSS) của nó.
39
+ * Khi truyền, editor đọc min/max-height của container, trừ phần header/toolbar phía trên, rồi snap
40
+ * chiều cao vùng cuộn về đúng bội số dòng (không cắt nửa dòng) + bật scroll khi vượt max.
41
+ * CẤM cấu hình đồng thời với `minLines`/`maxLines` (sẽ throw lỗi) — container tự quản lý min/max.
42
+ */
43
+ readonly containerElement: import("@angular/core").InputSignal<HTMLElement | undefined>;
44
+ /** z-index cho popover dropdown chọn ngôn ngữ. */
45
+ readonly zIndexPopover: import("@angular/core").InputSignal<number | undefined>;
46
+ /** Ẩn ô search trong dropdown chọn ngôn ngữ (danh sách ngôn ngữ ngắn thường không cần tìm kiếm). */
47
+ readonly hiddenSearchLang: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
33
48
  readonly lintIgnorePatterns: import("@angular/core").InputSignalWithTransform<string[], string[] | undefined>;
34
49
  /**
35
50
  * Danh sách đối tượng/biến gợi ý khi gõ — giống IntelliSense trong IDE.
@@ -76,47 +91,17 @@ export declare class LibsUiComponentsPreviewTextDataComponent implements OnInit,
76
91
  private createLightTheme;
77
92
  private createBracketTheme;
78
93
  private createUpdateListener;
79
- /**
80
- * Tạo JavaScript linter với 2-pass detection:
81
- * 1. Text-based scan cho trailing dot (parser thường đặt error node sai vị trí với pattern này)
82
- * 2. syntaxTree cho các lỗi thực sự khác, bỏ qua vùng bị ảnh hưởng bởi trailing dot
83
- */
94
+ /** JavaScript/TypeScript linter — pipeline trong `linters/js-linter.ts` (babel + trailing-dot + thiếu `;` + biến chưa khai báo). */
84
95
  createJsLinter(): Extension;
85
- private buildJsErrorMessage;
86
- /**
87
- * Tạo JSON linter
88
- * Sử dụng JSON.parse để validate
89
- */
96
+ /** JSON linter — logic trong `linters/json-linter.ts`. */
90
97
  createJsonLinter(): Extension;
91
- /**
92
- * Tạo SQL linter
93
- */
98
+ /** SQL linter — logic trong `linters/sql-linter.ts`. */
94
99
  createSqlLinter(): Extension;
95
- private buildSqlErrorMessage;
96
- private getTokenBefore;
97
- /**
98
- * Tạo Python linter dựa trên syntaxTree parse error — cùng approach với SQL linter.
99
- * Phát hiện lỗi cú pháp mà CodeMirror Python parser đánh dấu là error node.
100
- */
100
+ /** Python linter — logic trong `linters/python-linter.ts`. */
101
101
  createPythonLinter(): Extension;
102
- private buildPythonErrorMessage;
103
- /**
104
- * Tạo CodeMirror extension cho custom completions từ danh sách input.
105
- * Hỗ trợ 2 chế độ:
106
- * 1. Gõ tên biến → gợi ý top-level items
107
- * 2. Gõ `obj.` → gợi ý properties của obj
108
- */
109
- private buildCompletionExtension;
110
- /**
111
- * Tạo extension bảo mật gồm 2 layer:
112
- * 1. Linter: highlight đỏ tại đúng vị trí match + emit outViolations
113
- * 2. Transaction filter: chặn paste nếu nội dung paste chứa pattern cấm
114
- */
115
- private buildForbiddenExtension;
116
- private escapeRegex;
117
102
  protected handlerCopy(): void;
118
103
  protected handlerLineWrap(): void;
119
104
  protected handlerSelectKey(data?: IEmitSelectKey): Promise<void>;
120
105
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsPreviewTextDataComponent, never>;
121
- static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsPreviewTextDataComponent, "libs_ui-components-preview_text_data", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "langSelected": { "alias": "langSelected"; "required": true; "isSignal": true; }; "langsAccept": { "alias": "langsAccept"; "required": false; "isSignal": true; }; "langsChangeLabel": { "alias": "langsChangeLabel"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "hiddenAction": { "alias": "hiddenAction"; "required": false; "isSignal": true; }; "lintIgnorePatterns": { "alias": "lintIgnorePatterns"; "required": false; "isSignal": true; }; "completions": { "alias": "completions"; "required": false; "isSignal": true; }; "forbiddenPatterns": { "alias": "forbiddenPatterns"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; }, { "langSelected": "langSelectedChange"; "outChange": "outChange"; "syntaxErrors": "syntaxErrors"; "outViolations": "outViolations"; }, never, never, true, never>;
106
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsPreviewTextDataComponent, "libs_ui-components-preview_text_data", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "langSelected": { "alias": "langSelected"; "required": true; "isSignal": true; }; "langsAccept": { "alias": "langsAccept"; "required": false; "isSignal": true; }; "langsChangeLabel": { "alias": "langsChangeLabel"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "hiddenAction": { "alias": "hiddenAction"; "required": false; "isSignal": true; }; "minLines": { "alias": "minLines"; "required": false; "isSignal": true; }; "maxLines": { "alias": "maxLines"; "required": false; "isSignal": true; }; "containerElement": { "alias": "containerElement"; "required": false; "isSignal": true; }; "zIndexPopover": { "alias": "zIndexPopover"; "required": false; "isSignal": true; }; "hiddenSearchLang": { "alias": "hiddenSearchLang"; "required": false; "isSignal": true; }; "lintIgnorePatterns": { "alias": "lintIgnorePatterns"; "required": false; "isSignal": true; }; "completions": { "alias": "completions"; "required": false; "isSignal": true; }; "forbiddenPatterns": { "alias": "forbiddenPatterns"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; }, { "langSelected": "langSelectedChange"; "outChange": "outChange"; "syntaxErrors": "syntaxErrors"; "outViolations": "outViolations"; }, never, never, true, never>;
122
107
  }
@@ -20,6 +20,18 @@ export declare const languageRegistry: Record<string, I_LanguageRegistryItem>;
20
20
  * Chặn các API nguy hiểm: eval, network calls, storage, DOM injection...
21
21
  */
22
22
  export declare const DEFAULT_SECURITY_PATTERNS: T_ForbiddenPattern[];
23
+ /**
24
+ * Các key của AST node KHÔNG phải node con (metadata vị trí, comment...) — bỏ qua khi duyệt.
25
+ */
26
+ export declare const astSkipKeys: Set<string>;
27
+ /**
28
+ * Các key chứa annotation kiểu TypeScript → con của nó nằm trong "type context" (không phải biến giá trị).
29
+ */
30
+ export declare const astTypeKeys: Set<string>;
31
+ /**
32
+ * Các node `TS*` mang GIÁ TRỊ (không phải type thuần) → con của chúng vẫn là biến giá trị bình thường.
33
+ */
34
+ export declare const tsValueNodes: Set<string>;
23
35
  /**
24
36
  * Tạo default language extension cho plain text
25
37
  * Sử dụng khi ngôn ngữ không được hỗ trợ
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Type structural tối thiểu cho AST node của `@babel/parser` (plain object, browser-safe).
3
+ *
4
+ * KHÔNG dùng `@babel/traverse` để resolve scope vì nó phụ thuộc `process` của Node → crash trên
5
+ * browser (`ReferenceError: process is not defined`). Thay vào đó tự duyệt AST (chỉ là object
6
+ * thuần). Type này chỉ khai báo các thuộc tính được dùng trong bộ duyệt semantic linter; phần
7
+ * còn lại truy cập qua index signature.
8
+ */
9
+ export type T_AstNode = {
10
+ type: string;
11
+ end?: number;
12
+ name?: string;
13
+ computed?: boolean;
14
+ id?: T_AstNode | null;
15
+ param?: T_AstNode | null;
16
+ parameter?: T_AstNode;
17
+ argument?: T_AstNode;
18
+ left?: T_AstNode;
19
+ value?: T_AstNode;
20
+ local?: {
21
+ name?: string;
22
+ };
23
+ params?: T_AstNode[];
24
+ properties?: T_AstNode[];
25
+ elements?: Array<T_AstNode | null>;
26
+ loc?: {
27
+ start: {
28
+ line: number;
29
+ column: number;
30
+ };
31
+ } | null;
32
+ [key: string]: unknown;
33
+ };