@po-ui/ng-code-editor 5.20.0 → 6.0.0-rc.1
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 +20 -20
- package/esm2020/lib/components/po-code-editor/interfaces/po-code-editor-registerable-options.interface.mjs +2 -0
- package/esm2020/lib/components/po-code-editor/interfaces/po-code-editor-registerable-suggestion.interface.mjs +2 -0
- package/esm2020/lib/components/po-code-editor/interfaces/po-code-editor-registerable-tokens.interface.mjs +2 -0
- package/esm2020/lib/components/po-code-editor/interfaces/po-code-editor-registerable.interface.mjs +2 -0
- package/esm2020/lib/components/po-code-editor/po-code-editor-base.component.mjs +261 -0
- package/esm2020/lib/components/po-code-editor/po-code-editor-register.service.mjs +66 -0
- package/esm2020/lib/components/po-code-editor/po-code-editor-suggestion.service.mjs +29 -0
- package/{esm2015/lib/components/po-code-editor/po-code-editor.component.js → esm2020/lib/components/po-code-editor/po-code-editor.component.mjs} +229 -225
- package/esm2020/lib/components/po-code-editor/po-code-editor.module.mjs +37 -0
- package/esm2020/lib/index.mjs +4 -0
- package/esm2020/po-ui-ng-code-editor.mjs +5 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -2
- package/fesm2015/po-ui-ng-code-editor.mjs +632 -0
- package/fesm2015/po-ui-ng-code-editor.mjs.map +1 -0
- package/{fesm2015/po-ui-ng-code-editor.js → fesm2020/po-ui-ng-code-editor.mjs} +605 -582
- package/fesm2020/po-ui-ng-code-editor.mjs.map +1 -0
- package/lib/components/po-code-editor/interfaces/po-code-editor-registerable-options.interface.d.ts +22 -22
- package/lib/components/po-code-editor/interfaces/po-code-editor-registerable-suggestion.interface.d.ts +37 -37
- package/lib/components/po-code-editor/interfaces/po-code-editor-registerable-tokens.interface.d.ts +21 -21
- package/lib/components/po-code-editor/interfaces/po-code-editor-registerable.interface.d.ts +17 -17
- package/lib/components/po-code-editor/po-code-editor-base.component.d.ts +194 -191
- package/lib/components/po-code-editor/po-code-editor-register.service.d.ts +70 -67
- package/lib/components/po-code-editor/po-code-editor-suggestion.service.d.ts +10 -7
- package/lib/components/po-code-editor/po-code-editor.component.d.ts +61 -58
- package/lib/components/po-code-editor/po-code-editor.module.d.ts +16 -10
- package/lib/index.d.ts +7 -7
- package/package.json +27 -15
- package/po-ui-ng-code-editor-6.0.0-rc.1.tgz +0 -0
- package/po-ui-ng-code-editor.d.ts +5 -6
- package/public-api.d.ts +1 -1
- package/schematics/README.md +98 -98
- package/schematics/collection.json +10 -10
- package/schematics/ng-add/index.d.ts +10 -10
- package/schematics/ng-add/index.js +38 -38
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/index.spec.d.ts +1 -1
- package/schematics/ng-add/index.spec.js +113 -113
- package/schematics/ng-add/index.spec.js.map +1 -1
- package/schematics/ng-add/schema.json +7 -7
- package/bundles/po-ui-ng-code-editor.umd.js +0 -981
- package/bundles/po-ui-ng-code-editor.umd.js.map +0 -1
- package/esm2015/lib/components/po-code-editor/interfaces/po-code-editor-registerable-options.interface.js +0 -2
- package/esm2015/lib/components/po-code-editor/interfaces/po-code-editor-registerable-suggestion.interface.js +0 -2
- package/esm2015/lib/components/po-code-editor/interfaces/po-code-editor-registerable-tokens.interface.js +0 -2
- package/esm2015/lib/components/po-code-editor/interfaces/po-code-editor-registerable.interface.js +0 -2
- package/esm2015/lib/components/po-code-editor/po-code-editor-base.component.js +0 -248
- package/esm2015/lib/components/po-code-editor/po-code-editor-register.service.js +0 -63
- package/esm2015/lib/components/po-code-editor/po-code-editor-suggestion.service.js +0 -28
- package/esm2015/lib/components/po-code-editor/po-code-editor.module.js +0 -31
- package/esm2015/lib/index.js +0 -4
- package/esm2015/po-ui-ng-code-editor.js +0 -7
- package/fesm2015/po-ui-ng-code-editor.js.map +0 -1
- package/po-ui-ng-code-editor-5.20.0.tgz +0 -0
- package/po-ui-ng-code-editor.metadata.json +0 -1
package/README.md
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
# PO Code Editor
|
|
2
|
-
|
|
3
|
-
O **PO Code Editor** é uma biblioteca Angular de componente para edição de código fonte.
|
|
4
|
-
|
|
5
|
-
Tem dependência das bibliotecas:
|
|
6
|
-
- [PO UI](http://po-ui.io);
|
|
7
|
-
- [Monaco](https://microsoft.github.io/monaco-editor/).
|
|
8
|
-
|
|
9
|
-
#### Instalação
|
|
10
|
-
|
|
11
|
-
Instalando com npm:
|
|
12
|
-
```
|
|
13
|
-
npm install @po-ui/ng-code-editor
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Caso prefira instalar com o yarn:
|
|
17
|
-
```
|
|
18
|
-
yarn add @po-ui/ng-code-editor
|
|
19
|
-
```
|
|
20
|
-
|
|
1
|
+
# PO Code Editor
|
|
2
|
+
|
|
3
|
+
O **PO Code Editor** é uma biblioteca Angular de componente para edição de código fonte.
|
|
4
|
+
|
|
5
|
+
Tem dependência das bibliotecas:
|
|
6
|
+
- [PO UI](http://po-ui.io);
|
|
7
|
+
- [Monaco](https://microsoft.github.io/monaco-editor/).
|
|
8
|
+
|
|
9
|
+
#### Instalação
|
|
10
|
+
|
|
11
|
+
Instalando com npm:
|
|
12
|
+
```
|
|
13
|
+
npm install @po-ui/ng-code-editor
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Caso prefira instalar com o yarn:
|
|
17
|
+
```
|
|
18
|
+
yarn add @po-ui/ng-code-editor
|
|
19
|
+
```
|
|
20
|
+
|
|
21
21
|
Para maiores informações, acesse **[documentação do PO Code Editor](https://po-ui.io/documentation/po-code-editor)**.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLW9wdGlvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BvLWNvZGUtZWRpdG9yL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVUb2tlbnMgfSBmcm9tICcuL3BvLWNvZGUtZWRpdG9yLXJlZ2lzdGVyYWJsZS10b2tlbnMuaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBAdXNlZEJ5IFBvQ29kZUVkaXRvclJlZ2lzdGVyXHJcbiAqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBJbnRlcmZhY2UgcGFyYSBjb25maWd1cmHDp8OjbyBkZSBPcMOnw7VlcyBkZSBub3ZhcyBzaW50YXhlcyBhbyBjb2RlIGVkaXRvci5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlT3B0aW9ucyB7XHJcbiAgLyoqIFBhbGF2cmFzIGNoYXZlcyBkYSBzaW50YXhlLiAqL1xyXG4gIGtleXdvcmRzOiBBcnJheTxzdHJpbmc+O1xyXG5cclxuICAvKiogT3BlcmFkb3JlcyBlc3BlY8OtZmljb3MgZGEgc2ludGF4ZS4gICovXHJcbiAgb3BlcmF0b3JzOiBBcnJheTxzdHJpbmc+O1xyXG5cclxuICAvKiogU8OtbWJvbG9zIGVzcGVjw61maWNvcyBkYSBzaW50YXhlcy4gKi9cclxuICBzeW1ib2xzOiBSZWdFeHA7XHJcblxyXG4gIC8qKiBFc2NhcGVzIGVzcGVjw61maWNvcyBkYSBzaW50YXhlcy4gKi9cclxuICBlc2NhcGVzOiBSZWdFeHA7XHJcblxyXG4gIC8qKiBJbnRlcmZhY2UgcGFyYSByZWNlYmltZW50byBkZSB0b2tlbiBlc3BlY8OtZmljb3MgZGEgc2ludGF4ZS4gKi9cclxuICB0b2tlbml6ZXI6IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVRva2VucztcclxuXHJcbiAgLyoqIERlZmluZSBzZSBhIHNpbnRheGUgc2Vyw6EgY2FzZSBzZW5zaXRpdmUgb3UgbsOjby4gKi9cclxuICBpZ25vcmVDYXNlPzogYm9vbGVhbjtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLXN1Z2dlc3Rpb24uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BvLWNvZGUtZWRpdG9yL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLXN1Z2dlc3Rpb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQHVzZWRCeSBQb0NvZGVFZGl0b3JSZWdpc3RlciwgUG9Db2RlRWRpdG9yQ29tcG9uZW50XHJcbiAqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBJbnRlcmZhY2UgcGFyYSBjb25maWd1cmHDp8OjbyBkYSBsaXN0YSBkZSBzdWdlc3TDo28gZG8gYXV0b2NvbXBsZXRlIGRvIGNvZGUgZWRpdG9yLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVTdWdnZXN0aW9uIHtcclxuICAvKiogVGV4dG8gcXVlIHNlcsOhIGV4aWJpZG8gbmEgbGlzdGEgZGUgc3VnZXN0w7Vlcy4gKi9cclxuICBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAvKiogVGV4dG8gcXVlIHNlcsOhIGluc2VyaWRvIG5vIGVkaXRvciBhbyBzZWxlY2lvbmFyIGEgc3VnZXN0w6NvIGV4aWJpZGEgcGVsbyBhdXRvY29tcGxldGUuICovXHJcbiAgaW5zZXJ0VGV4dDogc3RyaW5nO1xyXG5cclxuICAvKiogVGV4dG8gZGUgYWp1ZGEgcXVlIHNlcsOhIGV4aWJpZG8gY2FzbyBvIHVzdcOhcmlvIGRlc2VqZSB2ZXIgbWFpcyBpbmZvcm1hw6fDtWVzIHNvYnJlIGEgc3VnZXN0w6NvLiAqL1xyXG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAdXNlZEJ5IFBvQ29kZUVkaXRvclJlZ2lzdGVyLCBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIEludGVyZmFjZSBkbyBvYmpldG8gdXNhZG8gcGVsbyBtb25hY28gcGFyYSBsaXN0YSBkZSBzdWdlc3TDo28gZG8gYXV0b2NvbXBsZXRlIGRvIGNvZGUgZWRpdG9yLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVTdWdnZXN0aW9uVHlwZSB7XHJcbiAgcHJvdmlkZUNvbXBsZXRpb25JdGVtczogKCkgPT4geyBzdWdnZXN0aW9uczogQXJyYXk8UG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlU3VnZ2VzdGlvbj4gfTtcclxufVxyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBJbnRlcmZhY2UgZG8gb2JqZXRvIHVzYWRvIHBlbG8gbW9uYWNvIHBhcmEgbGlzdGEgZGUgc3VnZXN0w6NvIGRvIGF1dG9jb21wbGV0ZSBkbyBjb2RlIGVkaXRvci5cclxuICogVXRpbGl6YWRvIGludGVybmFtZW50ZSBwZWxvIHNlcnZpw6dvIFBvQ29kZUVkaXRvclN1Z2dlc3Rpb25TZXJ2aWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBvQ29kZUVkaXRvclN1Z2dlc3Rpb25MaXN0IHtcclxuICBbaW5kZXg6IHN0cmluZ106IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLXRva2Vucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcG8tY29kZS1lZGl0b3IvaW50ZXJmYWNlcy9wby1jb2RlLWVkaXRvci1yZWdpc3RlcmFibGUtdG9rZW5zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEB1c2VkQnkgUG9Db2RlRWRpdG9yUmVnaXN0ZXJcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIEludGVyZmFjZSBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRlIHRva2VucyBkZSBub3ZhcyBzaW50YXhlcyBhbyBjb2RlIGVkaXRvci5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlVG9rZW5zIHtcclxuICAvKiogUHJpbmNpcGFsIHRva2VuaXplciBkYSBzaW50YXhlIGN1c3RvbWl6YWRhLiAqL1xyXG4gIHJvb3Q6IEFycmF5PGFueT47XHJcblxyXG4gIC8qKiBUb2tlbml6ZXIgZGUgY29tZW50w6FyaW9zLiAqL1xyXG4gIGNvbW1lbnQ/OiBBcnJheTxhbnk+O1xyXG5cclxuICAvKiogVG9rZW5pemVyIGRlIHN0cmluZ3MuICovXHJcbiAgc3RyaW5nPzogQXJyYXk8YW55PjtcclxuXHJcbiAgLyoqIFRva2VuaXplciBkZSB3aGl0ZXNwYWNlcy4gKi9cclxuICB3aGl0ZXNwYWNlPzogQXJyYXk8YW55PjtcclxuXHJcbiAgLyoqIFNlcXXDqm5jaWEgZGUgaW50ZXJwb2xhw6fDo28uICAqL1xyXG4gIGludGVycG9sYXRlZD86IEFycmF5PGFueT47XHJcblxyXG4gIC8qKiBTZXF1w6puY2lhIGRlIGludGVycG9sYcOnw6NvIGNvbXBvc3RhLiAqL1xyXG4gIGludGVycG9sYXRlZENvbXBvdW5kPzogQXJyYXk8YW55PjtcclxufVxyXG4iXX0=
|
package/esm2020/lib/components/po-code-editor/interfaces/po-code-editor-registerable.interface.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGUtZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9wby1jb2RlLWVkaXRvci9pbnRlcmZhY2VzL3BvLWNvZGUtZWRpdG9yLXJlZ2lzdGVyYWJsZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZU9wdGlvbnMgfSBmcm9tICcuL3BvLWNvZGUtZWRpdG9yLXJlZ2lzdGVyYWJsZS1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb25UeXBlIH0gZnJvbSAnLi9wby1jb2RlLWVkaXRvci1yZWdpc3RlcmFibGUtc3VnZ2VzdGlvbi5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIEB1c2VkQnkgUG9Db2RlRWRpdG9yUmVnaXN0ZXJcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIEludGVyZmFjZSBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRlIG5vdmFzIHNpbnRheGVzIGFvIGNvZGUgZWRpdG9yLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGUge1xyXG4gIC8qKiBOb21lIGRhIHNpbnRheGUgYSBzZXIgcmVnaXN0cmFkYSBubyBjb2RlIGVkaXRvci4gKi9cclxuICBsYW5ndWFnZTogc3RyaW5nO1xyXG5cclxuICAvKiogT3DDp8O1ZXMgZGUgY29uZmlndXJhw6fDo28gZGEgc2ludGF4ZSBjdXN0b21pemFkYS4gKi9cclxuICBvcHRpb25zOiBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVPcHRpb25zO1xyXG5cclxuICAvKiogTGlzdGEgZGUgc3VnZXN0w7VlcyBwYXJhIGEgZnVuw6fDo28gZGUgYXV0b2NvbXBsZXRlLiAqL1xyXG4gIHN1Z2dlc3Rpb25zPzogUG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlU3VnZ2VzdGlvblR5cGU7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { Input, Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
const PO_CODE_EDITOR_THEMES = ['vs-dark', 'vs', 'hc-black'];
|
|
4
|
+
const PO_CODE_EDITOR_THEME_DEFAULT = 'vs';
|
|
5
|
+
/**
|
|
6
|
+
* @description
|
|
7
|
+
*
|
|
8
|
+
* O `po-code-editor` é um componente para edição de código fonte baseado no Monaco Editor da Microsoft.
|
|
9
|
+
*
|
|
10
|
+
* Sendo assim, algumas configurações presentes no Monaco podem ser utilizadas aqui, como a escolha da linguagem
|
|
11
|
+
* (utilizando o highlight syntax específico), escolha do tema e opção de diff, além de ser muito similar ao Visual
|
|
12
|
+
* Studio Code, com autocomplete e fechamento automático de brackets.
|
|
13
|
+
*
|
|
14
|
+
* Este componente pode ser usado em qualquer situação que necessite de adição de códigos, como por exemplo, criar
|
|
15
|
+
* receitas utilizando Terraform para gerenciar topologias.
|
|
16
|
+
* É importante ressaltar que este não é um componente para edição de textos comuns.
|
|
17
|
+
*
|
|
18
|
+
* O [(ngModel)] deve ser usado para manipular o conteúdo do po-code-editor, ou seja, tanto para incluir um conteúdo quanto
|
|
19
|
+
* para recuperar o conteúdo do po-code-editor, utiliza-se uma variável passada por [(ngModel)].
|
|
20
|
+
*
|
|
21
|
+
* #### Adicionando o pacote @po-ui/ng-code-editor
|
|
22
|
+
*
|
|
23
|
+
* Para instalar o pacote `po-code-editor` em sua aplicação execute:
|
|
24
|
+
*
|
|
25
|
+
* ```shell
|
|
26
|
+
* ng add @po-ui/ng-code-editor
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* O comando `ng add` do `Angular CLI`:
|
|
30
|
+
* - inclui o `po-code-editor` no seu projeto;
|
|
31
|
+
* - adiciona o módulo `PoCodeEditorModule`:;
|
|
32
|
+
*
|
|
33
|
+
* ```
|
|
34
|
+
* // app.module.ts
|
|
35
|
+
* ...
|
|
36
|
+
* import { PoModule } from '@po-ui/ng-components';
|
|
37
|
+
* import { PoCodeEditorModule } from '@po-ui/ng-code-editor';
|
|
38
|
+
* ...
|
|
39
|
+
* @NgModule({
|
|
40
|
+
* imports: [
|
|
41
|
+
* ...
|
|
42
|
+
* PoModule,
|
|
43
|
+
* PoCodeEditorModule
|
|
44
|
+
* ],
|
|
45
|
+
* ...
|
|
46
|
+
* })
|
|
47
|
+
* export class AppModule { }
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* - adiciona o tema PO UI e também o *asset* do Monaco no arquivo `angular.json`, conforme abaixo:
|
|
51
|
+
*
|
|
52
|
+
* <pre ngNonBindable>
|
|
53
|
+
* ...
|
|
54
|
+
* "assets": [
|
|
55
|
+
* { "glob": "**/*", "input": "node_modules/monaco-editor/min", "output": "/assets/monaco/" }
|
|
56
|
+
* ],
|
|
57
|
+
* "styles": [
|
|
58
|
+
* "./node_modules/@po-ui/style/css/po-theme-default.min.css"
|
|
59
|
+
* ]
|
|
60
|
+
* ...
|
|
61
|
+
* </pre>
|
|
62
|
+
*/
|
|
63
|
+
export class PoCodeEditorBaseComponent {
|
|
64
|
+
constructor() {
|
|
65
|
+
this.modifiedValue = '';
|
|
66
|
+
this.value = '';
|
|
67
|
+
this._height = 150;
|
|
68
|
+
this._language = 'plainText';
|
|
69
|
+
this._readonly = false;
|
|
70
|
+
this._showDiff = false;
|
|
71
|
+
this._theme = PO_CODE_EDITOR_THEME_DEFAULT;
|
|
72
|
+
/* istanbul ignore next */
|
|
73
|
+
this.onTouched = (value) => { };
|
|
74
|
+
/* istanbul ignore next */
|
|
75
|
+
this.onChangePropagate = (value) => { };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @optional
|
|
79
|
+
*
|
|
80
|
+
* @description
|
|
81
|
+
*
|
|
82
|
+
* Linguagem na qual será apresentado o código fonte.
|
|
83
|
+
* Para saber quais são as linguagens compatíveis, consulte a documentação oficial do
|
|
84
|
+
* [**Monaco Editor**](https://microsoft.github.io/monaco-editor/).
|
|
85
|
+
*
|
|
86
|
+
* Também é possível adicionar uma nova linguagem personalizada utilizando o serviço:
|
|
87
|
+
* [**po-code-editor-register**](https://po-ui.io/documentation/po-code-editor-register?view=doc).
|
|
88
|
+
*
|
|
89
|
+
* @default `plainText`
|
|
90
|
+
*/
|
|
91
|
+
set language(language) {
|
|
92
|
+
this._language = language && language.length ? language.trim() : 'plainText';
|
|
93
|
+
if (this.editor && this._language) {
|
|
94
|
+
this.setLanguage(this._language);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
get language() {
|
|
98
|
+
return this._language;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* @optional
|
|
102
|
+
*
|
|
103
|
+
* @description
|
|
104
|
+
*
|
|
105
|
+
* Indica se o editor será aberto em modo de leitura.
|
|
106
|
+
*
|
|
107
|
+
* Neste caso, não é possível editar o código inserido.
|
|
108
|
+
*
|
|
109
|
+
* Obs: Esta propriedade não refletirá efeito se alterada após o carregamento do componente.
|
|
110
|
+
*
|
|
111
|
+
* @default `false`
|
|
112
|
+
*/
|
|
113
|
+
set readonly(readonly) {
|
|
114
|
+
this._readonly = readonly === '' ? true : this.convertToBoolean(readonly);
|
|
115
|
+
if (this.editor) {
|
|
116
|
+
this.setReadOnly(readonly);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
get readonly() {
|
|
120
|
+
return this._readonly;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* @optional
|
|
124
|
+
*
|
|
125
|
+
* @description
|
|
126
|
+
*
|
|
127
|
+
* Indica se o editor será aberto em modo de comparação.
|
|
128
|
+
*
|
|
129
|
+
* Caso esteja habilitada esta opção, então o [(ngModel)] deverá ser passado como um array, cuja primeira opção deve
|
|
130
|
+
* conter uma string com o código original e na segunda posição uma string código modificado para efeito de
|
|
131
|
+
* comparação. Neste caso, o usuário conseguirá editar apenas o código modificado e isso refletirá na segunda posição
|
|
132
|
+
* do array consequentemente.
|
|
133
|
+
*
|
|
134
|
+
* Obs: Esta propriedade não refletirá efeito se alterada após o carregamento do componente.
|
|
135
|
+
*
|
|
136
|
+
* @default `false`
|
|
137
|
+
*/
|
|
138
|
+
set showDiff(showDiff) {
|
|
139
|
+
this._showDiff = showDiff === '' ? true : this.convertToBoolean(showDiff);
|
|
140
|
+
}
|
|
141
|
+
get showDiff() {
|
|
142
|
+
return this._showDiff;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* @optional
|
|
146
|
+
*
|
|
147
|
+
* @description
|
|
148
|
+
*
|
|
149
|
+
* Lista de sugestões usadas pelo autocomplete dentro do editor.
|
|
150
|
+
*
|
|
151
|
+
* Para visualizar a lista de sugestões use o comando `CTRL + SPACE`.
|
|
152
|
+
*
|
|
153
|
+
* Caso o editor esteja usando uma linguagem que já tenha uma lista de sugestões predefinida, o valor passado será adicionado
|
|
154
|
+
* a lista preexistente, aumentando as opções para o usuário.
|
|
155
|
+
*
|
|
156
|
+
* Caso tenha mais de um editor da mesma linguagem na aplicação, as sugestões serão adicionadas para que todos os editores da mesma linguagem
|
|
157
|
+
* tenham as mesmas sugestões.
|
|
158
|
+
*
|
|
159
|
+
* ```
|
|
160
|
+
* <po-code-editor
|
|
161
|
+
* [p-suggestions]="[{ label: 'po', insertText: 'Portinari UI' }, { label: 'ng', insertText: 'Angular' }]">
|
|
162
|
+
* </po-code-editor>
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
165
|
+
* Ao fornecer uma lista de sugestões é possível acelerar a escrita de scripts pelos usuários.
|
|
166
|
+
*/
|
|
167
|
+
set suggestions(values) {
|
|
168
|
+
this._suggestions = values;
|
|
169
|
+
if (this.editor && this._suggestions) {
|
|
170
|
+
this.setSuggestions(this._suggestions);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
get suggestions() {
|
|
174
|
+
return this._suggestions;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* @optional
|
|
178
|
+
*
|
|
179
|
+
* @description
|
|
180
|
+
*
|
|
181
|
+
* Define um tema para o editor.
|
|
182
|
+
*
|
|
183
|
+
* Temas válidos:
|
|
184
|
+
* - `vs-dark`
|
|
185
|
+
* - `vs`
|
|
186
|
+
* - `hc-black`
|
|
187
|
+
*
|
|
188
|
+
* É importante salientar que o tema será aplicados a todos os componentes po-code-editor existentes na tela,
|
|
189
|
+
* ou seja, todas as instâncias do componente receberão o último tema atribuído ou o tema da última instância
|
|
190
|
+
* criada.
|
|
191
|
+
*
|
|
192
|
+
* @default `vs`
|
|
193
|
+
*/
|
|
194
|
+
set theme(theme) {
|
|
195
|
+
this._theme = PO_CODE_EDITOR_THEMES.includes(theme) ? theme : PO_CODE_EDITOR_THEME_DEFAULT;
|
|
196
|
+
if (this.editor) {
|
|
197
|
+
this.setTheme(theme);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
get theme() {
|
|
201
|
+
return this._theme;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* @optional
|
|
205
|
+
*
|
|
206
|
+
* @description
|
|
207
|
+
*
|
|
208
|
+
* Define a altura do componente em pixels do po-code-editor.
|
|
209
|
+
* Esta propriedade não poderá ser alterada após o componente ter sido iniciado.
|
|
210
|
+
* A altura mínima é 150 pixels.
|
|
211
|
+
*/
|
|
212
|
+
set height(height) {
|
|
213
|
+
this._height = parseFloat(height) >= 150 ? parseFloat(height) : 150;
|
|
214
|
+
}
|
|
215
|
+
get height() {
|
|
216
|
+
return `${this._height}px`;
|
|
217
|
+
}
|
|
218
|
+
getOptions() {
|
|
219
|
+
return { language: this.language, theme: this.theme, readOnly: this.readonly };
|
|
220
|
+
}
|
|
221
|
+
registerOnChange(fn) {
|
|
222
|
+
this.onChangePropagate = fn;
|
|
223
|
+
}
|
|
224
|
+
registerOnTouched(fn) {
|
|
225
|
+
this.onTouched = fn;
|
|
226
|
+
}
|
|
227
|
+
convertToBoolean(val) {
|
|
228
|
+
if (typeof val === 'string') {
|
|
229
|
+
val = val.toLowerCase().trim();
|
|
230
|
+
return val === 'true' || val === 'on' || val === '';
|
|
231
|
+
}
|
|
232
|
+
if (typeof val === 'number') {
|
|
233
|
+
return val === 1;
|
|
234
|
+
}
|
|
235
|
+
return !!val;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
PoCodeEditorBaseComponent.ɵfac = function PoCodeEditorBaseComponent_Factory(t) { return new (t || PoCodeEditorBaseComponent)(); };
|
|
239
|
+
PoCodeEditorBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoCodeEditorBaseComponent, inputs: { language: ["p-language", "language"], readonly: ["p-readonly", "readonly"], showDiff: ["p-show-diff", "showDiff"], suggestions: ["p-suggestions", "suggestions"], theme: ["p-theme", "theme"], height: ["p-height", "height"] } });
|
|
240
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoCodeEditorBaseComponent, [{
|
|
241
|
+
type: Directive
|
|
242
|
+
}], null, { language: [{
|
|
243
|
+
type: Input,
|
|
244
|
+
args: ['p-language']
|
|
245
|
+
}], readonly: [{
|
|
246
|
+
type: Input,
|
|
247
|
+
args: ['p-readonly']
|
|
248
|
+
}], showDiff: [{
|
|
249
|
+
type: Input,
|
|
250
|
+
args: ['p-show-diff']
|
|
251
|
+
}], suggestions: [{
|
|
252
|
+
type: Input,
|
|
253
|
+
args: ['p-suggestions']
|
|
254
|
+
}], theme: [{
|
|
255
|
+
type: Input,
|
|
256
|
+
args: ['p-theme']
|
|
257
|
+
}], height: [{
|
|
258
|
+
type: Input,
|
|
259
|
+
args: ['p-height']
|
|
260
|
+
}] }); })();
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcG8tY29kZS1lZGl0b3IvcG8tY29kZS1lZGl0b3ItYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS2pELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzVELE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDO0FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5REc7QUFFSCxNQUFNLE9BQWdCLHlCQUF5QjtJQUQvQztRQUdFLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLFVBQUssR0FBUSxFQUFFLENBQUM7UUFFUixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxXQUFXLENBQUM7UUFDeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLFdBQU0sR0FBRyw0QkFBNEIsQ0FBQztRQStKOUMsMEJBQTBCO1FBQzFCLGNBQVMsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQy9CLDBCQUEwQjtRQUMxQixzQkFBaUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0tBb0N4QztJQXBNQzs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLFFBQWdCO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEs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R0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLEdBQVE7UUFDakMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQixPQUFPLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7a0dBck1tQix5QkFBeUI7NEVBQXpCLHlCQUF5Qjt1RkFBekIseUJBQXlCO2NBRDlDLFNBQVM7Z0JBMkJpQixRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUF5Qk0sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBNEJPLFFBQVE7a0JBQWpDLEtBQUs7bUJBQUMsYUFBYTtZQStCUSxXQUFXO2tCQUF0QyxLQUFLO21CQUFDLGVBQWU7WUE4QkEsS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTO1lBcUJPLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVTdWdnZXN0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvZGUtZWRpdG9yLXJlZ2lzdGVyYWJsZS1zdWdnZXN0aW9uLmludGVyZmFjZSc7XHJcblxyXG5jb25zdCBQT19DT0RFX0VESVRPUl9USEVNRVMgPSBbJ3ZzLWRhcmsnLCAndnMnLCAnaGMtYmxhY2snXTtcclxuY29uc3QgUE9fQ09ERV9FRElUT1JfVEhFTUVfREVGQVVMVCA9ICd2cyc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIE8gYHBvLWNvZGUtZWRpdG9yYCDDqSB1bSBjb21wb25lbnRlIHBhcmEgZWRpw6fDo28gZGUgY8OzZGlnbyBmb250ZSBiYXNlYWRvIG5vIE1vbmFjbyBFZGl0b3IgZGEgTWljcm9zb2Z0LlxyXG4gKlxyXG4gKiBTZW5kbyBhc3NpbSwgYWxndW1hcyBjb25maWd1cmHDp8O1ZXMgcHJlc2VudGVzIG5vIE1vbmFjbyBwb2RlbSBzZXIgdXRpbGl6YWRhcyBhcXVpLCBjb21vIGEgZXNjb2xoYSBkYSBsaW5ndWFnZW1cclxuICogKHV0aWxpemFuZG8gbyBoaWdobGlnaHQgc3ludGF4IGVzcGVjw61maWNvKSwgZXNjb2xoYSBkbyB0ZW1hIGUgb3DDp8OjbyBkZSBkaWZmLCBhbMOpbSBkZSBzZXIgbXVpdG8gc2ltaWxhciBhbyBWaXN1YWxcclxuICogU3R1ZGlvIENvZGUsIGNvbSBhdXRvY29tcGxldGUgZSBmZWNoYW1lbnRvIGF1dG9tw6F0aWNvIGRlIGJyYWNrZXRzLlxyXG4gKlxyXG4gKiBFc3RlIGNvbXBvbmVudGUgcG9kZSBzZXIgdXNhZG8gZW0gcXVhbHF1ZXIgc2l0dWHDp8OjbyBxdWUgbmVjZXNzaXRlIGRlIGFkacOnw6NvIGRlIGPDs2RpZ29zLCBjb21vIHBvciBleGVtcGxvLCBjcmlhclxyXG4gKiByZWNlaXRhcyB1dGlsaXphbmRvIFRlcnJhZm9ybSBwYXJhIGdlcmVuY2lhciB0b3BvbG9naWFzLlxyXG4gKiDDiSBpbXBvcnRhbnRlIHJlc3NhbHRhciBxdWUgZXN0ZSBuw6NvIMOpIHVtIGNvbXBvbmVudGUgcGFyYSBlZGnDp8OjbyBkZSB0ZXh0b3MgY29tdW5zLlxyXG4gKlxyXG4gKiBPIFsobmdNb2RlbCldIGRldmUgc2VyIHVzYWRvIHBhcmEgbWFuaXB1bGFyIG8gY29udGXDumRvIGRvIHBvLWNvZGUtZWRpdG9yLCBvdSBzZWphLCB0YW50byBwYXJhIGluY2x1aXIgdW0gY29udGXDumRvIHF1YW50b1xyXG4gKiBwYXJhIHJlY3VwZXJhciBvIGNvbnRlw7pkbyBkbyBwby1jb2RlLWVkaXRvciwgdXRpbGl6YS1zZSB1bWEgdmFyacOhdmVsIHBhc3NhZGEgcG9yIFsobmdNb2RlbCldLlxyXG4gKlxyXG4gKiAjIyMjIEFkaWNpb25hbmRvIG8gcGFjb3RlIEBwby11aS9uZy1jb2RlLWVkaXRvclxyXG4gKlxyXG4gKiBQYXJhIGluc3RhbGFyIG8gcGFjb3RlIGBwby1jb2RlLWVkaXRvcmAgZW0gc3VhIGFwbGljYcOnw6NvIGV4ZWN1dGU6XHJcbiAqXHJcbiAqIGBgYHNoZWxsXHJcbiAqIG5nIGFkZCBAcG8tdWkvbmctY29kZS1lZGl0b3JcclxuICogYGBgXHJcbiAqXHJcbiAqIE8gY29tYW5kbyBgbmcgYWRkYCBkbyBgQW5ndWxhciBDTElgOlxyXG4gKiAtIGluY2x1aSBvIGBwby1jb2RlLWVkaXRvcmAgbm8gc2V1IHByb2pldG87XHJcbiAqIC0gYWRpY2lvbmEgbyBtw7NkdWxvIGBQb0NvZGVFZGl0b3JNb2R1bGVgOjtcclxuICpcclxuICogYGBgXHJcbiAqIC8vIGFwcC5tb2R1bGUudHNcclxuICogLi4uXHJcbiAqIGltcG9ydCB7IFBvTW9kdWxlIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG4gKiBpbXBvcnQgeyBQb0NvZGVFZGl0b3JNb2R1bGUgfSBmcm9tICdAcG8tdWkvbmctY29kZS1lZGl0b3InO1xyXG4gKiAuLi5cclxuICogQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbXHJcbiAqICAgICAuLi5cclxuICogICAgIFBvTW9kdWxlLFxyXG4gKiAgICAgUG9Db2RlRWRpdG9yTW9kdWxlXHJcbiAqICAgXSxcclxuICogICAuLi5cclxuICogfSlcclxuICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7IH1cclxuICogYGBgXHJcbiAqXHJcbiAqIC0gYWRpY2lvbmEgbyB0ZW1hIFBPIFVJIGUgdGFtYsOpbSBvICphc3NldCogZG8gTW9uYWNvIG5vIGFycXVpdm8gYGFuZ3VsYXIuanNvbmAsIGNvbmZvcm1lIGFiYWl4bzpcclxuICpcclxuICogPHByZSBuZ05vbkJpbmRhYmxlPlxyXG4gKiAuLi5cclxuICogXCJhc3NldHNcIjogW1xyXG4gKiAgICB7IFwiZ2xvYlwiOiBcIiYjNDI7JiM0MjsvJiM0MjtcIiwgXCJpbnB1dFwiOiBcIm5vZGVfbW9kdWxlcy9tb25hY28tZWRpdG9yL21pblwiLCBcIm91dHB1dFwiOiBcIi9hc3NldHMvbW9uYWNvL1wiIH1cclxuICogIF0sXHJcbiAqIFwic3R5bGVzXCI6IFtcclxuICogICAgXCIuL25vZGVfbW9kdWxlcy9AcG8tdWkvc3R5bGUvY3NzL3BvLXRoZW1lLWRlZmF1bHQubWluLmNzc1wiXHJcbiAqIF1cclxuICogLi4uXHJcbiAqIDwvcHJlPlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0NvZGVFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIGVkaXRvcjogYW55O1xyXG4gIG1vZGlmaWVkVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIHZhbHVlOiBhbnkgPSAnJztcclxuXHJcbiAgcHJpdmF0ZSBfaGVpZ2h0OiBudW1iZXIgPSAxNTA7XHJcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSAncGxhaW5UZXh0JztcclxuICBwcml2YXRlIF9yZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3Nob3dEaWZmOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3VnZ2VzdGlvbnM6IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+O1xyXG4gIHByaXZhdGUgX3RoZW1lID0gUE9fQ09ERV9FRElUT1JfVEhFTUVfREVGQVVMVDtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIExpbmd1YWdlbSBuYSBxdWFsIHNlcsOhIGFwcmVzZW50YWRvIG8gY8OzZGlnbyBmb250ZS5cclxuICAgKiBQYXJhIHNhYmVyIHF1YWlzIHPDo28gYXMgbGluZ3VhZ2VucyBjb21wYXTDrXZlaXMsIGNvbnN1bHRlIGEgZG9jdW1lbnRhw6fDo28gb2ZpY2lhbCBkb1xyXG4gICAqIFsqKk1vbmFjbyBFZGl0b3IqKl0oaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL21vbmFjby1lZGl0b3IvKS5cclxuICAgKlxyXG4gICAqIFRhbWLDqW0gw6kgcG9zc8OtdmVsIGFkaWNpb25hciB1bWEgbm92YSBsaW5ndWFnZW0gcGVyc29uYWxpemFkYSB1dGlsaXphbmRvIG8gc2VydmnDp286XHJcbiAgICogWyoqcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXIqKl0oaHR0cHM6Ly9wby11aS5pby9kb2N1bWVudGF0aW9uL3BvLWNvZGUtZWRpdG9yLXJlZ2lzdGVyP3ZpZXc9ZG9jKS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBwbGFpblRleHRgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWxhbmd1YWdlJykgc2V0IGxhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xhbmd1YWdlID0gbGFuZ3VhZ2UgJiYgbGFuZ3VhZ2UubGVuZ3RoID8gbGFuZ3VhZ2UudHJpbSgpIDogJ3BsYWluVGV4dCc7XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdG9yICYmIHRoaXMuX2xhbmd1YWdlKSB7XHJcbiAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UodGhpcy5fbGFuZ3VhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogSW5kaWNhIHNlIG8gZWRpdG9yIHNlcsOhIGFiZXJ0byBlbSBtb2RvIGRlIGxlaXR1cmEuXHJcbiAgICpcclxuICAgKiBOZXN0ZSBjYXNvLCBuw6NvIMOpIHBvc3PDrXZlbCBlZGl0YXIgbyBjw7NkaWdvIGluc2VyaWRvLlxyXG4gICAqXHJcbiAgICogT2JzOiBFc3RhIHByb3ByaWVkYWRlIG7Do28gcmVmbGV0aXLDoSBlZmVpdG8gc2UgYWx0ZXJhZGEgYXDDs3MgbyBjYXJyZWdhbWVudG8gZG8gY29tcG9uZW50ZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtcmVhZG9ubHknKSBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JlYWRvbmx5ID0gPGFueT5yZWFkb25seSA9PT0gJycgPyB0cnVlIDogdGhpcy5jb252ZXJ0VG9Cb29sZWFuKHJlYWRvbmx5KTtcclxuXHJcbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgdGhpcy5zZXRSZWFkT25seShyZWFkb25seSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogSW5kaWNhIHNlIG8gZWRpdG9yIHNlcsOhIGFiZXJ0byBlbSBtb2RvIGRlIGNvbXBhcmHDp8Ojby5cclxuICAgKlxyXG4gICAqIENhc28gZXN0ZWphIGhhYmlsaXRhZGEgZXN0YSBvcMOnw6NvLCBlbnTDo28gbyBbKG5nTW9kZWwpXSBkZXZlcsOhIHNlciBwYXNzYWRvIGNvbW8gdW0gYXJyYXksIGN1amEgcHJpbWVpcmEgb3DDp8OjbyBkZXZlXHJcbiAgICogY29udGVyIHVtYSBzdHJpbmcgY29tIG8gY8OzZGlnbyBvcmlnaW5hbCBlIG5hIHNlZ3VuZGEgcG9zacOnw6NvIHVtYSBzdHJpbmcgY8OzZGlnbyBtb2RpZmljYWRvIHBhcmEgZWZlaXRvIGRlXHJcbiAgICogY29tcGFyYcOnw6NvLiBOZXN0ZSBjYXNvLCBvIHVzdcOhcmlvIGNvbnNlZ3VpcsOhIGVkaXRhciBhcGVuYXMgbyBjw7NkaWdvIG1vZGlmaWNhZG8gZSBpc3NvIHJlZmxldGlyw6EgbmEgc2VndW5kYSBwb3Npw6fDo29cclxuICAgKiBkbyBhcnJheSBjb25zZXF1ZW50ZW1lbnRlLlxyXG4gICAqXHJcbiAgICogT2JzOiBFc3RhIHByb3ByaWVkYWRlIG7Do28gcmVmbGV0aXLDoSBlZmVpdG8gc2UgYWx0ZXJhZGEgYXDDs3MgbyBjYXJyZWdhbWVudG8gZG8gY29tcG9uZW50ZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3Atc2hvdy1kaWZmJykgc2V0IHNob3dEaWZmKHNob3dEaWZmOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93RGlmZiA9IDxhbnk+c2hvd0RpZmYgPT09ICcnID8gdHJ1ZSA6IHRoaXMuY29udmVydFRvQm9vbGVhbihzaG93RGlmZik7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0RpZmYoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hvd0RpZmY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogTGlzdGEgZGUgc3VnZXN0w7VlcyB1c2FkYXMgcGVsbyBhdXRvY29tcGxldGUgZGVudHJvIGRvIGVkaXRvci5cclxuICAgKlxyXG4gICAqIFBhcmEgdmlzdWFsaXphciBhIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgdXNlIG8gY29tYW5kbyBgQ1RSTCArIFNQQUNFYC5cclxuICAgKlxyXG4gICAqIENhc28gbyBlZGl0b3IgZXN0ZWphIHVzYW5kbyB1bWEgbGluZ3VhZ2VtIHF1ZSBqw6EgdGVuaGEgdW1hIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgcHJlZGVmaW5pZGEsIG8gdmFsb3IgcGFzc2FkbyBzZXLDoSBhZGljaW9uYWRvXHJcbiAgICogYSBsaXN0YSBwcmVleGlzdGVudGUsIGF1bWVudGFuZG8gYXMgb3DDp8O1ZXMgcGFyYSBvIHVzdcOhcmlvLlxyXG4gICAqXHJcbiAgICogQ2FzbyB0ZW5oYSBtYWlzIGRlIHVtIGVkaXRvciBkYSBtZXNtYSBsaW5ndWFnZW0gbmEgYXBsaWNhw6fDo28sIGFzIHN1Z2VzdMO1ZXMgc2Vyw6NvIGFkaWNpb25hZGFzIHBhcmEgcXVlIHRvZG9zIG9zIGVkaXRvcmVzIGRhIG1lc21hIGxpbmd1YWdlbVxyXG4gICAqIHRlbmhhbSBhcyBtZXNtYXMgc3VnZXN0w7Vlcy5cclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqICA8cG8tY29kZS1lZGl0b3JcclxuICAgKiAgICBbcC1zdWdnZXN0aW9uc109XCJbeyBsYWJlbDogJ3BvJywgaW5zZXJ0VGV4dDogJ1BvcnRpbmFyaSBVSScgfSwgeyBsYWJlbDogJ25nJywgaW5zZXJ0VGV4dDogJ0FuZ3VsYXInIH1dXCI+XHJcbiAgICogIDwvcG8tY29kZS1lZGl0b3I+XHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKiBBbyBmb3JuZWNlciB1bWEgbGlzdGEgZGUgc3VnZXN0w7VlcyDDqSBwb3Nzw612ZWwgYWNlbGVyYXIgYSBlc2NyaXRhIGRlIHNjcmlwdHMgcGVsb3MgdXN1w6FyaW9zLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1zdWdnZXN0aW9ucycpIHNldCBzdWdnZXN0aW9ucyh2YWx1ZXM6IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+KSB7XHJcbiAgICB0aGlzLl9zdWdnZXN0aW9ucyA9IHZhbHVlcztcclxuXHJcbiAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5fc3VnZ2VzdGlvbnMpIHtcclxuICAgICAgdGhpcy5zZXRTdWdnZXN0aW9ucyh0aGlzLl9zdWdnZXN0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3VnZ2VzdGlvbnMoKTogQXJyYXk8UG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlU3VnZ2VzdGlvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSB1bSB0ZW1hIHBhcmEgbyBlZGl0b3IuXHJcbiAgICpcclxuICAgKiBUZW1hcyB2w6FsaWRvczpcclxuICAgKiAgLSBgdnMtZGFya2BcclxuICAgKiAgLSBgdnNgXHJcbiAgICogIC0gYGhjLWJsYWNrYFxyXG4gICAqXHJcbiAgICogw4kgaW1wb3J0YW50ZSBzYWxpZW50YXIgcXVlIG8gdGVtYSBzZXLDoSBhcGxpY2Fkb3MgYSB0b2RvcyBvcyBjb21wb25lbnRlcyBwby1jb2RlLWVkaXRvciBleGlzdGVudGVzIG5hIHRlbGEsXHJcbiAgICogb3Ugc2VqYSwgdG9kYXMgYXMgaW5zdMOibmNpYXMgZG8gY29tcG9uZW50ZSByZWNlYmVyw6NvIG8gw7psdGltbyB0ZW1hIGF0cmlidcOtZG8gb3UgbyB0ZW1hIGRhIMO6bHRpbWEgaW5zdMOibmNpYVxyXG4gICAqIGNyaWFkYS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGB2c2BcclxuICAgKi9cclxuICBASW5wdXQoJ3AtdGhlbWUnKSBzZXQgdGhlbWUodGhlbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdGhlbWUgPSBQT19DT0RFX0VESVRPUl9USEVNRVMuaW5jbHVkZXModGhlbWUpID8gdGhlbWUgOiBQT19DT0RFX0VESVRPUl9USEVNRV9ERUZBVUxUO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRvcikge1xyXG4gICAgICB0aGlzLnNldFRoZW1lKHRoZW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB0aGVtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RoZW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIGVtIHBpeGVscyBkbyBwby1jb2RlLWVkaXRvci5cclxuICAgKiBFc3RhIHByb3ByaWVkYWRlIG7Do28gcG9kZXLDoSBzZXIgYWx0ZXJhZGEgYXDDs3MgbyBjb21wb25lbnRlIHRlciBzaWRvIGluaWNpYWRvLlxyXG4gICAqIEEgYWx0dXJhIG3DrW5pbWEgw6kgMTUwIHBpeGVscy5cclxuICAgKi9cclxuICBASW5wdXQoJ3AtaGVpZ2h0Jykgc2V0IGhlaWdodChoZWlnaHQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gcGFyc2VGbG9hdChoZWlnaHQpID49IDE1MCA/IHBhcnNlRmxvYXQoaGVpZ2h0KSA6IDE1MDtcclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLl9oZWlnaHR9cHhgO1xyXG4gIH1cclxuXHJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICBvblRvdWNoZWQgPSAodmFsdWU6IGFueSkgPT4ge307XHJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICBvbkNoYW5nZVByb3BhZ2F0ZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcclxuXHJcbiAgZ2V0T3B0aW9ucygpIHtcclxuICAgIHJldHVybiB7IGxhbmd1YWdlOiB0aGlzLmxhbmd1YWdlLCB0aGVtZTogdGhpcy50aGVtZSwgcmVhZE9ubHk6IHRoaXMucmVhZG9ubHkgfTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjb252ZXJ0VG9Cb29sZWFuKHZhbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdmFsID0gdmFsLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xyXG4gICAgICByZXR1cm4gdmFsID09PSAndHJ1ZScgfHwgdmFsID09PSAnb24nIHx8IHZhbCA9PT0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB2YWwgPT09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICEhdmFsO1xyXG4gIH1cclxuXHJcbiAgYWJzdHJhY3Qgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTtcclxuXHJcbiAgYWJzdHJhY3Qgc2V0TGFuZ3VhZ2UodmFsdWU6IGFueSk7XHJcblxyXG4gIGFic3RyYWN0IHNldFRoZW1lKHZhbHVlOiBhbnkpO1xyXG5cclxuICBhYnN0cmFjdCBzZXRSZWFkT25seSh2YWx1ZTogYW55KTtcclxuXHJcbiAgYWJzdHJhY3Qgc2V0U3VnZ2VzdGlvbnModmFsdWU6IGFueSk7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
*
|
|
6
|
+
* Wrapper para registro de sintaxes customizadas para o po-code-editor.
|
|
7
|
+
*
|
|
8
|
+
* Para utilização do serviço de idiomas **PoCodeEditorRegister**,
|
|
9
|
+
* deve-se importar o módulo PoCodeEditorModule mesmo já tendo importado
|
|
10
|
+
* o módulo PoModule.
|
|
11
|
+
* Na importação opcionalmente pode ser invocado o método **forRegister** informando um objeto para configuração.
|
|
12
|
+
*
|
|
13
|
+
* Exemplo de configuração:
|
|
14
|
+
* ```
|
|
15
|
+
* import { PoCodeEditorModule, PoCodeEditorRegisterable } from '@po-ui/ng-code-editor';
|
|
16
|
+
*
|
|
17
|
+
* declare const monaco: any; // Importante para usar configurações com tipos definidos pelo Monaco
|
|
18
|
+
*
|
|
19
|
+
* // A função `provideCompletionItems` precisa ser exportada para ser compatível com AOT.
|
|
20
|
+
* export function provideCompletionItems() {
|
|
21
|
+
* const suggestions = [{
|
|
22
|
+
* label: 'terraform',
|
|
23
|
+
* insertText: '#terraform language'
|
|
24
|
+
* }, {
|
|
25
|
+
* label: 'server',
|
|
26
|
+
* insertText: 'server ${1:ip}'
|
|
27
|
+
* }];
|
|
28
|
+
*
|
|
29
|
+
* return { suggestions: suggestions };
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* const customEditor: PoCodeEditorRegisterable = {
|
|
33
|
+
* language: 'terraform',
|
|
34
|
+
* options: {
|
|
35
|
+
* keywords: ['resource', 'provider', 'variable', 'output', 'module', 'true', 'false'],
|
|
36
|
+
* operators: ['{', '}', '(', ')', '[', ']', '?', ':'],
|
|
37
|
+
* symbols: /[=><!~?:&|+\-*\/\^%]+/,
|
|
38
|
+
* escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
|
39
|
+
* tokenizer: {
|
|
40
|
+
* ...
|
|
41
|
+
* }
|
|
42
|
+
* },
|
|
43
|
+
* suggestions: { provideCompletionItems: provideCompletionItems }
|
|
44
|
+
* };
|
|
45
|
+
*
|
|
46
|
+
* @NgModule({
|
|
47
|
+
* declarations: [],
|
|
48
|
+
* imports: [
|
|
49
|
+
* PoModule,
|
|
50
|
+
* PoCodeEditorModule.forRegister(customEditor)
|
|
51
|
+
* ],
|
|
52
|
+
* bootstrap: [AppComponent]
|
|
53
|
+
* })
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* > As configurações para o registro de uma nova sintaxe no Monaco code editor podem ser encontradas em
|
|
57
|
+
* > [**Monaco Editor**](https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-custom-languages).
|
|
58
|
+
*/
|
|
59
|
+
export class PoCodeEditorRegister {
|
|
60
|
+
}
|
|
61
|
+
PoCodeEditorRegister.ɵfac = function PoCodeEditorRegister_Factory(t) { return new (t || PoCodeEditorRegister)(); };
|
|
62
|
+
PoCodeEditorRegister.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoCodeEditorRegister, factory: PoCodeEditorRegister.ɵfac });
|
|
63
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoCodeEditorRegister, [{
|
|
64
|
+
type: Injectable
|
|
65
|
+
}], null, null); })();
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3ItcmVnaXN0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGUtZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9wby1jb2RlLWVkaXRvci9wby1jb2RlLWVkaXRvci1yZWdpc3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjs7d0ZBQXBCLG9CQUFvQjswRUFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQjt1RkFBcEIsb0JBQW9CO2NBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGUgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZU9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlU3VnZ2VzdGlvblR5cGUgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLXN1Z2dlc3Rpb24uaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogV3JhcHBlciBwYXJhIHJlZ2lzdHJvIGRlIHNpbnRheGVzIGN1c3RvbWl6YWRhcyBwYXJhIG8gcG8tY29kZS1lZGl0b3IuXHJcbiAqXHJcbiAqIFBhcmEgdXRpbGl6YcOnw6NvIGRvIHNlcnZpw6dvIGRlIGlkaW9tYXMgKipQb0NvZGVFZGl0b3JSZWdpc3RlcioqLFxyXG4gKiBkZXZlLXNlIGltcG9ydGFyIG8gbcOzZHVsbyBQb0NvZGVFZGl0b3JNb2R1bGUgbWVzbW8gasOhIHRlbmRvIGltcG9ydGFkb1xyXG4gKiBvIG3Ds2R1bG8gUG9Nb2R1bGUuXHJcbiAqIE5hIGltcG9ydGHDp8OjbyBvcGNpb25hbG1lbnRlIHBvZGUgc2VyIGludm9jYWRvIG8gbcOpdG9kbyAqKmZvclJlZ2lzdGVyKiogaW5mb3JtYW5kbyB1bSBvYmpldG8gcGFyYSBjb25maWd1cmHDp8Ojby5cclxuICpcclxuICogRXhlbXBsbyBkZSBjb25maWd1cmHDp8OjbzpcclxuICogYGBgXHJcbiAqIGltcG9ydCB7IFBvQ29kZUVkaXRvck1vZHVsZSwgUG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlIH0gZnJvbSAnQHBvLXVpL25nLWNvZGUtZWRpdG9yJztcclxuICpcclxuICogZGVjbGFyZSBjb25zdCBtb25hY286IGFueTsgLy8gSW1wb3J0YW50ZSBwYXJhIHVzYXIgY29uZmlndXJhw6fDtWVzIGNvbSB0aXBvcyBkZWZpbmlkb3MgcGVsbyBNb25hY29cclxuICpcclxuICogLy8gQSBmdW7Dp8OjbyBgcHJvdmlkZUNvbXBsZXRpb25JdGVtc2AgcHJlY2lzYSBzZXIgZXhwb3J0YWRhIHBhcmEgc2VyIGNvbXBhdMOtdmVsIGNvbSBBT1QuXHJcbiAqIGV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29tcGxldGlvbkl0ZW1zKCkge1xyXG4gKiAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gW3tcclxuICogICAgIGxhYmVsOiAndGVycmFmb3JtJyxcclxuICogICAgIGluc2VydFRleHQ6ICcjdGVycmFmb3JtIGxhbmd1YWdlJ1xyXG4gKiAgIH0sIHtcclxuICogICAgIGxhYmVsOiAnc2VydmVyJyxcclxuICogICAgIGluc2VydFRleHQ6ICdzZXJ2ZXIgJHsxOmlwfSdcclxuICogICB9XTtcclxuICpcclxuICogICByZXR1cm4geyBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMgfTtcclxuICogfVxyXG4gKlxyXG4gKiBjb25zdCBjdXN0b21FZGl0b3I6IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZSA9IHtcclxuICogICBsYW5ndWFnZTogJ3RlcnJhZm9ybScsXHJcbiAqICAgb3B0aW9uczoge1xyXG4gKiAgICAga2V5d29yZHM6IFsncmVzb3VyY2UnLCAncHJvdmlkZXInLCAndmFyaWFibGUnLCAnb3V0cHV0JywgJ21vZHVsZScsICd0cnVlJywgJ2ZhbHNlJ10sXHJcbiAqICAgICBvcGVyYXRvcnM6IFsneycsICd9JywgJygnLCAnKScsICdbJywgJ10nLCAnPycsICc6J10sXHJcbiAqICAgICBzeW1ib2xzOiAgL1s9Pjwhfj86JnwrXFwtKlxcL1xcXiVdKy8sXHJcbiAqICAgICBlc2NhcGVzOiAvXFxcXCg/OlthYmZucnR2XFxcXFwiJ118eFswLTlBLUZhLWZdezEsNH18dVswLTlBLUZhLWZdezR9fFVbMC05QS1GYS1mXXs4fSkvLFxyXG4gKiAgICAgdG9rZW5pemVyOiB7XHJcbiAqICAgICAgLi4uXHJcbiAqICAgICB9XHJcbiAqICAgfSxcclxuICogICBzdWdnZXN0aW9uczogeyBwcm92aWRlQ29tcGxldGlvbkl0ZW1zOiBwcm92aWRlQ29tcGxldGlvbkl0ZW1zIH1cclxuICogfTtcclxuICpcclxuICogQE5nTW9kdWxlKHtcclxuICogICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gKiAgIGltcG9ydHM6IFtcclxuICogICAgIFBvTW9kdWxlLFxyXG4gKiAgICAgUG9Db2RlRWRpdG9yTW9kdWxlLmZvclJlZ2lzdGVyKGN1c3RvbUVkaXRvcilcclxuICogICBdLFxyXG4gKiAgIGJvb3RzdHJhcDogW0FwcENvbXBvbmVudF1cclxuICogfSlcclxuICogYGBgXHJcbiAqXHJcbiAqID4gQXMgY29uZmlndXJhw6fDtWVzIHBhcmEgbyByZWdpc3RybyBkZSB1bWEgbm92YSBzaW50YXhlIG5vIE1vbmFjbyBjb2RlIGVkaXRvciBwb2RlbSBzZXIgZW5jb250cmFkYXMgZW1cclxuICogPiBbKipNb25hY28gRWRpdG9yKipdKGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9tb25hY28tZWRpdG9yL3BsYXlncm91bmQuaHRtbCNleHRlbmRpbmctbGFuZ3VhZ2Utc2VydmljZXMtY3VzdG9tLWxhbmd1YWdlcykuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQb0NvZGVFZGl0b3JSZWdpc3RlciBpbXBsZW1lbnRzIFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZSB7XHJcbiAgLyoqIFNpbnRheGUgYSBzZXIgcmVnaXN0cmFkYS4gKi9cclxuICBsYW5ndWFnZTogc3RyaW5nO1xyXG5cclxuICAvKiogT3DDp8O1ZXMgZGEgc2ludGF4ZSBwYXJhIHJlZ2lzdHJvIG5vIHBvLWNvZGUtZWRpdG9yLiAqL1xyXG4gIG9wdGlvbnM6IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZU9wdGlvbnM7XHJcblxyXG4gIC8qKiBMaXN0YSBkZSBzdWdlc3TDtWVzIHBhcmEgYSBmdW7Dp8OjbyBkZSBhdXRvY29tcGxldGUgKENUUkwgKyBTUEFDRSkuICovXHJcbiAgc3VnZ2VzdGlvbnM/OiBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVTdWdnZXN0aW9uVHlwZTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PoCodeEditorSuggestionService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.suggestions = {};
|
|
6
|
+
}
|
|
7
|
+
getSuggestion(language, newSuggestion) {
|
|
8
|
+
if (this.suggestions[language]) {
|
|
9
|
+
const deduplicateSuggestions = this.deduplicateSuggestions(this.suggestions[language], newSuggestion);
|
|
10
|
+
this.suggestions[language] = [...this.suggestions[language], ...deduplicateSuggestions];
|
|
11
|
+
return deduplicateSuggestions;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
return (this.suggestions[language] = [...newSuggestion]);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
deduplicateSuggestions(originalSuggestions, newSuggestions) {
|
|
18
|
+
return newSuggestions.filter(newItem => !originalSuggestions.find(originalItem => originalItem['label'] === newItem['label']));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
PoCodeEditorSuggestionService.ɵfac = function PoCodeEditorSuggestionService_Factory(t) { return new (t || PoCodeEditorSuggestionService)(); };
|
|
22
|
+
PoCodeEditorSuggestionService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoCodeEditorSuggestionService, factory: PoCodeEditorSuggestionService.ɵfac, providedIn: 'root' });
|
|
23
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoCodeEditorSuggestionService, [{
|
|
24
|
+
type: Injectable,
|
|
25
|
+
args: [{
|
|
26
|
+
providedIn: 'root'
|
|
27
|
+
}]
|
|
28
|
+
}], function () { return []; }, null); })();
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3Itc3VnZ2VzdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BvLWNvZGUtZWRpdG9yL3BvLWNvZGUtZWRpdG9yLXN1Z2dlc3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMzQyxNQUFNLE9BQU8sNkJBQTZCO0lBRXhDO1FBRFEsZ0JBQVcsR0FBK0IsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFVCxhQUFhLENBQUMsUUFBZ0IsRUFBRSxhQUF3RDtRQUM3RixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN0RyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztZQUN4RixPQUFPLHNCQUFzQixDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FDNUIsbUJBQThELEVBQzlELGNBQXlEO1FBRXpELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FDMUIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDakcsQ0FBQztJQUNKLENBQUM7OzBHQXJCVSw2QkFBNkI7bUZBQTdCLDZCQUE2QixXQUE3Qiw2QkFBNkIsbUJBRjVCLE1BQU07dUZBRVAsNkJBQTZCO2NBSHpDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBQb0NvZGVFZGl0b3JTdWdnZXN0aW9uTGlzdCxcclxuICBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVTdWdnZXN0aW9uXHJcbn0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvZGUtZWRpdG9yLXJlZ2lzdGVyYWJsZS1zdWdnZXN0aW9uLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb0NvZGVFZGl0b3JTdWdnZXN0aW9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzdWdnZXN0aW9uczogUG9Db2RlRWRpdG9yU3VnZ2VzdGlvbkxpc3QgPSB7fTtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIHB1YmxpYyBnZXRTdWdnZXN0aW9uKGxhbmd1YWdlOiBzdHJpbmcsIG5ld1N1Z2dlc3Rpb246IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+KSB7XHJcbiAgICBpZiAodGhpcy5zdWdnZXN0aW9uc1tsYW5ndWFnZV0pIHtcclxuICAgICAgY29uc3QgZGVkdXBsaWNhdGVTdWdnZXN0aW9ucyA9IHRoaXMuZGVkdXBsaWNhdGVTdWdnZXN0aW9ucyh0aGlzLnN1Z2dlc3Rpb25zW2xhbmd1YWdlXSwgbmV3U3VnZ2VzdGlvbik7XHJcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnNbbGFuZ3VhZ2VdID0gWy4uLnRoaXMuc3VnZ2VzdGlvbnNbbGFuZ3VhZ2VdLCAuLi5kZWR1cGxpY2F0ZVN1Z2dlc3Rpb25zXTtcclxuICAgICAgcmV0dXJuIGRlZHVwbGljYXRlU3VnZ2VzdGlvbnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKHRoaXMuc3VnZ2VzdGlvbnNbbGFuZ3VhZ2VdID0gWy4uLm5ld1N1Z2dlc3Rpb25dKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVkdXBsaWNhdGVTdWdnZXN0aW9ucyhcclxuICAgIG9yaWdpbmFsU3VnZ2VzdGlvbnM6IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+LFxyXG4gICAgbmV3U3VnZ2VzdGlvbnM6IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+XHJcbiAgKSB7XHJcbiAgICByZXR1cm4gbmV3U3VnZ2VzdGlvbnMuZmlsdGVyKFxyXG4gICAgICBuZXdJdGVtID0+ICFvcmlnaW5hbFN1Z2dlc3Rpb25zLmZpbmQob3JpZ2luYWxJdGVtID0+IG9yaWdpbmFsSXRlbVsnbGFiZWwnXSA9PT0gbmV3SXRlbVsnbGFiZWwnXSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|