{"version":3,"file":"onepoint-yap-dashboard-widgets-widget-template.mjs","sources":["../../../../projects/onepoint-yap/dashboard/widgets/widget-template/style/css.component.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-template/component/widget-template.component.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-template/component/widget-template.component.html","../../../../projects/onepoint-yap/dashboard/widgets/widget-template/widget-template.module.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-template/onepoint-yap-dashboard-widgets-widget-template.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'yap-widget-template-css',\n  template: '',\n  styleUrls: ['./_o-widget-template.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class YapWidgetTemplateCssComponent {}\n","import { Component, ElementRef } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { DataWidgetComponent, TemplateWidgetOptions } from '@onepoint-yap/dashboard';\nimport { combineLatestWith, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Component({\n  selector: 'yap-widget-table',\n  templateUrl: './widget-template.component.html'\n})\nexport class WidgetTemplateComponent extends DataWidgetComponent {\n  options$: Observable<TemplateWidgetOptions>;\n  optionsCopy: TemplateWidgetOptions = {};\n  template$: Observable<SafeHtml>;\n  css$: Observable<SafeHtml>;\n  id: number;\n  static idGenerator = 0;\n\n  constructor(store: Store<any>, el: ElementRef, private sanitizer: DomSanitizer) {\n    super(store, el);\n    this.id = WidgetTemplateComponent.idGenerator++;\n    this.options$ = this.manifest$.pipe(map((manifest) => manifest.options as TemplateWidgetOptions));\n\n    this.subscriptions.add(\n      this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n        this.optionsCopy = { ...(JSON.parse(JSON.stringify(options)) as TemplateWidgetOptions) };\n      })\n    );\n\n    this.template$ = this.options$.pipe(\n      map((options) => (!!options.svg ? options.svg : options.html ?? '')),\n      combineLatestWith(this.resultSet$),\n      map(([template, rs]) => this.evaluate(template, rs))\n    );\n\n    this.css$ = this.options$.pipe(\n      map((options) => `<style>${this.limitScope(options.css ?? '')}</style>`),\n      combineLatestWith(this.resultSet$),\n      map(([template, rs]) => this.evaluate(template, rs))\n    );\n  }\n\n  emitManifest() {\n    this.manifestModified.emit({\n      widgetIndex: this.widgetIndex,\n      manifest: { ...this.manifest, options: this.optionsCopy }\n    });\n  }\n\n  evaluate(template: string, rs: any): SafeHtml {\n    const regexp = new RegExp('{{(.*?)}}', 'g');\n    const toReplace = template.match(regexp);\n    let result = template;\n\n    if (!!toReplace) {\n      toReplace.forEach((extracted) => {\n        const expr = extracted.substring(2, extracted.length - 2);\n        const splitted = expr.split(/[.\\]]/).filter((extr) => extr !== '');\n        let evaluation: any = null;\n\n        splitted.forEach((_splitPart) => {\n          const splitPart = _splitPart.trim();\n          if (splitPart.startsWith('rs')) {\n            const classId = (expr.match(/rs\\['(.)*?'/) ?? ['no-class-id-detected'])[0]\n              .replace(\"rs['\", '')\n              .replace(\"'\", '');\n            evaluation = rs.items[classId];\n          } else if (splitPart.startsWith('[')) {\n            if (!!evaluation) {\n              evaluation = evaluation[parseInt(splitPart.substring(1), 10)];\n            }\n          } else {\n            if (!!evaluation) {\n              const indexOfCaret = splitPart.indexOf('[');\n              if (indexOfCaret === -1) {\n                evaluation = evaluation[splitPart];\n              } else {\n                const prop = splitPart.substring(0, indexOfCaret);\n                const subProp = splitPart.substring(indexOfCaret + 1);\n                evaluation = evaluation[prop].values[subProp];\n              }\n              if (!!evaluation && evaluation.type === 'VALUE') {\n                evaluation = evaluation.value;\n              }\n            }\n          }\n        });\n\n        result = result.replace(extracted, evaluation);\n      });\n    }\n\n    return this.sanitizer.bypassSecurityTrustHtml(result);\n  }\n\n  private limitScope(css: string): string {\n    const scope = `.yap-template-${this.id}`;\n\n    const scoped = css.replace(/([},] ?)/g, `$1${scope} `).replace(new RegExp(scope + ' $'), '');\n\n    return scope + ' ' + scoped;\n  }\n}\n","<yap-widget-template-css></yap-widget-template-css>\n<div *ngIf=\"css$ | async as css\" [innerHtml]=\"css\"></div>\n<div *ngIf=\"template$ | async as template\" [class]=\"'yap-template-' + id\" [innerHtml]=\"template\"></div>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  BaseWidgetComponent,\n  BaseWidgetModule,\n  YapCoreModule,\n  YapDashboardModule,\n  YapIconModule,\n  YapSelectModule,\n  YapToggleModule\n} from '@onepoint-yap/dashboard';\nimport { YapCheckboxModule } from '@onepoint-yap/dashboard/components/checkbox';\nimport { WidgetTemplateComponent } from './component/widget-template.component';\nimport { YapWidgetTemplateCssComponent } from './style/css.component';\n\n@NgModule({\n  declarations: [WidgetTemplateComponent, YapWidgetTemplateCssComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    YapCoreModule,\n    YapDashboardModule,\n    YapSelectModule,\n    YapIconModule,\n    YapCheckboxModule,\n    YapToggleModule\n  ],\n  exports: [WidgetTemplateComponent]\n})\nexport class WidgetTemplateModule extends BaseWidgetModule {\n  override getComponent() {\n    return WidgetTemplateComponent as Type<BaseWidgetComponent>;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.YapWidgetTemplateCssComponent"],"mappings":";;;;;;;;;;;;;MAQa,6BAA6B,CAAA;8GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,+DAJ9B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAID,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EACzB,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,CAAA;;;ACKjC,MAAO,uBAAwB,SAAQ,mBAAmB,CAAA;aAMvD,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC,EAAA;AAEvB,IAAA,WAAA,CAAY,KAAiB,EAAE,EAAc,EAAU,SAAuB,EAAA;AAC5E,QAAA,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QADoC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QAN9E,IAAW,CAAA,WAAA,GAA0B,EAAE,CAAC;AAQtC,QAAA,IAAI,CAAC,EAAE,GAAG,uBAAuB,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAgC,CAAC,CAAC,CAAC;AAElG,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC/D,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAA2B,EAAE,CAAC;SAC1F,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACjC,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EACpE,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAClC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CACrD,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,OAAO,KAAK,CAAA,OAAA,EAAU,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAU,QAAA,CAAA,CAAC,EACxE,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAClC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CACrD,CAAC;KACH;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;AAC1D,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,CAAC,QAAgB,EAAE,EAAO,EAAA;QAChC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC;QAEtB,IAAI,CAAC,CAAC,SAAS,EAAE;AACf,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAC9B,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;gBACnE,IAAI,UAAU,GAAQ,IAAI,CAAC;AAE3B,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AAC9B,oBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AACpC,oBAAA,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,wBAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;AACvE,6BAAA,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACnB,6BAAA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACpB,wBAAA,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAA;AAAM,yBAAA,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;wBACpC,IAAI,CAAC,CAAC,UAAU,EAAE;AAChB,4BAAA,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,yBAAA;AACF,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,CAAC,UAAU,EAAE;4BAChB,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,4BAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AACvB,gCAAA,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AACpC,6BAAA;AAAM,iCAAA;gCACL,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gCAClD,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gCACtD,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/C,6BAAA;4BACD,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/C,gCAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;AAC/B,6BAAA;AACF,yBAAA;AACF,qBAAA;AACH,iBAAC,CAAC,CAAC;gBAEH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;KACvD;AAEO,IAAA,UAAU,CAAC,GAAW,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,CAAA,cAAA,EAAiB,IAAI,CAAC,EAAE,EAAE,CAAC;QAEzC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAK,EAAA,EAAA,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAE7F,QAAA,OAAO,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;KAC7B;8GA3FU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,+ECXpC,qOAGA,EAAA,YAAA,EAAA,CAAA,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,EAAAA,6BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDQa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,qOAAA,EAAA,CAAA;;;AEwBxB,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;IAC/C,YAAY,GAAA;AACnB,QAAA,OAAO,uBAAoD,CAAC;KAC7D;8GAHU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAdhB,YAAA,EAAA,CAAA,uBAAuB,EAAE,6BAA6B,aAEnE,YAAY;YACZ,WAAW;YACX,aAAa;YACb,aAAa;YACb,kBAAkB;YAClB,eAAe;YACf,aAAa;YACb,iBAAiB;AACjB,YAAA,eAAe,aAEP,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAZ7B,YAAY;YACZ,WAAW;YACX,aAAa;YACb,aAAa;YACb,kBAAkB;YAClB,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,uBAAuB,EAAE,6BAA6B,CAAC;AACtE,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,aAAa;wBACb,aAAa;wBACb,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,iBAAiB;wBACjB,eAAe;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;AC/BD;;AAEG;;;;"}