@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.
- package/README.md +327 -187
- package/editor/editor-completions.d.ts +8 -0
- package/editor/editor-forbidden.d.ts +8 -0
- package/editor/editor-height.d.ts +21 -0
- package/esm2022/editor/editor-completions.mjs +36 -0
- package/esm2022/editor/editor-forbidden.mjs +65 -0
- package/esm2022/editor/editor-height.mjs +136 -0
- package/esm2022/linters/js-linter.mjs +348 -0
- package/esm2022/linters/json-linter.mjs +14 -0
- package/esm2022/linters/linter-shared.mjs +8 -0
- package/esm2022/linters/python-linter.mjs +52 -0
- package/esm2022/linters/sql-linter.mjs +34 -0
- package/esm2022/preview-text-data.component.mjs +43 -319
- package/esm2022/preview-text-data.define.mjs +13 -1
- package/esm2022/preview-text-data.type.mjs +2 -0
- package/fesm2022/libs-ui-components-preview-text-data.mjs +733 -320
- package/fesm2022/libs-ui-components-preview-text-data.mjs.map +1 -1
- package/linters/js-linter.d.ts +45 -0
- package/linters/json-linter.d.ts +4 -0
- package/linters/linter-shared.d.ts +3 -0
- package/linters/python-linter.d.ts +4 -0
- package/linters/sql-linter.d.ts +4 -0
- package/package.json +9 -7
- package/preview-text-data.component.d.ts +20 -35
- package/preview-text-data.define.d.ts +12 -0
- package/preview-text-data.type.d.ts +33 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
+
};
|