verben-ng-ui 1.2.66 → 1.2.68

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.
@@ -68,14 +68,11 @@ export class DataImportService {
68
68
  // });
69
69
  // console.time('Begin');
70
70
  let imported = [];
71
- const wb = read(event.target.result, { raw: true });
71
+ const wb = read(event.target.result, { cellDates: true });
72
72
  const sheets = wb.SheetNames;
73
73
  if (sheets.length) {
74
74
  const rows = utils.sheet_to_json(wb.Sheets[sheets[0]], {
75
- raw: false,
76
- // defval: '',
77
- // rawNumbers: true,
78
- // dateNF: 'dd/mm/yyyy',
75
+ defval: null,
79
76
  });
80
77
  imported = this.transformImportData(rows, columnDefinitions);
81
78
  // console.log('TRANSFORMED', imported);
@@ -129,4 +126,4 @@ export class DataImportService {
129
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataImportService, decorators: [{
130
127
  type: Injectable
131
128
  }], ctorParameters: () => [] });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1pbXBvcnQvZGF0YS1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUc5QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQVksR0FBd0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLGdCQUFnQixDQUFDO0lBRWpCLG9FQUFvRTtJQUNwRSxtQkFBbUIsQ0FDakIsWUFBbUMsRUFDbkMsaUJBQXdDO1FBRXhDLHdEQUF3RDtRQUN4RCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBQ3hELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBR2hDLENBQUM7UUFFSiwyRkFBMkY7UUFDM0YsaUJBQWlCO2FBQ2QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDOUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FDVixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUTtnQkFDNUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNO2dCQUNaLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWhDLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsTUFB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LE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILG9DQUFvQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCLEVBQUUsS0FBbUIsRUFBRSxXQUFxQjtRQUN2RSxPQUFPLENBQ0wsS0FBSyxDQUFDLE1BQU0sQ0FDVixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLFdBQVcsQ0FBQyxLQUFLLENBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLEtBQUssQ0FBQyxVQUFxQixDQUFDO2dCQUM1QixLQUFLLENBQUMsVUFBcUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxVQUFxQixDQUFDLENBQzlELENBQ0osQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7d0dBekpVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uRGVmaW5pdGlvbiB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyByZWFkLCB1dGlscywgd3JpdGVGaWxlIH0gZnJvbSAneGxzeCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhSW1wb3J0U2VydmljZTxUPiB7XG4gIGltcG9ydGVkRGF0YTogV3JpdGFibGVTaWduYWw8VFtdPiA9IHNpZ25hbChbXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvLyBGdW5jdGlvbiB0byB0cmFuc2Zvcm0gaW1wb3J0ZWQgZGF0YSB0byBtYXRjaCB5b3VyIG1vZGVsIHN0cnVjdHVyZVxuICB0cmFuc2Zvcm1JbXBvcnREYXRhPFQ+KFxuICAgIGltcG9ydGVkRGF0YTogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W11cbiAgKTogUGFydGlhbDxUPltdIHtcbiAgICAvLyBDcmVhdGUgbWFwcGluZ3MgZnJvbSBoZWFkZXIgdG8gaW1wb3J0S2V5IGFuZCBpbXBvcnRCeVxuICAgIGNvbnN0IGhlYWRlclRvSW1wb3J0S2V5TWFwID0gbmV3IE1hcDxzdHJpbmcsIGtleW9mIFQ+KCk7XG4gICAgY29uc3QgaGVhZGVyVG9JbXBvcnRCeU1hcCA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICBrZXlvZiBUIHwgKChpbXBvcnRlZFJvdzogYW55KSA9PiBUW2tleW9mIFRdKVxuICAgID4oKTtcblxuICAgIC8vIEZpbHRlciBjb2x1bW4gZGVmaW5pdGlvbnMgdG8gb25seSB0aG9zZSB3aXRoIGltcG9ydEtleSBvciBpbXBvcnRCeSBhbmQgcG9wdWxhdGUgdGhlIG1hcHNcbiAgICBjb2x1bW5EZWZpbml0aW9uc1xuICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5pbXBvcnRCeSlcbiAgICAgIC5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgaGVhZGVyID1cbiAgICAgICAgICB0eXBlb2YgY29sLmhlYWRlciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gY29sLmhlYWRlclxuICAgICAgICAgICAgOiBjb2wuaGVhZGVyKHt9KS50b1N0cmluZygpO1xuXG4gICAgICAgIGlmIChjb2wuaW1wb3J0S2V5KSB7XG4gICAgICAgICAgaGVhZGVyVG9JbXBvcnRLZXlNYXAuc2V0KGhlYWRlciwgY29sLmltcG9ydEtleSBhcyBrZXlvZiBUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2wuaW1wb3J0QnkpIHtcbiAgICAgICAgICBoZWFkZXJUb0ltcG9ydEJ5TWFwLnNldChoZWFkZXIsIGNvbC5pbXBvcnRCeSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIGVhY2ggcm93IGluIHRoZSBpbXBvcnRlZCBkYXRhXG4gICAgcmV0dXJuIGltcG9ydGVkRGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRSb3c6IFBhcnRpYWw8VD4gPSB7fTtcblxuICAgICAgLy8gUHJvY2VzcyBlYWNoIGtleSBpbiB0aGUgcm93XG4gICAgICBPYmplY3QuZW50cmllcyhyb3cpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFuIGltcG9ydEJ5IHRyYW5zZm9ybWF0aW9uIGZpcnN0ICh0YWtlcyBwcmlvcml0eSlcbiAgICAgICAgY29uc3QgaW1wb3J0QnkgPSBoZWFkZXJUb0ltcG9ydEJ5TWFwLmdldChrZXkpO1xuXG4gICAgICAgIGlmIChpbXBvcnRCeSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgaW1wb3J0QnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgaW1wb3J0QnkgZnVuY3Rpb24gdG8gdHJhbnNmb3JtIHRoZSBlbnRpcmUgaW1wb3J0ZWQgcm93XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRLZXkgPSBoZWFkZXJUb0ltcG9ydEtleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChpbXBvcnRLZXkpIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSb3dbaW1wb3J0S2V5XSA9IGltcG9ydEJ5KHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGltcG9ydEJ5IGlzIGEgZGlyZWN0IGtleSByZWZlcmVuY2VcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkUm93W2ltcG9ydEJ5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gaW1wb3J0S2V5IGlmIG5vIGltcG9ydEJ5IGlzIGRlZmluZWRcbiAgICAgICAgICBjb25zdCBpbXBvcnRLZXkgPSBoZWFkZXJUb0ltcG9ydEtleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICBpZiAoaW1wb3J0S2V5KSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFJvd1tpbXBvcnRLZXldID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUm93O1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlSW1wb3J0KFxuICAgIGZpbGU6IEZpbGUsXG4gICAgLy8gcHJldmlld2VyPzogKGRhdGE6IGFueVtdKSA9PiB2b2lkLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10sXG4gICAgcGFyc2VJbXBvcnQ/OiAoZGF0YTogYW55KSA9PiBQYXJ0aWFsPFQ+W11cbiAgKSB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIC8vIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7XG4gICAgICAvLyAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICByYXc6IHRydWUsXG4gICAgICAvLyAgIGNlbGxUZXh0OiB0cnVlLFxuICAgICAgLy8gICBjZWxsRm9ybXVsYTogZmFsc2UsXG4gICAgICAvLyAgIGNlbGxORjogZmFsc2UsXG4gICAgICAvLyB9KTtcbiAgICAgIC8vIGNvbnNvbGUudGltZSgnQmVnaW4nKTtcbiAgICAgIGxldCBpbXBvcnRlZDogYW55W10gPSBbXTtcbiAgICAgIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7IHJhdzogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHNoZWV0cyA9IHdiLlNoZWV0TmFtZXM7XG4gICAgICBpZiAoc2hlZXRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByb3dzID0gdXRpbHMuc2hlZXRfdG9fanNvbih3Yi5TaGVldHNbc2hlZXRzWzBdXSwge1xuICAgICAgICAgIHJhdzogZmFsc2UsXG4gICAgICAgICAgLy8gZGVmdmFsOiAnJyxcbiAgICAgICAgICAvLyByYXdOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgIC8vIGRhdGVORjogJ2RkL21tL3l5eXknLFxuICAgICAgICB9KSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG5cbiAgICAgICAgaW1wb3J0ZWQgPSB0aGlzLnRyYW5zZm9ybUltcG9ydERhdGEocm93cywgY29sdW1uRGVmaW5pdGlvbnMpIGFzIFRbXTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1RSQU5TRk9STUVEJywgaW1wb3J0ZWQpO1xuXG4gICAgICAgIGlmIChwYXJzZUltcG9ydCkge1xuICAgICAgICAgIGltcG9ydGVkID0gcGFyc2VJbXBvcnQoaW1wb3J0ZWQpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdQQVJTRUQnLCBpbXBvcnRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJldmlld2VyKGltcG9ydGVkKTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdJbXBvcnRlZCBkYXRhOicsIEpTT04uc3RyaW5naWZ5KGltcG9ydGVkLCBudWxsLCAyKSk7XG4gICAgICAvLyBjb25zb2xlLnRpbWUoJ1N0YXJ0IFByb2Nlc3MnKTtcbiAgICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChpbXBvcnRlZCk7XG4gICAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ0JlZ2luJyk7XG4gICAgICByZXR1cm4gaW1wb3J0ZWQ7XG4gICAgfTtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICB9XG5cbiAgaGFuZGxlVGVtcGxhdGVFeHBvcnQoZmllbGRzOiBzdHJpbmdbXSwgdGl0bGU6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKGZpZWxkcyk7XG4gICAgY29uc3Qgd2IgPSB1dGlscy5ib29rX25ldygpO1xuICAgIGNvbnN0IHdzOiBhbnkgPSB1dGlscy5qc29uX3RvX3NoZWV0KFtdKTtcbiAgICB1dGlscy5zaGVldF9hZGRfYW9hKHdzLCBbZmllbGRzXSk7XG4gICAgLy8gdXRpbHMuc2hlZXRfYWRkX2pzb24od3MsIHRoaXMuX2RhdGEsIHsgb3JpZ2luOiAnQTInLCBza2lwSGVhZGVyOiB0cnVlIH0pO1xuICAgIHV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cywgdGl0bGUpO1xuICAgIHdyaXRlRmlsZSh3YiwgdGl0bGUgKyAnLXRlbXBsYXRlLicgKyAneGxzeCcpO1xuICB9XG5cbiAgYWRkUm93KGV2ZW50OiB7IGluZGV4OiBudW1iZXI7IGtleTogc3RyaW5nIHwgbnVtYmVyOyBkYXRhOiBQYXJ0aWFsPFQ+IH0pIHtcbiAgICAvLyBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5pbXBvcnRlZERhdGEudXBkYXRlKChkYXQpID0+IHtcbiAgICAgIC8vIGRhdFtldmVudC5pbmRleF0gPSB7IC4uLmRhdFtldmVudC5pbmRleF0sIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgIHJldHVybiBkYXQubWFwKChkLCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBldmVudC5pbmRleCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLmQsIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaW1wb3J0ZWREYXRhKCkpO1xuICB9XG5cbiAgaXNEdXBsaWNhdGUoZGF0dW06IFBhcnRpYWw8VD4sIGFycmF5OiBQYXJ0aWFsPFQ+W10sIGlkZW50aWZpZXJzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiAoXG4gICAgICBhcnJheS5maWx0ZXIoXG4gICAgICAgIChkYXQpID0+XG4gICAgICAgICAgaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGlkZW50aWZpZXJzLmV2ZXJ5KFxuICAgICAgICAgICAgKGlkZW50aWZpZXIpID0+XG4gICAgICAgICAgICAgIGRhdHVtW2lkZW50aWZpZXIgYXMga2V5b2YgVF0gJiZcbiAgICAgICAgICAgICAgZGF0dW1baWRlbnRpZmllciBhcyBrZXlvZiBUXSA9PT0gZGF0W2lkZW50aWZpZXIgYXMga2V5b2YgVF1cbiAgICAgICAgICApXG4gICAgICApLmxlbmd0aCA+IDFcbiAgICApO1xuICB9XG5cbiAgY2xlYXJEYXRhKCkge1xuICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChbXSk7XG4gIH1cbn1cbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1pbXBvcnQvZGF0YS1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUc5QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQVksR0FBd0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLGdCQUFnQixDQUFDO0lBRWpCLG9FQUFvRTtJQUNwRSxtQkFBbUIsQ0FDakIsWUFBbUMsRUFDbkMsaUJBQXdDO1FBRXhDLHdEQUF3RDtRQUN4RCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBQ3hELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBR2hDLENBQUM7UUFFSiwyRkFBMkY7UUFDM0YsaUJBQWlCO2FBQ2QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDOUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FDVixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUTtnQkFDNUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNO2dCQUNaLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWhDLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsTUFB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TCxDQUFDLENBQUMsQ0FBQztRQUNILG9DQUFvQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCLEVBQUUsS0FBbUIsRUFBRSxXQUFxQjtRQUN2RSxPQUFPLENBQ0wsS0FBSyxDQUFDLE1BQU0sQ0FDVixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLFdBQVcsQ0FBQyxLQUFLLENBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLEtBQUssQ0FBQyxVQUFxQixDQUFDO2dCQUM1QixLQUFLLENBQUMsVUFBcUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxVQUFxQixDQUFDLENBQzlELENBQ0osQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7d0dBdEpVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uRGVmaW5pdGlvbiB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyByZWFkLCB1dGlscywgd3JpdGVGaWxlIH0gZnJvbSAneGxzeCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhSW1wb3J0U2VydmljZTxUPiB7XG4gIGltcG9ydGVkRGF0YTogV3JpdGFibGVTaWduYWw8VFtdPiA9IHNpZ25hbChbXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvLyBGdW5jdGlvbiB0byB0cmFuc2Zvcm0gaW1wb3J0ZWQgZGF0YSB0byBtYXRjaCB5b3VyIG1vZGVsIHN0cnVjdHVyZVxuICB0cmFuc2Zvcm1JbXBvcnREYXRhPFQ+KFxuICAgIGltcG9ydGVkRGF0YTogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W11cbiAgKTogUGFydGlhbDxUPltdIHtcbiAgICAvLyBDcmVhdGUgbWFwcGluZ3MgZnJvbSBoZWFkZXIgdG8gaW1wb3J0S2V5IGFuZCBpbXBvcnRCeVxuICAgIGNvbnN0IGhlYWRlclRvSW1wb3J0S2V5TWFwID0gbmV3IE1hcDxzdHJpbmcsIGtleW9mIFQ+KCk7XG4gICAgY29uc3QgaGVhZGVyVG9JbXBvcnRCeU1hcCA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICBrZXlvZiBUIHwgKChpbXBvcnRlZFJvdzogYW55KSA9PiBUW2tleW9mIFRdKVxuICAgID4oKTtcblxuICAgIC8vIEZpbHRlciBjb2x1bW4gZGVmaW5pdGlvbnMgdG8gb25seSB0aG9zZSB3aXRoIGltcG9ydEtleSBvciBpbXBvcnRCeSBhbmQgcG9wdWxhdGUgdGhlIG1hcHNcbiAgICBjb2x1bW5EZWZpbml0aW9uc1xuICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5pbXBvcnRCeSlcbiAgICAgIC5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgaGVhZGVyID1cbiAgICAgICAgICB0eXBlb2YgY29sLmhlYWRlciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gY29sLmhlYWRlclxuICAgICAgICAgICAgOiBjb2wuaGVhZGVyKHt9KS50b1N0cmluZygpO1xuXG4gICAgICAgIGlmIChjb2wuaW1wb3J0S2V5KSB7XG4gICAgICAgICAgaGVhZGVyVG9JbXBvcnRLZXlNYXAuc2V0KGhlYWRlciwgY29sLmltcG9ydEtleSBhcyBrZXlvZiBUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2wuaW1wb3J0QnkpIHtcbiAgICAgICAgICBoZWFkZXJUb0ltcG9ydEJ5TWFwLnNldChoZWFkZXIsIGNvbC5pbXBvcnRCeSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIGVhY2ggcm93IGluIHRoZSBpbXBvcnRlZCBkYXRhXG4gICAgcmV0dXJuIGltcG9ydGVkRGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRSb3c6IFBhcnRpYWw8VD4gPSB7fTtcblxuICAgICAgLy8gUHJvY2VzcyBlYWNoIGtleSBpbiB0aGUgcm93XG4gICAgICBPYmplY3QuZW50cmllcyhyb3cpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFuIGltcG9ydEJ5IHRyYW5zZm9ybWF0aW9uIGZpcnN0ICh0YWtlcyBwcmlvcml0eSlcbiAgICAgICAgY29uc3QgaW1wb3J0QnkgPSBoZWFkZXJUb0ltcG9ydEJ5TWFwLmdldChrZXkpO1xuXG4gICAgICAgIGlmIChpbXBvcnRCeSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgaW1wb3J0QnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgaW1wb3J0QnkgZnVuY3Rpb24gdG8gdHJhbnNmb3JtIHRoZSBlbnRpcmUgaW1wb3J0ZWQgcm93XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRLZXkgPSBoZWFkZXJUb0ltcG9ydEtleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChpbXBvcnRLZXkpIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSb3dbaW1wb3J0S2V5XSA9IGltcG9ydEJ5KHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGltcG9ydEJ5IGlzIGEgZGlyZWN0IGtleSByZWZlcmVuY2VcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkUm93W2ltcG9ydEJ5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gaW1wb3J0S2V5IGlmIG5vIGltcG9ydEJ5IGlzIGRlZmluZWRcbiAgICAgICAgICBjb25zdCBpbXBvcnRLZXkgPSBoZWFkZXJUb0ltcG9ydEtleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICBpZiAoaW1wb3J0S2V5KSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFJvd1tpbXBvcnRLZXldID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUm93O1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlSW1wb3J0KFxuICAgIGZpbGU6IEZpbGUsXG4gICAgLy8gcHJldmlld2VyPzogKGRhdGE6IGFueVtdKSA9PiB2b2lkLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10sXG4gICAgcGFyc2VJbXBvcnQ/OiAoZGF0YTogYW55KSA9PiBQYXJ0aWFsPFQ+W11cbiAgKSB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIC8vIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7XG4gICAgICAvLyAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICByYXc6IHRydWUsXG4gICAgICAvLyAgIGNlbGxUZXh0OiB0cnVlLFxuICAgICAgLy8gICBjZWxsRm9ybXVsYTogZmFsc2UsXG4gICAgICAvLyAgIGNlbGxORjogZmFsc2UsXG4gICAgICAvLyB9KTtcbiAgICAgIC8vIGNvbnNvbGUudGltZSgnQmVnaW4nKTtcbiAgICAgIGxldCBpbXBvcnRlZDogYW55W10gPSBbXTtcbiAgICAgIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7IGNlbGxEYXRlczogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHNoZWV0cyA9IHdiLlNoZWV0TmFtZXM7XG4gICAgICBpZiAoc2hlZXRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByb3dzID0gdXRpbHMuc2hlZXRfdG9fanNvbih3Yi5TaGVldHNbc2hlZXRzWzBdXSwge1xuICAgICAgICAgIGRlZnZhbDogbnVsbCxcbiAgICAgICAgfSkgYXMgUmVjb3JkPHN0cmluZywgYW55PltdO1xuXG4gICAgICAgIGltcG9ydGVkID0gdGhpcy50cmFuc2Zvcm1JbXBvcnREYXRhKHJvd3MsIGNvbHVtbkRlZmluaXRpb25zKSBhcyBUW107XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdUUkFOU0ZPUk1FRCcsIGltcG9ydGVkKTtcblxuICAgICAgICBpZiAocGFyc2VJbXBvcnQpIHtcbiAgICAgICAgICBpbXBvcnRlZCA9IHBhcnNlSW1wb3J0KGltcG9ydGVkKTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnUEFSU0VEJywgaW1wb3J0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZpZXdlcihpbXBvcnRlZCk7XG4gICAgICB9XG4gICAgICAvLyBjb25zb2xlLmxvZygnSW1wb3J0ZWQgZGF0YTonLCBKU09OLnN0cmluZ2lmeShpbXBvcnRlZCwgbnVsbCwgMikpO1xuICAgICAgLy8gY29uc29sZS50aW1lKCdTdGFydCBQcm9jZXNzJyk7XG4gICAgICB0aGlzLmltcG9ydGVkRGF0YS5zZXQoaW1wb3J0ZWQpO1xuICAgICAgLy8gY29uc29sZS50aW1lRW5kKCdCZWdpbicpO1xuICAgICAgcmV0dXJuIGltcG9ydGVkO1xuICAgIH07XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgfVxuXG4gIGhhbmRsZVRlbXBsYXRlRXhwb3J0KGZpZWxkczogc3RyaW5nW10sIHRpdGxlOiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZyhmaWVsZHMpO1xuICAgIGNvbnN0IHdiID0gdXRpbHMuYm9va19uZXcoKTtcbiAgICBjb25zdCB3czogYW55ID0gdXRpbHMuanNvbl90b19zaGVldChbXSk7XG4gICAgdXRpbHMuc2hlZXRfYWRkX2FvYSh3cywgW2ZpZWxkc10pO1xuICAgIC8vIHV0aWxzLnNoZWV0X2FkZF9qc29uKHdzLCB0aGlzLl9kYXRhLCB7IG9yaWdpbjogJ0EyJywgc2tpcEhlYWRlcjogdHJ1ZSB9KTtcbiAgICB1dGlscy5ib29rX2FwcGVuZF9zaGVldCh3Yiwgd3MsIHRpdGxlKTtcbiAgICB3cml0ZUZpbGUod2IsIHRpdGxlICsgJy10ZW1wbGF0ZS4nICsgJ3hsc3gnKTtcbiAgfVxuXG4gIGFkZFJvdyhldmVudDogeyBpbmRleDogbnVtYmVyOyBrZXk6IHN0cmluZyB8IG51bWJlcjsgZGF0YTogUGFydGlhbDxUPiB9KSB7XG4gICAgLy8gY29uc29sZS5sb2coZXZlbnQpO1xuICAgIHRoaXMuaW1wb3J0ZWREYXRhLnVwZGF0ZSgoZGF0KSA9PiB7XG4gICAgICAvLyBkYXRbZXZlbnQuaW5kZXhdID0geyAuLi5kYXRbZXZlbnQuaW5kZXhdLCAuLi5ldmVudC5kYXRhIH07XG4gICAgICByZXR1cm4gZGF0Lm1hcCgoZCwgaSkgPT4ge1xuICAgICAgICBpZiAoaSA9PT0gZXZlbnQuaW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5kLCAuLi5ldmVudC5kYXRhIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQ7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmltcG9ydGVkRGF0YSgpKTtcbiAgfVxuXG4gIGlzRHVwbGljYXRlKGRhdHVtOiBQYXJ0aWFsPFQ+LCBhcnJheTogUGFydGlhbDxUPltdLCBpZGVudGlmaWVyczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXJyYXkuZmlsdGVyKFxuICAgICAgICAoZGF0KSA9PlxuICAgICAgICAgIGlkZW50aWZpZXJzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBpZGVudGlmaWVycy5ldmVyeShcbiAgICAgICAgICAgIChpZGVudGlmaWVyKSA9PlxuICAgICAgICAgICAgICBkYXR1bVtpZGVudGlmaWVyIGFzIGtleW9mIFRdICYmXG4gICAgICAgICAgICAgIGRhdHVtW2lkZW50aWZpZXIgYXMga2V5b2YgVF0gPT09IGRhdFtpZGVudGlmaWVyIGFzIGtleW9mIFRdXG4gICAgICAgICAgKVxuICAgICAgKS5sZW5ndGggPiAxXG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyRGF0YSgpIHtcbiAgICB0aGlzLmltcG9ydGVkRGF0YS5zZXQoW10pO1xuICB9XG59XG4iXX0=
@@ -191,11 +191,11 @@ export class VerbenaInputComponent {
191
191
  this.validate();
192
192
  }
193
193
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: VerbenaInputComponent, deps: [{ token: forwardRef(() => NgControl), optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
194
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: VerbenaInputComponent, selector: "verbena-input", inputs: { disabled: "disabled", label: "label", placeHolder: "placeHolder", required: "required", svgPosition: "svgPosition", minLength: "minLength", maxLength: "maxLength", type: "type", bgColor: "bgColor", border: "border", borderRadius: "borderRadius", textColor: "textColor", value: "value", labelPosition: "labelPosition", labelColor: "labelColor", disable: "disable", readOnly: "readOnly", min: "min", max: "max", showBorder: "showBorder", showErrorMessage: "showErrorMessage", errorMessageColor: "errorMessageColor", errorBorderColor: "errorBorderColor", errorPosition: "errorPosition", svg: "svg", fontSize: "fontSize", svgWidth: "svgWidth", svgHeight: "svgHeight", svgColor: "svgColor", capitalization: "capitalization", inputContainerClass: "inputContainerClass", inputFieldClass: "inputFieldClass", passLength: "passLength", inputWrapperClass: "inputWrapperClass", passwordToggle: "passwordToggle", customErrorMessages: "customErrorMessages", icon: "icon", textPass: "textPass" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
194
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: VerbenaInputComponent, selector: "verbena-input", inputs: { disabled: "disabled", label: "label", placeHolder: "placeHolder", required: "required", svgPosition: "svgPosition", minLength: "minLength", maxLength: "maxLength", type: "type", bgColor: "bgColor", border: "border", borderRadius: "borderRadius", textColor: "textColor", value: "value", labelPosition: "labelPosition", labelColor: "labelColor", disable: "disable", readOnly: "readOnly", min: "min", max: "max", showBorder: "showBorder", showErrorMessage: "showErrorMessage", errorMessageColor: "errorMessageColor", errorBorderColor: "errorBorderColor", errorPosition: "errorPosition", svg: "svg", fontSize: "fontSize", svgWidth: "svgWidth", svgHeight: "svgHeight", svgColor: "svgColor", capitalization: "capitalization", inputContainerClass: "inputContainerClass", inputFieldClass: "inputFieldClass", passLength: "passLength", inputWrapperClass: "inputWrapperClass", passwordToggle: "passwordToggle", customErrorMessages: "customErrorMessages", icon: "icon", textPass: "textPass" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative', overflow: 'hidden' }\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'0px',\n 'top':'0',\n 'bottom':'0',\n 'background': bgColor,\n 'z-index': '1',\n 'margin': '1px',\n 'padding': '0 8px',\n 'border-radius': borderRadius,\n\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
195
195
  }
196
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: VerbenaInputComponent, decorators: [{
197
197
  type: Component,
198
- args: [{ selector: 'verbena-input', template: "<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"] }]
198
+ args: [{ selector: 'verbena-input', template: "<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative', overflow: 'hidden' }\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'0px',\n 'top':'0',\n 'bottom':'0',\n 'background': bgColor,\n 'z-index': '1',\n 'margin': '1px',\n 'padding': '0 8px',\n 'border-radius': borderRadius,\n\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"] }]
199
199
  }], ctorParameters: () => [{ type: i2.NgControl, decorators: [{
200
200
  type: Optional
201
201
  }, {
@@ -282,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
282
282
  }], textPass: [{
283
283
  type: Input
284
284
  }] } });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyYmVuYS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi92ZXJiZW5hLWlucHV0L3ZlcmJlbmEtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvdmVyYmVuYS1pbnB1dC92ZXJiZW5hLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBUWpFLE1BQU0sT0FBTyxxQkFBcUI7SUF3RTZDO0lBdkVwRSxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFdBQVcsR0FBcUIsTUFBTSxDQUFDO0lBQ3ZDLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQVU7SUFDbkIsSUFBSSxHQUE0SCxNQUFNLENBQUM7SUFDdkksT0FBTyxHQUFXLFNBQVMsQ0FBQztJQUM1QixNQUFNLEdBQVcsRUFBRSxDQUFDO0lBQ3BCLFlBQVksR0FBVyxLQUFLLENBQUM7SUFDN0IsU0FBUyxHQUFXLE1BQU0sQ0FBQztJQUMzQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLGFBQWEsR0FBVyxPQUFPLENBQUM7SUFDaEMsVUFBVSxHQUFXLE9BQU8sQ0FBQztJQUM3QixPQUFPLEdBQVksS0FBSyxDQUFDLENBQUMsZ0JBQWdCO0lBQzFDLFFBQVEsR0FBWSxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7SUFDN0MsR0FBRyxDQUFVO0lBQ2IsR0FBRyxDQUFVO0lBQ2IsVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixnQkFBZ0IsR0FBWSxJQUFJLENBQUM7SUFDakMsaUJBQWlCLEdBQVcsS0FBSyxDQUFDO0lBQ2xDLGdCQUFnQixDQUFVO0lBQzFCLGFBQWEsR0FBd0MsUUFBUSxDQUFDO0lBQzlELEdBQUcsR0FBVyxFQUFFLENBQUM7SUFDakIsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixjQUFjLEdBQXFGLE1BQU0sQ0FBQztJQUMxRyxtQkFBbUIsR0FBVyxFQUFFLENBQUM7SUFDakMsZUFBZSxHQUFXLEVBQUUsQ0FBQztJQUM3QixVQUFVLEdBQVcsQ0FBQyxDQUFDO0lBQ3ZCLGlCQUFpQixHQUFXLEVBQUUsQ0FBQztJQUMvQixjQUFjLEdBQWEsS0FBSyxDQUFDO0lBQ2pDLG1CQUFtQixHQWF4QixFQUFFLENBQUM7SUFFRyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7SUFFOUQsWUFBWSxDQUFxQjtJQUNqQyxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDekIsT0FBTyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUN4QixTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTNCLDhDQUE4QztJQUM5QywrQkFBK0I7SUFFdEIsSUFBSSxHQUFXLEtBQUssQ0FBQztJQUNyQixRQUFRLEdBQVcsTUFBTSxDQUFDO0lBR25DLFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMzRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBNkUsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUMvRixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO29CQUNyQyxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87b0JBQ2hELENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBWTtRQUNsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUVoRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYSxFQUFFLE1BQWM7UUFDL0MsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssV0FBVyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0MsS0FBSyxXQUFXLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QyxLQUFLLGNBQWMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pGLEtBQUssWUFBWSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN0RyxLQUFLLFdBQVcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNqRixLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0UsT0FBTyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLElBQUkseUJBQXlCLENBQUM7WUFDbkYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsSUFBSSxxQkFBcUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDO1lBQ2pHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLElBQUkscUJBQXFCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQztZQUNqRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLElBQUksb0JBQW9CLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDekYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLE9BQU87WUFDVCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxJQUFJLG9CQUFvQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ3pGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLElBQUksK0JBQStCLENBQUM7WUFDeEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLElBQUksOEJBQThCLENBQUM7WUFDdEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLElBQUksK0JBQStCLENBQUM7WUFDeEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssSUFBSSxxQ0FBcUMsQ0FBQztZQUM1RixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsSUFBSSw2QkFBNkIsSUFBSSxDQUFDLFVBQVUsbUJBQW1CLENBQUM7WUFDekgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSx3Q0FBd0MsQ0FBQztZQUM3RixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLDJCQUEyQixDQUFDO1lBQ2hGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQzt3R0FuT1UscUJBQXFCLGtCQXdFUSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDOzRGQXhFeEQscUJBQXFCLDhqQ0NUbEMseXBGQWlIQTs7NEZEeEdhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzswQkE0RVosUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO3lDQXZFMUQsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBZUksV0FBVztzQkFBcEIsTUFBTTtnQkFXRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9wdGlvbmFsLCBTZWxmLCBJbmplY3QsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuYS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJiZW5hLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVyYmVuYS1pbnB1dC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVyYmVuYUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGxhY2VIb2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdmdQb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHR5cGU6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnaW50ZWdlcicgfCAnbnVtYmVyJyB8ICdkZWNpbWFsJyB8ICdlbWFpbCcgfCAnZGF0ZScgfCAndGVsJyB8ICd1cmwnIHwgJ2ZpbGUnIHwgJ2NvbG9yJyB8ICdzZWFyY2gnID0gJ3RleHQnO1xuICBASW5wdXQoKSBiZ0NvbG9yOiBzdHJpbmcgPSAnI2Y5ZjlmOSc7XG4gIEBJbnB1dCgpIGJvcmRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czogc3RyaW5nID0gJzVweCc7XG4gIEBJbnB1dCgpIHRleHRDb2xvcjogc3RyaW5nID0gJyMzMzMnO1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246IHN0cmluZyA9ICdzdGFydCc7XG4gIEBJbnB1dCgpIGxhYmVsQ29sb3I6IHN0cmluZyA9ICdibGFjayc7XG4gIEBJbnB1dCgpIGRpc2FibGU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gRGlzYWJsZSBpbnB1dFxuICBASW5wdXQoKSByZWFkT25seTogYm9vbGVhbiA9IGZhbHNlOyAvLyBSZWFkLW9ubHkgaW5wdXRcbiAgQElucHV0KCkgbWluPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RXJyb3JNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlQ29sb3I6IHN0cmluZyA9ICdyZWQnO1xuICBASW5wdXQoKSBlcnJvckJvcmRlckNvbG9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyA9ICdib3R0b20nO1xuICBASW5wdXQoKSBzdmc6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBmb250U2l6ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHN2Z1dpZHRoOiBudW1iZXIgPSAyMDtcbiAgQElucHV0KCkgc3ZnSGVpZ2h0OiBudW1iZXIgPSAyMDtcbiAgQElucHV0KCkgc3ZnQ29sb3I6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjYXBpdGFsaXphdGlvbjogJ25vbmUnIHwgJ3VwcGVyY2FzZScgfCAnbG93ZXJjYXNlJyB8ICdzZW50ZW5jZWNhc2UnIHwgJ3Bhc2NhbGNhc2UnIHwgJ2NhbWVsY2FzZScgPSAnbm9uZSc7XG4gIEBJbnB1dCgpIGlucHV0Q29udGFpbmVyQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpbnB1dEZpZWxkQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwYXNzTGVuZ3RoOiBudW1iZXIgPSA4O1xuICBASW5wdXQoKSBpbnB1dFdyYXBwZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBhc3N3b3JkVG9nZ2xlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjdXN0b21FcnJvck1lc3NhZ2VzOiB7XG4gICAgcmVxdWlyZWQ/OiBzdHJpbmc7XG4gICAgbWluTGVuZ3RoPzogc3RyaW5nO1xuICAgIG1heExlbmd0aD86IHN0cmluZztcbiAgICBtaW5WYWx1ZT86IHN0cmluZztcbiAgICBtYXhWYWx1ZT86IHN0cmluZztcbiAgICBpbnRlZ2VyPzogc3RyaW5nO1xuICAgIG51bWJlcj86IHN0cmluZztcbiAgICBkZWNpbWFsPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICAgIHRlbD86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gIH0gPSB7fTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IEZpbGVMaXN0PigpO1xuXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpbnB1dElkOiBzdHJpbmcgPSAnJztcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcbiAgaXNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvLyBORVc6IFRyYWNrIGRpc2FibGVkIHN0YXRlIGZyb20gZm9ybSBjb250cm9sXG4gIC8vIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBpY29uOiBzdHJpbmcgPSAnZXllJztcbiAgQElucHV0KCkgdGV4dFBhc3M6IHN0cmluZyA9ICdTaG93JztcblxuXG4gIHRvZ2dsZUljb24oKTogdm9pZCB7XG4gICAgdGhpcy5pY29uID0gdGhpcy5pY29uID09PSAnZXllJyA/ICdleWUtY2xvc2VkJyA6ICdleWUnO1xuICAgIHRoaXMudGV4dFBhc3MgPSB0aGlzLnRleHRQYXNzID09PSAnU2hvdycgPyAnSGlkZScgOiAnU2hvdyc7XG4gICAgdGhpcy50eXBlID0gdGhpcy50eXBlID09PSAncGFzc3dvcmQnID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQ29udHJvbCkpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgID8gc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlucHV0SWQgPSBgdmVyYmVuYS1pbnB1dC0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdmaWxlJyAmJiB0YXJnZXQuZmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gdGFyZ2V0LmZpbGVzO1xuICAgICAgdGhpcy5vbkNoYW5nZShmaWxlcyk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZmlsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGFyZ2V0LnZhbHVlPy50cmltKCk7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5hcHBseUNhcGl0YWxpemF0aW9uKHRoaXMudmFsdWUsIHRoaXMuY2FwaXRhbGl6YXRpb24pO1xuICAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgY29uc3Qgc2FuaXRpemVkVmFsdWUgPSB0aGlzLnNhbml0aXplVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHNhbml0aXplZFZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChzYW5pdGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuICB9XG5cbiAgYXBwbHlDYXBpdGFsaXphdGlvbih2YWx1ZTogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiB2YWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYXNlICdzZW50ZW5jZWNhc2UnOiByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FzZSAncGFzY2FsY2FzZSc6IHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXHcrL2csICh3KSA9PiB3WzBdLnRvVXBwZXJDYXNlKCkgKyB3LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyg/Ol5cXHd8W0EtWl18XFxiXFx3fFxccyspL2csIChtYXRjaCwgaW5kZXgpID0+XG4gICAgICAgIGluZGV4ID09PSAwID8gbWF0Y2gudG9Mb3dlckNhc2UoKSA6IG1hdGNoLnRvVXBwZXJDYXNlKCkpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgICAgZGVmYXVsdDogcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHNhbml0aXplVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKFsnbnVtYmVyJywgJ2RlY2ltYWwnLCAnaW50ZWdlciddLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8sL2csICcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcblxuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5yZXF1aXJlZCB8fCAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1pbkxlbmd0aCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5taW5MZW5ndGggfHwgYE1pbmltdW0gbGVuZ3RoIGlzICR7dGhpcy5taW5MZW5ndGh9LmA7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHRoaXMudmFsdWUubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm1heExlbmd0aCB8fCBgTWF4aW11bSBsZW5ndGggaXMgJHt0aGlzLm1heExlbmd0aH0uYDtcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzYW5pdGl6ZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KHNhbml0aXplZFZhbHVlKTtcblxuICAgIGlmIChbJ2ludGVnZXInLCAnbnVtYmVyJywgJ2RlY2ltYWwnXS5pbmNsdWRlcyh0aGlzLnR5cGUpKSB7XG4gICAgICBpZiAodGhpcy5taW4gIT09IHVuZGVmaW5lZCAmJiBudW1lcmljVmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5taW5WYWx1ZSB8fCBgTWluaW11bSB2YWx1ZSBpcyAke3RoaXMubWlufS5gO1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXggIT09IHVuZGVmaW5lZCAmJiBudW1lcmljVmFsdWUgPiB0aGlzLm1heCkge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5tYXhWYWx1ZSB8fCBgTWF4aW11bSB2YWx1ZSBpcyAke3RoaXMubWF4fS5gO1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnaW50ZWdlcicgJiYgIS9eXFxkKyQvLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLmludGVnZXIgfHwgJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGludGVnZXIuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnbnVtYmVyJyAmJiAhL15cXGQrKFxcLlxcZCspPyQvLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm51bWJlciB8fCAnUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RlY2ltYWwnICYmICEvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMuZGVjaW1hbCB8fCAnUGxlYXNlIGVudGVyIGEgdmFsaWQgZGVjaW1hbC4nO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdlbWFpbCcgJiYgIS9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLmVtYWlsIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMucGFzc0xlbmd0aCkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMucGFzc3dvcmQgfHwgYFBhc3N3b3JkIG11c3QgYmUgYXQgbGVhc3QgJHt0aGlzLnBhc3NMZW5ndGh9IGNoYXJhY3RlcnMgbG9uZy5gO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy50eXBlID09PSAndGVsJyAmJiAhL15cXCs/WzEtOV1cXGR7MSwxNH0kLy50ZXN0KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy50ZWwgfHwgJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHRlbGVwaG9uZSBudW1iZXIuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndXJsJyAmJiAhL14oaHR0cHM/fGZ0cCk6XFwvXFwvW15cXHMvJC4/I10uW15cXHNdKiQvLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLnVybCB8fCAnUGxlYXNlIGVudGVyIGEgdmFsaWQgVVJMLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0ludmFsaWQgPSBmYWxzZTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/IHRoaXMuYXBwbHlDYXBpdGFsaXphdGlvbih2YWx1ZT8udHJpbSgpLCB0aGlzLmNhcGl0YWxpemF0aW9uKSA6ICcnO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgLy8gRklYRUQ6IFByb3Blcmx5IGltcGxlbWVudCBzZXREaXNhYmxlZFN0YXRlXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuZGlzYWJsZSA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuICB9XG59IiwiPGRpdlxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lciB7eyBpbnB1dENvbnRhaW5lckNsYXNzIH19XCJcbiAgW25nU3R5bGVdPVwie1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAnZmxleC1kaXJlY3Rpb24nOiAnY29sdW1uJ1xuICB9XCJcbj5cbiAgPGRpdlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBsYWJlbFBvc2l0aW9uLFxuICAgICAgY29sb3I6IGxhYmVsQ29sb3IsXG4gICAgICBwYWRkaW5nOiAnMCdcbiAgICB9XCJcbiAgICBjbGFzcz1cImlucHV0LWZpZWxkXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAnanVzdGlmeS1jb250ZW50JzogJ3NwYWNlLWJldHdlZW4nXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICAgIDwhLS0gaW5jYXNlIGkgbmVlZCBpdCBiYWNrICAtLT5cbiAgICAgIDwhLS0gPGRpdiAqbmdJZj1cIiBwYXNzd29yZFRvZ2dsZSA9PT0gdHJ1ZVwiIFtuZ1N0eWxlXT1cIntcblxuICAgICAgICAnZGlzcGxheSc6ICdmbGV4JyxcbiAgICAgICAgJ2FsaWduLWl0ZW0nOidjZW50ZXInLFxuICAgICAgICAnZ2FwJzonNHB4JyxcbiAgICAgICAgJ2NvbG9yJzonZ3JleScsXG4gICAgICAgICdjdXJzb3InOidwb2ludGVyJ1xuXG4gICAgICAgfVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlSWNvbigpXCJcbiAgICAgICA+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgIFtpY29uXT1cImljb25cIlxuICAgICAgICBbd2lkdGhdPVwiMjBcIlxuICAgICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICAgY29sb3I9XCJibGFja1wiXG4gICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgIDxwPnt7IHRleHRQYXNzIH19PC9wPlxuICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInBhc3N3b3JkVG9nZ2xlID09PSB0cnVlXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcblxuICAgICAgJ2Rpc3BsYXknOiAnZ3JpZCcsXG4gICAgICAnYWxpZ24taXRlbXMnOidjZW50ZXInLFxuICAgICAgJ2p1c3RpZnktY29udGVudCc6J2NlbnRlcicsXG4gICAgICAnZ2FwJzonNHB4JyxcbiAgICAgICdjb2xvcic6J2dyZXknLFxuICAgICAgJ2N1cnNvcic6J3BvaW50ZXInLFxuICAgICAgJ3Bvc2l0aW9uJzogJ2Fic29sdXRlJyxcbiAgICAgICdyaWdodCc6JzhweCcsXG4gICAgICAndG9wJzonMCcsXG4gICAgICAnYm90dG9tJzonMCcsXG5cbiAgICAgICdtYXJnaW4nOiAnYXV0bycsXG5cblxuICAgICB9XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVJY29uKClcIlxuICAgID5cbiAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgIFtpY29uXT1cImljb25cIlxuICAgICAgICBbd2lkdGhdPVwiMjBcIlxuICAgICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICAgY29sb3I9XCJibGFja1wiXG4gICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxpbnB1dFxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgZGlzYWJsZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIlxuICAgICAgICBbaWRdPVwibGFiZWxcIlxuICAgICAgICBbYXR0ci5taW5sZW5ndGhdPVwibWluTGVuZ3RoXCJcbiAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc0ludmFsaWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlzSW52YWxpZCA/IGxhYmVsICsgJy1lcnJvcicgOiBudWxsXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gIFxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGJnQ29sb3IsXG4gICAgICAgICdib3JkZXInOiBpc0ludmFsaWQgJiYgZXJyb3JCb3JkZXJDb2xvciA/ICcxcHggc29saWQgJyArIGVycm9yQm9yZGVyQ29sb3IgOiBib3JkZXIsXG4gICAgICAgICdib3JkZXItcmFkaXVzJzogYm9yZGVyUmFkaXVzLFxuICAgICAgICAnY29sb3InOiB0ZXh0Q29sb3IsXG4gICAgICAgICdmb250LXNpemUnOiBmb250U2l6ZSxcbiAgICAgIH1cIlxuICAgICAgW25nQ2xhc3NdPVwieyAnbmctaW52YWxpZCc6IGlzSW52YWxpZCB9XCJcbiAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgdmVyYmVuLWlucHV0IHt7IGlucHV0V3JhcHBlckNsYXNzIH19XCJcbiAgICAvPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJpc0ludmFsaWQgJiYgc2hvd0Vycm9yTWVzc2FnZVwiXG4gICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICBjb2xvcjogZXJyb3JNZXNzYWdlQ29sb3IsXG4gICAgICBwb3NpdGlvbjogZXJyb3JQb3NpdGlvblxuICAgIH1cIlxuICA+XG4gICAge3sgZXJyb3JNZXNzYWdlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyYmVuYS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi92ZXJiZW5hLWlucHV0L3ZlcmJlbmEtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvdmVyYmVuYS1pbnB1dC92ZXJiZW5hLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBUWpFLE1BQU0sT0FBTyxxQkFBcUI7SUF3RTZDO0lBdkVwRSxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFdBQVcsR0FBcUIsTUFBTSxDQUFDO0lBQ3ZDLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQVU7SUFDbkIsSUFBSSxHQUE0SCxNQUFNLENBQUM7SUFDdkksT0FBTyxHQUFXLFNBQVMsQ0FBQztJQUM1QixNQUFNLEdBQVcsRUFBRSxDQUFDO0lBQ3BCLFlBQVksR0FBVyxLQUFLLENBQUM7SUFDN0IsU0FBUyxHQUFXLE1BQU0sQ0FBQztJQUMzQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLGFBQWEsR0FBVyxPQUFPLENBQUM7SUFDaEMsVUFBVSxHQUFXLE9BQU8sQ0FBQztJQUM3QixPQUFPLEdBQVksS0FBSyxDQUFDLENBQUMsZ0JBQWdCO0lBQzFDLFFBQVEsR0FBWSxL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QkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBZUksV0FBVztzQkFBcEIsTUFBTTtnQkFXRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9wdGlvbmFsLCBTZWxmLCBJbmplY3QsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuYS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJiZW5hLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVyYmVuYS1pbnB1dC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVyYmVuYUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGxhY2VIb2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdmdQb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHR5cGU6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnaW50ZWdlcicgfCAnbnVtYmVyJyB8ICdkZWNpbWFsJyB8ICdlbWFpbCcgfCAnZGF0ZScgfCAndGVsJyB8ICd1cmwnIHwgJ2ZpbGUnIHwgJ2NvbG9yJyB8ICdzZWFyY2gnID0gJ3RleHQnO1xuICBASW5wdXQoKSBiZ0NvbG9yOiBzdHJpbmcgPSAnI2Y5ZjlmOSc7XG4gIEBJbnB1dCgpIGJvcmRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czogc3RyaW5nID0gJzVweCc7XG4gIEBJbnB1dCgpIHRleHRDb2xvcjogc3RyaW5nID0gJyMzMzMnO1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246IHN0cmluZyA9ICdzdGFydCc7XG4gIEBJbnB1dCgpIGxhYmVsQ29sb3I6IHN0cmluZyA9ICdibGFjayc7XG4gIEBJbnB1dCgpIGRpc2FibGU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gRGlzYWJsZSBpbnB1dFxuICBASW5wdXQoKSByZWFkT25seTogYm9vbGVhbiA9IGZhbHNlOyAvLyBSZWFkLW9ubHkgaW5wdXRcbiAgQElucHV0KCkgbWluPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RXJyb3JNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlQ29sb3I6IHN0cmluZyA9ICdyZWQnO1xuICBASW5wdXQoKSBlcnJvckJvcmRlckNvbG9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyA9ICdib3R0b20nO1xuICBASW5wdXQoKSBzdmc6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBmb250U2l6ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHN2Z1dpZHRoOiBudW1iZXIgPSAyMDtcbiAgQElucHV0KCkgc3ZnSGVpZ2h0OiBudW1iZXIgPSAyMDtcbiAgQElucHV0KCkgc3ZnQ29sb3I6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjYXBpdGFsaXphdGlvbjogJ25vbmUnIHwgJ3VwcGVyY2FzZScgfCAnbG93ZXJjYXNlJyB8ICdzZW50ZW5jZWNhc2UnIHwgJ3Bhc2NhbGNhc2UnIHwgJ2NhbWVsY2FzZScgPSAnbm9uZSc7XG4gIEBJbnB1dCgpIGlucHV0Q29udGFpbmVyQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpbnB1dEZpZWxkQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwYXNzTGVuZ3RoOiBudW1iZXIgPSA4O1xuICBASW5wdXQoKSBpbnB1dFdyYXBwZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBhc3N3b3JkVG9nZ2xlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjdXN0b21FcnJvck1lc3NhZ2VzOiB7XG4gICAgcmVxdWlyZWQ/OiBzdHJpbmc7XG4gICAgbWluTGVuZ3RoPzogc3RyaW5nO1xuICAgIG1heExlbmd0aD86IHN0cmluZztcbiAgICBtaW5WYWx1ZT86IHN0cmluZztcbiAgICBtYXhWYWx1ZT86IHN0cmluZztcbiAgICBpbnRlZ2VyPzogc3RyaW5nO1xuICAgIG51bWJlcj86IHN0cmluZztcbiAgICBkZWNpbWFsPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICAgIHRlbD86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gIH0gPSB7fTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IEZpbGVMaXN0PigpO1xuXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpbnB1dElkOiBzdHJpbmcgPSAnJztcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcbiAgaXNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvLyBORVc6IFRyYWNrIGRpc2FibGVkIHN0YXRlIGZyb20gZm9ybSBjb250cm9sXG4gIC8vIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBpY29uOiBzdHJpbmcgPSAnZXllJztcbiAgQElucHV0KCkgdGV4dFBhc3M6IHN0cmluZyA9ICdTaG93JztcblxuXG4gIHRvZ2dsZUljb24oKTogdm9pZCB7XG4gICAgdGhpcy5pY29uID0gdGhpcy5pY29uID09PSAnZXllJyA/ICdleWUtY2xvc2VkJyA6ICdleWUnO1xuICAgIHRoaXMudGV4dFBhc3MgPSB0aGlzLnRleHRQYXNzID09PSAnU2hvdycgPyAnSGlkZScgOiAnU2hvdyc7XG4gICAgdGhpcy50eXBlID0gdGhpcy50eXBlID09PSAncGFzc3dvcmQnID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQ29udHJvbCkpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgID8gc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlucHV0SWQgPSBgdmVyYmVuYS1pbnB1dC0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdmaWxlJyAmJiB0YXJnZXQuZmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gdGFyZ2V0LmZpbGVzO1xuICAgICAgdGhpcy5vbkNoYW5nZShmaWxlcyk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZmlsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGFyZ2V0LnZhbHVlPy50cmltKCk7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5hcHBseUNhcGl0YWxpemF0aW9uKHRoaXMudmFsdWUsIHRoaXMuY2FwaXRhbGl6YXRpb24pO1xuICAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgY29uc3Qgc2FuaXRpemVkVmFsdWUgPSB0aGlzLnNhbml0aXplVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHNhbml0aXplZFZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChzYW5pdGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuICB9XG5cbiAgYXBwbHlDYXBpdGFsaXphdGlvbih2YWx1ZTogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiB2YWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYXNlICdzZW50ZW5jZWNhc2UnOiByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FzZSAncGFzY2FsY2FzZSc6IHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXHcrL2csICh3KSA9PiB3WzBdLnRvVXBwZXJDYXNlKCkgKyB3LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyg/Ol5cXHd8W0EtWl18XFxiXFx3fFxccyspL2csIChtYXRjaCwgaW5kZXgpID0+XG4gICAgICAgIGluZGV4ID09PSAwID8gbWF0Y2gudG9Mb3dlckNhc2UoKSA6IG1hdGNoLnRvVXBwZXJDYXNlKCkpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgICAgZGVmYXVsdDogcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHNhbml0aXplVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKFsnbnVtYmVyJywgJ2RlY2ltYWwnLCAnaW50ZWdlciddLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8sL2csICcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcblxuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5yZXF1aXJlZCB8fCAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1pbkxlbmd0aCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5taW5MZW5ndGggfHwgYE1pbmltdW0gbGVuZ3RoIGlzICR7dGhpcy5taW5MZW5ndGh9LmA7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHRoaXMudmFsdWUubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm1heExlbmd0aCB8fCBgTWF4aW11bSBsZW5ndGggaXMgJHt0aGlzLm1heExlbmd0aH0uYDtcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzYW5pdGl6ZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KHNhbml0aXplZFZhbHVlKTtcblxuICAgIGlmIChbJ2ludGVnZXInLCAnbnVtYmVyJywgJ2RlY2ltYWwnXS5pbmNsdWRlcyh0aGlzLnR5cGUpKSB7XG4gICAgICBpZiAodGhpcy5taW4gIT09IHVuZGVmaW5lZCAmJiBudW1lcmljVmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5taW5WYWx1ZSB8fCBgTWluaW11bSB2YWx1ZSBpcyAke3RoaXMubWlufS5gO1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXggIT09IHVuZGVmaW5lZCAmJiBudW1lcmljVmFsdWUgPiB0aGlzLm1heCkge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5tYXhWYWx1ZSB8fCBgTWF4aW11bSB2YWx1ZSBpcyAke3RoaXMubWF4fS5gO1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnaW50ZWdlcicgJiYgIS9eXFxkKyQvLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLmludGVnZXIgfHwgJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGludGVnZXIuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnbnVtYmVyJyAmJiAhL15cXGQrKFxcLlxcZCspPyQvLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm51bWJlciB8fCAnUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RlY2ltYWwnICYmICEvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMuZGVjaW1hbCB8fCAnUGxlYXNlIGVudGVyIGEgdmFsaWQgZGVjaW1hbC4nO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdlbWFpbCcgJiYgIS9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLmVtYWlsIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMucGFzc0xlbmd0aCkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMucGFzc3dvcmQgfHwgYFBhc3N3b3JkIG11c3QgYmUgYXQgbGVhc3QgJHt0aGlzLnBhc3NMZW5ndGh9IGNoYXJhY3RlcnMgbG9uZy5gO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy50eXBlID09PSAndGVsJyAmJiAhL15cXCs/WzEtOV1cXGR7MSwxNH0kLy50ZXN0KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy50ZWwgfHwgJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHRlbGVwaG9uZSBudW1iZXIuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndXJsJyAmJiAhL14oaHR0cHM/fGZ0cCk6XFwvXFwvW15cXHMvJC4/I10uW15cXHNdKiQvLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLnVybCB8fCAnUGxlYXNlIGVudGVyIGEgdmFsaWQgVVJMLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0ludmFsaWQgPSBmYWxzZTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/IHRoaXMuYXBwbHlDYXBpdGFsaXphdGlvbih2YWx1ZT8udHJpbSgpLCB0aGlzLmNhcGl0YWxpemF0aW9uKSA6ICcnO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgLy8gRklYRUQ6IFByb3Blcmx5IGltcGxlbWVudCBzZXREaXNhYmxlZFN0YXRlXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuZGlzYWJsZSA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuICB9XG59IiwiPGRpdlxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lciB7eyBpbnB1dENvbnRhaW5lckNsYXNzIH19XCJcbiAgW25nU3R5bGVdPVwie1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAnZmxleC1kaXJlY3Rpb24nOiAnY29sdW1uJ1xuICB9XCJcbj5cbiAgPGRpdlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBsYWJlbFBvc2l0aW9uLFxuICAgICAgY29sb3I6IGxhYmVsQ29sb3IsXG4gICAgICBwYWRkaW5nOiAnMCdcbiAgICB9XCJcbiAgICBjbGFzcz1cImlucHV0LWZpZWxkXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAnanVzdGlmeS1jb250ZW50JzogJ3NwYWNlLWJldHdlZW4nXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICAgIDwhLS0gaW5jYXNlIGkgbmVlZCBpdCBiYWNrICAtLT5cbiAgICAgIDwhLS0gPGRpdiAqbmdJZj1cIiBwYXNzd29yZFRvZ2dsZSA9PT0gdHJ1ZVwiIFtuZ1N0eWxlXT1cIntcblxuICAgICAgICAnZGlzcGxheSc6ICdmbGV4JyxcbiAgICAgICAgJ2FsaWduLWl0ZW0nOidjZW50ZXInLFxuICAgICAgICAnZ2FwJzonNHB4JyxcbiAgICAgICAgJ2NvbG9yJzonZ3JleScsXG4gICAgICAgICdjdXJzb3InOidwb2ludGVyJ1xuXG4gICAgICAgfVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlSWNvbigpXCJcbiAgICAgICA+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgIFtpY29uXT1cImljb25cIlxuICAgICAgICBbd2lkdGhdPVwiMjBcIlxuICAgICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICAgY29sb3I9XCJibGFja1wiXG4gICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgIDxwPnt7IHRleHRQYXNzIH19PC9wPlxuICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIiBbbmdTdHlsZV09XCJ7IHBvc2l0aW9uOiAncmVsYXRpdmUnLCBvdmVyZmxvdzogJ2hpZGRlbicgfVwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwicGFzc3dvcmRUb2dnbGUgPT09IHRydWVcIlxuICAgICAgW25nU3R5bGVdPVwie1xuXG4gICAgICAnZGlzcGxheSc6ICdncmlkJyxcbiAgICAgICdhbGlnbi1pdGVtcyc6J2NlbnRlcicsXG4gICAgICAnanVzdGlmeS1jb250ZW50JzonY2VudGVyJyxcbiAgICAgICdnYXAnOic0cHgnLFxuICAgICAgJ2NvbG9yJzonZ3JleScsXG4gICAgICAnY3Vyc29yJzoncG9pbnRlcicsXG4gICAgICAncG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICAgICAgJ3JpZ2h0JzonMHB4JyxcbiAgICAgICd0b3AnOicwJyxcbiAgICAgICdib3R0b20nOicwJyxcbiAgICAgICdiYWNrZ3JvdW5kJzogYmdDb2xvcixcbiAgICAgICd6LWluZGV4JzogJzEnLFxuICAgICAgJ21hcmdpbic6ICcxcHgnLFxuICAgICAgJ3BhZGRpbmcnOiAnMCA4cHgnLFxuICAgICAgJ2JvcmRlci1yYWRpdXMnOiBib3JkZXJSYWRpdXMsXG5cblxuXG4gICAgIH1cIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUljb24oKVwiXG4gICAgPlxuICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgW2ljb25dPVwiaWNvblwiXG4gICAgICAgIFt3aWR0aF09XCIyMFwiXG4gICAgICAgIFtoZWlnaHRdPVwiMjBcIlxuICAgICAgICBjb2xvcj1cImJsYWNrXCJcbiAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgPC9kaXY+XG4gICAgPGlucHV0XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBkaXNhYmxlXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiXG4gICAgICAgIFtpZF09XCJsYWJlbFwiXG4gICAgICAgIFthdHRyLm1pbmxlbmd0aF09XCJtaW5MZW5ndGhcIlxuICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzSW52YWxpZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaXNJbnZhbGlkID8gbGFiZWwgKyAnLWVycm9yJyA6IG51bGxcIlxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogYmdDb2xvcixcbiAgICAgICAgJ2JvcmRlcic6IGlzSW52YWxpZCAmJiBlcnJvckJvcmRlckNvbG9yID8gJzFweCBzb2xpZCAnICsgZXJyb3JCb3JkZXJDb2xvciA6IGJvcmRlcixcbiAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiBib3JkZXJSYWRpdXMsXG4gICAgICAgICdjb2xvcic6IHRleHRDb2xvcixcbiAgICAgICAgJ2ZvbnQtc2l6ZSc6IGZvbnRTaXplLFxuICAgICAgfVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICduZy1pbnZhbGlkJzogaXNJbnZhbGlkIH1cIlxuICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCB2ZXJiZW4taW5wdXQge3sgaW5wdXRXcmFwcGVyQ2xhc3MgfX1cIlxuICAgIC8+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cImlzSW52YWxpZCAmJiBzaG93RXJyb3JNZXNzYWdlXCJcbiAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGNvbG9yOiBlcnJvck1lc3NhZ2VDb2xvcixcbiAgICAgIHBvc2l0aW9uOiBlcnJvclBvc2l0aW9uXG4gICAgfVwiXG4gID5cbiAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -84,14 +84,11 @@ class DataImportService {
84
84
  // });
85
85
  // console.time('Begin');
86
86
  let imported = [];
87
- const wb = read(event.target.result, { raw: true });
87
+ const wb = read(event.target.result, { cellDates: true });
88
88
  const sheets = wb.SheetNames;
89
89
  if (sheets.length) {
90
90
  const rows = utils.sheet_to_json(wb.Sheets[sheets[0]], {
91
- raw: false,
92
- // defval: '',
93
- // rawNumbers: true,
94
- // dateNF: 'dd/mm/yyyy',
91
+ defval: null,
95
92
  });
96
93
  imported = this.transformImportData(rows, columnDefinitions);
97
94
  // console.log('TRANSFORMED', imported);
@@ -1 +1 @@
1
- {"version":3,"file":"verben-ng-ui-src-lib-components-data-import.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.html","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { ColumnDefinition } from 'verben-ng-ui/src/lib/components/data-table';\nimport { read, utils, writeFile } from 'xlsx';\n\n@Injectable()\nexport class DataImportService<T> {\n importedData: WritableSignal<T[]> = signal([]);\n\n constructor() { }\n\n // Function to transform imported data to match your model structure\n transformImportData<T>(\n importedData: Record<string, any>[],\n columnDefinitions: ColumnDefinition<T>[]\n ): Partial<T>[] {\n // Create mappings from header to importKey and importBy\n const headerToImportKeyMap = new Map<string, keyof T>();\n const headerToImportByMap = new Map<\n string,\n keyof T | ((importedRow: any) => T[keyof T])\n >();\n\n // Filter column definitions to only those with importKey or importBy and populate the maps\n columnDefinitions\n .filter((col) => col.importKey || col.importBy)\n .forEach((col) => {\n const header =\n typeof col.header === 'string'\n ? col.header\n : col.header({}).toString();\n\n if (col.importKey) {\n headerToImportKeyMap.set(header, col.importKey as keyof T);\n }\n\n if (col.importBy) {\n headerToImportByMap.set(header, col.importBy);\n }\n });\n\n // Transform each row in the imported data\n return importedData.map((row) => {\n const transformedRow: Partial<T> = {};\n\n // Process each key in the row\n Object.entries(row).forEach(([key, value]) => {\n // Check if there's an importBy transformation first (takes priority)\n const importBy = headerToImportByMap.get(key);\n\n if (importBy) {\n if (typeof importBy === 'function') {\n // Use the importBy function to transform the entire imported row\n const importKey = headerToImportKeyMap.get(key);\n if (importKey) {\n transformedRow[importKey] = importBy(row);\n }\n } else {\n // importBy is a direct key reference\n transformedRow[importBy] = value;\n }\n } else {\n // Fall back to importKey if no importBy is defined\n const importKey = headerToImportKeyMap.get(key);\n if (importKey) {\n transformedRow[importKey] = value;\n }\n }\n });\n\n return transformedRow;\n });\n }\n\n handleImport(\n file: File,\n // previewer?: (data: any[]) => void,\n columnDefinitions: ColumnDefinition<T>[],\n parseImport?: (data: any) => Partial<T>[]\n ) {\n const reader = new FileReader();\n reader.onload = (event: any) => {\n // const wb = read(event.target.result, {\n // type: 'string',\n // raw: true,\n // cellText: true,\n // cellFormula: false,\n // cellNF: false,\n // });\n // console.time('Begin');\n let imported: any[] = [];\n const wb = read(event.target.result, { raw: true });\n const sheets = wb.SheetNames;\n if (sheets.length) {\n const rows = utils.sheet_to_json(wb.Sheets[sheets[0]], {\n raw: false,\n // defval: '',\n // rawNumbers: true,\n // dateNF: 'dd/mm/yyyy',\n }) as Record<string, any>[];\n\n imported = this.transformImportData(rows, columnDefinitions) as T[];\n // console.log('TRANSFORMED', imported);\n\n if (parseImport) {\n imported = parseImport(imported);\n // console.log('PARSED', imported);\n }\n // previewer(imported);\n }\n // console.log('Imported data:', JSON.stringify(imported, null, 2));\n // console.time('Start Process');\n this.importedData.set(imported);\n // console.timeEnd('Begin');\n return imported;\n };\n return reader.readAsArrayBuffer(file);\n }\n\n handleTemplateExport(fields: string[], title: string) {\n console.log(fields);\n const wb = utils.book_new();\n const ws: any = utils.json_to_sheet([]);\n utils.sheet_add_aoa(ws, [fields]);\n // utils.sheet_add_json(ws, this._data, { origin: 'A2', skipHeader: true });\n utils.book_append_sheet(wb, ws, title);\n writeFile(wb, title + '-template.' + 'xlsx');\n }\n\n addRow(event: { index: number; key: string | number; data: Partial<T> }) {\n // console.log(event);\n this.importedData.update((dat) => {\n // dat[event.index] = { ...dat[event.index], ...event.data };\n return dat.map((d, i) => {\n if (i === event.index) {\n return { ...d, ...event.data };\n }\n return d;\n });\n });\n // console.log(this.importedData());\n }\n\n isDuplicate(datum: Partial<T>, array: Partial<T>[], identifiers: string[]) {\n return (\n array.filter(\n (dat) =>\n identifiers.length > 0 &&\n identifiers.every(\n (identifier) =>\n datum[identifier as keyof T] &&\n datum[identifier as keyof T] === dat[identifier as keyof T]\n )\n ).length > 1\n );\n }\n\n clearData() {\n this.importedData.set([]);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormGroup\n} from '@angular/forms';\nimport {\n ColumnDefinition,\n ColumnDirective,\n FormGroupConfig,\n} from 'verben-ng-ui/src/lib/components/data-table';\nimport { DataImportService } from './data-import.service';\n\n@Component({\n selector: 'lib-data-import',\n templateUrl: './data-import.component.html',\n styleUrl: './data-import.component.css',\n providers: [DataImportService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataImportComponent<T extends {}> {\n previewColumns = input.required<ColumnDefinition<T>[]>();\n formGroupConfig = input<\n FormGroupConfig<{\n [K in keyof T]: AbstractControl;\n }>\n >();\n /**\n * @deprecated Use importKey of previewColumns instead\n */\n fields = input<string[]>();\n title = input<string>('export-template');\n columnTemplates = input<readonly ColumnDirective[]>([]);\n parser = input<(data: any) => Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n previewData = input<T[]>();\n /**\n * Pass the method to use the imported data,\n * and eventually returns true if successfully used\n */\n onImportComplete = input<(data: Partial<T>[]) => Promise<boolean>>();\n /**\n * @deprecated Please remove, now handled internally\n */\n exportTemplateEvent = output<string[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n importEvent = output<File>();\n /**\n * @deprecated Use the onImportComplete input instead\n */\n importEventData = output<Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n rowSave = output<{\n index: number;\n key: number | string;\n data: Partial<T>;\n }>();\n\n // data: Signal<(T & { isDuplicate: boolean })[]>;\n previewColumnsList: Signal<ColumnDefinition<T>[]>;\n forms = new FormArray<FormGroup>([]);\n uniqueIdentifiers: WritableSignal<string[]> = signal([]);\n // duplicateDataMap: Map<string, number> = new Map();\n duplicateIndexSet = new Set<number>();\n invalidIndexSet = new Map<number, ColumnDirective['columnId'][]>();\n\n headers: Signal<string[]>;\n\n private _ext: 'xlsx' | 'xls' | 'csv' = 'xlsx';\n\n files: File[] = [];\n isDragging = false;\n showPreview = false;\n\n constructor(public service: DataImportService<T>) {\n effect(() => {\n // const columns = this.previewColumnsList();\n\n const identifiers = this.uniqueIdentifiers();\n\n this.service.importedData()?.forEach((d, i, arr) => {\n if (service.isDuplicate(d, arr, identifiers)) {\n this.duplicateIndexSet.add(i);\n }\n\n // columns\n // .filter(({ validatorFn }) => validatorFn !== undefined)\n // .forEach((column) => {\n // const invalidFields = Object.entries(d).reduce<string[]>(\n // (f, [k, v], i) => {\n // if (\n // column.validatorFn &&\n // !column.validatorFn(v as T[keyof T])\n // ) {\n // f.push(column.id);\n // }\n // return f;\n // },\n // []\n // );\n\n // if (invalidFields.length > 0) {\n // this.invalidIndexSet.set(i, invalidFields);\n // }\n // });\n });\n });\n\n this.previewColumnsList = computed(() => {\n return this.previewColumns()\n .filter((col) => col.importKey || col.importBy || col.formControlName)\n .map((column) => {\n const matchingTemplate = this.columnTemplates().find(\n (t) => t.columnId === column.id\n );\n if (matchingTemplate) {\n return {\n ...column,\n // accessorKey: column.importKey,\n cellTemplate: matchingTemplate.cellTemplate,\n cellEditTemplate: matchingTemplate.cellEditTemplate,\n headerTemplate: matchingTemplate.headerTemplate,\n footerTemplate: matchingTemplate.footerTemplate,\n };\n }\n return column;\n })\n .concat([\n {\n id: 'actions',\n header: 'Actions',\n },\n ]);\n });\n\n this.headers = computed(() => {\n return (\n this.fields() ??\n this.previewColumnsList()\n .filter((col) => col.importKey || col.importBy)\n .map((col) => col.header.toString())\n );\n });\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n this.isDragging = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n this.files = Array.from(event.dataTransfer!.files);\n\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n onFileSelected(event: any) {\n this.files = Array.from(event.target.files);\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n\n event.target.value = '';\n\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n reset() {\n this.files = [];\n this.showPreview = false;\n this.service.clearData();\n }\n\n save() {\n // console.log('PREVDATA', this.service.importedData());\n const onComplete = this.onImportComplete();\n if (onComplete) {\n onComplete(this.service.importedData()).then((success) => {\n if (success) {\n this.showPreview = false;\n }\n });\n } else {\n this.importEventData.emit(this.service.importedData() || []);\n this.showPreview = false;\n }\n }\n\n getControlNames() {\n const controls = this.formGroupConfig()?.controls;\n if (controls) {\n return Object.keys(controls);\n }\n return [];\n }\n\n handleTemplateExport() {\n this.service.handleTemplateExport(this.headers(), this.title());\n // this.exportTemplateEvent.emit(this.headers());\n }\n\n // getFormControl(index: number, field: string) {\n // const control = this..get(index)?.get(field) as FormControl<any>;\n // console.log(control);\n // return control;\n // }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Import</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <div class=\"flex gap-4 justify-between\">\n <button class=\"export-button\" (click)=\"handleTemplateExport()\">\n Download Template\n </button>\n <label for=\"fileInput\" class=\"export-button\">Upload File</label>\n </div>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div\n class=\"drop-area\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <p>\n Drag and drop files here or\n <label for=\"fileInput\" [style.color]=\"'#3479E9'\"\n >click to browse</label\n >\n </p>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\n multiple\n />\n </div>\n <div *ngIf=\"files.length > 0\">\n <h3>Uploaded Files:</h3>\n <ul>\n <li *ngFor=\"let file of files\">{{ file.name }}</li>\n </ul>\n </div>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button\n [disabled]=\"service.importedData().length < 1\"\n class=\"export-button\"\n (click)=\"save()\"\n >\n Import\n </button>\n </div>\n</verben-card>\n\n<!-- Modal Component -->\n<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'large'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'my-modal-custom-class'\"\n [disableFooter]=\"false\"\n [modalData]=\"[{ data: {} }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n dialogueWidth=\"85%\"\n>\n <a download=\"\"></a>\n</verben-dialogue>\n\n<!-- Define templates -->\n<ng-template #headerTemplate>\n <h2>Upload Preview</h2>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"flex gap-4 items-center justify-between my-4\">\n <p class=\"\">Total Items: {{ service.importedData().length }}</p>\n\n <p class=\"\">Duplicates: {{ duplicateIndexSet.size }}</p>\n\n <p class=\"\">Invalid Items: {{ invalidIndexSet.size }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"headers()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <div style=\"max-height: min(75vh, 780px); overflow: auto\">\n <lib-data-table\n [data]=\"service.importedData()\"\n [columns]=\"previewColumnsList()\"\n [formGroupConfig]=\"formGroupConfig()\"\n [useVirtualScroll]=\"true\"\n (rowSave)=\"service.addRow($event)\"\n >\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"footer-buttons flex gap-4 items-center justify-between my-4\">\n <button\n class=\"btn btn-secondary cancel-button\"\n (click)=\"showPreview = false\"\n >\n Cancel\n </button>\n <button class=\"btn btn-primary export-button\" (click)=\"save()\">\n Complete\n </button>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataImportComponent } from './data-import.component';\nimport { CardModule } from 'verben-ng-ui/src/lib/components/card';\nimport { VerbenDialogueModule } from 'verben-ng-ui/src/lib/components/verben-dialogue';\nimport { DataTableModule } from 'verben-ng-ui/src/lib/components/data-table';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\n\n@NgModule({\n declarations: [DataImportComponent],\n imports: [\n CommonModule,\n CardModule,\n VerbenDialogueModule,\n DataTableModule,\n VerbenaInputModule,\n DropDownModule,\n ReactiveFormsModule,\n FormsModule,\n SvgModule,\n ],\n exports: [DataImportComponent],\n})\nexport class DataImportModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DataImportService"],"mappings":"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"}
1
+ {"version":3,"file":"verben-ng-ui-src-lib-components-data-import.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.html","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { ColumnDefinition } from 'verben-ng-ui/src/lib/components/data-table';\nimport { read, utils, writeFile } from 'xlsx';\n\n@Injectable()\nexport class DataImportService<T> {\n importedData: WritableSignal<T[]> = signal([]);\n\n constructor() { }\n\n // Function to transform imported data to match your model structure\n transformImportData<T>(\n importedData: Record<string, any>[],\n columnDefinitions: ColumnDefinition<T>[]\n ): Partial<T>[] {\n // Create mappings from header to importKey and importBy\n const headerToImportKeyMap = new Map<string, keyof T>();\n const headerToImportByMap = new Map<\n string,\n keyof T | ((importedRow: any) => T[keyof T])\n >();\n\n // Filter column definitions to only those with importKey or importBy and populate the maps\n columnDefinitions\n .filter((col) => col.importKey || col.importBy)\n .forEach((col) => {\n const header =\n typeof col.header === 'string'\n ? col.header\n : col.header({}).toString();\n\n if (col.importKey) {\n headerToImportKeyMap.set(header, col.importKey as keyof T);\n }\n\n if (col.importBy) {\n headerToImportByMap.set(header, col.importBy);\n }\n });\n\n // Transform each row in the imported data\n return importedData.map((row) => {\n const transformedRow: Partial<T> = {};\n\n // Process each key in the row\n Object.entries(row).forEach(([key, value]) => {\n // Check if there's an importBy transformation first (takes priority)\n const importBy = headerToImportByMap.get(key);\n\n if (importBy) {\n if (typeof importBy === 'function') {\n // Use the importBy function to transform the entire imported row\n const importKey = headerToImportKeyMap.get(key);\n if (importKey) {\n transformedRow[importKey] = importBy(row);\n }\n } else {\n // importBy is a direct key reference\n transformedRow[importBy] = value;\n }\n } else {\n // Fall back to importKey if no importBy is defined\n const importKey = headerToImportKeyMap.get(key);\n if (importKey) {\n transformedRow[importKey] = value;\n }\n }\n });\n\n return transformedRow;\n });\n }\n\n handleImport(\n file: File,\n // previewer?: (data: any[]) => void,\n columnDefinitions: ColumnDefinition<T>[],\n parseImport?: (data: any) => Partial<T>[]\n ) {\n const reader = new FileReader();\n reader.onload = (event: any) => {\n // const wb = read(event.target.result, {\n // type: 'string',\n // raw: true,\n // cellText: true,\n // cellFormula: false,\n // cellNF: false,\n // });\n // console.time('Begin');\n let imported: any[] = [];\n const wb = read(event.target.result, { cellDates: true });\n const sheets = wb.SheetNames;\n if (sheets.length) {\n const rows = utils.sheet_to_json(wb.Sheets[sheets[0]], {\n defval: null,\n }) as Record<string, any>[];\n\n imported = this.transformImportData(rows, columnDefinitions) as T[];\n // console.log('TRANSFORMED', imported);\n\n if (parseImport) {\n imported = parseImport(imported);\n // console.log('PARSED', imported);\n }\n // previewer(imported);\n }\n // console.log('Imported data:', JSON.stringify(imported, null, 2));\n // console.time('Start Process');\n this.importedData.set(imported);\n // console.timeEnd('Begin');\n return imported;\n };\n return reader.readAsArrayBuffer(file);\n }\n\n handleTemplateExport(fields: string[], title: string) {\n console.log(fields);\n const wb = utils.book_new();\n const ws: any = utils.json_to_sheet([]);\n utils.sheet_add_aoa(ws, [fields]);\n // utils.sheet_add_json(ws, this._data, { origin: 'A2', skipHeader: true });\n utils.book_append_sheet(wb, ws, title);\n writeFile(wb, title + '-template.' + 'xlsx');\n }\n\n addRow(event: { index: number; key: string | number; data: Partial<T> }) {\n // console.log(event);\n this.importedData.update((dat) => {\n // dat[event.index] = { ...dat[event.index], ...event.data };\n return dat.map((d, i) => {\n if (i === event.index) {\n return { ...d, ...event.data };\n }\n return d;\n });\n });\n // console.log(this.importedData());\n }\n\n isDuplicate(datum: Partial<T>, array: Partial<T>[], identifiers: string[]) {\n return (\n array.filter(\n (dat) =>\n identifiers.length > 0 &&\n identifiers.every(\n (identifier) =>\n datum[identifier as keyof T] &&\n datum[identifier as keyof T] === dat[identifier as keyof T]\n )\n ).length > 1\n );\n }\n\n clearData() {\n this.importedData.set([]);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormGroup\n} from '@angular/forms';\nimport {\n ColumnDefinition,\n ColumnDirective,\n FormGroupConfig,\n} from 'verben-ng-ui/src/lib/components/data-table';\nimport { DataImportService } from './data-import.service';\n\n@Component({\n selector: 'lib-data-import',\n templateUrl: './data-import.component.html',\n styleUrl: './data-import.component.css',\n providers: [DataImportService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataImportComponent<T extends {}> {\n previewColumns = input.required<ColumnDefinition<T>[]>();\n formGroupConfig = input<\n FormGroupConfig<{\n [K in keyof T]: AbstractControl;\n }>\n >();\n /**\n * @deprecated Use importKey of previewColumns instead\n */\n fields = input<string[]>();\n title = input<string>('export-template');\n columnTemplates = input<readonly ColumnDirective[]>([]);\n parser = input<(data: any) => Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n previewData = input<T[]>();\n /**\n * Pass the method to use the imported data,\n * and eventually returns true if successfully used\n */\n onImportComplete = input<(data: Partial<T>[]) => Promise<boolean>>();\n /**\n * @deprecated Please remove, now handled internally\n */\n exportTemplateEvent = output<string[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n importEvent = output<File>();\n /**\n * @deprecated Use the onImportComplete input instead\n */\n importEventData = output<Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n rowSave = output<{\n index: number;\n key: number | string;\n data: Partial<T>;\n }>();\n\n // data: Signal<(T & { isDuplicate: boolean })[]>;\n previewColumnsList: Signal<ColumnDefinition<T>[]>;\n forms = new FormArray<FormGroup>([]);\n uniqueIdentifiers: WritableSignal<string[]> = signal([]);\n // duplicateDataMap: Map<string, number> = new Map();\n duplicateIndexSet = new Set<number>();\n invalidIndexSet = new Map<number, ColumnDirective['columnId'][]>();\n\n headers: Signal<string[]>;\n\n private _ext: 'xlsx' | 'xls' | 'csv' = 'xlsx';\n\n files: File[] = [];\n isDragging = false;\n showPreview = false;\n\n constructor(public service: DataImportService<T>) {\n effect(() => {\n // const columns = this.previewColumnsList();\n\n const identifiers = this.uniqueIdentifiers();\n\n this.service.importedData()?.forEach((d, i, arr) => {\n if (service.isDuplicate(d, arr, identifiers)) {\n this.duplicateIndexSet.add(i);\n }\n\n // columns\n // .filter(({ validatorFn }) => validatorFn !== undefined)\n // .forEach((column) => {\n // const invalidFields = Object.entries(d).reduce<string[]>(\n // (f, [k, v], i) => {\n // if (\n // column.validatorFn &&\n // !column.validatorFn(v as T[keyof T])\n // ) {\n // f.push(column.id);\n // }\n // return f;\n // },\n // []\n // );\n\n // if (invalidFields.length > 0) {\n // this.invalidIndexSet.set(i, invalidFields);\n // }\n // });\n });\n });\n\n this.previewColumnsList = computed(() => {\n return this.previewColumns()\n .filter((col) => col.importKey || col.importBy || col.formControlName)\n .map((column) => {\n const matchingTemplate = this.columnTemplates().find(\n (t) => t.columnId === column.id\n );\n if (matchingTemplate) {\n return {\n ...column,\n // accessorKey: column.importKey,\n cellTemplate: matchingTemplate.cellTemplate,\n cellEditTemplate: matchingTemplate.cellEditTemplate,\n headerTemplate: matchingTemplate.headerTemplate,\n footerTemplate: matchingTemplate.footerTemplate,\n };\n }\n return column;\n })\n .concat([\n {\n id: 'actions',\n header: 'Actions',\n },\n ]);\n });\n\n this.headers = computed(() => {\n return (\n this.fields() ??\n this.previewColumnsList()\n .filter((col) => col.importKey || col.importBy)\n .map((col) => col.header.toString())\n );\n });\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n this.isDragging = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n this.files = Array.from(event.dataTransfer!.files);\n\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n onFileSelected(event: any) {\n this.files = Array.from(event.target.files);\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n\n event.target.value = '';\n\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n reset() {\n this.files = [];\n this.showPreview = false;\n this.service.clearData();\n }\n\n save() {\n // console.log('PREVDATA', this.service.importedData());\n const onComplete = this.onImportComplete();\n if (onComplete) {\n onComplete(this.service.importedData()).then((success) => {\n if (success) {\n this.showPreview = false;\n }\n });\n } else {\n this.importEventData.emit(this.service.importedData() || []);\n this.showPreview = false;\n }\n }\n\n getControlNames() {\n const controls = this.formGroupConfig()?.controls;\n if (controls) {\n return Object.keys(controls);\n }\n return [];\n }\n\n handleTemplateExport() {\n this.service.handleTemplateExport(this.headers(), this.title());\n // this.exportTemplateEvent.emit(this.headers());\n }\n\n // getFormControl(index: number, field: string) {\n // const control = this..get(index)?.get(field) as FormControl<any>;\n // console.log(control);\n // return control;\n // }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Import</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <div class=\"flex gap-4 justify-between\">\n <button class=\"export-button\" (click)=\"handleTemplateExport()\">\n Download Template\n </button>\n <label for=\"fileInput\" class=\"export-button\">Upload File</label>\n </div>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div\n class=\"drop-area\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <p>\n Drag and drop files here or\n <label for=\"fileInput\" [style.color]=\"'#3479E9'\"\n >click to browse</label\n >\n </p>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\n multiple\n />\n </div>\n <div *ngIf=\"files.length > 0\">\n <h3>Uploaded Files:</h3>\n <ul>\n <li *ngFor=\"let file of files\">{{ file.name }}</li>\n </ul>\n </div>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button\n [disabled]=\"service.importedData().length < 1\"\n class=\"export-button\"\n (click)=\"save()\"\n >\n Import\n </button>\n </div>\n</verben-card>\n\n<!-- Modal Component -->\n<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'large'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'my-modal-custom-class'\"\n [disableFooter]=\"false\"\n [modalData]=\"[{ data: {} }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n dialogueWidth=\"85%\"\n>\n <a download=\"\"></a>\n</verben-dialogue>\n\n<!-- Define templates -->\n<ng-template #headerTemplate>\n <h2>Upload Preview</h2>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"flex gap-4 items-center justify-between my-4\">\n <p class=\"\">Total Items: {{ service.importedData().length }}</p>\n\n <p class=\"\">Duplicates: {{ duplicateIndexSet.size }}</p>\n\n <p class=\"\">Invalid Items: {{ invalidIndexSet.size }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"headers()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <div style=\"max-height: min(75vh, 780px); overflow: auto\">\n <lib-data-table\n [data]=\"service.importedData()\"\n [columns]=\"previewColumnsList()\"\n [formGroupConfig]=\"formGroupConfig()\"\n [useVirtualScroll]=\"true\"\n (rowSave)=\"service.addRow($event)\"\n >\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"footer-buttons flex gap-4 items-center justify-between my-4\">\n <button\n class=\"btn btn-secondary cancel-button\"\n (click)=\"showPreview = false\"\n >\n Cancel\n </button>\n <button class=\"btn btn-primary export-button\" (click)=\"save()\">\n Complete\n </button>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataImportComponent } from './data-import.component';\nimport { CardModule } from 'verben-ng-ui/src/lib/components/card';\nimport { VerbenDialogueModule } from 'verben-ng-ui/src/lib/components/verben-dialogue';\nimport { DataTableModule } from 'verben-ng-ui/src/lib/components/data-table';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\n\n@NgModule({\n declarations: [DataImportComponent],\n imports: [\n CommonModule,\n CardModule,\n VerbenDialogueModule,\n DataTableModule,\n VerbenaInputModule,\n DropDownModule,\n ReactiveFormsModule,\n FormsModule,\n SvgModule,\n ],\n exports: [DataImportComponent],\n})\nexport class DataImportModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DataImportService"],"mappings":"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"}
@@ -195,11 +195,11 @@ class VerbenaInputComponent {
195
195
  this.validate();
196
196
  }
197
197
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: VerbenaInputComponent, deps: [{ token: forwardRef(() => NgControl), optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
198
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: VerbenaInputComponent, selector: "verbena-input", inputs: { disabled: "disabled", label: "label", placeHolder: "placeHolder", required: "required", svgPosition: "svgPosition", minLength: "minLength", maxLength: "maxLength", type: "type", bgColor: "bgColor", border: "border", borderRadius: "borderRadius", textColor: "textColor", value: "value", labelPosition: "labelPosition", labelColor: "labelColor", disable: "disable", readOnly: "readOnly", min: "min", max: "max", showBorder: "showBorder", showErrorMessage: "showErrorMessage", errorMessageColor: "errorMessageColor", errorBorderColor: "errorBorderColor", errorPosition: "errorPosition", svg: "svg", fontSize: "fontSize", svgWidth: "svgWidth", svgHeight: "svgHeight", svgColor: "svgColor", capitalization: "capitalization", inputContainerClass: "inputContainerClass", inputFieldClass: "inputFieldClass", passLength: "passLength", inputWrapperClass: "inputWrapperClass", passwordToggle: "passwordToggle", customErrorMessages: "customErrorMessages", icon: "icon", textPass: "textPass" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
198
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: VerbenaInputComponent, selector: "verbena-input", inputs: { disabled: "disabled", label: "label", placeHolder: "placeHolder", required: "required", svgPosition: "svgPosition", minLength: "minLength", maxLength: "maxLength", type: "type", bgColor: "bgColor", border: "border", borderRadius: "borderRadius", textColor: "textColor", value: "value", labelPosition: "labelPosition", labelColor: "labelColor", disable: "disable", readOnly: "readOnly", min: "min", max: "max", showBorder: "showBorder", showErrorMessage: "showErrorMessage", errorMessageColor: "errorMessageColor", errorBorderColor: "errorBorderColor", errorPosition: "errorPosition", svg: "svg", fontSize: "fontSize", svgWidth: "svgWidth", svgHeight: "svgHeight", svgColor: "svgColor", capitalization: "capitalization", inputContainerClass: "inputContainerClass", inputFieldClass: "inputFieldClass", passLength: "passLength", inputWrapperClass: "inputWrapperClass", passwordToggle: "passwordToggle", customErrorMessages: "customErrorMessages", icon: "icon", textPass: "textPass" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative', overflow: 'hidden' }\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'0px',\n 'top':'0',\n 'bottom':'0',\n 'background': bgColor,\n 'z-index': '1',\n 'margin': '1px',\n 'padding': '0 8px',\n 'border-radius': borderRadius,\n\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
199
199
  }
200
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: VerbenaInputComponent, decorators: [{
201
201
  type: Component,
202
- args: [{ selector: 'verbena-input', template: "<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"] }]
202
+ args: [{ selector: 'verbena-input', template: "<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative', overflow: 'hidden' }\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'0px',\n 'top':'0',\n 'bottom':'0',\n 'background': bgColor,\n 'z-index': '1',\n 'margin': '1px',\n 'padding': '0 8px',\n 'border-radius': borderRadius,\n\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"] }]
203
203
  }], ctorParameters: () => [{ type: i2.NgControl, decorators: [{
204
204
  type: Optional
205
205
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"verben-ng-ui-src-lib-verbena-input.mjs","sources":["../../../projects/verben-ng-ui/src/lib/verbena-input/verbena-input.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-input/verbena-input.component.html","../../../projects/verben-ng-ui/src/lib/verbena-input/verbena-input.module.ts","../../../projects/verben-ng-ui/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, Optional, Self, Inject, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n\n@Component({\n selector: 'verbena-input',\n templateUrl: './verbena-input.component.html',\n styleUrls: ['./verbena-input.component.css']\n})\nexport class VerbenaInputComponent implements ControlValueAccessor, OnInit {\n @Input() disabled: boolean = false;\n @Input() label: string = '';\n @Input() placeHolder: string = '';\n @Input() required: boolean = false;\n @Input() svgPosition: 'left' | 'right' = 'left';\n @Input() minLength?: number;\n @Input() maxLength?: number;\n @Input() type: 'text' | 'password' | 'integer' | 'number' | 'decimal' | 'email' | 'date' | 'tel' | 'url' | 'file' | 'color' | 'search' = 'text';\n @Input() bgColor: string = '#f9f9f9';\n @Input() border: string = '';\n @Input() borderRadius: string = '5px';\n @Input() textColor: string = '#333';\n @Input() value: string = '';\n @Input() labelPosition: string = 'start';\n @Input() labelColor: string = 'black';\n @Input() disable: boolean = false; // Disable input\n @Input() readOnly: boolean = false; // Read-only input\n @Input() min?: number;\n @Input() max?: number;\n @Input() showBorder: boolean = true;\n @Input() showErrorMessage: boolean = true;\n @Input() errorMessageColor: string = 'red';\n @Input() errorBorderColor?: string;\n @Input() errorPosition: 'left' | 'right' | 'top' | 'bottom' = 'bottom';\n @Input() svg: string = '';\n @Input() fontSize: string = '';\n @Input() svgWidth: number = 20;\n @Input() svgHeight: number = 20;\n @Input() svgColor: string = '';\n @Input() capitalization: 'none' | 'uppercase' | 'lowercase' | 'sentencecase' | 'pascalcase' | 'camelcase' = 'none';\n @Input() inputContainerClass: string = '';\n @Input() inputFieldClass: string = '';\n @Input() passLength: number = 8;\n @Input() inputWrapperClass: string = '';\n @Input() passwordToggle?: boolean = false;\n @Input() customErrorMessages: {\n required?: string;\n minLength?: string;\n maxLength?: string;\n minValue?: string;\n maxValue?: string;\n integer?: string;\n number?: string;\n decimal?: string;\n email?: string;\n password?: string;\n tel?: string;\n url?: string;\n } = {};\n\n @Output() valueChange = new EventEmitter<string | FileList>();\n\n errorMessage: string | undefined;\n inputId: string = '';\n onChange: any = () => {};\n onTouch: any = () => {};\n isInvalid: boolean = false;\n \n // NEW: Track disabled state from form control\n // isDisabled: boolean = false;\n\n @Input() icon: string = 'eye';\n @Input() textPass: string = 'Show';\n\n\n toggleIcon(): void {\n this.icon = this.icon === 'eye' ? 'eye-closed' : 'eye';\n this.textPass = this.textPass === 'Show' ? 'Hide' : 'Show';\n this.type = this.type === 'password' ? 'text' : 'password';\n }\n\n constructor(@Optional() @Self() @Inject(forwardRef(() => NgControl)) private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl?.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n\n ngOnInit() {\n this.inputId = `verbena-input-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n onInput(event: Event) {\n const target = event.target as HTMLInputElement;\n\n if (this.type === 'file' && target.files) {\n const files = target.files;\n this.onChange(files);\n this.valueChange.emit(files);\n } else {\n this.value = target.value?.trim();\n this.value = this.applyCapitalization(this.value, this.capitalization);\n this.validate();\n const sanitizedValue = this.sanitizeValue(this.value);\n this.onChange(sanitizedValue);\n this.valueChange.emit(sanitizedValue);\n }\n\n this.validate();\n }\n\n applyCapitalization(value: string, format: string): string {\n switch (format) {\n case 'uppercase': return value.toUpperCase();\n case 'lowercase': return value.toLowerCase();\n case 'sentencecase': return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n case 'pascalcase': return value.replace(/\\w+/g, (w) => w[0].toUpperCase() + w.slice(1).toLowerCase());\n case 'camelcase': return value.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) =>\n index === 0 ? match.toLowerCase() : match.toUpperCase()).replace(/\\s+/g, '');\n default: return value;\n }\n }\n\n sanitizeValue(value: string): string {\n if (['number', 'decimal', 'integer'].includes(this.type)) {\n return value.replace(/,/g, '');\n }\n return value;\n }\n\n validate() {\n this.errorMessage = '';\n\n if (this.required && !this.value) {\n this.errorMessage = this.customErrorMessages.required || 'This field is required.';\n this.isInvalid = true;\n return;\n }\n\n if (this.minLength && this.value.length < this.minLength) {\n this.errorMessage = this.customErrorMessages.minLength || `Minimum length is ${this.minLength}.`;\n this.isInvalid = true;\n return;\n }\n\n if (this.maxLength && this.value.length > this.maxLength) {\n this.errorMessage = this.customErrorMessages.maxLength || `Maximum length is ${this.maxLength}.`;\n this.isInvalid = true;\n return;\n }\n\n const sanitizedValue = this.sanitizeValue(this.value);\n const numericValue = parseFloat(sanitizedValue);\n\n if (['integer', 'number', 'decimal'].includes(this.type)) {\n if (this.min !== undefined && numericValue < this.min) {\n this.errorMessage = this.customErrorMessages.minValue || `Minimum value is ${this.min}.`;\n this.isInvalid = true;\n return;\n } else if (this.max !== undefined && numericValue > this.max) {\n this.errorMessage = this.customErrorMessages.maxValue || `Maximum value is ${this.max}.`;\n this.isInvalid = true;\n return;\n }\n }\n\n if (this.type === 'integer' && !/^\\d+$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.integer || 'Please enter a valid integer.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'number' && !/^\\d+(\\.\\d+)?$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.number || 'Please enter a valid number.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'decimal' && !/^\\d+(\\.\\d+)?$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.decimal || 'Please enter a valid decimal.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'email' && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.email || 'Please enter a valid email address.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'password' && this.value.length < this.passLength) {\n this.errorMessage = this.customErrorMessages.password || `Password must be at least ${this.passLength} characters long.`;\n this.isInvalid = true;\n return;\n }\n \n if (this.type === 'tel' && !/^\\+?[1-9]\\d{1,14}$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.tel || 'Please enter a valid telephone number.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'url' && !/^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.url || 'Please enter a valid URL.';\n this.isInvalid = true;\n return;\n }\n\n this.isInvalid = false;\n }\n\n writeValue(value: any): void {\n this.value = value ? this.applyCapitalization(value?.trim(), this.capitalization) : '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n // FIXED: Properly implement setDisabledState\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.disable = isDisabled;\n }\n\n onBlur() {\n this.onTouch();\n this.validate();\n }\n}","<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n","import { forwardRef, NgModule } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TooltipModule } from 'verben-ng-ui/src/lib/components/tooltip';\nimport { VerbenaInputComponent } from './verbena-input.component';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\n\n@NgModule({\n declarations: [VerbenaInputComponent],\n imports: [CommonModule, FormsModule, TooltipModule, SvgModule],\n exports: [VerbenaInputComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VerbenaInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => VerbenaInputComponent),\n multi: true,\n },\n ],\n})\nexport class VerbenaInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verben-ng-ui-src-lib-verbena-input.mjs","sources":["../../../projects/verben-ng-ui/src/lib/verbena-input/verbena-input.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-input/verbena-input.component.html","../../../projects/verben-ng-ui/src/lib/verbena-input/verbena-input.module.ts","../../../projects/verben-ng-ui/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, Optional, Self, Inject, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n\n@Component({\n selector: 'verbena-input',\n templateUrl: './verbena-input.component.html',\n styleUrls: ['./verbena-input.component.css']\n})\nexport class VerbenaInputComponent implements ControlValueAccessor, OnInit {\n @Input() disabled: boolean = false;\n @Input() label: string = '';\n @Input() placeHolder: string = '';\n @Input() required: boolean = false;\n @Input() svgPosition: 'left' | 'right' = 'left';\n @Input() minLength?: number;\n @Input() maxLength?: number;\n @Input() type: 'text' | 'password' | 'integer' | 'number' | 'decimal' | 'email' | 'date' | 'tel' | 'url' | 'file' | 'color' | 'search' = 'text';\n @Input() bgColor: string = '#f9f9f9';\n @Input() border: string = '';\n @Input() borderRadius: string = '5px';\n @Input() textColor: string = '#333';\n @Input() value: string = '';\n @Input() labelPosition: string = 'start';\n @Input() labelColor: string = 'black';\n @Input() disable: boolean = false; // Disable input\n @Input() readOnly: boolean = false; // Read-only input\n @Input() min?: number;\n @Input() max?: number;\n @Input() showBorder: boolean = true;\n @Input() showErrorMessage: boolean = true;\n @Input() errorMessageColor: string = 'red';\n @Input() errorBorderColor?: string;\n @Input() errorPosition: 'left' | 'right' | 'top' | 'bottom' = 'bottom';\n @Input() svg: string = '';\n @Input() fontSize: string = '';\n @Input() svgWidth: number = 20;\n @Input() svgHeight: number = 20;\n @Input() svgColor: string = '';\n @Input() capitalization: 'none' | 'uppercase' | 'lowercase' | 'sentencecase' | 'pascalcase' | 'camelcase' = 'none';\n @Input() inputContainerClass: string = '';\n @Input() inputFieldClass: string = '';\n @Input() passLength: number = 8;\n @Input() inputWrapperClass: string = '';\n @Input() passwordToggle?: boolean = false;\n @Input() customErrorMessages: {\n required?: string;\n minLength?: string;\n maxLength?: string;\n minValue?: string;\n maxValue?: string;\n integer?: string;\n number?: string;\n decimal?: string;\n email?: string;\n password?: string;\n tel?: string;\n url?: string;\n } = {};\n\n @Output() valueChange = new EventEmitter<string | FileList>();\n\n errorMessage: string | undefined;\n inputId: string = '';\n onChange: any = () => {};\n onTouch: any = () => {};\n isInvalid: boolean = false;\n \n // NEW: Track disabled state from form control\n // isDisabled: boolean = false;\n\n @Input() icon: string = 'eye';\n @Input() textPass: string = 'Show';\n\n\n toggleIcon(): void {\n this.icon = this.icon === 'eye' ? 'eye-closed' : 'eye';\n this.textPass = this.textPass === 'Show' ? 'Hide' : 'Show';\n this.type = this.type === 'password' ? 'text' : 'password';\n }\n\n constructor(@Optional() @Self() @Inject(forwardRef(() => NgControl)) private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl?.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n\n ngOnInit() {\n this.inputId = `verbena-input-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n onInput(event: Event) {\n const target = event.target as HTMLInputElement;\n\n if (this.type === 'file' && target.files) {\n const files = target.files;\n this.onChange(files);\n this.valueChange.emit(files);\n } else {\n this.value = target.value?.trim();\n this.value = this.applyCapitalization(this.value, this.capitalization);\n this.validate();\n const sanitizedValue = this.sanitizeValue(this.value);\n this.onChange(sanitizedValue);\n this.valueChange.emit(sanitizedValue);\n }\n\n this.validate();\n }\n\n applyCapitalization(value: string, format: string): string {\n switch (format) {\n case 'uppercase': return value.toUpperCase();\n case 'lowercase': return value.toLowerCase();\n case 'sentencecase': return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n case 'pascalcase': return value.replace(/\\w+/g, (w) => w[0].toUpperCase() + w.slice(1).toLowerCase());\n case 'camelcase': return value.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) =>\n index === 0 ? match.toLowerCase() : match.toUpperCase()).replace(/\\s+/g, '');\n default: return value;\n }\n }\n\n sanitizeValue(value: string): string {\n if (['number', 'decimal', 'integer'].includes(this.type)) {\n return value.replace(/,/g, '');\n }\n return value;\n }\n\n validate() {\n this.errorMessage = '';\n\n if (this.required && !this.value) {\n this.errorMessage = this.customErrorMessages.required || 'This field is required.';\n this.isInvalid = true;\n return;\n }\n\n if (this.minLength && this.value.length < this.minLength) {\n this.errorMessage = this.customErrorMessages.minLength || `Minimum length is ${this.minLength}.`;\n this.isInvalid = true;\n return;\n }\n\n if (this.maxLength && this.value.length > this.maxLength) {\n this.errorMessage = this.customErrorMessages.maxLength || `Maximum length is ${this.maxLength}.`;\n this.isInvalid = true;\n return;\n }\n\n const sanitizedValue = this.sanitizeValue(this.value);\n const numericValue = parseFloat(sanitizedValue);\n\n if (['integer', 'number', 'decimal'].includes(this.type)) {\n if (this.min !== undefined && numericValue < this.min) {\n this.errorMessage = this.customErrorMessages.minValue || `Minimum value is ${this.min}.`;\n this.isInvalid = true;\n return;\n } else if (this.max !== undefined && numericValue > this.max) {\n this.errorMessage = this.customErrorMessages.maxValue || `Maximum value is ${this.max}.`;\n this.isInvalid = true;\n return;\n }\n }\n\n if (this.type === 'integer' && !/^\\d+$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.integer || 'Please enter a valid integer.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'number' && !/^\\d+(\\.\\d+)?$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.number || 'Please enter a valid number.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'decimal' && !/^\\d+(\\.\\d+)?$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.decimal || 'Please enter a valid decimal.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'email' && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.email || 'Please enter a valid email address.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'password' && this.value.length < this.passLength) {\n this.errorMessage = this.customErrorMessages.password || `Password must be at least ${this.passLength} characters long.`;\n this.isInvalid = true;\n return;\n }\n \n if (this.type === 'tel' && !/^\\+?[1-9]\\d{1,14}$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.tel || 'Please enter a valid telephone number.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'url' && !/^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.url || 'Please enter a valid URL.';\n this.isInvalid = true;\n return;\n }\n\n this.isInvalid = false;\n }\n\n writeValue(value: any): void {\n this.value = value ? this.applyCapitalization(value?.trim(), this.capitalization) : '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n // FIXED: Properly implement setDisabledState\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.disable = isDisabled;\n }\n\n onBlur() {\n this.onTouch();\n this.validate();\n }\n}","<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n 'justify-content': labelPosition,\n color: labelColor,\n padding: '0'\n }\"\n class=\"input-field\"\n >\n <div\n [ngStyle]=\"{\n width: '100%',\n display: 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative', overflow: 'hidden' }\">\n <div\n *ngIf=\"passwordToggle === true\"\n [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'0px',\n 'top':'0',\n 'bottom':'0',\n 'background': bgColor,\n 'z-index': '1',\n 'margin': '1px',\n 'padding': '0 8px',\n 'border-radius': borderRadius,\n\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <input\n [disabled]=\"disabled || disable\"\n [readonly]=\"readOnly\"\n [type]=\"type\"\n [placeholder]=\"placeHolder\"\n [id]=\"label\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-invalid]=\"isInvalid\"\n [attr.aria-describedby]=\"isInvalid ? label + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n \n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n [ngClass]=\"{ 'ng-invalid': isInvalid }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div\n *ngIf=\"isInvalid && showErrorMessage\"\n class=\"error-message\"\n [ngStyle]=\"{\n color: errorMessageColor,\n position: errorPosition\n }\"\n >\n {{ errorMessage }}\n </div>\n</div>\n","import { forwardRef, NgModule } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TooltipModule } from 'verben-ng-ui/src/lib/components/tooltip';\nimport { VerbenaInputComponent } from './verbena-input.component';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\n\n@NgModule({\n declarations: [VerbenaInputComponent],\n imports: [CommonModule, FormsModule, TooltipModule, SvgModule],\n exports: [VerbenaInputComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VerbenaInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => VerbenaInputComponent),\n multi: true,\n },\n ],\n})\nexport class VerbenaInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;MASa,qBAAqB,CAAA;AAwE6C,IAAA,SAAA,CAAA;IAvEpE,QAAQ,GAAY,KAAK,CAAC;IAC1B,KAAK,GAAW,EAAE,CAAC;IACnB,WAAW,GAAW,EAAE,CAAC;IACzB,QAAQ,GAAY,KAAK,CAAC;IAC1B,WAAW,GAAqB,MAAM,CAAC;AACvC,IAAA,SAAS,CAAU;AACnB,IAAA,SAAS,CAAU;IACnB,IAAI,GAA4H,MAAM,CAAC;IACvI,OAAO,GAAW,SAAS,CAAC;IAC5B,MAAM,GAAW,EAAE,CAAC;IACpB,YAAY,GAAW,KAAK,CAAC;IAC7B,SAAS,GAAW,MAAM,CAAC;IAC3B,KAAK,GAAW,EAAE,CAAC;IACnB,aAAa,GAAW,OAAO,CAAC;IAChC,UAAU,GAAW,OAAO,CAAC;AAC7B,IAAA,OAAO,GAAY,KAAK,CAAC;AACzB,IAAA,QAAQ,GAAY,KAAK,CAAC;AAC1B,IAAA,GAAG,CAAU;AACb,IAAA,GAAG,CAAU;IACb,UAAU,GAAY,IAAI,CAAC;IAC3B,gBAAgB,GAAY,IAAI,CAAC;IACjC,iBAAiB,GAAW,KAAK,CAAC;AAClC,IAAA,gBAAgB,CAAU;IAC1B,aAAa,GAAwC,QAAQ,CAAC;IAC9D,GAAG,GAAW,EAAE,CAAC;IACjB,QAAQ,GAAW,EAAE,CAAC;IACtB,QAAQ,GAAW,EAAE,CAAC;IACtB,SAAS,GAAW,EAAE,CAAC;IACvB,QAAQ,GAAW,EAAE,CAAC;IACtB,cAAc,GAAqF,MAAM,CAAC;IAC1G,mBAAmB,GAAW,EAAE,CAAC;IACjC,eAAe,GAAW,EAAE,CAAC;IAC7B,UAAU,GAAW,CAAC,CAAC;IACvB,iBAAiB,GAAW,EAAE,CAAC;IAC/B,cAAc,GAAa,KAAK,CAAC;IACjC,mBAAmB,GAaxB,EAAE,CAAC;AAEG,IAAA,WAAW,GAAG,IAAI,YAAY,EAAqB,CAAC;AAE9D,IAAA,YAAY,CAAqB;IACjC,OAAO,GAAW,EAAE,CAAC;AACrB,IAAA,QAAQ,GAAQ,MAAK,GAAG,CAAC;AACzB,IAAA,OAAO,GAAQ,MAAK,GAAG,CAAC;IACxB,SAAS,GAAY,KAAK,CAAC;;;IAKlB,IAAI,GAAW,KAAK,CAAC;IACrB,QAAQ,GAAW,MAAM,CAAC;IAGnC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,YAAY,GAAG,KAAK,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;KAC5D;AAED,IAAA,WAAA,CAA6E,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AAC/F,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,MAAM,KAAI;AAClD,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;sBACnC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;sBAC9C,KAAK,CAAC;AACZ,aAAC,CAAC,CAAC;SACJ;KACF;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,CAAA,cAAA,EAAiB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,CAAC;KAC3E;AAED,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAEhD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;AACxC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACvC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,mBAAmB,CAAC,KAAa,EAAE,MAAc,EAAA;QAC/C,QAAQ,MAAM;YACZ,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;YAC7C,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;YAC7C,KAAK,cAAc,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACzF,YAAA,KAAK,YAAY,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACtG,YAAA,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,KAAK,KAC7E,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/E,YAAA,SAAS,OAAO,KAAK,CAAC;SACvB;KACF;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAChC;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,yBAAyB,CAAC;AACnF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AACxD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,IAAI,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AACjG,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AACxD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,IAAI,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AACjG,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AAEhD,QAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxD,YAAA,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE;AACrD,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAoB,iBAAA,EAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACzF,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO;aACR;AAAM,iBAAA,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE;AAC5D,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAoB,iBAAA,EAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACzF,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO;aACR;SACF;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,IAAI,+BAA+B,CAAC;AACxF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,8BAA8B,CAAC;AACtF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,IAAI,+BAA+B,CAAC;AACxF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,IAAI,qCAAqC,CAAC;AAC5F,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AACnE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAA6B,0BAAA,EAAA,IAAI,CAAC,UAAU,mBAAmB,CAAC;AACzH,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACjE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,wCAAwC,CAAC;AAC7F,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,2BAA2B,CAAC;AAChF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;KACxF;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACnB;;AAGD,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;KAC3B;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AAnOU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAwEQ,UAAU,CAAC,MAAM,SAAS,CAAC,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxExD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,8jCCTlC,y0FAqHA,EAAA,MAAA,EAAA,CAAA,kuEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD5Ga,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,y0FAAA,EAAA,MAAA,EAAA,CAAA,kuEAAA,CAAA,EAAA,CAAA;;0BA4EZ,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,SAAS,CAAC,CAAA;yCAvE1D,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAeI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAWE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEhDK,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAlB,kBAAkB,EAAA,YAAA,EAAA,CAhBd,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC1B,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,CAAA,EAAA,OAAA,EAAA,CACnD,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAcpB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAblB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAbS,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,CAAA,EAAA,CAAA,CAAA;;4FAelD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC;oBAC9D,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAChC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;;;ACvBD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verben-ng-ui",
3
- "version": "1.2.66",
3
+ "version": "1.2.68",
4
4
  "author": "Verbena Logic",
5
5
  "repository": {
6
6
  "type": "git",
@@ -39,18 +39,6 @@
39
39
  "esm": "./esm2022/verben-ng-ui.mjs",
40
40
  "default": "./fesm2022/verben-ng-ui.mjs"
41
41
  },
42
- "./src/lib/control-options": {
43
- "types": "./src/lib/control-options/index.d.ts",
44
- "esm2022": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
45
- "esm": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
46
- "default": "./fesm2022/verben-ng-ui-src-lib-control-options.mjs"
47
- },
48
- "./src/lib/convert-to-integer": {
49
- "types": "./src/lib/convert-to-integer/index.d.ts",
50
- "esm2022": "./esm2022/src/lib/convert-to-integer/verben-ng-ui-src-lib-convert-to-integer.mjs",
51
- "esm": "./esm2022/src/lib/convert-to-integer/verben-ng-ui-src-lib-convert-to-integer.mjs",
52
- "default": "./fesm2022/verben-ng-ui-src-lib-convert-to-integer.mjs"
53
- },
54
42
  "./src/lib/convert-to-number": {
55
43
  "types": "./src/lib/convert-to-number/index.d.ts",
56
44
  "esm2022": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
@@ -63,12 +51,24 @@
63
51
  "esm": "./esm2022/src/lib/email-validator/verben-ng-ui-src-lib-email-validator.mjs",
64
52
  "default": "./fesm2022/verben-ng-ui-src-lib-email-validator.mjs"
65
53
  },
54
+ "./src/lib/control-options": {
55
+ "types": "./src/lib/control-options/index.d.ts",
56
+ "esm2022": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
57
+ "esm": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
58
+ "default": "./fesm2022/verben-ng-ui-src-lib-control-options.mjs"
59
+ },
66
60
  "./src/lib/models": {
67
61
  "types": "./src/lib/models/index.d.ts",
68
62
  "esm2022": "./esm2022/src/lib/models/verben-ng-ui-src-lib-models.mjs",
69
63
  "esm": "./esm2022/src/lib/models/verben-ng-ui-src-lib-models.mjs",
70
64
  "default": "./fesm2022/verben-ng-ui-src-lib-models.mjs"
71
65
  },
66
+ "./src/lib/convert-to-integer": {
67
+ "types": "./src/lib/convert-to-integer/index.d.ts",
68
+ "esm2022": "./esm2022/src/lib/convert-to-integer/verben-ng-ui-src-lib-convert-to-integer.mjs",
69
+ "esm": "./esm2022/src/lib/convert-to-integer/verben-ng-ui-src-lib-convert-to-integer.mjs",
70
+ "default": "./fesm2022/verben-ng-ui-src-lib-convert-to-integer.mjs"
71
+ },
72
72
  "./src/lib/number-range": {
73
73
  "types": "./src/lib/number-range/index.d.ts",
74
74
  "esm2022": "./esm2022/src/lib/number-range/verben-ng-ui-src-lib-number-range.mjs",
@@ -135,12 +135,6 @@
135
135
  "esm": "./esm2022/src/lib/verbena-switch/verben-ng-ui-src-lib-verbena-switch.mjs",
136
136
  "default": "./fesm2022/verben-ng-ui-src-lib-verbena-switch.mjs"
137
137
  },
138
- "./src/lib/verbena-textarea": {
139
- "types": "./src/lib/verbena-textarea/index.d.ts",
140
- "esm2022": "./esm2022/src/lib/verbena-textarea/verben-ng-ui-src-lib-verbena-textarea.mjs",
141
- "esm": "./esm2022/src/lib/verbena-textarea/verben-ng-ui-src-lib-verbena-textarea.mjs",
142
- "default": "./fesm2022/verben-ng-ui-src-lib-verbena-textarea.mjs"
143
- },
144
138
  "./src/lib/components/card": {
145
139
  "types": "./src/lib/components/card/index.d.ts",
146
140
  "esm2022": "./esm2022/src/lib/components/card/verben-ng-ui-src-lib-components-card.mjs",
@@ -165,6 +159,12 @@
165
159
  "esm": "./esm2022/src/lib/components/data-columns/verben-ng-ui-src-lib-components-data-columns.mjs",
166
160
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-columns.mjs"
167
161
  },
162
+ "./src/lib/components/data-export": {
163
+ "types": "./src/lib/components/data-export/index.d.ts",
164
+ "esm2022": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
165
+ "esm": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
166
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-data-export.mjs"
167
+ },
168
168
  "./src/lib/components/data-extend": {
169
169
  "types": "./src/lib/components/data-extend/index.d.ts",
170
170
  "esm2022": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
@@ -177,54 +177,48 @@
177
177
  "esm": "./esm2022/src/lib/components/data-filter/verben-ng-ui-src-lib-components-data-filter.mjs",
178
178
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-filter.mjs"
179
179
  },
180
+ "./src/lib/verbena-textarea": {
181
+ "types": "./src/lib/verbena-textarea/index.d.ts",
182
+ "esm2022": "./esm2022/src/lib/verbena-textarea/verben-ng-ui-src-lib-verbena-textarea.mjs",
183
+ "esm": "./esm2022/src/lib/verbena-textarea/verben-ng-ui-src-lib-verbena-textarea.mjs",
184
+ "default": "./fesm2022/verben-ng-ui-src-lib-verbena-textarea.mjs"
185
+ },
186
+ "./src/lib/components/data-sort": {
187
+ "types": "./src/lib/components/data-sort/index.d.ts",
188
+ "esm2022": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
189
+ "esm": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
190
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-data-sort.mjs"
191
+ },
180
192
  "./src/lib/components/data-import": {
181
193
  "types": "./src/lib/components/data-import/index.d.ts",
182
194
  "esm2022": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
183
195
  "esm": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
184
196
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-import.mjs"
185
197
  },
186
- "./src/lib/components/data-export": {
187
- "types": "./src/lib/components/data-export/index.d.ts",
188
- "esm2022": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
189
- "esm": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
190
- "default": "./fesm2022/verben-ng-ui-src-lib-components-data-export.mjs"
191
- },
192
198
  "./src/lib/components/data-table": {
193
199
  "types": "./src/lib/components/data-table/index.d.ts",
194
200
  "esm2022": "./esm2022/src/lib/components/data-table/verben-ng-ui-src-lib-components-data-table.mjs",
195
201
  "esm": "./esm2022/src/lib/components/data-table/verben-ng-ui-src-lib-components-data-table.mjs",
196
202
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-table.mjs"
197
203
  },
198
- "./src/lib/components/data-view": {
199
- "types": "./src/lib/components/data-view/index.d.ts",
200
- "esm2022": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
201
- "esm": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
202
- "default": "./fesm2022/verben-ng-ui-src-lib-components-data-view.mjs"
203
- },
204
- "./src/lib/components/data-sort": {
205
- "types": "./src/lib/components/data-sort/index.d.ts",
206
- "esm2022": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
207
- "esm": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
208
- "default": "./fesm2022/verben-ng-ui-src-lib-components-data-sort.mjs"
209
- },
210
204
  "./src/lib/components/date-picker": {
211
205
  "types": "./src/lib/components/date-picker/index.d.ts",
212
206
  "esm2022": "./esm2022/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.mjs",
213
207
  "esm": "./esm2022/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.mjs",
214
208
  "default": "./fesm2022/verben-ng-ui-src-lib-components-date-picker.mjs"
215
209
  },
216
- "./src/lib/components/drop-down": {
217
- "types": "./src/lib/components/drop-down/index.d.ts",
218
- "esm2022": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
219
- "esm": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
220
- "default": "./fesm2022/verben-ng-ui-src-lib-components-drop-down.mjs"
221
- },
222
210
  "./src/lib/components/data-xport": {
223
211
  "types": "./src/lib/components/data-xport/index.d.ts",
224
212
  "esm2022": "./esm2022/src/lib/components/data-xport/verben-ng-ui-src-lib-components-data-xport.mjs",
225
213
  "esm": "./esm2022/src/lib/components/data-xport/verben-ng-ui-src-lib-components-data-xport.mjs",
226
214
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-xport.mjs"
227
215
  },
216
+ "./src/lib/components/drop-down": {
217
+ "types": "./src/lib/components/drop-down/index.d.ts",
218
+ "esm2022": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
219
+ "esm": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
220
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-drop-down.mjs"
221
+ },
228
222
  "./src/lib/components/icons": {
229
223
  "types": "./src/lib/components/icons/index.d.ts",
230
224
  "esm2022": "./esm2022/src/lib/components/icons/verben-ng-ui-src-lib-components-icons.mjs",
@@ -237,6 +231,12 @@
237
231
  "esm": "./esm2022/src/lib/components/image/verben-ng-ui-src-lib-components-image.mjs",
238
232
  "default": "./fesm2022/verben-ng-ui-src-lib-components-image.mjs"
239
233
  },
234
+ "./src/lib/components/data-view": {
235
+ "types": "./src/lib/components/data-view/index.d.ts",
236
+ "esm2022": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
237
+ "esm": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
238
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-data-view.mjs"
239
+ },
240
240
  "./src/lib/components/notification": {
241
241
  "types": "./src/lib/components/notification/index.d.ts",
242
242
  "esm2022": "./esm2022/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.mjs",
@@ -249,11 +249,11 @@
249
249
  "esm": "./esm2022/src/lib/components/number-input/verben-ng-ui-src-lib-components-number-input.mjs",
250
250
  "default": "./fesm2022/verben-ng-ui-src-lib-components-number-input.mjs"
251
251
  },
252
- "./src/lib/components/shared": {
253
- "types": "./src/lib/components/shared/index.d.ts",
254
- "esm2022": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
255
- "esm": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
256
- "default": "./fesm2022/verben-ng-ui-src-lib-components-shared.mjs"
252
+ "./src/lib/components/pop-up": {
253
+ "types": "./src/lib/components/pop-up/index.d.ts",
254
+ "esm2022": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
255
+ "esm": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
256
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-pop-up.mjs"
257
257
  },
258
258
  "./src/lib/components/sort-table": {
259
259
  "types": "./src/lib/components/sort-table/index.d.ts",
@@ -261,47 +261,35 @@
261
261
  "esm": "./esm2022/src/lib/components/sort-table/verben-ng-ui-src-lib-components-sort-table.mjs",
262
262
  "default": "./fesm2022/verben-ng-ui-src-lib-components-sort-table.mjs"
263
263
  },
264
- "./src/lib/components/pop-up": {
265
- "types": "./src/lib/components/pop-up/index.d.ts",
266
- "esm2022": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
267
- "esm": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
268
- "default": "./fesm2022/verben-ng-ui-src-lib-components-pop-up.mjs"
269
- },
270
264
  "./src/lib/components/svg": {
271
265
  "types": "./src/lib/components/svg/index.d.ts",
272
266
  "esm2022": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
273
267
  "esm": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
274
268
  "default": "./fesm2022/verben-ng-ui-src-lib-components-svg.mjs"
275
269
  },
276
- "./src/lib/components/table-filter": {
277
- "types": "./src/lib/components/table-filter/index.d.ts",
278
- "esm2022": "./esm2022/src/lib/components/table-filter/verben-ng-ui-src-lib-components-table-filter.mjs",
279
- "esm": "./esm2022/src/lib/components/table-filter/verben-ng-ui-src-lib-components-table-filter.mjs",
280
- "default": "./fesm2022/verben-ng-ui-src-lib-components-table-filter.mjs"
281
- },
282
270
  "./src/lib/components/tooltip": {
283
271
  "types": "./src/lib/components/tooltip/index.d.ts",
284
272
  "esm2022": "./esm2022/src/lib/components/tooltip/verben-ng-ui-src-lib-components-tooltip.mjs",
285
273
  "esm": "./esm2022/src/lib/components/tooltip/verben-ng-ui-src-lib-components-tooltip.mjs",
286
274
  "default": "./fesm2022/verben-ng-ui-src-lib-components-tooltip.mjs"
287
275
  },
288
- "./src/lib/components/verben-time-picker": {
289
- "types": "./src/lib/components/verben-time-picker/index.d.ts",
290
- "esm2022": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
291
- "esm": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
292
- "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-time-picker.mjs"
293
- },
294
276
  "./src/lib/components/verben-dialogue": {
295
277
  "types": "./src/lib/components/verben-dialogue/index.d.ts",
296
278
  "esm2022": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
297
279
  "esm": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
298
280
  "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-dialogue.mjs"
299
281
  },
300
- "./src/lib/components/verbena-icon": {
301
- "types": "./src/lib/components/verbena-icon/index.d.ts",
302
- "esm2022": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
303
- "esm": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
304
- "default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-icon.mjs"
282
+ "./src/lib/components/table-filter": {
283
+ "types": "./src/lib/components/table-filter/index.d.ts",
284
+ "esm2022": "./esm2022/src/lib/components/table-filter/verben-ng-ui-src-lib-components-table-filter.mjs",
285
+ "esm": "./esm2022/src/lib/components/table-filter/verben-ng-ui-src-lib-components-table-filter.mjs",
286
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-table-filter.mjs"
287
+ },
288
+ "./src/lib/components/shared": {
289
+ "types": "./src/lib/components/shared/index.d.ts",
290
+ "esm2022": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
291
+ "esm": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
292
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-shared.mjs"
305
293
  },
306
294
  "./src/lib/components/verben-mail": {
307
295
  "types": "./src/lib/components/verben-mail/index.d.ts",
@@ -309,17 +297,29 @@
309
297
  "esm": "./esm2022/src/lib/components/verben-mail/verben-ng-ui-src-lib-components-verben-mail.mjs",
310
298
  "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-mail.mjs"
311
299
  },
312
- "./src/lib/components/verbena-tab": {
313
- "types": "./src/lib/components/verbena-tab/index.d.ts",
314
- "esm2022": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
315
- "esm": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
316
- "default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-tab.mjs"
300
+ "./src/lib/components/verben-time-picker": {
301
+ "types": "./src/lib/components/verben-time-picker/index.d.ts",
302
+ "esm2022": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
303
+ "esm": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
304
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-time-picker.mjs"
317
305
  },
318
306
  "./src/lib/components/visible-column": {
319
307
  "types": "./src/lib/components/visible-column/index.d.ts",
320
308
  "esm2022": "./esm2022/src/lib/components/visible-column/verben-ng-ui-src-lib-components-visible-column.mjs",
321
309
  "esm": "./esm2022/src/lib/components/visible-column/verben-ng-ui-src-lib-components-visible-column.mjs",
322
310
  "default": "./fesm2022/verben-ng-ui-src-lib-components-visible-column.mjs"
311
+ },
312
+ "./src/lib/components/verbena-icon": {
313
+ "types": "./src/lib/components/verbena-icon/index.d.ts",
314
+ "esm2022": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
315
+ "esm": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
316
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-icon.mjs"
317
+ },
318
+ "./src/lib/components/verbena-tab": {
319
+ "types": "./src/lib/components/verbena-tab/index.d.ts",
320
+ "esm2022": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
321
+ "esm": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
322
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-tab.mjs"
323
323
  }
324
324
  }
325
325
  }