reneco-advanced-input-module 0.0.1-beta.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.
Files changed (108) hide show
  1. package/.editorconfig +15 -0
  2. package/.prettierrc.json +13 -0
  3. package/LICENSE +21 -0
  4. package/api-key-inject.js +46 -0
  5. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  6. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  7. package/dist/cjs/index-BTSzTkSZ.js +1494 -0
  8. package/dist/cjs/index-BTSzTkSZ.js.map +1 -0
  9. package/dist/cjs/index.cjs.js +5 -0
  10. package/dist/cjs/index.cjs.js.map +1 -0
  11. package/dist/cjs/loader.cjs.js +16 -0
  12. package/dist/cjs/loader.cjs.js.map +1 -0
  13. package/dist/cjs/ocr-file-uploader.voice-input-module.entry.cjs.js.map +1 -0
  14. package/dist/cjs/ocr-file-uploader_2.cjs.entry.js +1340 -0
  15. package/dist/cjs/ocr-file-uploader_2.cjs.entry.js.map +1 -0
  16. package/dist/cjs/voice-input-module.cjs.js +28 -0
  17. package/dist/cjs/voice-input-module.cjs.js.map +1 -0
  18. package/dist/collection/collection-manifest.json +13 -0
  19. package/dist/collection/components/ocr-file-uploader/ocr-file-uploader.css +26 -0
  20. package/dist/collection/components/ocr-file-uploader/ocr-file-uploader.js +130 -0
  21. package/dist/collection/components/ocr-file-uploader/ocr-file-uploader.js.map +1 -0
  22. package/dist/collection/components/voice-input-module/voice-input-module.css +286 -0
  23. package/dist/collection/components/voice-input-module/voice-input-module.js +897 -0
  24. package/dist/collection/components/voice-input-module/voice-input-module.js.map +1 -0
  25. package/dist/collection/index.js +12 -0
  26. package/dist/collection/index.js.map +1 -0
  27. package/dist/collection/services/audio-recorder.service.js +66 -0
  28. package/dist/collection/services/audio-recorder.service.js.map +1 -0
  29. package/dist/collection/services/llm.service.js +193 -0
  30. package/dist/collection/services/llm.service.js.map +1 -0
  31. package/dist/collection/services/speech-to-text.service.js +60 -0
  32. package/dist/collection/services/speech-to-text.service.js.map +1 -0
  33. package/dist/collection/types/form-schema.types.js +2 -0
  34. package/dist/collection/types/form-schema.types.js.map +1 -0
  35. package/dist/collection/types/service-providers.types.js +2 -0
  36. package/dist/collection/types/service-providers.types.js.map +1 -0
  37. package/dist/collection/utils/schema-converter.js +422 -0
  38. package/dist/collection/utils/schema-converter.js.map +1 -0
  39. package/dist/components/index.d.ts +33 -0
  40. package/dist/components/index.js +4 -0
  41. package/dist/components/index.js.map +1 -0
  42. package/dist/components/ocr-file-uploader.d.ts +11 -0
  43. package/dist/components/ocr-file-uploader.js +9 -0
  44. package/dist/components/ocr-file-uploader.js.map +1 -0
  45. package/dist/components/ocr-file-uploader2.js +98 -0
  46. package/dist/components/ocr-file-uploader2.js.map +1 -0
  47. package/dist/components/voice-input-module.d.ts +11 -0
  48. package/dist/components/voice-input-module.js +1313 -0
  49. package/dist/components/voice-input-module.js.map +1 -0
  50. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  51. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  52. package/dist/esm/index-jmc2yzBp.js +1487 -0
  53. package/dist/esm/index-jmc2yzBp.js.map +1 -0
  54. package/dist/esm/index.js +4 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/loader.js +14 -0
  57. package/dist/esm/loader.js.map +1 -0
  58. package/dist/esm/ocr-file-uploader.voice-input-module.entry.js.map +1 -0
  59. package/dist/esm/ocr-file-uploader_2.entry.js +1337 -0
  60. package/dist/esm/ocr-file-uploader_2.entry.js.map +1 -0
  61. package/dist/esm/voice-input-module.js +24 -0
  62. package/dist/esm/voice-input-module.js.map +1 -0
  63. package/dist/index.cjs.js +1 -0
  64. package/dist/index.js +1 -0
  65. package/dist/types/components/ocr-file-uploader/ocr-file-uploader.d.ts +8 -0
  66. package/dist/types/components/voice-input-module/voice-input-module.d.ts +60 -0
  67. package/dist/types/components.d.ts +158 -0
  68. package/dist/types/index.d.ts +9 -0
  69. package/dist/types/services/audio-recorder.service.d.ts +9 -0
  70. package/dist/types/services/llm.service.d.ts +15 -0
  71. package/dist/types/services/speech-to-text.service.d.ts +11 -0
  72. package/dist/types/stencil-public-runtime.d.ts +1709 -0
  73. package/dist/types/types/form-schema.types.d.ts +70 -0
  74. package/dist/types/types/service-providers.types.d.ts +20 -0
  75. package/dist/types/utils/schema-converter.d.ts +22 -0
  76. package/dist/voice-input-module/index.esm.js +2 -0
  77. package/dist/voice-input-module/index.esm.js.map +1 -0
  78. package/dist/voice-input-module/loader.esm.js.map +1 -0
  79. package/dist/voice-input-module/ocr-file-uploader.voice-input-module.entry.esm.js.map +1 -0
  80. package/dist/voice-input-module/p-52e59129.entry.js +2 -0
  81. package/dist/voice-input-module/p-52e59129.entry.js.map +1 -0
  82. package/dist/voice-input-module/p-DQuL1Twl.js +2 -0
  83. package/dist/voice-input-module/p-DQuL1Twl.js.map +1 -0
  84. package/dist/voice-input-module/p-jmc2yzBp.js +3 -0
  85. package/dist/voice-input-module/p-jmc2yzBp.js.map +1 -0
  86. package/dist/voice-input-module/voice-input-module.esm.js +2 -0
  87. package/dist/voice-input-module/voice-input-module.esm.js.map +1 -0
  88. package/env-config.js +4 -0
  89. package/inject-env.js +20 -0
  90. package/package.json +37 -0
  91. package/readme.md +111 -0
  92. package/src/components/ocr-file-uploader/ocr-file-uploader.css +26 -0
  93. package/src/components/ocr-file-uploader/ocr-file-uploader.tsx +100 -0
  94. package/src/components/ocr-file-uploader/readme.md +31 -0
  95. package/src/components/voice-input-module/readme.md +114 -0
  96. package/src/components/voice-input-module/voice-input-module.css +286 -0
  97. package/src/components/voice-input-module/voice-input-module.tsx +778 -0
  98. package/src/components.d.ts +158 -0
  99. package/src/index.html +1015 -0
  100. package/src/index.ts +12 -0
  101. package/src/services/audio-recorder.service.ts +74 -0
  102. package/src/services/llm.service.ts +221 -0
  103. package/src/services/speech-to-text.service.ts +70 -0
  104. package/src/types/form-schema.types.ts +78 -0
  105. package/src/types/service-providers.types.ts +22 -0
  106. package/src/utils/schema-converter.ts +494 -0
  107. package/stencil.config.ts +24 -0
  108. package/tsconfig.json +30 -0
@@ -0,0 +1,98 @@
1
+ import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
2
+
3
+ const ocrFileUploaderCss = ".upload-container{display:inline-block;cursor:pointer;width:50px;height:50px}.upload-button{display:flex;align-items:center;justify-content:center;transition:transform 0.2s ease, box-shadow 0.2s ease;user-select:none}.upload-button svg{width:50px;height:50px;stroke:#44ee44}.upload-button:hover svg{transform:scale(1.05);stroke:#33dd33}";
4
+
5
+ const OcrFileUploader = /*@__PURE__*/ proxyCustomElement(class OcrFileUploader extends HTMLElement {
6
+ constructor() {
7
+ super();
8
+ this.__registerHost();
9
+ this.__attachShadow();
10
+ this.batch = false;
11
+ this.triggerUpload = () => {
12
+ this.fileInput.click();
13
+ };
14
+ this.handleFileChange = async (event) => {
15
+ const input = event.target;
16
+ if (!input.files || input.files.length === 0)
17
+ return;
18
+ const file = input.files[0];
19
+ // Here you can handle the file upload to your API
20
+ console.log('Selected file:', file);
21
+ const formData = new FormData();
22
+ formData.append('file', file);
23
+ if (this.batch) {
24
+ try {
25
+ const response = await fetch('http://127.0.0.1:5001/api/convert-to-xml', {
26
+ method: 'POST',
27
+ body: formData
28
+ });
29
+ if (!response.ok) {
30
+ console.error("There has been an error!:", response);
31
+ throw new Error(`HTTP error! status: ${response.status}`);
32
+ }
33
+ // get the file as a blob
34
+ const blob = await response.blob();
35
+ // create a download link
36
+ const url = window.URL.createObjectURL(blob);
37
+ const a = document.createElement('a');
38
+ a.href = url;
39
+ a.download = 'result-' + Date.now().toString() + '.xlsx'; // filename
40
+ document.body.appendChild(a);
41
+ a.click();
42
+ a.remove();
43
+ window.URL.revokeObjectURL(url);
44
+ }
45
+ catch (err) {
46
+ console.error(err);
47
+ alert('Error uploading file');
48
+ }
49
+ }
50
+ else {
51
+ try {
52
+ const response = await fetch('http://127.0.0.1:5001/api/convert-to-json', {
53
+ method: 'POST',
54
+ body: formData
55
+ });
56
+ if (!response.ok) {
57
+ console.error("There has been an error!:", response);
58
+ throw new Error(`HTTP error! status: ${response.status}`);
59
+ }
60
+ const data = await response.json();
61
+ console.log('Upload successful:', data);
62
+ if (this.callback && data[0] && data[0].content) {
63
+ this.callback(data[0].content);
64
+ }
65
+ }
66
+ catch (err) {
67
+ console.error(err);
68
+ alert('Error uploading file');
69
+ }
70
+ }
71
+ };
72
+ }
73
+ render() {
74
+ return (h("div", { key: '07c2e2b8467309e2f37b4f2bfc8338a6e7d1bd70', class: "upload-container", onClick: this.triggerUpload }, h("input", { key: '8695e980896c48212fe7d9ad7572151af2ef3e0f', type: "file", ref: el => (this.fileInput = el), onChange: this.handleFileChange, style: { display: 'none' } }), h("div", { key: '57124a873b9e3e799f7417a4658cc8897a5ad1f5', class: "upload-button" }, h("svg", { key: '5b0edb9ec28e727cd51849a3537ee8545cea2c6a', viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '34ae339754cf34da6e835cb3de50b26668abed7d', d: "M13.5 3H12H8C6.34315 3 5 4.34315 5 6V18C5 19.6569 6.34315 21 8 21H12M13.5 3L19 8.625M13.5 3V7.625C13.5 8.17728 13.9477 8.625 14.5 8.625H19M19 8.625V11.8125", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }), h("path", { key: 'a11dc06e9724e1a6b7bdfd6b7594ab2b9eb38013', d: "M17.5 21L17.5 15M17.5 15L20 17.5M17.5 15L15 17.5", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))));
75
+ }
76
+ static get style() { return ocrFileUploaderCss; }
77
+ }, [257, "ocr-file-uploader", {
78
+ "batch": [4],
79
+ "callback": [16]
80
+ }]);
81
+ function defineCustomElement() {
82
+ if (typeof customElements === "undefined") {
83
+ return;
84
+ }
85
+ const components = ["ocr-file-uploader"];
86
+ components.forEach(tagName => { switch (tagName) {
87
+ case "ocr-file-uploader":
88
+ if (!customElements.get(tagName)) {
89
+ customElements.define(tagName, OcrFileUploader);
90
+ }
91
+ break;
92
+ } });
93
+ }
94
+
95
+ export { OcrFileUploader as O, defineCustomElement as d };
96
+ //# sourceMappingURL=ocr-file-uploader2.js.map
97
+
98
+ //# sourceMappingURL=ocr-file-uploader2.js.map
@@ -0,0 +1 @@
1
+ {"file":"ocr-file-uploader2.js","mappings":"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","names":["__stencil_proxyCustomElement"],"sources":["src/components/ocr-file-uploader/ocr-file-uploader.css?tag=ocr-file-uploader&encapsulation=shadow","src/components/ocr-file-uploader/ocr-file-uploader.tsx"],"sourcesContent":["\r\n.upload-container {\r\n display: inline-block;\r\n cursor: pointer;\r\n width: 50px;\r\n height: 50px;\r\n}\r\n\r\n.upload-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: transform 0.2s ease, box-shadow 0.2s ease;\r\n user-select: none;\r\n}\r\n\r\n.upload-button svg {\r\n width: 50px;\r\n height: 50px;\r\n stroke: #44ee44;\r\n}\r\n\r\n.upload-button:hover svg{\r\n transform: scale(1.05);\r\n stroke: #33dd33;\r\n}","import { Component, h, Prop } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'ocr-file-uploader',\r\n styleUrl: 'ocr-file-uploader.css',\r\n shadow: true\r\n})\r\nexport class OcrFileUploader {\r\n @Prop() batch: boolean = false;\r\n @Prop() callback: Function;\r\n\r\n private fileInput!: HTMLInputElement;\r\n\r\n private triggerUpload = () => {\r\n this.fileInput.click();\r\n };\r\n\r\n private handleFileChange = async (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n if (!input.files || input.files.length === 0) return;\r\n\r\n const file = input.files[0];\r\n\r\n // Here you can handle the file upload to your API\r\n console.log('Selected file:', file);\r\n\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n if (this.batch) {\r\n try {\r\n const response = await fetch('http://127.0.0.1:5001/api/convert-to-xml', {\r\n method: 'POST',\r\n body: formData\r\n });\r\n\r\n if (!response.ok) {\r\n console.error(\"There has been an error!:\", response);\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n // get the file as a blob\r\n const blob = await response.blob();\r\n // create a download link\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = 'result-'+Date.now().toString()+'.xlsx'; // filename\r\n document.body.appendChild(a);\r\n a.click();\r\n a.remove();\r\n window.URL.revokeObjectURL(url);\r\n } catch (err) {\r\n console.error(err);\r\n alert('Error uploading file');\r\n }\r\n }\r\n else {\r\n try {\r\n const response = await fetch('http://127.0.0.1:5001/api/convert-to-json', {\r\n method: 'POST',\r\n body: formData\r\n });\r\n\r\n if (!response.ok) {\r\n console.error(\"There has been an error!:\", response);\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n const data = await response.json();\r\n console.log('Upload successful:', data);\r\n \r\n if (this.callback && data[0] && data[0].content){\r\n this.callback(data[0].content);\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n alert('Error uploading file');\r\n }\r\n }\r\n \r\n };\r\n\r\n render() {\r\n return (\r\n <div class=\"upload-container\" onClick={this.triggerUpload}>\r\n <input\r\n type=\"file\"\r\n ref={el => (this.fileInput = el!)}\r\n onChange={this.handleFileChange}\r\n style={{ display: 'none' }}\r\n />\r\n <div class=\"upload-button\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13.5 3H12H8C6.34315 3 5 4.34315 5 6V18C5 19.6569 6.34315 21 8 21H12M13.5 3L19 8.625M13.5 3V7.625C13.5 8.17728 13.9477 8.625 14.5 8.625H19M19 8.625V11.8125\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M17.5 21L17.5 15M17.5 15L20 17.5M17.5 15L15 17.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface VoiceInputModule extends Components.VoiceInputModule, HTMLElement {}
4
+ export const VoiceInputModule: {
5
+ prototype: VoiceInputModule;
6
+ new (): VoiceInputModule;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;