reneco-advanced-input-module 0.0.23 → 0.0.25

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 (68) hide show
  1. package/dist/cjs/{index-BTSzTkSZ.js → index-BtdDZbi5.js} +11 -4
  2. package/dist/cjs/index-BtdDZbi5.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +3 -4
  4. package/dist/cjs/loader.cjs.js.map +1 -1
  5. package/dist/cjs/ocr-file-uploader.cjs.entry.js +1 -1
  6. package/dist/cjs/voice-input-module.cjs.entry.js +43 -7
  7. package/dist/cjs/voice-input-module.cjs.entry.js.map +1 -1
  8. package/dist/cjs/voice-input-module.cjs.js +3 -4
  9. package/dist/cjs/voice-input-module.cjs.js.map +1 -1
  10. package/dist/cjs/voice-input-module.entry.cjs.js.map +1 -1
  11. package/dist/collection/components/voice-input-module/voice-input-module.css +34 -0
  12. package/dist/collection/components/voice-input-module/voice-input-module.js +43 -6
  13. package/dist/collection/components/voice-input-module/voice-input-module.js.map +1 -1
  14. package/dist/components/voice-input-module.js +43 -6
  15. package/dist/components/voice-input-module.js.map +1 -1
  16. package/dist/esm/{index-jmc2yzBp.js → index-a7QWC-5I.js} +11 -5
  17. package/dist/esm/index-a7QWC-5I.js.map +1 -0
  18. package/dist/esm/loader.js +3 -4
  19. package/dist/esm/loader.js.map +1 -1
  20. package/dist/esm/ocr-file-uploader.entry.js +1 -1
  21. package/dist/esm/voice-input-module.entry.js +43 -7
  22. package/dist/esm/voice-input-module.entry.js.map +1 -1
  23. package/dist/esm/voice-input-module.js +3 -4
  24. package/dist/esm/voice-input-module.js.map +1 -1
  25. package/dist/types/components/voice-input-module/voice-input-module.d.ts +3 -0
  26. package/dist/voice-input-module/loader.esm.js.map +1 -1
  27. package/dist/voice-input-module/{p-920964b2.entry.js → p-334644ec.entry.js} +3 -3
  28. package/dist/voice-input-module/p-334644ec.entry.js.map +1 -0
  29. package/dist/voice-input-module/p-a7QWC-5I.js +3 -0
  30. package/dist/voice-input-module/p-a7QWC-5I.js.map +1 -0
  31. package/dist/voice-input-module/{p-a5eeaf1c.entry.js → p-ba3d83d1.entry.js} +2 -2
  32. package/dist/voice-input-module/voice-input-module.css +6 -0
  33. package/dist/voice-input-module/voice-input-module.entry.esm.js.map +1 -1
  34. package/dist/voice-input-module/voice-input-module.esm.js +1 -1
  35. package/dist/voice-input-module/voice-input-module.esm.js.map +1 -1
  36. package/package.json +1 -1
  37. package/www/build/loader.esm.js.map +1 -1
  38. package/www/build/{p-920964b2.entry.js → p-334644ec.entry.js} +3 -3
  39. package/www/build/p-334644ec.entry.js.map +1 -0
  40. package/www/build/p-6cd2a3a1.css +6 -0
  41. package/www/build/p-a7QWC-5I.js +3 -0
  42. package/www/build/p-a7QWC-5I.js.map +1 -0
  43. package/www/build/{p-a5eeaf1c.entry.js → p-ba3d83d1.entry.js} +2 -2
  44. package/www/build/p-dfdcd9a6.js +2 -0
  45. package/www/build/voice-input-module.css +6 -0
  46. package/www/build/voice-input-module.entry.esm.js.map +1 -1
  47. package/www/build/voice-input-module.esm.js +1 -1
  48. package/www/build/voice-input-module.esm.js.map +1 -1
  49. package/www/index.html +1 -1
  50. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
  51. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
  52. package/dist/cjs/index-BTSzTkSZ.js.map +0 -1
  53. package/dist/esm/app-globals-DQuL1Twl.js +0 -6
  54. package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
  55. package/dist/esm/index-jmc2yzBp.js.map +0 -1
  56. package/dist/voice-input-module/p-920964b2.entry.js.map +0 -1
  57. package/dist/voice-input-module/p-DQuL1Twl.js +0 -2
  58. package/dist/voice-input-module/p-DQuL1Twl.js.map +0 -1
  59. package/dist/voice-input-module/p-jmc2yzBp.js +0 -3
  60. package/dist/voice-input-module/p-jmc2yzBp.js.map +0 -1
  61. package/www/build/p-920964b2.entry.js.map +0 -1
  62. package/www/build/p-DQuL1Twl.js +0 -2
  63. package/www/build/p-DQuL1Twl.js.map +0 -1
  64. package/www/build/p-cbf8974a.js +0 -2
  65. package/www/build/p-jmc2yzBp.js +0 -3
  66. package/www/build/p-jmc2yzBp.js.map +0 -1
  67. /package/dist/voice-input-module/{p-a5eeaf1c.entry.js.map → p-ba3d83d1.entry.js.map} +0 -0
  68. /package/www/build/{p-a5eeaf1c.entry.js.map → p-ba3d83d1.entry.js.map} +0 -0
@@ -4326,7 +4326,7 @@ const defineCustomElements = async (win, options) => {
4326
4326
 
4327
4327
  (function(){if("undefined"!==typeof window&&void 0!==window.Reflect&&void 0!==window.customElements){var a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)};HTMLElement.prototype=a.prototype;HTMLElement.prototype.constructor=HTMLElement;Object.setPrototypeOf(HTMLElement,a);}})();
4328
4328
 
4329
- const voiceInputModuleCss = ":host{display:block;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif}.row-audio-area{display:flex;flex-direction:row;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center}.voice-recorder-container{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem;border:1px solid #e5e7eb;border-radius:0.5rem;background:#ffffff;margin:0 auto}.voice-recorder-container-debug{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem;border:1px solid #e5e7eb;border-radius:0.5rem;background:#ffffff;margin:0 auto}.upload-record-container{display:inline-flex;cursor:pointer}.upload-record-button{display:flex;align-items:center;justify-content:center;transition:transform 0.2s ease, box-shadow 0.2s ease;user-select:none}.upload-record-button svg{width:100%;height:100%;transition:transform 0.2s ease}.upload-record-container:hover .upload-record-button svg{transform:scale(1.05)}.upload-record-button svg path{}.record-button{display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:#ee4444;color:white;cursor:pointer;transition:all 0.2s ease;position:relative;overflow:hidden;flex-shrink:0}.record-button:hover:not(:disabled){background:#dd3333;transform:scale(1.05)}.record-button:disabled{opacity:0.6;cursor:not-allowed}.record-button.recording{background:#dd3333;animation:pulse 1.5s infinite}.record-button.processing{background:#3b82f6}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(239, 68, 68, 0.7)}70%{box-shadow:0 0 0 10px rgba(239, 68, 68, 0)}100%{box-shadow:0 0 0 0 rgba(239, 68, 68, 0)}}.record-icon{width:24px;height:24px;fill:currentColor}.status-text{font-size:0.875rem;color:#6b7280;text-align:center;min-height:1.25rem}.status-text.error{color:#ee4444}.status-text.success{color:#10b981}.debug-panel{width:100%;margin-top:1rem;padding:1rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:0.375rem;font-family:'Monaco', 'Menlo', 'Ubuntu Mono', monospace;font-size:0.75rem}.debug-title{font-weight:600;margin-bottom:0.5rem;color:#374151}.debug-content{white-space:pre-wrap;word-break:break-word;color:#6b7280;max-height:200px;overflow-y:auto}.permissions-warning{padding:0.75rem;background:#fef3c7;border:1px solid #f59e0b;border-radius:0.375rem;color:#92400e;font-size:0.875rem;text-align:center}.form-preview{width:100%;margin-top:1rem;padding:1rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:0.375rem}.form-preview-title{font-weight:600;margin-bottom:0.5rem;color:#1e293b}.form-field{margin-bottom:0.5rem;font-size:0.875rem}.field-name{font-weight:500;color:#475569}.field-value{color:#64748b;margin-left:0.5rem}.field-value.filled{color:#059669;font-weight:500}.voice-filled-form{display:grid;grid-template-columns:repeat(auto-fit, minmax(250px, 1fr));gap:0.5rem;margin-top:1rem}.form-group{display:flex;flex-direction:column;gap:0.15rem}.form-group.full-width{grid-column:1 / -1}.form-header{grid-column:1 / -1;font-weight:600;font-size:1rem;color:#1e293b;margin-top:0.75rem;margin-bottom:0.25rem;padding-bottom:0.25rem;border-bottom:2px solid #e2e8f0}.form-label{font-weight:500;color:#374151;font-size:0.8rem}.required{color:#ee4444;margin-left:0.125rem}.form-input{padding:0.4rem;border:1px solid #d1d5db;border-radius:0.375rem;font-size:0.8rem;transition:border-color 0.2s ease}.form-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.form-checkbox{width:auto;padding:0;margin:0}select.form-input{background-color:white;cursor:pointer}input[type=\"date\"].form-input{cursor:pointer}.readonly-select{background:#f9fafb;border:1px solid #d1d5db;border-radius:0.375rem;padding:0.5rem}.select-placeholder{font-size:0.875rem;color:#6b7280;margin-bottom:0.5rem}.select-options-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:0.25rem;max-height:150px;overflow-y:auto}.select-option{background:#e5e7eb;padding:0.25rem 0.5rem;border-radius:0.25rem;font-size:0.875rem;color:#374151}.multiselect-container{display:grid;grid-template-columns:repeat(2, 1fr);gap:0.25rem;padding:0.5rem;border:1px solid #d1d5db;border-radius:0.375rem;background:white}.multiselect-option{display:flex;align-items:center;gap:0.5rem;padding:0.5rem;border-radius:0.25rem;cursor:pointer;transition:background 0.2s ease}.multiselect-option:hover{background:#f3f4f6}.multiselect-option input[type=\"checkbox\"]{width:18px;height:18px;cursor:pointer}.multiselect-option input[type=\"checkbox\"]:checked+.multiselect-label{font-weight:600;color:#059669}.multiselect-label{font-size:0.875rem;color:#374151;user-select:none}ocr-file-uploader{display:block;width:100% !important;height:100% !important;max-width:100% !important;max-height:100% !important}ocr-file-uploader *{max-width:100% !important;max-height:100% !important}";
4329
+ const voiceInputModuleCss = ":host{display:block;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif}.row-audio-area{display:flex;flex-direction:row;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center}.voice-recorder-container{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem;border:1px solid #e5e7eb;border-radius:0.5rem;background:#ffffff;margin:0 auto}.voice-recorder-container-debug{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem;border:1px solid #e5e7eb;border-radius:0.5rem;background:#ffffff;margin:0 auto}.upload-record-container{display:inline-flex;cursor:pointer}.upload-record-button{display:flex;align-items:center;justify-content:center;transition:transform 0.2s ease, box-shadow 0.2s ease;user-select:none}.upload-record-button svg{width:100%;height:100%;transition:transform 0.2s ease}.upload-record-container:hover .upload-record-button svg{transform:scale(1.05)}.upload-record-button svg path{}.record-button{display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:#ee4444;color:white;cursor:pointer;transition:all 0.2s ease;position:relative;overflow:hidden;flex-shrink:0}.record-button:hover:not(:disabled){background:#dd3333;transform:scale(1.05)}.record-button:disabled{opacity:0.6;cursor:not-allowed}.record-button.recording{background:#dd3333;animation:pulse 1.5s infinite}.record-button.processing{background:#3b82f6}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(239, 68, 68, 0.7)}70%{box-shadow:0 0 0 10px rgba(239, 68, 68, 0)}100%{box-shadow:0 0 0 0 rgba(239, 68, 68, 0)}}.record-icon{width:24px;height:24px;fill:currentColor}.status-text{font-size:0.875rem;color:#6b7280;text-align:center;min-height:1.25rem}.status-text.error{color:#ee4444}.status-text.success{color:#10b981}.debug-panel{width:100%;margin-top:1rem;padding:1rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:0.375rem;font-family:'Monaco', 'Menlo', 'Ubuntu Mono', monospace;font-size:0.75rem}.debug-title{font-weight:600;margin-bottom:0.5rem;color:#374151}.debug-content{white-space:pre-wrap;word-break:break-word;color:#6b7280;max-height:200px;overflow-y:auto}.permissions-warning{padding:0.75rem;background:#fef3c7;border:1px solid #f59e0b;border-radius:0.375rem;color:#92400e;font-size:0.875rem;text-align:center}.form-preview{width:100%;margin-top:1rem;padding:1rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:0.375rem}.form-preview-title{font-weight:600;margin-bottom:0.5rem;color:#1e293b}.form-field{margin-bottom:0.5rem;font-size:0.875rem}.field-name{font-weight:500;color:#475569}.field-value{color:#64748b;margin-left:0.5rem}.field-value.filled{color:#059669;font-weight:500}.voice-filled-form{display:grid;grid-template-columns:repeat(auto-fit, minmax(250px, 1fr));gap:0.5rem;margin-top:1rem}.form-group{display:flex;flex-direction:column;gap:0.15rem}.form-group.full-width{grid-column:1 / -1}.form-header{grid-column:1 / -1;font-weight:600;font-size:1rem;color:#1e293b;margin-top:0.75rem;margin-bottom:0.25rem;padding-bottom:0.25rem;border-bottom:2px solid #e2e8f0}.form-label{font-weight:500;color:#374151;font-size:0.8rem}.required{color:#ee4444;margin-left:0.125rem}.form-input{padding:0.4rem;border:1px solid #d1d5db;border-radius:0.375rem;font-size:0.8rem;transition:border-color 0.2s ease}.form-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.form-checkbox{width:auto;padding:0;margin:0}select.form-input{background-color:white;cursor:pointer}input[type=\"date\"].form-input{cursor:pointer}.readonly-select{background:#f9fafb;border:1px solid #d1d5db;border-radius:0.375rem;padding:0.5rem}.select-placeholder{font-size:0.875rem;color:#6b7280;margin-bottom:0.5rem}.select-options-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:0.25rem;max-height:150px;overflow-y:auto}.select-option{background:#e5e7eb;padding:0.25rem 0.5rem;border-radius:0.25rem;font-size:0.875rem;color:#374151}.multiselect-container{display:grid;grid-template-columns:repeat(2, 1fr);gap:0.25rem;padding:0.5rem;border:1px solid #d1d5db;border-radius:0.375rem;background:white}.multiselect-option{display:flex;align-items:center;gap:0.5rem;padding:0.5rem;border-radius:0.25rem;cursor:pointer;transition:background 0.2s ease}.multiselect-option:hover{background:#f3f4f6}.multiselect-option input[type=\"checkbox\"]{width:18px;height:18px;cursor:pointer}.multiselect-option input[type=\"checkbox\"]:checked+.multiselect-label{font-weight:600;color:#059669}.multiselect-label{font-size:0.875rem;color:#374151;user-select:none}@keyframes skeleton-shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}.skeleton-circle{border-radius:50%;flex-shrink:0;background:linear-gradient(\r\n 90deg,\r\n #e2e8f0 25%,\r\n #f8fafc 50%,\r\n #e2e8f0 75%\r\n );background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite}.skeleton-status{height:14px;border-radius:7px;width:140px;background:linear-gradient(\r\n 90deg,\r\n #e2e8f0 25%,\r\n #f8fafc 50%,\r\n #e2e8f0 75%\r\n );background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite;animation-delay:0.15s}ocr-file-uploader{display:block;width:100% !important;height:100% !important;max-width:100% !important;max-height:100% !important}ocr-file-uploader *{max-width:100% !important;max-height:100% !important}";
4330
4330
 
4331
4331
  // Initialize OCR
4332
4332
  defineCustomElements();
@@ -4370,6 +4370,7 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
4370
4370
  this.filledData = null;
4371
4371
  this.debugInfo = {};
4372
4372
  this.isReadonlyMode = true; // Start in readonly preview mode
4373
+ this.isInitializing = true;
4373
4374
  this.triggerAudioRecordUpload = () => {
4374
4375
  this.fileInputAudioRecord.click();
4375
4376
  };
@@ -4377,6 +4378,10 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
4377
4378
  const input = event.target;
4378
4379
  if (!input.files || input.files.length === 0)
4379
4380
  return;
4381
+ if (this.isProcessing || this.isRecording) {
4382
+ input.value = '';
4383
+ return;
4384
+ }
4380
4385
  const file = input.files[0];
4381
4386
  const isEn = this.language === 'en';
4382
4387
  // Validate file type
@@ -4397,7 +4402,18 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
4397
4402
  this.audioRecorder = new AudioRecorderService();
4398
4403
  }
4399
4404
  componentWillLoad() {
4405
+ // Parse theme only so the skeleton can be styled correctly on first render.
4406
+ // Full initialization runs in componentDidLoad() to give the skeleton time to paint.
4407
+ try {
4408
+ this.parsedTheme = this.theme ? JSON.parse(this.theme) : this.getDefaultTheme();
4409
+ }
4410
+ catch (_a) {
4411
+ this.parsedTheme = this.getDefaultTheme();
4412
+ }
4413
+ }
4414
+ componentDidLoad() {
4400
4415
  this.initializeServices();
4416
+ this.isInitializing = false;
4401
4417
  }
4402
4418
  initializeServices() {
4403
4419
  var _a;
@@ -4595,6 +4611,8 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
4595
4611
  }
4596
4612
  async processJsonForm(ocrData) {
4597
4613
  var _a, _b, _c;
4614
+ if (this.isProcessing || this.isRecording)
4615
+ return;
4598
4616
  this.isProcessing = true;
4599
4617
  this.hasTransientError = false;
4600
4618
  this.statusMessage = ((_a = this.parsedTheme.texts) === null || _a === void 0 ? void 0 : _a.processing) || (this.language == 'en' ? 'Processing document...' : 'Traitement du document ...');
@@ -4632,6 +4650,8 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
4632
4650
  }
4633
4651
  async processAudioContent(audioFile) {
4634
4652
  var _a, _b, _c;
4653
+ if (this.isProcessing || this.isRecording)
4654
+ return;
4635
4655
  this.isProcessing = true;
4636
4656
  this.hasTransientError = false;
4637
4657
  this.updateDebugInfo('Audio Captured', { size: audioFile.size, type: audioFile.type });
@@ -4948,7 +4968,7 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
4948
4968
  textColor: ocrStyle.textColor || '#ffffff'
4949
4969
  }
4950
4970
  };
4951
- const isDisabled = this.isProcessing || this.hasError;
4971
+ const isDisabled = this.isProcessing || this.hasError || this.isRecording;
4952
4972
  return (h$1("div", { style: { width: size, height: size, flexShrink: '0', opacity: isDisabled ? '0.6' : '1', pointerEvents: isDisabled ? 'none' : 'auto' } }, h$1("ocr-file-uploader", { batch: false, "json-schema": this.convertSchemaToOcrFormat(this.parsedSchema), callback: (data) => { this.processJsonForm(data); }, theme: JSON.stringify(ocrTheme), style: { width: '100%', height: '100%' } })));
4953
4973
  }
4954
4974
  convertSchemaToOcrFormat(schema) {
@@ -5003,7 +5023,7 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
5003
5023
  return;
5004
5024
  const audioStyle = ((_a = this.parsedTheme.buttons) === null || _a === void 0 ? void 0 : _a.audio) || {};
5005
5025
  const size = audioStyle.size || '50px';
5006
- const isDisabled = this.isProcessing || this.hasError;
5026
+ const isDisabled = this.isProcessing || this.hasError || this.isRecording;
5007
5027
  const buttonStyle = {
5008
5028
  stroke: audioStyle.backgroundColor || '#3b82f6',
5009
5029
  fill: audioStyle.backgroundColor || '#3b82f6',
@@ -5032,6 +5052,17 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
5032
5052
  };
5033
5053
  return (h$1("button", { class: buttonClass, style: buttonStyle, onClick: () => this.handleRecordClick(), disabled: isDisabled, "aria-label": this.isRecording ? 'Stop recording' : 'Start recording' }, this.isProcessing ? (h$1("svg", { class: "record-icon", viewBox: "0 0 24 24" }, h$1("circle", { cx: "12", cy: "12", r: "3" }, h$1("animate", { attributeName: "r", values: "3;6;3", dur: "1s", repeatCount: "indefinite" }), h$1("animate", { attributeName: "opacity", values: "1;0.3;1", dur: "1s", repeatCount: "indefinite" })))) : this.isRecording ? (h$1("svg", { class: "record-icon", viewBox: "0 0 24 24" }, h$1("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2" }))) : (h$1("svg", { class: "record-icon", viewBox: "0 0 24 24" }, h$1("circle", { cx: "12", cy: "12", r: "8" })))));
5034
5054
  }
5055
+ renderLoadingSkeleton() {
5056
+ var _a;
5057
+ const types = this.parsedInputTypes.length > 0 ? this.parsedInputTypes : ['voice'];
5058
+ const containerStyle = this.getContainerStyle();
5059
+ const buttons = (((_a = this.parsedTheme) === null || _a === void 0 ? void 0 : _a.buttons) || {});
5060
+ const getSize = (type) => { var _a, _b; return ((_a = buttons[type]) === null || _a === void 0 ? void 0 : _a.size) || ((_b = buttons.voice) === null || _b === void 0 ? void 0 : _b.size) || '50px'; };
5061
+ return (h$1("div", null, h$1("div", { class: "voice-recorder-container" + (this.debug || this.renderForm ? "-debug" : ""), style: containerStyle }, h$1("div", { class: "row-audio-area" }, types.map(type => {
5062
+ const size = getSize(type);
5063
+ return h$1("div", { class: "skeleton-circle", style: { width: size, height: size } });
5064
+ })), this.displayStatus && h$1("div", { class: "skeleton-status" }))));
5065
+ }
5035
5066
  renderStatusMessage() {
5036
5067
  const hasAnyError = this.hasError || this.hasTransientError;
5037
5068
  const statusClass = [
@@ -5193,7 +5224,8 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
5193
5224
  };
5194
5225
  }
5195
5226
  getContainerStyle() {
5196
- const c = this.parsedTheme.container || {};
5227
+ var _a;
5228
+ const c = ((_a = this.parsedTheme) === null || _a === void 0 ? void 0 : _a.container) || {};
5197
5229
  return {
5198
5230
  width: c.width || 'auto',
5199
5231
  height: c.height || 'auto',
@@ -5205,15 +5237,19 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
5205
5237
  };
5206
5238
  }
5207
5239
  getStatusStyle() {
5208
- const s = this.parsedTheme.statusText || {};
5240
+ var _a;
5241
+ const s = ((_a = this.parsedTheme) === null || _a === void 0 ? void 0 : _a.statusText) || {};
5209
5242
  return {
5210
5243
  color: s.color || '#1e293b',
5211
5244
  fontSize: s.fontSize || '14px'
5212
5245
  };
5213
5246
  }
5214
5247
  render() {
5248
+ if (this.isInitializing) {
5249
+ return this.renderLoadingSkeleton();
5250
+ }
5215
5251
  const containerStyle = this.getContainerStyle();
5216
- return (h$1("div", { key: 'd2eb6b74840a57809920b3dbba3fd7dfbeef8531' }, h$1("div", { key: 'e66e1d4fc23176f9024ca20413535440a8be3ce8', class: "voice-recorder-container" + (this.debug || this.renderForm ? "-debug" : ""), style: containerStyle }, h$1("div", { key: '57dd7b882771d1f0bd56a97bfd0a06ffee09428e', class: "row-audio-area" }, this.renderRecordButton(), this.renderUploadRecordButton(), this.renderUploadButton()), this.displayStatus ? this.renderStatusMessage() : "", this.renderForm ? this.renderFormPreview() : "", this.debug ? this.renderDebugPanel() : "")));
5252
+ return (h$1("div", null, h$1("div", { class: "voice-recorder-container" + (this.debug || this.renderForm ? "-debug" : ""), style: containerStyle }, h$1("div", { class: "row-audio-area" }, this.renderRecordButton(), this.renderUploadRecordButton(), this.renderUploadButton()), this.displayStatus ? this.renderStatusMessage() : "", this.renderForm ? this.renderFormPreview() : "", this.debug ? this.renderDebugPanel() : "")));
5217
5253
  }
5218
5254
  static get watchers() { return {
5219
5255
  "formJson": ["initializeServices"],
@@ -5251,6 +5287,7 @@ const VoiceFormRecorder = /*@__PURE__*/ proxyCustomElement(class VoiceFormRecord
5251
5287
  "filledData": [32],
5252
5288
  "debugInfo": [32],
5253
5289
  "isReadonlyMode": [32],
5290
+ "isInitializing": [32],
5254
5291
  "convertXmlToJson": [64],
5255
5292
  "convertJsonToXml": [64],
5256
5293
  "convertXmlToJsonLegacy": [64],