@wemake4u/feel-editor 1.0.1 → 1.0.3

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 +1 @@
1
- {"version":3,"file":"wemake4u-feel-editor.mjs","sources":["../../../projects/feel-editor/src/lib/components/feel-editor.component.ts","../../../projects/feel-editor/src/lib/components/feel-editor.component.html","../../../projects/feel-editor/src/public-api.ts","../../../projects/feel-editor/src/wemake4u-feel-editor.ts"],"sourcesContent":["/// <reference path=\"../types/feel-editor.d.ts\" />\r\n\r\nimport {\r\n Component, forwardRef, Input, Output, AfterViewInit, ViewChild\r\n , ElementRef, EventEmitter\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport FeelEditor, { FeelDialect, FeelBuiltin, FeelVariable } from '@bpmn-io/feel-editor';\r\nimport { lineNumbers, EditorView } from '@codemirror/view';\r\nimport { keymap } from '@codemirror/view';\r\nimport { indentLess, indentMore, history, historyKeymap } from '@codemirror/commands'\r\nimport * as state from '@codemirror/state';\r\n\r\n@Component({\r\n selector: 'feel-editor',\r\n templateUrl: './feel-editor.component.html',\r\n styleUrls: ['./feel-editor.component.css'],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FeelEditorComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class FeelEditorComponent implements ControlValueAccessor, AfterViewInit {\r\n @ViewChild('editorContainer', { static: true }) editorContainerRef!: ElementRef;\r\n\r\n @Output() change = new EventEmitter<string>();\r\n @Output() keydown = new EventEmitter<KeyboardEvent>();\r\n @Output() lint = new EventEmitter<any[]>();\r\n\r\n @Input() embedded: boolean = false;\r\n @Input() minHeight?: string;\r\n @Input() maxHeight?: string;\r\n\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set disabled(value: boolean) {\r\n if (this._disabled === value)\r\n return;\r\n this._disabled = value;\r\n this.refreshEditor();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this._readonly;\r\n }\r\n\r\n @Input()\r\n set readonly(value: boolean) {\r\n if (this._readonly === value)\r\n return;\r\n this._readonly = value;\r\n this.refreshEditor();\r\n }\r\n\r\n get lineNumbers(): boolean {\r\n return this._lineNumbers;\r\n }\r\n\r\n @Input()\r\n set lineNumbers(value: boolean) {\r\n if (this._lineNumbers === value)\r\n return;\r\n this._lineNumbers = value;\r\n this.refreshEditor();\r\n }\r\n\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n\r\n @Input()\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n if (this._editor) {\r\n this._editor.setPlaceholder(value);\r\n }\r\n }\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n @Input()\r\n set value(value: string) {\r\n this.writeValue(value);\r\n }\r\n\r\n get dialect(): FeelDialect {\r\n return this._dialect;\r\n }\r\n\r\n @Input()\r\n set dialect(value: FeelDialect) {\r\n if (this._dialect === value)\r\n return;\r\n this._dialect = value;\r\n this.refreshEditor();\r\n }\r\n\r\n get builtins(): FeelBuiltin[] | undefined {\r\n return this._builtins;\r\n }\r\n\r\n @Input()\r\n set builtins(value: FeelBuiltin[] | undefined) {\r\n if (this._builtins === value)\r\n return; \r\n this._builtins = value;\r\n this.refreshEditor();\r\n }\r\n\r\n get variables(): FeelVariable[] | undefined {\r\n return this._variables;\r\n }\r\n\r\n @Input()\r\n set variables(value: FeelVariable[] | undefined) {\r\n this._variables = value;\r\n if (this._editor) {\r\n this._editor.setVariables(value || []);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.isViewInit = true;\r\n this.createEditor(); \r\n }\r\n\r\n writeValue(value: string): void {\r\n this._value = value || '';\r\n if (this._editor) {\r\n this._editor.setValue(this._value);\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n //#region Private Members\r\n\r\n private isViewInit = false;\r\n\r\n private _editor?: FeelEditor;\r\n\r\n private _value = '';\r\n\r\n private _readonly: boolean = false;\r\n\r\n private _disabled: boolean = false;\r\n\r\n private _lineNumbers: boolean = false;\r\n\r\n private _placeholder: string = \"\";\r\n\r\n private _dialect: FeelDialect = \"expression\";\r\n\r\n private _builtins: FeelBuiltin[] | undefined;\r\n\r\n private _variables: FeelVariable[] | undefined;\r\n\r\n private onChange = (_: any) => { };\r\n\r\n public onTouched = () => { };\r\n\r\n private createEditor(): void {\r\n if (!this.isViewInit || !this.editorContainerRef?.nativeElement)\r\n return;\r\n\r\n this._editor = new FeelEditor({\r\n container: this.editorContainerRef.nativeElement,\r\n placeholder: this._placeholder,\r\n readOnly: (this._readonly || this._disabled),\r\n dialect: this.dialect,\r\n value: this._value,\r\n builtins: this._builtins,\r\n variables: this._variables,\r\n onChange: (value: string) => {\r\n this._value = value;\r\n this.onChange(value);\r\n this.change.emit(value);\r\n },\r\n onKeyDown: (event: KeyboardEvent) => this.keydown.emit(event),\r\n onLint: (issues: any[]) => this.lint.emit(issues),\r\n extensions: [...(this._lineNumbers ? [lineNumbers()] : []), EditorView.lineWrapping],\r\n });\r\n\r\n this.configureEditor(this._editor);\r\n\r\n this.editorContainerRef?.nativeElement.classList.toggle('disabled', this._disabled);\r\n }\r\n\r\n private destroyEditor(): void {\r\n if (this._editor) {\r\n this._editor = undefined;\r\n this.editorContainerRef.nativeElement.innerHTML = '';\r\n } \r\n }\r\n\r\n private refreshEditor(): void {\r\n this.destroyEditor();\r\n this.createEditor();\r\n }\r\n\r\n private configureEditor(editor: any) {\r\n\r\n if (!editor._cmEditor)\r\n return;\r\n\r\n const customKeymap = keymap.of([\r\n {\r\n key: \"Shift-+\",\r\n run: indentMore\r\n },\r\n {\r\n key: \"Shift--\",\r\n run: indentLess\r\n }\r\n ]);\r\n\r\n editor._cmEditor.dispatch({\r\n effects: state.StateEffect.appendConfig.of([\r\n history(),\r\n keymap.of(historyKeymap),\r\n customKeymap\r\n ])\r\n });\r\n }\r\n\r\n //#endregion\r\n}\r\n","<div #editorContainer\r\n class=\"feel-editor-container\"\r\n (blur)=\"onTouched()\"\r\n [ngClass]=\"embedded ? 'feel-editor-embedded' : 'feel-editor-standalone'\"\r\n [style.min-height]=\"minHeight\"\r\n [style.max-height]=\"maxHeight\">\r\n</div>\r\n","/*\r\n * Public API Surface of feel-editor\r\n */\r\n\r\nexport * from './lib/components/feel-editor.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wemake4u-feel-editor.mjs","sources":["../../../projects/feel-editor/src/lib/utils/parseBuiltins.ts","../../../projects/feel-editor/src/lib/components/feel-editor.component.ts","../../../projects/feel-editor/src/lib/components/feel-editor.component.html","../../../projects/feel-editor/src/public-api.ts","../../../projects/feel-editor/src/wemake4u-feel-editor.ts"],"sourcesContent":["import { domify } from 'min-dom';\r\nimport { FeelBuiltin } from '@bpmn-io/feel-editor';\r\nimport defaultBuiltins from '../assets/builtins.json';\r\n\r\ninterface BuiltinInfo {\r\n name: string;\r\n description: string;\r\n}\r\n\r\nexport function parseBuiltins(builtins: BuiltinInfo[]): FeelBuiltin[] {\r\n return builtins.map(parseBuiltin);\r\n}\r\n\r\nexport function parseBuiltin(builtin: BuiltinInfo): FeelBuiltin {\r\n\r\n const {\r\n name,\r\n description\r\n } = builtin;\r\n\r\n const match = name.match(/^([\\w\\s]+)\\((.*)\\)$/);\r\n const functionName = match ? match[1] : \"\";\r\n const functionArguments = match ? match[2]: \"\";\r\n\r\n const params = functionArguments ? functionArguments.split(', ').map((name: string) => ({ name })) : [];\r\n\r\n return {\r\n name: functionName,\r\n type: 'function',\r\n params,\r\n info: () => {\r\n return domify(`<div class=\"description\">${description}<div>`);\r\n },\r\n boost: 0\r\n };\r\n}\r\n\r\nexport function getDefaultBuiltins(): FeelBuiltin[] {\r\n return parseBuiltins(defaultBuiltins);\r\n}\r\n","/// <reference path=\"../types/feel-editor.d.ts\" />\r\n\r\nimport { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport FeelEditor, { FeelDialect, FeelBuiltin, FeelVariable } from '@bpmn-io/feel-editor';\r\nimport { getDefaultBuiltins } from '../utils/parseBuiltins';\r\nimport { CodeEditorComponent, createValueAccessorProvider } from '@wemake4u/code-editor';\r\n\r\n@Component({\r\n selector: 'feel-editor',\r\n templateUrl: './feel-editor.component.html',\r\n styleUrls: ['./feel-editor.component.css'],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule],\r\n providers: [\r\n createValueAccessorProvider(FeelEditorComponent)\r\n ]\r\n})\r\nexport class FeelEditorComponent extends CodeEditorComponent {\r\n\r\n //#region dialect\r\n\r\n get dialect(): FeelDialect {\r\n return this._dialect;\r\n }\r\n\r\n @Input()\r\n set dialect(value: FeelDialect) {\r\n if (this._dialect === value)\r\n return;\r\n this._dialect = value;\r\n this.refreshEditor();\r\n }\r\n\r\n //#endregion\r\n\r\n //#region builtins\r\n\r\n get builtins(): FeelBuiltin[] | null | undefined {\r\n return this._builtins;\r\n }\r\n\r\n @Input()\r\n set builtins(value: FeelBuiltin[] | null | undefined) {\r\n if (this._builtins === value)\r\n return;\r\n this._builtins = value;\r\n this.refreshEditor();\r\n }\r\n\r\n private getBuiltins() {\r\n if (Array.isArray(this._builtins)) {\r\n return [...getDefaultBuiltins(), ...this._builtins];\r\n }\r\n\r\n return this._builtins;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region variables\r\n\r\n get variables(): FeelVariable[] | null | undefined {\r\n return this._variables;\r\n }\r\n\r\n @Input()\r\n set variables(value: FeelVariable[] | null | undefined) {\r\n this._variables = value;\r\n if (this._feelEditor) {\r\n this._feelEditor.setVariables(value || []);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Private Members\r\n\r\n private _feelEditor: FeelEditor | null | undefined;\r\n\r\n private _dialect: FeelDialect = \"expression\";\r\n\r\n private _builtins: FeelBuiltin[] | null | undefined;\r\n\r\n private _variables: FeelVariable[] | null | undefined;\r\n\r\n override createEditorView(container: any) {\r\n\r\n this._feelEditor = new FeelEditor({\r\n container: container,\r\n dialect: this.dialect,\r\n value: this.value,\r\n builtins: this.getBuiltins() ?? undefined,\r\n variables: this._variables ?? undefined,\r\n extensions: this.getExtensions()\r\n });\r\n\r\n return (this._feelEditor as any) ._cmEditor;\r\n }\r\n\r\n //#endregion\r\n}\r\n","<div #editorContainer\r\n class=\"feel-editor-container\"\r\n (blur)=\"onTouched()\"\r\n [ngClass]=\"embedded ? 'feel-editor-embedded' : 'feel-editor-standalone'\"\r\n [style.min-height]=\"minHeight\"\r\n [style.max-height]=\"maxHeight\">\r\n</div>\r\n","/*\r\n * Public API Surface of feel-editor\r\n */\r\n\r\nexport * from './lib/components/feel-editor.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,52 +1,19 @@
1
- import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
2
- import { ControlValueAccessor } from '@angular/forms';
3
1
  import { FeelDialect, FeelBuiltin, FeelVariable } from '@bpmn-io/feel-editor';
2
+ import { CodeEditorComponent } from '@wemake4u/code-editor';
4
3
  import * as i0 from "@angular/core";
5
- export declare class FeelEditorComponent implements ControlValueAccessor, AfterViewInit {
6
- editorContainerRef: ElementRef;
7
- change: EventEmitter<string>;
8
- keydown: EventEmitter<KeyboardEvent>;
9
- lint: EventEmitter<any[]>;
10
- embedded: boolean;
11
- minHeight?: string;
12
- maxHeight?: string;
13
- get disabled(): boolean;
14
- set disabled(value: boolean);
15
- get readonly(): boolean;
16
- set readonly(value: boolean);
17
- get lineNumbers(): boolean;
18
- set lineNumbers(value: boolean);
19
- get placeholder(): string;
20
- set placeholder(value: string);
21
- get value(): string;
22
- set value(value: string);
4
+ export declare class FeelEditorComponent extends CodeEditorComponent {
23
5
  get dialect(): FeelDialect;
24
6
  set dialect(value: FeelDialect);
25
- get builtins(): FeelBuiltin[] | undefined;
26
- set builtins(value: FeelBuiltin[] | undefined);
27
- get variables(): FeelVariable[] | undefined;
28
- set variables(value: FeelVariable[] | undefined);
29
- ngAfterViewInit(): void;
30
- writeValue(value: string): void;
31
- registerOnChange(fn: any): void;
32
- registerOnTouched(fn: any): void;
33
- setDisabledState(isDisabled: boolean): void;
34
- private isViewInit;
35
- private _editor?;
36
- private _value;
37
- private _readonly;
38
- private _disabled;
39
- private _lineNumbers;
40
- private _placeholder;
7
+ get builtins(): FeelBuiltin[] | null | undefined;
8
+ set builtins(value: FeelBuiltin[] | null | undefined);
9
+ private getBuiltins;
10
+ get variables(): FeelVariable[] | null | undefined;
11
+ set variables(value: FeelVariable[] | null | undefined);
12
+ private _feelEditor;
41
13
  private _dialect;
42
14
  private _builtins;
43
15
  private _variables;
44
- private onChange;
45
- onTouched: () => void;
46
- private createEditor;
47
- private destroyEditor;
48
- private refreshEditor;
49
- private configureEditor;
16
+ createEditorView(container: any): any;
50
17
  static ɵfac: i0.ɵɵFactoryDeclaration<FeelEditorComponent, never>;
51
- static ɵcmp: i0.ɵɵComponentDeclaration<FeelEditorComponent, "feel-editor", never, { "embedded": { "alias": "embedded"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "lineNumbers": { "alias": "lineNumbers"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "dialect": { "alias": "dialect"; "required": false; }; "builtins": { "alias": "builtins"; "required": false; }; "variables": { "alias": "variables"; "required": false; }; }, { "change": "change"; "keydown": "keydown"; "lint": "lint"; }, never, never, true, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<FeelEditorComponent, "feel-editor", never, { "dialect": { "alias": "dialect"; "required": false; }; "builtins": { "alias": "builtins"; "required": false; }; "variables": { "alias": "variables"; "required": false; }; }, {}, never, never, true, never>;
52
19
  }
@@ -0,0 +1,9 @@
1
+ import { FeelBuiltin } from '@bpmn-io/feel-editor';
2
+ interface BuiltinInfo {
3
+ name: string;
4
+ description: string;
5
+ }
6
+ export declare function parseBuiltins(builtins: BuiltinInfo[]): FeelBuiltin[];
7
+ export declare function parseBuiltin(builtin: BuiltinInfo): FeelBuiltin;
8
+ export declare function getDefaultBuiltins(): FeelBuiltin[];
9
+ export {};
package/package.json CHANGED
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "@wemake4u/feel-editor",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
+ "license": "MIT",
4
5
  "peerDependencies": {
5
6
  "@angular/common": "^18.2.0",
6
- "@angular/core": "^18.2.0"
7
+ "@angular/core": "^18.2.0",
8
+ "@wemake4u/code-editor": "^1.0.0"
7
9
  },
8
10
  "dependencies": {
9
11
  "tslib": "^2.3.0",