@ajsf/bootstrap5 18.2.0 → 19.0.0-rc.0

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, Injectable, NgModule } from '@angular/core';
2
+ import { Input, Component, Injectable, NgModule } from '@angular/core';
3
3
  import * as i2 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1 from '@ajsf/core';
@@ -218,12 +218,12 @@ class Bootstrap5FrameworkComponent {
218
218
  removeItem() {
219
219
  this.jsf.removeItem(this);
220
220
  }
221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: Bootstrap5FrameworkComponent, selector: "bootstrap-5-framework", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, usesOnChanges: true, ngImport: i0, template: "<!--\n Bootstrap 5 replaced the has-error and has-success wrapper classes with\n is-invalid and is-valid on the control itself, so the state classes are bound\n to the field rather than to this container.\n-->\n<div [class]=\"options?.htmlClass || ''\">\n\n <button *ngIf=\"showRemoveButton\"\n class=\"float-end btn btn-outline-danger btn-sm\"\n type=\"button\"\n (click)=\"removeItem()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"options?.messageLocation === 'top'\">\n <p *ngIf=\"options?.helpBlock\"\n class=\"form-text\"\n [innerHTML]=\"options?.helpBlock\"></p>\n </div>\n\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n [attr.for]=\"'control' + layoutNode?._id\"\n [class]=\"options?.labelHtmlClass || ''\"\n [class.visually-hidden]=\"options?.notitle\"\n [innerHTML]=\"options?.title\"></label>\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n <strong class=\"text-danger\">*</strong> = required fields\n </p>\n <div\n [class.h-100]=\"true\"\n [class.mt-1]=\"true\"\n [class.form-check]=\"isSingleCheck\"\n [class.is-invalid]=\"!!options?.errorMessage\"\n [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\"\n >\n <div class=\"input-group-prepend\" *ngIf=\"options?.fieldAddonLeft\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\n </div>\n \n <select-widget-widget\n [layoutNode]=\"widgetLayoutNode\"\n [dataIndex]=\"dataIndex\"\n [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n <div class=\"input-group-append\" *ngIf=\"options?.fieldAddonRight\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonRight\"></span>\n </div>\n </div>\n\n <div *ngIf=\"formControl?.touched && options?.errorMessage\"\n class=\"invalid-feedback\"\n [innerHTML]=\"options?.errorMessage\"></div>\n\n <div *ngIf=\"options?.description && (!options?.showErrors || !options?.errorMessage)\"\n class=\"form-text text-muted\"\n [innerHTML]=\"options?.description\"></div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n <pre>{{debugOutput}}</pre>\n</div>\n", styles: [":host ::ng-deep .list-group-item .form-control-feedback{top:40px}:host ::ng-deep .ng-invalid.ng-touched{border:1px solid #f44336}\n"], dependencies: [{ kind: "component", type: i1.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5FrameworkComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Bootstrap5FrameworkComponent, isStandalone: false, selector: "bootstrap-5-framework", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, usesOnChanges: true, ngImport: i0, template: "<!--\n Bootstrap 5 replaced the has-error and has-success wrapper classes with\n is-invalid and is-valid on the control itself, so the state classes are bound\n to the field rather than to this container.\n-->\n<div [class]=\"options?.htmlClass || ''\">\n\n <button *ngIf=\"showRemoveButton\"\n class=\"float-end btn btn-outline-danger btn-sm\"\n type=\"button\"\n (click)=\"removeItem()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"options?.messageLocation === 'top'\">\n <p *ngIf=\"options?.helpBlock\"\n class=\"form-text\"\n [innerHTML]=\"options?.helpBlock\"></p>\n </div>\n\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n [attr.for]=\"'control' + layoutNode?._id\"\n [class]=\"options?.labelHtmlClass || ''\"\n [class.visually-hidden]=\"options?.notitle\"\n [innerHTML]=\"options?.title\"></label>\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n <strong class=\"text-danger\">*</strong> = required fields\n </p>\n <div\n [class.h-100]=\"true\"\n [class.mt-1]=\"true\"\n [class.form-check]=\"isSingleCheck\"\n [class.is-invalid]=\"!!options?.errorMessage\"\n [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\"\n >\n <div class=\"input-group-prepend\" *ngIf=\"options?.fieldAddonLeft\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\n </div>\n \n <select-widget-widget\n [layoutNode]=\"widgetLayoutNode\"\n [dataIndex]=\"dataIndex\"\n [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n <div class=\"input-group-append\" *ngIf=\"options?.fieldAddonRight\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonRight\"></span>\n </div>\n </div>\n\n <div *ngIf=\"formControl?.touched && options?.errorMessage\"\n class=\"invalid-feedback\"\n [innerHTML]=\"options?.errorMessage\"></div>\n\n <div *ngIf=\"options?.description && (!options?.showErrors || !options?.errorMessage)\"\n class=\"form-text text-muted\"\n [innerHTML]=\"options?.description\"></div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n <pre>{{debugOutput}}</pre>\n</div>\n", styles: [":host ::ng-deep .list-group-item .form-control-feedback{top:40px}:host ::ng-deep .ng-invalid.ng-touched{border:1px solid #f44336}\n"], dependencies: [{ kind: "component", type: i1.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
223
223
  }
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkComponent, decorators: [{
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5FrameworkComponent, decorators: [{
225
225
  type: Component,
226
- args: [{ selector: 'bootstrap-5-framework', template: "<!--\n Bootstrap 5 replaced the has-error and has-success wrapper classes with\n is-invalid and is-valid on the control itself, so the state classes are bound\n to the field rather than to this container.\n-->\n<div [class]=\"options?.htmlClass || ''\">\n\n <button *ngIf=\"showRemoveButton\"\n class=\"float-end btn btn-outline-danger btn-sm\"\n type=\"button\"\n (click)=\"removeItem()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"options?.messageLocation === 'top'\">\n <p *ngIf=\"options?.helpBlock\"\n class=\"form-text\"\n [innerHTML]=\"options?.helpBlock\"></p>\n </div>\n\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n [attr.for]=\"'control' + layoutNode?._id\"\n [class]=\"options?.labelHtmlClass || ''\"\n [class.visually-hidden]=\"options?.notitle\"\n [innerHTML]=\"options?.title\"></label>\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n <strong class=\"text-danger\">*</strong> = required fields\n </p>\n <div\n [class.h-100]=\"true\"\n [class.mt-1]=\"true\"\n [class.form-check]=\"isSingleCheck\"\n [class.is-invalid]=\"!!options?.errorMessage\"\n [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\"\n >\n <div class=\"input-group-prepend\" *ngIf=\"options?.fieldAddonLeft\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\n </div>\n \n <select-widget-widget\n [layoutNode]=\"widgetLayoutNode\"\n [dataIndex]=\"dataIndex\"\n [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n <div class=\"input-group-append\" *ngIf=\"options?.fieldAddonRight\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonRight\"></span>\n </div>\n </div>\n\n <div *ngIf=\"formControl?.touched && options?.errorMessage\"\n class=\"invalid-feedback\"\n [innerHTML]=\"options?.errorMessage\"></div>\n\n <div *ngIf=\"options?.description && (!options?.showErrors || !options?.errorMessage)\"\n class=\"form-text text-muted\"\n [innerHTML]=\"options?.description\"></div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n <pre>{{debugOutput}}</pre>\n</div>\n", styles: [":host ::ng-deep .list-group-item .form-control-feedback{top:40px}:host ::ng-deep .ng-invalid.ng-touched{border:1px solid #f44336}\n"] }]
226
+ args: [{ selector: 'bootstrap-5-framework', standalone: false, template: "<!--\n Bootstrap 5 replaced the has-error and has-success wrapper classes with\n is-invalid and is-valid on the control itself, so the state classes are bound\n to the field rather than to this container.\n-->\n<div [class]=\"options?.htmlClass || ''\">\n\n <button *ngIf=\"showRemoveButton\"\n class=\"float-end btn btn-outline-danger btn-sm\"\n type=\"button\"\n (click)=\"removeItem()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"options?.messageLocation === 'top'\">\n <p *ngIf=\"options?.helpBlock\"\n class=\"form-text\"\n [innerHTML]=\"options?.helpBlock\"></p>\n </div>\n\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n [attr.for]=\"'control' + layoutNode?._id\"\n [class]=\"options?.labelHtmlClass || ''\"\n [class.visually-hidden]=\"options?.notitle\"\n [innerHTML]=\"options?.title\"></label>\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n <strong class=\"text-danger\">*</strong> = required fields\n </p>\n <div\n [class.h-100]=\"true\"\n [class.mt-1]=\"true\"\n [class.form-check]=\"isSingleCheck\"\n [class.is-invalid]=\"!!options?.errorMessage\"\n [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\"\n >\n <div class=\"input-group-prepend\" *ngIf=\"options?.fieldAddonLeft\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\n </div>\n \n <select-widget-widget\n [layoutNode]=\"widgetLayoutNode\"\n [dataIndex]=\"dataIndex\"\n [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n <div class=\"input-group-append\" *ngIf=\"options?.fieldAddonRight\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonRight\"></span>\n </div>\n </div>\n\n <div *ngIf=\"formControl?.touched && options?.errorMessage\"\n class=\"invalid-feedback\"\n [innerHTML]=\"options?.errorMessage\"></div>\n\n <div *ngIf=\"options?.description && (!options?.showErrors || !options?.errorMessage)\"\n class=\"form-text text-muted\"\n [innerHTML]=\"options?.description\"></div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n <pre>{{debugOutput}}</pre>\n</div>\n", styles: [":host ::ng-deep .list-group-item .form-control-feedback{top:40px}:host ::ng-deep .ng-invalid.ng-touched{border:1px solid #f44336}\n"] }]
227
227
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.JsonSchemaFormService }], propDecorators: { layoutNode: [{
228
228
  type: Input
229
229
  }], layoutIndex: [{
@@ -248,20 +248,20 @@ class Bootstrap5Framework extends Framework {
248
248
  '//cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js',
249
249
  ];
250
250
  }
251
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5Framework, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
252
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5Framework }); }
251
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5Framework, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
252
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5Framework }); }
253
253
  }
254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5Framework, decorators: [{
254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5Framework, decorators: [{
255
255
  type: Injectable
256
256
  }] });
257
257
 
258
258
  class Bootstrap5FrameworkModule {
259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
260
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkModule, declarations: [Bootstrap5FrameworkComponent], imports: [JsonSchemaFormModule,
259
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5FrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
260
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5FrameworkModule, declarations: [Bootstrap5FrameworkComponent], imports: [JsonSchemaFormModule,
261
261
  CommonModule,
262
262
  WidgetLibraryModule], exports: [JsonSchemaFormModule,
263
263
  Bootstrap5FrameworkComponent] }); }
264
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkModule, providers: [
264
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5FrameworkModule, providers: [
265
265
  JsonSchemaFormService,
266
266
  FrameworkLibraryService,
267
267
  WidgetLibraryService,
@@ -270,7 +270,7 @@ class Bootstrap5FrameworkModule {
270
270
  CommonModule,
271
271
  WidgetLibraryModule, JsonSchemaFormModule] }); }
272
272
  }
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkModule, decorators: [{
273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Bootstrap5FrameworkModule, decorators: [{
274
274
  type: NgModule,
275
275
  args: [{
276
276
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"ajsf-bootstrap5.mjs","sources":["../../../../projects/ajsf-bootstrap5/src/lib/bootstrap5-framework.component.ts","../../../../projects/ajsf-bootstrap5/src/lib/bootstrap5-framework.component.html","../../../../projects/ajsf-bootstrap5/src/lib/bootstrap5.framework.ts","../../../../projects/ajsf-bootstrap5/src/lib/bootstrap5-framework.module.ts","../../../../projects/ajsf-bootstrap5/src/public_api.ts","../../../../projects/ajsf-bootstrap5/src/ajsf-bootstrap5.ts"],"sourcesContent":["import {\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit\n} from '@angular/core';\nimport {JsonSchemaFormService, addClasses, cloneDeep, inArray} from '@ajsf/core';\n\n/**\n * Bootstrap 5 framework for Angular JSON Schema Form.\n *\n */\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'bootstrap-5-framework',\n templateUrl: './bootstrap5-framework.component.html',\n styleUrls: ['./bootstrap5-framework.component.scss'],\n})\nexport class Bootstrap5FrameworkComponent implements OnInit, OnChanges {\n frameworkInitialized = false;\n widgetOptions: any; // Options passed to child widget\n widgetLayoutNode: any; // layoutNode passed to child widget\n options: any; // Options used in this framework\n formControl: any = null;\n debugOutput: any = '';\n debug: any = '';\n parentArray: any = null;\n isOrderable = false;\n @Input() layoutNode: any;\n @Input() layoutIndex: number[];\n @Input() dataIndex: number[];\n\n constructor(\n public changeDetector: ChangeDetectorRef,\n public jsf: JsonSchemaFormService\n ) {\n }\n\n get isSingleCheck(): boolean {\n return this.layoutNode.type === 'checkbox' &&\n !this.options.fieldAddonLeft && !this.options.fieldAddonRight;\n }\n\n get showRemoveButton(): boolean {\n if (!this.options.removable || this.options.readonly ||\n this.layoutNode.type === '$ref'\n ) {\n return false;\n }\n if (this.layoutNode.recursiveReference) {\n return true;\n }\n if (!this.layoutNode.arrayItem || !this.parentArray) {\n return false;\n }\n // If array length <= minItems, don't allow removing any items\n return this.parentArray.items.length - 1 <= this.parentArray.options.minItems ? false :\n // For removable list items, allow removing any item\n this.layoutNode.arrayItemType === 'list' ? true :\n // For removable tuple items, only allow removing last item in list\n this.layoutIndex[this.layoutIndex.length - 1] === this.parentArray.items.length - 2;\n }\n\n ngOnInit() {\n this.initializeFramework();\n if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\n this.parentArray = this.jsf.getParentNode(this);\n if (this.parentArray) {\n this.isOrderable = this.layoutNode.arrayItemType === 'list' &&\n !this.options.readonly && this.parentArray.options.orderable;\n }\n }\n }\n\n ngOnChanges() {\n if (!this.frameworkInitialized) {\n this.initializeFramework();\n }\n }\n\n initializeFramework() {\n if (this.layoutNode) {\n this.options = cloneDeep(this.layoutNode.options);\n this.widgetLayoutNode = {\n ...this.layoutNode,\n options: cloneDeep(this.layoutNode.options)\n };\n this.widgetOptions = this.widgetLayoutNode.options;\n this.formControl = this.jsf.getFormControl(this);\n\n this.options.isInputWidget = inArray(this.layoutNode.type, [\n 'button', 'checkbox', 'checkboxes-inline', 'checkboxes', 'color',\n 'date', 'datetime-local', 'datetime', 'email', 'file', 'hidden',\n 'image', 'integer', 'month', 'number', 'password', 'radio',\n 'radiobuttons', 'radios-inline', 'radios', 'range', 'reset', 'search',\n 'select', 'submit', 'tel', 'text', 'textarea', 'time', 'url', 'week'\n ]);\n\n this.options.title = this.setTitle();\n\n this.options.htmlClass =\n addClasses(this.options.htmlClass, 'schema-form-' + this.layoutNode.type);\n this.options.htmlClass =\n this.layoutNode.type === 'array' ?\n addClasses(this.options.htmlClass, 'list-group') :\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\n addClasses(this.options.htmlClass, 'list-group-item') :\n // Bootstrap 5 dropped .form-group in favour of margin utilities.\n addClasses(this.options.htmlClass, 'mb-3');\n this.widgetOptions.htmlClass = '';\n this.options.labelHtmlClass =\n addClasses(this.options.labelHtmlClass, 'form-label');\n this.widgetOptions.activeClass =\n addClasses(this.widgetOptions.activeClass, 'active');\n this.options.fieldAddonLeft =\n this.options.fieldAddonLeft || this.options.prepend;\n this.options.fieldAddonRight =\n this.options.fieldAddonRight || this.options.append;\n\n // Add asterisk to titles if required\n if (this.options.title && this.layoutNode.type !== 'tab' &&\n !this.options.notitle && this.options.required &&\n !this.options.title.includes('*')\n ) {\n this.options.title += ' <strong class=\"text-danger\">*</strong>';\n }\n // Set miscelaneous styles and settings for each control type\n switch (this.layoutNode.type) {\n // Checkbox controls\n // CheckboxComponent renders no element carrying htmlClass, so the\n // single checkbox takes .form-check from the framework's own div.\n case 'checkbox':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass, 'form-check-label');\n break;\n case 'checkboxes':\n this.widgetOptions.htmlClass = addClasses(\n this.widgetOptions.htmlClass, 'form-check');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass, 'form-check-label');\n break;\n case 'checkboxes-inline':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass,\n 'form-check form-check-inline form-check-label');\n break;\n // Radio controls\n case 'radio':\n case 'radios':\n this.widgetOptions.htmlClass = addClasses(\n this.widgetOptions.htmlClass, 'form-check');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass, 'form-check-label');\n break;\n case 'radios-inline':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass,\n 'form-check form-check-inline form-check-label');\n break;\n // Button sets - checkboxbuttons and radiobuttons\n case 'checkboxbuttons':\n case 'radiobuttons':\n this.widgetOptions.htmlClass = addClasses(\n this.widgetOptions.htmlClass, 'btn-group');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass, 'btn');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass,\n this.options.style || 'btn-outline-primary');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'visually-hidden');\n break;\n // Single button controls\n case 'button':\n case 'submit':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'btn');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, this.options.style || 'btn-info');\n break;\n // Containers - arrays and fieldsets\n case 'array':\n case 'fieldset':\n case 'section':\n case 'conditional':\n case 'advancedfieldset':\n case 'authfieldset':\n case 'selectfieldset':\n case 'optionfieldset':\n this.options.messageLocation = 'top';\n break;\n case 'tabarray':\n case 'tabs':\n this.widgetOptions.htmlClass = addClasses(\n this.widgetOptions.htmlClass, 'tab-content');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'tab-pane');\n this.widgetOptions.labelHtmlClass = addClasses(\n this.widgetOptions.labelHtmlClass, 'nav nav-tabs');\n break;\n // 'Add' buttons - references\n case '$ref':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'btn pull-right');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, this.options.style || 'btn-default');\n this.options.icon = 'glyphicon glyphicon-plus';\n break;\n // Default - including regular inputs\n default:\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-control');\n }\n\n if (this.formControl) {\n this.updateHelpBlock(this.formControl.status);\n this.formControl.statusChanges.subscribe(status => this.updateHelpBlock(status));\n\n if (this.options.debug) {\n const vars: any[] = [];\n this.debugOutput = vars.map(thisVar => JSON.stringify(thisVar, null, 2)).join('\\n');\n }\n }\n this.frameworkInitialized = true;\n }\n\n }\n\n updateHelpBlock(status) {\n this.options.helpBlock = status === 'INVALID' &&\n this.options.enableErrorState && this.formControl.errors &&\n (this.formControl.dirty || this.options.feedbackOnRender) ?\n this.jsf.formatErrors(this.formControl.errors, this.options.validationMessages) :\n this.options.description || this.options.help || null;\n }\n\n setTitle(): string {\n switch (this.layoutNode.type) {\n case 'button':\n case 'checkbox':\n case 'section':\n case 'help':\n case 'msg':\n case 'submit':\n case 'message':\n case 'tabarray':\n case 'tabs':\n case '$ref':\n return null;\n case 'advancedfieldset':\n this.widgetOptions.expandable = true;\n this.widgetOptions.title = 'Advanced options';\n return null;\n case 'authfieldset':\n this.widgetOptions.expandable = true;\n this.widgetOptions.title = 'Authentication settings';\n return null;\n case 'fieldset':\n this.widgetOptions.title = this.options.title;\n return null;\n default:\n this.widgetOptions.title = null;\n return this.jsf.setItemTitle(this);\n }\n }\n\n removeItem() {\n this.jsf.removeItem(this);\n }\n}\n","<!--\n Bootstrap 5 replaced the has-error and has-success wrapper classes with\n is-invalid and is-valid on the control itself, so the state classes are bound\n to the field rather than to this container.\n-->\n<div [class]=\"options?.htmlClass || ''\">\n\n <button *ngIf=\"showRemoveButton\"\n class=\"float-end btn btn-outline-danger btn-sm\"\n type=\"button\"\n (click)=\"removeItem()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"options?.messageLocation === 'top'\">\n <p *ngIf=\"options?.helpBlock\"\n class=\"form-text\"\n [innerHTML]=\"options?.helpBlock\"></p>\n </div>\n\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n [attr.for]=\"'control' + layoutNode?._id\"\n [class]=\"options?.labelHtmlClass || ''\"\n [class.visually-hidden]=\"options?.notitle\"\n [innerHTML]=\"options?.title\"></label>\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n <strong class=\"text-danger\">*</strong> = required fields\n </p>\n <div\n [class.h-100]=\"true\"\n [class.mt-1]=\"true\"\n [class.form-check]=\"isSingleCheck\"\n [class.is-invalid]=\"!!options?.errorMessage\"\n [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\"\n >\n <div class=\"input-group-prepend\" *ngIf=\"options?.fieldAddonLeft\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\n </div>\n \n <select-widget-widget\n [layoutNode]=\"widgetLayoutNode\"\n [dataIndex]=\"dataIndex\"\n [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n <div class=\"input-group-append\" *ngIf=\"options?.fieldAddonRight\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonRight\"></span>\n </div>\n </div>\n\n <div *ngIf=\"formControl?.touched && options?.errorMessage\"\n class=\"invalid-feedback\"\n [innerHTML]=\"options?.errorMessage\"></div>\n\n <div *ngIf=\"options?.description && (!options?.showErrors || !options?.errorMessage)\"\n class=\"form-text text-muted\"\n [innerHTML]=\"options?.description\"></div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n <pre>{{debugOutput}}</pre>\n</div>\n","import {Injectable} from '@angular/core';\nimport {Framework} from '@ajsf/core';\nimport {Bootstrap5FrameworkComponent} from './bootstrap5-framework.component';\n\n// Bootstrap 5 Framework\n// https://github.com/ng-bootstrap/ng-bootstrap\n\n@Injectable()\nexport class Bootstrap5Framework extends Framework {\n name = 'bootstrap-5';\n\n framework = Bootstrap5FrameworkComponent;\n\n stylesheets = [\n '//cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css'\n ];\n\n // Bootstrap 5 dropped jQuery, and the bundle build already contains Popper,\n // so this is one script where Bootstrap 4 needed three.\n scripts = [\n '//cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js',\n ];\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n Framework,\n JsonSchemaFormService,\n WidgetLibraryService,\n FrameworkLibraryService,\n JsonSchemaFormModule,\n WidgetLibraryModule\n} from '@ajsf/core';\nimport {Bootstrap5Framework} from './bootstrap5.framework';\nimport {Bootstrap5FrameworkComponent} from './bootstrap5-framework.component';\n\n@NgModule({\n imports: [\n JsonSchemaFormModule,\n CommonModule,\n WidgetLibraryModule,\n ],\n declarations: [\n Bootstrap5FrameworkComponent,\n ],\n exports: [\n JsonSchemaFormModule,\n Bootstrap5FrameworkComponent,\n ],\n providers: [\n JsonSchemaFormService,\n FrameworkLibraryService,\n WidgetLibraryService,\n { provide: Framework, useClass: Bootstrap5Framework, multi: true },\n ]\n})\nexport class Bootstrap5FrameworkModule {\n}\n","/*\n * Public API Surface of @ajsf/bootstrap5\n */\n\nexport * from './lib/bootstrap5-framework.module';\nexport * from './lib/bootstrap5-framework.component';\nexport * from './lib/bootstrap5.framework';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ajsf-bootstrap5.mjs","sources":["../../../../projects/ajsf-bootstrap5/src/lib/bootstrap5-framework.component.ts","../../../../projects/ajsf-bootstrap5/src/lib/bootstrap5-framework.component.html","../../../../projects/ajsf-bootstrap5/src/lib/bootstrap5.framework.ts","../../../../projects/ajsf-bootstrap5/src/lib/bootstrap5-framework.module.ts","../../../../projects/ajsf-bootstrap5/src/public_api.ts","../../../../projects/ajsf-bootstrap5/src/ajsf-bootstrap5.ts"],"sourcesContent":["import {\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit\n} from '@angular/core';\nimport {JsonSchemaFormService, addClasses, cloneDeep, inArray} from '@ajsf/core';\n\n/**\n * Bootstrap 5 framework for Angular JSON Schema Form.\n *\n */\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'bootstrap-5-framework',\n templateUrl: './bootstrap5-framework.component.html',\n styleUrls: ['./bootstrap5-framework.component.scss'],\n standalone: false\n})\nexport class Bootstrap5FrameworkComponent implements OnInit, OnChanges {\n frameworkInitialized = false;\n widgetOptions: any; // Options passed to child widget\n widgetLayoutNode: any; // layoutNode passed to child widget\n options: any; // Options used in this framework\n formControl: any = null;\n debugOutput: any = '';\n debug: any = '';\n parentArray: any = null;\n isOrderable = false;\n @Input() layoutNode: any;\n @Input() layoutIndex: number[];\n @Input() dataIndex: number[];\n\n constructor(\n public changeDetector: ChangeDetectorRef,\n public jsf: JsonSchemaFormService\n ) {\n }\n\n get isSingleCheck(): boolean {\n return this.layoutNode.type === 'checkbox' &&\n !this.options.fieldAddonLeft && !this.options.fieldAddonRight;\n }\n\n get showRemoveButton(): boolean {\n if (!this.options.removable || this.options.readonly ||\n this.layoutNode.type === '$ref'\n ) {\n return false;\n }\n if (this.layoutNode.recursiveReference) {\n return true;\n }\n if (!this.layoutNode.arrayItem || !this.parentArray) {\n return false;\n }\n // If array length <= minItems, don't allow removing any items\n return this.parentArray.items.length - 1 <= this.parentArray.options.minItems ? false :\n // For removable list items, allow removing any item\n this.layoutNode.arrayItemType === 'list' ? true :\n // For removable tuple items, only allow removing last item in list\n this.layoutIndex[this.layoutIndex.length - 1] === this.parentArray.items.length - 2;\n }\n\n ngOnInit() {\n this.initializeFramework();\n if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\n this.parentArray = this.jsf.getParentNode(this);\n if (this.parentArray) {\n this.isOrderable = this.layoutNode.arrayItemType === 'list' &&\n !this.options.readonly && this.parentArray.options.orderable;\n }\n }\n }\n\n ngOnChanges() {\n if (!this.frameworkInitialized) {\n this.initializeFramework();\n }\n }\n\n initializeFramework() {\n if (this.layoutNode) {\n this.options = cloneDeep(this.layoutNode.options);\n this.widgetLayoutNode = {\n ...this.layoutNode,\n options: cloneDeep(this.layoutNode.options)\n };\n this.widgetOptions = this.widgetLayoutNode.options;\n this.formControl = this.jsf.getFormControl(this);\n\n this.options.isInputWidget = inArray(this.layoutNode.type, [\n 'button', 'checkbox', 'checkboxes-inline', 'checkboxes', 'color',\n 'date', 'datetime-local', 'datetime', 'email', 'file', 'hidden',\n 'image', 'integer', 'month', 'number', 'password', 'radio',\n 'radiobuttons', 'radios-inline', 'radios', 'range', 'reset', 'search',\n 'select', 'submit', 'tel', 'text', 'textarea', 'time', 'url', 'week'\n ]);\n\n this.options.title = this.setTitle();\n\n this.options.htmlClass =\n addClasses(this.options.htmlClass, 'schema-form-' + this.layoutNode.type);\n this.options.htmlClass =\n this.layoutNode.type === 'array' ?\n addClasses(this.options.htmlClass, 'list-group') :\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\n addClasses(this.options.htmlClass, 'list-group-item') :\n // Bootstrap 5 dropped .form-group in favour of margin utilities.\n addClasses(this.options.htmlClass, 'mb-3');\n this.widgetOptions.htmlClass = '';\n this.options.labelHtmlClass =\n addClasses(this.options.labelHtmlClass, 'form-label');\n this.widgetOptions.activeClass =\n addClasses(this.widgetOptions.activeClass, 'active');\n this.options.fieldAddonLeft =\n this.options.fieldAddonLeft || this.options.prepend;\n this.options.fieldAddonRight =\n this.options.fieldAddonRight || this.options.append;\n\n // Add asterisk to titles if required\n if (this.options.title && this.layoutNode.type !== 'tab' &&\n !this.options.notitle && this.options.required &&\n !this.options.title.includes('*')\n ) {\n this.options.title += ' <strong class=\"text-danger\">*</strong>';\n }\n // Set miscelaneous styles and settings for each control type\n switch (this.layoutNode.type) {\n // Checkbox controls\n // CheckboxComponent renders no element carrying htmlClass, so the\n // single checkbox takes .form-check from the framework's own div.\n case 'checkbox':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass, 'form-check-label');\n break;\n case 'checkboxes':\n this.widgetOptions.htmlClass = addClasses(\n this.widgetOptions.htmlClass, 'form-check');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass, 'form-check-label');\n break;\n case 'checkboxes-inline':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass,\n 'form-check form-check-inline form-check-label');\n break;\n // Radio controls\n case 'radio':\n case 'radios':\n this.widgetOptions.htmlClass = addClasses(\n this.widgetOptions.htmlClass, 'form-check');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass, 'form-check-label');\n break;\n case 'radios-inline':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-check-input');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass,\n 'form-check form-check-inline form-check-label');\n break;\n // Button sets - checkboxbuttons and radiobuttons\n case 'checkboxbuttons':\n case 'radiobuttons':\n this.widgetOptions.htmlClass = addClasses(\n this.widgetOptions.htmlClass, 'btn-group');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass, 'btn');\n this.widgetOptions.itemLabelHtmlClass = addClasses(\n this.widgetOptions.itemLabelHtmlClass,\n this.options.style || 'btn-outline-primary');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'visually-hidden');\n break;\n // Single button controls\n case 'button':\n case 'submit':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'btn');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, this.options.style || 'btn-info');\n break;\n // Containers - arrays and fieldsets\n case 'array':\n case 'fieldset':\n case 'section':\n case 'conditional':\n case 'advancedfieldset':\n case 'authfieldset':\n case 'selectfieldset':\n case 'optionfieldset':\n this.options.messageLocation = 'top';\n break;\n case 'tabarray':\n case 'tabs':\n this.widgetOptions.htmlClass = addClasses(\n this.widgetOptions.htmlClass, 'tab-content');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'tab-pane');\n this.widgetOptions.labelHtmlClass = addClasses(\n this.widgetOptions.labelHtmlClass, 'nav nav-tabs');\n break;\n // 'Add' buttons - references\n case '$ref':\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'btn pull-right');\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, this.options.style || 'btn-default');\n this.options.icon = 'glyphicon glyphicon-plus';\n break;\n // Default - including regular inputs\n default:\n this.widgetOptions.fieldHtmlClass = addClasses(\n this.widgetOptions.fieldHtmlClass, 'form-control');\n }\n\n if (this.formControl) {\n this.updateHelpBlock(this.formControl.status);\n this.formControl.statusChanges.subscribe(status => this.updateHelpBlock(status));\n\n if (this.options.debug) {\n const vars: any[] = [];\n this.debugOutput = vars.map(thisVar => JSON.stringify(thisVar, null, 2)).join('\\n');\n }\n }\n this.frameworkInitialized = true;\n }\n\n }\n\n updateHelpBlock(status) {\n this.options.helpBlock = status === 'INVALID' &&\n this.options.enableErrorState && this.formControl.errors &&\n (this.formControl.dirty || this.options.feedbackOnRender) ?\n this.jsf.formatErrors(this.formControl.errors, this.options.validationMessages) :\n this.options.description || this.options.help || null;\n }\n\n setTitle(): string {\n switch (this.layoutNode.type) {\n case 'button':\n case 'checkbox':\n case 'section':\n case 'help':\n case 'msg':\n case 'submit':\n case 'message':\n case 'tabarray':\n case 'tabs':\n case '$ref':\n return null;\n case 'advancedfieldset':\n this.widgetOptions.expandable = true;\n this.widgetOptions.title = 'Advanced options';\n return null;\n case 'authfieldset':\n this.widgetOptions.expandable = true;\n this.widgetOptions.title = 'Authentication settings';\n return null;\n case 'fieldset':\n this.widgetOptions.title = this.options.title;\n return null;\n default:\n this.widgetOptions.title = null;\n return this.jsf.setItemTitle(this);\n }\n }\n\n removeItem() {\n this.jsf.removeItem(this);\n }\n}\n","<!--\n Bootstrap 5 replaced the has-error and has-success wrapper classes with\n is-invalid and is-valid on the control itself, so the state classes are bound\n to the field rather than to this container.\n-->\n<div [class]=\"options?.htmlClass || ''\">\n\n <button *ngIf=\"showRemoveButton\"\n class=\"float-end btn btn-outline-danger btn-sm\"\n type=\"button\"\n (click)=\"removeItem()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"options?.messageLocation === 'top'\">\n <p *ngIf=\"options?.helpBlock\"\n class=\"form-text\"\n [innerHTML]=\"options?.helpBlock\"></p>\n </div>\n\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n [attr.for]=\"'control' + layoutNode?._id\"\n [class]=\"options?.labelHtmlClass || ''\"\n [class.visually-hidden]=\"options?.notitle\"\n [innerHTML]=\"options?.title\"></label>\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n <strong class=\"text-danger\">*</strong> = required fields\n </p>\n <div\n [class.h-100]=\"true\"\n [class.mt-1]=\"true\"\n [class.form-check]=\"isSingleCheck\"\n [class.is-invalid]=\"!!options?.errorMessage\"\n [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\"\n >\n <div class=\"input-group-prepend\" *ngIf=\"options?.fieldAddonLeft\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\n </div>\n \n <select-widget-widget\n [layoutNode]=\"widgetLayoutNode\"\n [dataIndex]=\"dataIndex\"\n [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n <div class=\"input-group-append\" *ngIf=\"options?.fieldAddonRight\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonRight\"></span>\n </div>\n </div>\n\n <div *ngIf=\"formControl?.touched && options?.errorMessage\"\n class=\"invalid-feedback\"\n [innerHTML]=\"options?.errorMessage\"></div>\n\n <div *ngIf=\"options?.description && (!options?.showErrors || !options?.errorMessage)\"\n class=\"form-text text-muted\"\n [innerHTML]=\"options?.description\"></div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n <pre>{{debugOutput}}</pre>\n</div>\n","import {Injectable} from '@angular/core';\nimport {Framework} from '@ajsf/core';\nimport {Bootstrap5FrameworkComponent} from './bootstrap5-framework.component';\n\n// Bootstrap 5 Framework\n// https://github.com/ng-bootstrap/ng-bootstrap\n\n@Injectable()\nexport class Bootstrap5Framework extends Framework {\n name = 'bootstrap-5';\n\n framework = Bootstrap5FrameworkComponent;\n\n stylesheets = [\n '//cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css'\n ];\n\n // Bootstrap 5 dropped jQuery, and the bundle build already contains Popper,\n // so this is one script where Bootstrap 4 needed three.\n scripts = [\n '//cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js',\n ];\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n Framework,\n JsonSchemaFormService,\n WidgetLibraryService,\n FrameworkLibraryService,\n JsonSchemaFormModule,\n WidgetLibraryModule\n} from '@ajsf/core';\nimport {Bootstrap5Framework} from './bootstrap5.framework';\nimport {Bootstrap5FrameworkComponent} from './bootstrap5-framework.component';\n\n@NgModule({\n imports: [\n JsonSchemaFormModule,\n CommonModule,\n WidgetLibraryModule,\n ],\n declarations: [\n Bootstrap5FrameworkComponent,\n ],\n exports: [\n JsonSchemaFormModule,\n Bootstrap5FrameworkComponent,\n ],\n providers: [\n JsonSchemaFormService,\n FrameworkLibraryService,\n WidgetLibraryService,\n { provide: Framework, useClass: Bootstrap5Framework, multi: true },\n ]\n})\nexport class Bootstrap5FrameworkModule {\n}\n","/*\n * Public API Surface of @ajsf/bootstrap5\n */\n\nexport * from './lib/bootstrap5-framework.module';\nexport * from './lib/bootstrap5-framework.component';\nexport * from './lib/bootstrap5.framework';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;AASA;;;AAGG;MAQU,4BAA4B,CAAA;IAcvC,WAAA,CACS,cAAiC,EACjC,GAA0B,EAAA;QAD1B,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,GAAG,GAAH,GAAG;QAfZ,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAI5B,IAAA,CAAA,WAAW,GAAQ,IAAI;QACvB,IAAA,CAAA,WAAW,GAAQ,EAAE;QACrB,IAAA,CAAA,KAAK,GAAQ,EAAE;QACf,IAAA,CAAA,WAAW,GAAQ,IAAI;QACvB,IAAA,CAAA,WAAW,GAAG,KAAK;IASnB;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU;AACxC,YAAA,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;IACjE;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;AAClD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,EAC/B;AACA,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;AACtC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnD,YAAA,OAAO,KAAK;QACd;;QAEA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK;;YAEnF,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,MAAM,GAAG,IAAI;;gBAE7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IACzF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE;YAChE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;AAC/C,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,MAAM;AACzD,oBAAA,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS;YAChE;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,IAAI,CAAC,gBAAgB,GAAG;gBACtB,GAAG,IAAI,CAAC,UAAU;gBAClB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO;aAC3C;YACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO;YAClD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC;AAEhD,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACzD,gBAAA,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,OAAO;gBAChE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;gBAC/D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO;gBAC1D,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;AACrE,gBAAA,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;AAC/D,aAAA,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAEpC,IAAI,CAAC,OAAO,CAAC,SAAS;AACpB,gBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC3E,IAAI,CAAC,OAAO,CAAC,SAAS;AACpB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO;oBAC9B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC;AAChD,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM;wBAC1D,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC;;wBAErD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;AAChD,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,cAAc;gBACzB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,WAAW;gBAC5B,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC;YACtD,IAAI,CAAC,OAAO,CAAC,cAAc;gBACzB,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;YACrD,IAAI,CAAC,OAAO,CAAC,eAAe;gBAC1B,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;;AAGrD,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK;gBACtD,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAC9C,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EACjC;AACA,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,yCAAyC;YACjE;;AAEA,YAAA,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI;;;;AAI1B,gBAAA,KAAK,UAAU;AACb,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,kBAAkB,CAAC;AACxD,oBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,UAAU,CAChD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;oBAC5D;AACF,gBAAA,KAAK,YAAY;AACf,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CACvC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC;AAC7C,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,kBAAkB,CAAC;AACxD,oBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,UAAU,CAChD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;oBAC5D;AACF,gBAAA,KAAK,mBAAmB;AACtB,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,kBAAkB,CAAC;AACxD,oBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,UAAU,CAChD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EACrC,+CAA+C,CAAC;oBAClD;;AAEF,gBAAA,KAAK,OAAO;AACZ,gBAAA,KAAK,QAAQ;AACX,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CACvC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC;AAC7C,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,kBAAkB,CAAC;AACxD,oBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,UAAU,CAChD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;oBAC5D;AACF,gBAAA,KAAK,eAAe;AAClB,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,kBAAkB,CAAC;AACxD,oBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,UAAU,CAChD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EACrC,+CAA+C,CAAC;oBAClD;;AAEF,gBAAA,KAAK,iBAAiB;AACtB,gBAAA,KAAK,cAAc;AACjB,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CACvC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC;AAC5C,oBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,UAAU,CAChD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,KAAK,CAAC;oBAC/C,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,UAAU,CAChD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EACrC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,qBAAqB,CAAC;AAC9C,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,iBAAiB,CAAC;oBACvD;;AAEF,gBAAA,KAAK,QAAQ;AACb,gBAAA,KAAK,QAAQ;AACX,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC;oBAC3C,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC;oBACtE;;AAEF,gBAAA,KAAK,OAAO;AACZ,gBAAA,KAAK,UAAU;AACf,gBAAA,KAAK,SAAS;AACd,gBAAA,KAAK,aAAa;AAClB,gBAAA,KAAK,kBAAkB;AACvB,gBAAA,KAAK,cAAc;AACnB,gBAAA,KAAK,gBAAgB;AACrB,gBAAA,KAAK,gBAAgB;AACnB,oBAAA,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK;oBACpC;AACF,gBAAA,KAAK,UAAU;AACf,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CACvC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC;AAC9C,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,UAAU,CAAC;AAChD,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC;oBACpD;;AAEF,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC;oBACtD,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;AACzE,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,0BAA0B;oBAC9C;;AAEF,gBAAA;AACE,oBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,UAAU,CAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC;;AAGxD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC7C,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAEhF,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;oBACtB,MAAM,IAAI,GAAU,EAAE;oBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrF;YACF;AACA,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QAClC;IAEF;AAEA,IAAA,eAAe,CAAC,MAAM,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,KAAK,SAAS;YAC7C,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM;AACxD,aAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC/E,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI;IACzD;IAEA,QAAQ,GAAA;AACN,QAAA,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI;AAC1B,YAAA,KAAK,QAAQ;AACb,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,QAAQ;AACb,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,kBAAkB;AACrB,gBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI;AACpC,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,kBAAkB;AAC7C,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,cAAc;AACjB,gBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI;AACpC,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,yBAAyB;AACpD,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,UAAU;gBACb,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AAC7C,gBAAA,OAAO,IAAI;AACb,YAAA;AACE,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;gBAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;;IAExC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;IAC3B;+GApQW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,iMCpBzC,iyEA4DA,EAAA,MAAA,EAAA,CAAA,qIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,WAAA,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,CAAA,EAAA,CAAA,CAAA;;4FDxCa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,QAAA,EAAA,iyEAAA,EAAA,MAAA,EAAA,CAAA,qIAAA,CAAA,EAAA;0HAYV,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;AE5BH;AACA;AAGM,MAAO,mBAAoB,SAAQ,SAAS,CAAA;AADlD,IAAA,WAAA,GAAA;;QAEE,IAAA,CAAA,IAAI,GAAG,aAAa;QAEpB,IAAA,CAAA,SAAS,GAAG,4BAA4B;AAExC,QAAA,IAAA,CAAA,WAAW,GAAG;YACZ;SACD;;;AAID,QAAA,IAAA,CAAA,OAAO,GAAG;YACR,wEAAwE;SACzE;AACF,IAAA;+GAdY,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MC0BY,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAzB,yBAAyB,EAAA,YAAA,EAAA,CAb9B,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAL5B,oBAAoB;YACpB,YAAY;AACZ,YAAA,mBAAmB,aAMnB,oBAAoB;YACpB,4BAA4B,CAAA,EAAA,CAAA,CAAA;AASvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,SAAA,EAPvB;YACP,qBAAqB;YACrB,uBAAuB;YACvB,oBAAoB;YACpB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE;AACrE,SAAA,EAAA,OAAA,EAAA,CAhBG,oBAAoB;YACpB,YAAY;AACZ,YAAA,mBAAmB,EAMnB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;4FAUf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBApBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,oBAAoB;wBACpB,YAAY;wBACZ,mBAAmB;AACtB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,4BAA4B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,oBAAoB;wBACpB,4BAA4B;AAC/B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,qBAAqB;wBACrB,uBAAuB;wBACvB,oBAAoB;wBACpB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE;AACrE;AACJ,iBAAA;;;AChCD;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@ajsf/bootstrap5",
3
- "version": "18.2.0",
3
+ "version": "19.0.0-rc.0",
4
4
  "description": "Angular JSON Schema Form builder using Bootstrap 5 UI",
5
5
  "author": "https://github.com/hamzahamidi/ajsf/graphs/contributors",
6
6
  "keywords": [
7
7
  "Angular",
8
8
  "ng",
9
- "Angular18",
10
- "Angular 18",
11
- "ng18",
9
+ "Angular19",
10
+ "Angular 19",
11
+ "ng19",
12
12
  "JSON Schema",
13
13
  "form",
14
14
  "forms",
@@ -29,12 +29,12 @@
29
29
  "funding": "https://github.com/sponsors/hamzahamidi",
30
30
  "private": false,
31
31
  "dependencies": {
32
- "@ajsf/core": "^18.2.0",
32
+ "@ajsf/core": "19.0.0-rc.0",
33
33
  "tslib": "^2.0.0"
34
34
  },
35
35
  "peerDependencies": {
36
- "@angular/common": "^18.0.0",
37
- "@angular/core": "^18.0.0"
36
+ "@angular/common": "^19.0.0",
37
+ "@angular/core": "^19.0.0"
38
38
  },
39
39
  "module": "fesm2022/ajsf-bootstrap5.mjs",
40
40
  "typings": "index.d.ts",
@@ -44,8 +44,6 @@
44
44
  },
45
45
  ".": {
46
46
  "types": "./index.d.ts",
47
- "esm2022": "./esm2022/ajsf-bootstrap5.mjs",
48
- "esm": "./esm2022/ajsf-bootstrap5.mjs",
49
47
  "default": "./fesm2022/ajsf-bootstrap5.mjs"
50
48
  }
51
49
  },
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWpzZi1ib290c3RyYXA1LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWpzZi1ib290c3RyYXA1L3NyYy9hanNmLWJvb3RzdHJhcDUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -1,232 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { addClasses, cloneDeep, inArray } from '@ajsf/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@ajsf/core";
5
- import * as i2 from "@angular/common";
6
- /**
7
- * Bootstrap 5 framework for Angular JSON Schema Form.
8
- *
9
- */
10
- export class Bootstrap5FrameworkComponent {
11
- constructor(changeDetector, jsf) {
12
- this.changeDetector = changeDetector;
13
- this.jsf = jsf;
14
- this.frameworkInitialized = false;
15
- this.formControl = null;
16
- this.debugOutput = '';
17
- this.debug = '';
18
- this.parentArray = null;
19
- this.isOrderable = false;
20
- }
21
- get isSingleCheck() {
22
- return this.layoutNode.type === 'checkbox' &&
23
- !this.options.fieldAddonLeft && !this.options.fieldAddonRight;
24
- }
25
- get showRemoveButton() {
26
- if (!this.options.removable || this.options.readonly ||
27
- this.layoutNode.type === '$ref') {
28
- return false;
29
- }
30
- if (this.layoutNode.recursiveReference) {
31
- return true;
32
- }
33
- if (!this.layoutNode.arrayItem || !this.parentArray) {
34
- return false;
35
- }
36
- // If array length <= minItems, don't allow removing any items
37
- return this.parentArray.items.length - 1 <= this.parentArray.options.minItems ? false :
38
- // For removable list items, allow removing any item
39
- this.layoutNode.arrayItemType === 'list' ? true :
40
- // For removable tuple items, only allow removing last item in list
41
- this.layoutIndex[this.layoutIndex.length - 1] === this.parentArray.items.length - 2;
42
- }
43
- ngOnInit() {
44
- this.initializeFramework();
45
- if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {
46
- this.parentArray = this.jsf.getParentNode(this);
47
- if (this.parentArray) {
48
- this.isOrderable = this.layoutNode.arrayItemType === 'list' &&
49
- !this.options.readonly && this.parentArray.options.orderable;
50
- }
51
- }
52
- }
53
- ngOnChanges() {
54
- if (!this.frameworkInitialized) {
55
- this.initializeFramework();
56
- }
57
- }
58
- initializeFramework() {
59
- if (this.layoutNode) {
60
- this.options = cloneDeep(this.layoutNode.options);
61
- this.widgetLayoutNode = {
62
- ...this.layoutNode,
63
- options: cloneDeep(this.layoutNode.options)
64
- };
65
- this.widgetOptions = this.widgetLayoutNode.options;
66
- this.formControl = this.jsf.getFormControl(this);
67
- this.options.isInputWidget = inArray(this.layoutNode.type, [
68
- 'button', 'checkbox', 'checkboxes-inline', 'checkboxes', 'color',
69
- 'date', 'datetime-local', 'datetime', 'email', 'file', 'hidden',
70
- 'image', 'integer', 'month', 'number', 'password', 'radio',
71
- 'radiobuttons', 'radios-inline', 'radios', 'range', 'reset', 'search',
72
- 'select', 'submit', 'tel', 'text', 'textarea', 'time', 'url', 'week'
73
- ]);
74
- this.options.title = this.setTitle();
75
- this.options.htmlClass =
76
- addClasses(this.options.htmlClass, 'schema-form-' + this.layoutNode.type);
77
- this.options.htmlClass =
78
- this.layoutNode.type === 'array' ?
79
- addClasses(this.options.htmlClass, 'list-group') :
80
- this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?
81
- addClasses(this.options.htmlClass, 'list-group-item') :
82
- // Bootstrap 5 dropped .form-group in favour of margin utilities.
83
- addClasses(this.options.htmlClass, 'mb-3');
84
- this.widgetOptions.htmlClass = '';
85
- this.options.labelHtmlClass =
86
- addClasses(this.options.labelHtmlClass, 'form-label');
87
- this.widgetOptions.activeClass =
88
- addClasses(this.widgetOptions.activeClass, 'active');
89
- this.options.fieldAddonLeft =
90
- this.options.fieldAddonLeft || this.options.prepend;
91
- this.options.fieldAddonRight =
92
- this.options.fieldAddonRight || this.options.append;
93
- // Add asterisk to titles if required
94
- if (this.options.title && this.layoutNode.type !== 'tab' &&
95
- !this.options.notitle && this.options.required &&
96
- !this.options.title.includes('*')) {
97
- this.options.title += ' <strong class="text-danger">*</strong>';
98
- }
99
- // Set miscelaneous styles and settings for each control type
100
- switch (this.layoutNode.type) {
101
- // Checkbox controls
102
- // CheckboxComponent renders no element carrying htmlClass, so the
103
- // single checkbox takes .form-check from the framework's own div.
104
- case 'checkbox':
105
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'form-check-input');
106
- this.widgetOptions.itemLabelHtmlClass = addClasses(this.widgetOptions.itemLabelHtmlClass, 'form-check-label');
107
- break;
108
- case 'checkboxes':
109
- this.widgetOptions.htmlClass = addClasses(this.widgetOptions.htmlClass, 'form-check');
110
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'form-check-input');
111
- this.widgetOptions.itemLabelHtmlClass = addClasses(this.widgetOptions.itemLabelHtmlClass, 'form-check-label');
112
- break;
113
- case 'checkboxes-inline':
114
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'form-check-input');
115
- this.widgetOptions.itemLabelHtmlClass = addClasses(this.widgetOptions.itemLabelHtmlClass, 'form-check form-check-inline form-check-label');
116
- break;
117
- // Radio controls
118
- case 'radio':
119
- case 'radios':
120
- this.widgetOptions.htmlClass = addClasses(this.widgetOptions.htmlClass, 'form-check');
121
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'form-check-input');
122
- this.widgetOptions.itemLabelHtmlClass = addClasses(this.widgetOptions.itemLabelHtmlClass, 'form-check-label');
123
- break;
124
- case 'radios-inline':
125
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'form-check-input');
126
- this.widgetOptions.itemLabelHtmlClass = addClasses(this.widgetOptions.itemLabelHtmlClass, 'form-check form-check-inline form-check-label');
127
- break;
128
- // Button sets - checkboxbuttons and radiobuttons
129
- case 'checkboxbuttons':
130
- case 'radiobuttons':
131
- this.widgetOptions.htmlClass = addClasses(this.widgetOptions.htmlClass, 'btn-group');
132
- this.widgetOptions.itemLabelHtmlClass = addClasses(this.widgetOptions.itemLabelHtmlClass, 'btn');
133
- this.widgetOptions.itemLabelHtmlClass = addClasses(this.widgetOptions.itemLabelHtmlClass, this.options.style || 'btn-outline-primary');
134
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'visually-hidden');
135
- break;
136
- // Single button controls
137
- case 'button':
138
- case 'submit':
139
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'btn');
140
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, this.options.style || 'btn-info');
141
- break;
142
- // Containers - arrays and fieldsets
143
- case 'array':
144
- case 'fieldset':
145
- case 'section':
146
- case 'conditional':
147
- case 'advancedfieldset':
148
- case 'authfieldset':
149
- case 'selectfieldset':
150
- case 'optionfieldset':
151
- this.options.messageLocation = 'top';
152
- break;
153
- case 'tabarray':
154
- case 'tabs':
155
- this.widgetOptions.htmlClass = addClasses(this.widgetOptions.htmlClass, 'tab-content');
156
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'tab-pane');
157
- this.widgetOptions.labelHtmlClass = addClasses(this.widgetOptions.labelHtmlClass, 'nav nav-tabs');
158
- break;
159
- // 'Add' buttons - references
160
- case '$ref':
161
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'btn pull-right');
162
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, this.options.style || 'btn-default');
163
- this.options.icon = 'glyphicon glyphicon-plus';
164
- break;
165
- // Default - including regular inputs
166
- default:
167
- this.widgetOptions.fieldHtmlClass = addClasses(this.widgetOptions.fieldHtmlClass, 'form-control');
168
- }
169
- if (this.formControl) {
170
- this.updateHelpBlock(this.formControl.status);
171
- this.formControl.statusChanges.subscribe(status => this.updateHelpBlock(status));
172
- if (this.options.debug) {
173
- const vars = [];
174
- this.debugOutput = vars.map(thisVar => JSON.stringify(thisVar, null, 2)).join('\n');
175
- }
176
- }
177
- this.frameworkInitialized = true;
178
- }
179
- }
180
- updateHelpBlock(status) {
181
- this.options.helpBlock = status === 'INVALID' &&
182
- this.options.enableErrorState && this.formControl.errors &&
183
- (this.formControl.dirty || this.options.feedbackOnRender) ?
184
- this.jsf.formatErrors(this.formControl.errors, this.options.validationMessages) :
185
- this.options.description || this.options.help || null;
186
- }
187
- setTitle() {
188
- switch (this.layoutNode.type) {
189
- case 'button':
190
- case 'checkbox':
191
- case 'section':
192
- case 'help':
193
- case 'msg':
194
- case 'submit':
195
- case 'message':
196
- case 'tabarray':
197
- case 'tabs':
198
- case '$ref':
199
- return null;
200
- case 'advancedfieldset':
201
- this.widgetOptions.expandable = true;
202
- this.widgetOptions.title = 'Advanced options';
203
- return null;
204
- case 'authfieldset':
205
- this.widgetOptions.expandable = true;
206
- this.widgetOptions.title = 'Authentication settings';
207
- return null;
208
- case 'fieldset':
209
- this.widgetOptions.title = this.options.title;
210
- return null;
211
- default:
212
- this.widgetOptions.title = null;
213
- return this.jsf.setItemTitle(this);
214
- }
215
- }
216
- removeItem() {
217
- this.jsf.removeItem(this);
218
- }
219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
220
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: Bootstrap5FrameworkComponent, selector: "bootstrap-5-framework", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, usesOnChanges: true, ngImport: i0, template: "<!--\n Bootstrap 5 replaced the has-error and has-success wrapper classes with\n is-invalid and is-valid on the control itself, so the state classes are bound\n to the field rather than to this container.\n-->\n<div [class]=\"options?.htmlClass || ''\">\n\n <button *ngIf=\"showRemoveButton\"\n class=\"float-end btn btn-outline-danger btn-sm\"\n type=\"button\"\n (click)=\"removeItem()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"options?.messageLocation === 'top'\">\n <p *ngIf=\"options?.helpBlock\"\n class=\"form-text\"\n [innerHTML]=\"options?.helpBlock\"></p>\n </div>\n\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n [attr.for]=\"'control' + layoutNode?._id\"\n [class]=\"options?.labelHtmlClass || ''\"\n [class.visually-hidden]=\"options?.notitle\"\n [innerHTML]=\"options?.title\"></label>\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n <strong class=\"text-danger\">*</strong> = required fields\n </p>\n <div\n [class.h-100]=\"true\"\n [class.mt-1]=\"true\"\n [class.form-check]=\"isSingleCheck\"\n [class.is-invalid]=\"!!options?.errorMessage\"\n [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\"\n >\n <div class=\"input-group-prepend\" *ngIf=\"options?.fieldAddonLeft\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\n </div>\n \n <select-widget-widget\n [layoutNode]=\"widgetLayoutNode\"\n [dataIndex]=\"dataIndex\"\n [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n <div class=\"input-group-append\" *ngIf=\"options?.fieldAddonRight\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonRight\"></span>\n </div>\n </div>\n\n <div *ngIf=\"formControl?.touched && options?.errorMessage\"\n class=\"invalid-feedback\"\n [innerHTML]=\"options?.errorMessage\"></div>\n\n <div *ngIf=\"options?.description && (!options?.showErrors || !options?.errorMessage)\"\n class=\"form-text text-muted\"\n [innerHTML]=\"options?.description\"></div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n <pre>{{debugOutput}}</pre>\n</div>\n", styles: [":host ::ng-deep .list-group-item .form-control-feedback{top:40px}:host ::ng-deep .ng-invalid.ng-touched{border:1px solid #f44336}\n"], dependencies: [{ kind: "component", type: i1.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
221
- }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkComponent, decorators: [{
223
- type: Component,
224
- args: [{ selector: 'bootstrap-5-framework', template: "<!--\n Bootstrap 5 replaced the has-error and has-success wrapper classes with\n is-invalid and is-valid on the control itself, so the state classes are bound\n to the field rather than to this container.\n-->\n<div [class]=\"options?.htmlClass || ''\">\n\n <button *ngIf=\"showRemoveButton\"\n class=\"float-end btn btn-outline-danger btn-sm\"\n type=\"button\"\n (click)=\"removeItem()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"options?.messageLocation === 'top'\">\n <p *ngIf=\"options?.helpBlock\"\n class=\"form-text\"\n [innerHTML]=\"options?.helpBlock\"></p>\n </div>\n\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n [attr.for]=\"'control' + layoutNode?._id\"\n [class]=\"options?.labelHtmlClass || ''\"\n [class.visually-hidden]=\"options?.notitle\"\n [innerHTML]=\"options?.title\"></label>\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n <strong class=\"text-danger\">*</strong> = required fields\n </p>\n <div\n [class.h-100]=\"true\"\n [class.mt-1]=\"true\"\n [class.form-check]=\"isSingleCheck\"\n [class.is-invalid]=\"!!options?.errorMessage\"\n [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\"\n >\n <div class=\"input-group-prepend\" *ngIf=\"options?.fieldAddonLeft\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\n </div>\n \n <select-widget-widget\n [layoutNode]=\"widgetLayoutNode\"\n [dataIndex]=\"dataIndex\"\n [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n <div class=\"input-group-append\" *ngIf=\"options?.fieldAddonRight\">\n <span class=\"input-group-text\" [innerHTML]=\"options?.fieldAddonRight\"></span>\n </div>\n </div>\n\n <div *ngIf=\"formControl?.touched && options?.errorMessage\"\n class=\"invalid-feedback\"\n [innerHTML]=\"options?.errorMessage\"></div>\n\n <div *ngIf=\"options?.description && (!options?.showErrors || !options?.errorMessage)\"\n class=\"form-text text-muted\"\n [innerHTML]=\"options?.description\"></div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n <pre>{{debugOutput}}</pre>\n</div>\n", styles: [":host ::ng-deep .list-group-item .form-control-feedback{top:40px}:host ::ng-deep .ng-invalid.ng-touched{border:1px solid #f44336}\n"] }]
225
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.JsonSchemaFormService }], propDecorators: { layoutNode: [{
226
- type: Input
227
- }], layoutIndex: [{
228
- type: Input
229
- }], dataIndex: [{
230
- type: Input
231
- }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwNS1mcmFtZXdvcmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWpzZi1ib290c3RyYXA1L3NyYy9saWIvYm9vdHN0cmFwNS1mcmFtZXdvcmsuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWpzZi1ib290c3RyYXA1L3NyYy9saWIvYm9vdHN0cmFwNS1mcmFtZXdvcmsuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQzs7OztBQUVqRjs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sNEJBQTRCO0lBY3ZDLFlBQ1MsY0FBaUMsRUFDakMsR0FBMEI7UUFEMUIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFFBQUcsR0FBSCxHQUFHLENBQXVCO1FBZm5DLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUk3QixnQkFBVyxHQUFRLElBQUksQ0FBQztRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBU3BCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFVBQVU7WUFDeEMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxD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Q0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7K0dBcFFVLDRCQUE0QjttR0FBNUIsNEJBQTRCLDRLQ25CekMsaXlFQTREQTs7NEZEekNhLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFFRSx1QkFBdUI7MEhBY3hCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtKc29uU2NoZW1hRm9ybVNlcnZpY2UsIGFkZENsYXNzZXMsIGNsb25lRGVlcCwgaW5BcnJheX0gZnJvbSAnQGFqc2YvY29yZSc7XG5cbi8qKlxuICogQm9vdHN0cmFwIDUgZnJhbWV3b3JrIGZvciBBbmd1bGFyIEpTT04gU2NoZW1hIEZvcm0uXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2Jvb3RzdHJhcC01LWZyYW1ld29yaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ib290c3RyYXA1LWZyYW1ld29yay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jvb3RzdHJhcDUtZnJhbWV3b3JrLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJvb3RzdHJhcDVGcmFtZXdvcmtDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIGZyYW1ld29ya0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHdpZGdldE9wdGlvbnM6IGFueTsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gY2hpbGQgd2lkZ2V0XG4gIHdpZGdldExheW91dE5vZGU6IGFueTsgLy8gbGF5b3V0Tm9kZSBwYXNzZWQgdG8gY2hpbGQgd2lkZ2V0XG4gIG9wdGlvbnM6IGFueTsgLy8gT3B0aW9ucyB1c2VkIGluIHRoaXMgZnJhbWV3b3JrXG4gIGZvcm1Db250cm9sOiBhbnkgPSBudWxsO1xuICBkZWJ1Z091dHB1dDogYW55ID0gJyc7XG4gIGRlYnVnOiBhbnkgPSAnJztcbiAgcGFyZW50QXJyYXk6IGFueSA9IG51bGw7XG4gIGlzT3JkZXJhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxheW91dE5vZGU6IGFueTtcbiAgQElucHV0KCkgbGF5b3V0SW5kZXg6IG51bWJlcltdO1xuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIGpzZjogSnNvblNjaGVtYUZvcm1TZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgZ2V0IGlzU2luZ2xlQ2hlY2soKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0Tm9kZS50eXBlID09PSAnY2hlY2tib3gnICYmXG4gICAgICAhdGhpcy5vcHRpb25zLmZpZWxkQWRkb25MZWZ0ICYmICF0aGlzLm9wdGlvbnMuZmllbGRBZGRvblJpZ2h0O1xuICB9XG5cbiAgZ2V0IHNob3dSZW1vdmVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucmVtb3ZhYmxlIHx8IHRoaXMub3B0aW9ucy5yZWFkb25seSB8fFxuICAgICAgdGhpcy5sYXlvdXROb2RlLnR5cGUgPT09ICckcmVmJ1xuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYXlvdXROb2RlLnJlY3Vyc2l2ZVJlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghdGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbSB8fCAhdGhpcy5wYXJlbnRBcnJheSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBJZiBhcnJheSBsZW5ndGggPD0gbWluSXRlbXMsIGRvbid0IGFsbG93IHJlbW92aW5nIGFueSBpdGVtc1xuICAgIHJldHVybiB0aGlzLnBhcmVudEFycmF5Lml0ZW1zLmxlbmd0aCAtIDEgPD0gdGhpcy5wYXJlbnRBcnJheS5vcHRpb25zLm1pbkl0ZW1zID8gZmFsc2UgOlxuICAgICAgLy8gRm9yIHJlbW92YWJsZSBsaXN0IGl0ZW1zLCBhbGxvdyByZW1vdmluZyBhbnkgaXRlbVxuICAgICAgdGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbVR5cGUgPT09ICdsaXN0JyA/IHRydWUgOlxuICAgICAgICAvLyBGb3IgcmVtb3ZhYmxlIHR1cGxlIGl0ZW1zLCBvbmx5IGFsbG93IHJlbW92aW5nIGxhc3QgaXRlbSBpbiBsaXN0XG4gICAgICAgIHRoaXMubGF5b3V0SW5kZXhbdGhpcy5sYXlvdXRJbmRleC5sZW5ndGggLSAxXSA9PT0gdGhpcy5wYXJlbnRBcnJheS5pdGVtcy5sZW5ndGggLSAyO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplRnJhbWV3b3JrKCk7XG4gICAgaWYgKHRoaXMubGF5b3V0Tm9kZS5hcnJheUl0ZW0gJiYgdGhpcy5sYXlvdXROb2RlLnR5cGUgIT09ICckcmVmJykge1xuICAgICAgdGhpcy5wYXJlbnRBcnJheSA9IHRoaXMuanNmLmdldFBhcmVudE5vZGUodGhpcyk7XG4gICAgICBpZiAodGhpcy5wYXJlbnRBcnJheSkge1xuICAgICAgICB0aGlzLmlzT3JkZXJhYmxlID0gdGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbVR5cGUgPT09ICdsaXN0JyAmJlxuICAgICAgICAgICF0aGlzLm9wdGlvbnMucmVhZG9ubHkgJiYgdGhpcy5wYXJlbnRBcnJheS5vcHRpb25zLm9yZGVyYWJsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAoIXRoaXMuZnJhbWV3b3JrSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZyYW1ld29yaygpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVGcmFtZXdvcmsoKSB7XG4gICAgaWYgKHRoaXMubGF5b3V0Tm9kZSkge1xuICAgICAgdGhpcy5vcHRpb25zID0gY2xvbmVEZWVwKHRoaXMubGF5b3V0Tm9kZS5vcHRpb25zKTtcbiAgICAgIHRoaXMud2lkZ2V0TGF5b3V0Tm9kZSA9IHtcbiAgICAgICAgLi4udGhpcy5sYXlvdXROb2RlLFxuICAgICAgICBvcHRpb25zOiBjbG9uZURlZXAodGhpcy5sYXlvdXROb2RlLm9wdGlvbnMpXG4gICAgICB9O1xuICAgICAgdGhpcy53aWRnZXRPcHRpb25zID0gdGhpcy53aWRnZXRMYXlvdXROb2RlLm9wdGlvbnM7XG4gICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5qc2YuZ2V0Rm9ybUNvbnRyb2wodGhpcyk7XG5cbiAgICAgIHRoaXMub3B0aW9ucy5pc0lucHV0V2lkZ2V0ID0gaW5BcnJheSh0aGlzLmxheW91dE5vZGUudHlwZSwgW1xuICAgICAgICAnYnV0dG9uJywgJ2NoZWNrYm94JywgJ2NoZWNrYm94ZXMtaW5saW5lJywgJ2NoZWNrYm94ZXMnLCAnY29sb3InLFxuICAgICAgICAnZGF0ZScsICdkYXRldGltZS1sb2NhbCcsICdkYXRldGltZScsICdlbWFpbCcsICdmaWxlJywgJ2hpZGRlbicsXG4gICAgICAgICdpbWFnZScsICdpbnRlZ2VyJywgJ21vbnRoJywgJ251bWJlcicsICdwYXNzd29yZCcsICdyYWRpbycsXG4gICAgICAgICdyYWRpb2J1dHRvbnMnLCAncmFkaW9zLWlubGluZScsICdyYWRpb3MnLCAncmFuZ2UnLCAncmVzZXQnLCAnc2VhcmNoJyxcbiAgICAgICAgJ3NlbGVjdCcsICdzdWJtaXQnLCAndGVsJywgJ3RleHQnLCAndGV4dGFyZWEnLCAndGltZScsICd1cmwnLCAnd2VlaydcbiAgICAgIF0pO1xuXG4gICAgICB0aGlzLm9wdGlvbnMudGl0bGUgPSB0aGlzLnNldFRpdGxlKCk7XG5cbiAgICAgIHRoaXMub3B0aW9ucy5odG1sQ2xhc3MgPVxuICAgICAgICBhZGRDbGFzc2VzKHRoaXMub3B0aW9ucy5odG1sQ2xhc3MsICdzY2hlbWEtZm9ybS0nICsgdGhpcy5sYXlvdXROb2RlLnR5cGUpO1xuICAgICAgdGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9XG4gICAgICAgIHRoaXMubGF5b3V0Tm9kZS50eXBlID09PSAnYXJyYXknID9cbiAgICAgICAgICBhZGRDbGFzc2VzKHRoaXMub3B0aW9ucy5odG1sQ2xhc3MsICdsaXN0LWdyb3VwJykgOlxuICAgICAgICAgIHRoaXMubGF5b3V0Tm9kZS5hcnJheUl0ZW0gJiYgdGhpcy5sYXlvdXROb2RlLnR5cGUgIT09ICckcmVmJyA/XG4gICAgICAgICAgICBhZGRDbGFzc2VzKHRoaXMub3B0aW9ucy5odG1sQ2xhc3MsICdsaXN0LWdyb3VwLWl0ZW0nKSA6XG4gICAgICAgICAgICAvLyBCb290c3RyYXAgNSBkcm9wcGVkIC5mb3JtLWdyb3VwIGluIGZhdm91ciBvZiBtYXJnaW4gdXRpbGl0aWVzLlxuICAgICAgICAgICAgYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCAnbWItMycpO1xuICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmh0bWxDbGFzcyA9ICcnO1xuICAgICAgdGhpcy5vcHRpb25zLmxhYmVsSHRtbENsYXNzID1cbiAgICAgICAgYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMubGFiZWxIdG1sQ2xhc3MsICdmb3JtLWxhYmVsJyk7XG4gICAgICB0aGlzLndpZGdldE9wdGlvbnMuYWN0aXZlQ2xhc3MgPVxuICAgICAgICBhZGRDbGFzc2VzKHRoaXMud2lkZ2V0T3B0aW9ucy5hY3RpdmVDbGFzcywgJ2FjdGl2ZScpO1xuICAgICAgdGhpcy5vcHRpb25zLmZpZWxkQWRkb25MZWZ0ID1cbiAgICAgICAgdGhpcy5vcHRpb25zLmZpZWxkQWRkb25MZWZ0IHx8IHRoaXMub3B0aW9ucy5wcmVwZW5kO1xuICAgICAgdGhpcy5vcHRpb25zLmZpZWxkQWRkb25SaWdodCA9XG4gICAgICAgIHRoaXMub3B0aW9ucy5maWVsZEFkZG9uUmlnaHQgfHwgdGhpcy5vcHRpb25zLmFwcGVuZDtcblxuICAgICAgLy8gQWRkIGFzdGVyaXNrIHRvIHRpdGxlcyBpZiByZXF1aXJlZFxuICAgICAgaWYgKHRoaXMub3B0aW9ucy50aXRsZSAmJiB0aGlzLmxheW91dE5vZGUudHlwZSAhPT0gJ3RhYicgJiZcbiAgICAgICAgIXRoaXMub3B0aW9ucy5ub3RpdGxlICYmIHRoaXMub3B0aW9ucy5yZXF1aXJlZCAmJlxuICAgICAgICAhdGhpcy5vcHRpb25zLnRpdGxlLmluY2x1ZGVzKCcqJylcbiAgICAgICkge1xuICAgICAgICB0aGlzLm9wdGlvbnMudGl0bGUgKz0gJyA8c3Ryb25nIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zdHJvbmc+JztcbiAgICAgIH1cbiAgICAgIC8vIFNldCBtaXNjZWxhbmVvdXMgc3R5bGVzIGFuZCBzZXR0aW5ncyBmb3IgZWFjaCBjb250cm9sIHR5cGVcbiAgICAgIHN3aXRjaCAodGhpcy5sYXlvdXROb2RlLnR5cGUpIHtcbiAgICAgICAgLy8gQ2hlY2tib3ggY29udHJvbHNcbiAgICAgICAgLy8gQ2hlY2tib3hDb21wb25lbnQgcmVuZGVycyBubyBlbGVtZW50IGNhcnJ5aW5nIGh0bWxDbGFzcywgc28gdGhlXG4gICAgICAgIC8vIHNpbmdsZSBjaGVja2JveCB0YWtlcyAuZm9ybS1jaGVjayBmcm9tIHRoZSBmcmFtZXdvcmsncyBvd24gZGl2LlxuICAgICAgICBjYXNlICdjaGVja2JveCc6XG4gICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmZpZWxkSHRtbENsYXNzID0gYWRkQ2xhc3NlcyhcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5maWVsZEh0bWxDbGFzcywgJ2Zvcm0tY2hlY2staW5wdXQnKTtcbiAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuaXRlbUxhYmVsSHRtbENsYXNzID0gYWRkQ2xhc3NlcyhcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5pdGVtTGFiZWxIdG1sQ2xhc3MsICdmb3JtLWNoZWNrLWxhYmVsJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NoZWNrYm94ZXMnOlxuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5odG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmh0bWxDbGFzcywgJ2Zvcm0tY2hlY2snKTtcbiAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmZpZWxkSHRtbENsYXNzLCAnZm9ybS1jaGVjay1pbnB1dCcpO1xuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5pdGVtTGFiZWxIdG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLml0ZW1MYWJlbEh0bWxDbGFzcywgJ2Zvcm0tY2hlY2stbGFiZWwnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2hlY2tib3hlcy1pbmxpbmUnOlxuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5maWVsZEh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MsICdmb3JtLWNoZWNrLWlucHV0Jyk7XG4gICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLml0ZW1MYWJlbEh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuaXRlbUxhYmVsSHRtbENsYXNzLFxuICAgICAgICAgICAgJ2Zvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgZm9ybS1jaGVjay1sYWJlbCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvLyBSYWRpbyBjb250cm9sc1xuICAgICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGNhc2UgJ3JhZGlvcyc6XG4gICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuaHRtbENsYXNzLCAnZm9ybS1jaGVjaycpO1xuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5maWVsZEh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MsICdmb3JtLWNoZWNrLWlucHV0Jyk7XG4gICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLml0ZW1MYWJlbEh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuaXRlbUxhYmVsSHRtbENsYXNzLCAnZm9ybS1jaGVjay1sYWJlbCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyYWRpb3MtaW5saW5lJzpcbiAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmZpZWxkSHRtbENsYXNzLCAnZm9ybS1jaGVjay1pbnB1dCcpO1xuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5pdGVtTGFiZWxIdG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLml0ZW1MYWJlbEh0bWxDbGFzcyxcbiAgICAgICAgICAgICdmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGZvcm0tY2hlY2stbGFiZWwnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gQnV0dG9uIHNldHMgLSBjaGVja2JveGJ1dHRvbnMgYW5kIHJhZGlvYnV0dG9uc1xuICAgICAgICBjYXNlICdjaGVja2JveGJ1dHRvbnMnOlxuICAgICAgICBjYXNlICdyYWRpb2J1dHRvbnMnOlxuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5odG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmh0bWxDbGFzcywgJ2J0bi1ncm91cCcpO1xuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5pdGVtTGFiZWxIdG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLml0ZW1MYWJlbEh0bWxDbGFzcywgJ2J0bicpO1xuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5pdGVtTGFiZWxIdG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLml0ZW1MYWJlbEh0bWxDbGFzcyxcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zdHlsZSB8fCAnYnRuLW91dGxpbmUtcHJpbWFyeScpO1xuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5maWVsZEh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MsICd2aXN1YWxseS1oaWRkZW4nKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gU2luZ2xlIGJ1dHRvbiBjb250cm9sc1xuICAgICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5maWVsZEh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MsICdidG4nKTtcbiAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmZpZWxkSHRtbENsYXNzLCB0aGlzLm9wdGlvbnMuc3R5bGUgfHwgJ2J0bi1pbmZvJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIENvbnRhaW5lcnMgLSBhcnJheXMgYW5kIGZpZWxkc2V0c1xuICAgICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIGNhc2UgJ2ZpZWxkc2V0JzpcbiAgICAgICAgY2FzZSAnc2VjdGlvbic6XG4gICAgICAgIGNhc2UgJ2NvbmRpdGlvbmFsJzpcbiAgICAgICAgY2FzZSAnYWR2YW5jZWRmaWVsZHNldCc6XG4gICAgICAgIGNhc2UgJ2F1dGhmaWVsZHNldCc6XG4gICAgICAgIGNhc2UgJ3NlbGVjdGZpZWxkc2V0JzpcbiAgICAgICAgY2FzZSAnb3B0aW9uZmllbGRzZXQnOlxuICAgICAgICAgIHRoaXMub3B0aW9ucy5tZXNzYWdlTG9jYXRpb24gPSAndG9wJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGFiYXJyYXknOlxuICAgICAgICBjYXNlICd0YWJzJzpcbiAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuaHRtbENsYXNzID0gYWRkQ2xhc3NlcyhcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5odG1sQ2xhc3MsICd0YWItY29udGVudCcpO1xuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5maWVsZEh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MsICd0YWItcGFuZScpO1xuICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5sYWJlbEh0bWxDbGFzcyA9IGFkZENsYXNzZXMoXG4gICAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMubGFiZWxIdG1sQ2xhc3MsICduYXYgbmF2LXRhYnMnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gJ0FkZCcgYnV0dG9ucyAtIHJlZmVyZW5jZXNcbiAgICAgICAgY2FzZSAnJHJlZic6XG4gICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmZpZWxkSHRtbENsYXNzID0gYWRkQ2xhc3NlcyhcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5maWVsZEh0bWxDbGFzcywgJ2J0biBwdWxsLXJpZ2h0Jyk7XG4gICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmZpZWxkSHRtbENsYXNzID0gYWRkQ2xhc3NlcyhcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5maWVsZEh0bWxDbGFzcywgdGhpcy5vcHRpb25zLnN0eWxlIHx8ICdidG4tZGVmYXVsdCcpO1xuICAgICAgICAgIHRoaXMub3B0aW9ucy5pY29uID0gJ2dseXBoaWNvbiBnbHlwaGljb24tcGx1cyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIERlZmF1bHQgLSBpbmNsdWRpbmcgcmVndWxhciBpbnB1dHNcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZmllbGRIdG1sQ2xhc3MgPSBhZGRDbGFzc2VzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmZpZWxkSHRtbENsYXNzLCAnZm9ybS1jb250cm9sJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSGVscEJsb2NrKHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShzdGF0dXMgPT4gdGhpcy51cGRhdGVIZWxwQmxvY2soc3RhdHVzKSk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgIGNvbnN0IHZhcnM6IGFueVtdID0gW107XG4gICAgICAgICAgdGhpcy5kZWJ1Z091dHB1dCA9IHZhcnMubWFwKHRoaXNWYXIgPT4gSlNPTi5zdHJpbmdpZnkodGhpc1ZhciwgbnVsbCwgMikpLmpvaW4oJ1xcbicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmZyYW1ld29ya0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgfVxuXG4gIHVwZGF0ZUhlbHBCbG9jayhzdGF0dXMpIHtcbiAgICB0aGlzLm9wdGlvbnMuaGVscEJsb2NrID0gc3RhdHVzID09PSAnSU5WQUxJRCcgJiZcbiAgICB0aGlzLm9wdGlvbnMuZW5hYmxlRXJyb3JTdGF0ZSAmJiB0aGlzLmZvcm1Db250cm9sLmVycm9ycyAmJlxuICAgICh0aGlzLmZvcm1Db250cm9sLmRpcnR5IHx8IHRoaXMub3B0aW9ucy5mZWVkYmFja09uUmVuZGVyKSA/XG4gICAgICB0aGlzLmpzZi5mb3JtYXRFcnJvcnModGhpcy5mb3JtQ29udHJvbC5lcnJvcnMsIHRoaXMub3B0aW9ucy52YWxpZGF0aW9uTWVzc2FnZXMpIDpcbiAgICAgIHRoaXMub3B0aW9ucy5kZXNjcmlwdGlvbiB8fCB0aGlzLm9wdGlvbnMuaGVscCB8fCBudWxsO1xuICB9XG5cbiAgc2V0VGl0bGUoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMubGF5b3V0Tm9kZS50eXBlKSB7XG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgY2FzZSAnc2VjdGlvbic6XG4gICAgICBjYXNlICdoZWxwJzpcbiAgICAgIGNhc2UgJ21zZyc6XG4gICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICBjYXNlICd0YWJhcnJheSc6XG4gICAgICBjYXNlICd0YWJzJzpcbiAgICAgIGNhc2UgJyRyZWYnOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgJ2FkdmFuY2VkZmllbGRzZXQnOlxuICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZXhwYW5kYWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy50aXRsZSA9ICdBZHZhbmNlZCBvcHRpb25zJztcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlICdhdXRoZmllbGRzZXQnOlxuICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZXhwYW5kYWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy50aXRsZSA9ICdBdXRoZW50aWNhdGlvbiBzZXR0aW5ncyc7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY2FzZSAnZmllbGRzZXQnOlxuICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMudGl0bGUgPSB0aGlzLm9wdGlvbnMudGl0bGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLnRpdGxlID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXMuanNmLnNldEl0ZW1UaXRsZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVJdGVtKCkge1xuICAgIHRoaXMuanNmLnJlbW92ZUl0ZW0odGhpcyk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgQm9vdHN0cmFwIDUgcmVwbGFjZWQgdGhlIGhhcy1lcnJvciBhbmQgaGFzLXN1Y2Nlc3Mgd3JhcHBlciBjbGFzc2VzIHdpdGhcbiAgaXMtaW52YWxpZCBhbmQgaXMtdmFsaWQgb24gdGhlIGNvbnRyb2wgaXRzZWxmLCBzbyB0aGUgc3RhdGUgY2xhc3NlcyBhcmUgYm91bmRcbiAgdG8gdGhlIGZpZWxkIHJhdGhlciB0aGFuIHRvIHRoaXMgY29udGFpbmVyLlxuLS0+XG48ZGl2IFtjbGFzc109XCJvcHRpb25zPy5odG1sQ2xhc3MgfHwgJydcIj5cblxuICA8YnV0dG9uICpuZ0lmPVwic2hvd1JlbW92ZUJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJmbG9hdC1lbmQgYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBidG4tc21cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKClcIj5cbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGRpdiAqbmdJZj1cIm9wdGlvbnM/Lm1lc3NhZ2VMb2NhdGlvbiA9PT0gJ3RvcCdcIj5cbiAgICA8cCAqbmdJZj1cIm9wdGlvbnM/LmhlbHBCbG9ja1wiXG4gICAgICAgY2xhc3M9XCJmb3JtLXRleHRcIlxuICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9ucz8uaGVscEJsb2NrXCI+PC9wPlxuICA8L2Rpdj5cblxuICA8bGFiZWwgKm5nSWY9XCJvcHRpb25zPy50aXRsZSAmJiBsYXlvdXROb2RlPy50eXBlICE9PSAndGFiJ1wiXG4gICAgICAgICBbYXR0ci5mb3JdPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkXCJcbiAgICAgICAgIFtjbGFzc109XCJvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJ1wiXG4gICAgICAgICBbY2xhc3MudmlzdWFsbHktaGlkZGVuXT1cIm9wdGlvbnM/Lm5vdGl0bGVcIlxuICAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy50aXRsZVwiPjwvbGFiZWw+XG4gIDxwICpuZ0lmPVwibGF5b3V0Tm9kZT8udHlwZSA9PT0gJ3N1Ym1pdCcgJiYganNmPy5mb3JtT3B0aW9ucz8uZmllbGRzUmVxdWlyZWRcIj5cbiAgICA8c3Ryb25nIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zdHJvbmc+ID0gcmVxdWlyZWQgZmllbGRzXG4gIDwvcD5cbiAgICAgICAgPGRpdlxuICAgICAgICBbY2xhc3MuaC0xMDBdPVwidHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5tdC0xXT1cInRydWVcIlxuICAgICAgICBbY2xhc3MuZm9ybS1jaGVja109XCJpc1NpbmdsZUNoZWNrXCJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiISFvcHRpb25zPy5lcnJvck1lc3NhZ2VcIlxuICAgICAgICBbY2xhc3MuaW5wdXQtZ3JvdXBdPVwib3B0aW9ucz8uZmllbGRBZGRvbkxlZnQgfHwgb3B0aW9ucz8uZmllbGRBZGRvblJpZ2h0XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXByZXBlbmRcIiAqbmdJZj1cIm9wdGlvbnM/LmZpZWxkQWRkb25MZWZ0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgW2lubmVySFRNTF09XCJvcHRpb25zPy5maWVsZEFkZG9uTGVmdFwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gXG4gICAgPHNlbGVjdC13aWRnZXQtd2lkZ2V0XG4gICAgICBbbGF5b3V0Tm9kZV09XCJ3aWRnZXRMYXlvdXROb2RlXCJcbiAgICAgIFtkYXRhSW5kZXhdPVwiZGF0YUluZGV4XCJcbiAgICAgIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiPjwvc2VsZWN0LXdpZGdldC13aWRnZXQ+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIiAqbmdJZj1cIm9wdGlvbnM/LmZpZWxkQWRkb25SaWdodFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmZpZWxkQWRkb25SaWdodFwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImZvcm1Db250cm9sPy50b3VjaGVkICYmIG9wdGlvbnM/LmVycm9yTWVzc2FnZVwiXG4gICAgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmVycm9yTWVzc2FnZVwiPjwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnM/LmRlc2NyaXB0aW9uICYmICghb3B0aW9ucz8uc2hvd0Vycm9ycyB8fCAhb3B0aW9ucz8uZXJyb3JNZXNzYWdlKVwiXG4gICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZFwiXG4gICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5kZXNjcmlwdGlvblwiPjwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJkZWJ1ZyAmJiBkZWJ1Z091dHB1dFwiPmRlYnVnOlxuICA8cHJlPnt7ZGVidWdPdXRwdXR9fTwvcHJlPlxuPC9kaXY+XG4iXX0=
@@ -1,45 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { Framework, JsonSchemaFormService, WidgetLibraryService, FrameworkLibraryService, JsonSchemaFormModule, WidgetLibraryModule } from '@ajsf/core';
4
- import { Bootstrap5Framework } from './bootstrap5.framework';
5
- import { Bootstrap5FrameworkComponent } from './bootstrap5-framework.component';
6
- import * as i0 from "@angular/core";
7
- export class Bootstrap5FrameworkModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkModule, declarations: [Bootstrap5FrameworkComponent], imports: [JsonSchemaFormModule,
10
- CommonModule,
11
- WidgetLibraryModule], exports: [JsonSchemaFormModule,
12
- Bootstrap5FrameworkComponent] }); }
13
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkModule, providers: [
14
- JsonSchemaFormService,
15
- FrameworkLibraryService,
16
- WidgetLibraryService,
17
- { provide: Framework, useClass: Bootstrap5Framework, multi: true },
18
- ], imports: [JsonSchemaFormModule,
19
- CommonModule,
20
- WidgetLibraryModule, JsonSchemaFormModule] }); }
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5FrameworkModule, decorators: [{
23
- type: NgModule,
24
- args: [{
25
- imports: [
26
- JsonSchemaFormModule,
27
- CommonModule,
28
- WidgetLibraryModule,
29
- ],
30
- declarations: [
31
- Bootstrap5FrameworkComponent,
32
- ],
33
- exports: [
34
- JsonSchemaFormModule,
35
- Bootstrap5FrameworkComponent,
36
- ],
37
- providers: [
38
- JsonSchemaFormService,
39
- FrameworkLibraryService,
40
- WidgetLibraryService,
41
- { provide: Framework, useClass: Bootstrap5Framework, multi: true },
42
- ]
43
- }]
44
- }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwNS1mcmFtZXdvcmsubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWpzZi1ib290c3RyYXA1L3NyYy9saWIvYm9vdHN0cmFwNS1mcmFtZXdvcmsubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNwQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFzQjlFLE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjtnSEFBekIseUJBQXlCLGlCQWI5Qiw0QkFBNEIsYUFMNUIsb0JBQW9CO1lBQ3BCLFlBQVk7WUFDWixtQkFBbUIsYUFNbkIsb0JBQW9CO1lBQ3BCLDRCQUE0QjtnSEFTdkIseUJBQXlCLGFBUHZCO1lBQ1AscUJBQXFCO1lBQ3JCLHVCQUF1QjtZQUN2QixvQkFBb0I7WUFDcEIsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1NBQ3JFLFlBaEJHLG9CQUFvQjtZQUNwQixZQUFZO1lBQ1osbUJBQW1CLEVBTW5CLG9CQUFvQjs7NEZBVWYseUJBQXlCO2tCQXBCckMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLG1CQUFtQjtxQkFDdEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLDRCQUE0QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLG9CQUFvQjt3QkFDcEIsNEJBQTRCO3FCQUMvQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUNyRTtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBGcmFtZXdvcmssXG4gIEpzb25TY2hlbWFGb3JtU2VydmljZSxcbiAgV2lkZ2V0TGlicmFyeVNlcnZpY2UsXG4gIEZyYW1ld29ya0xpYnJhcnlTZXJ2aWNlLFxuICBKc29uU2NoZW1hRm9ybU1vZHVsZSxcbiAgV2lkZ2V0TGlicmFyeU1vZHVsZVxufSBmcm9tICdAYWpzZi9jb3JlJztcbmltcG9ydCB7Qm9vdHN0cmFwNUZyYW1ld29ya30gZnJvbSAnLi9ib290c3RyYXA1LmZyYW1ld29yayc7XG5pbXBvcnQge0Jvb3RzdHJhcDVGcmFtZXdvcmtDb21wb25lbnR9IGZyb20gJy4vYm9vdHN0cmFwNS1mcmFtZXdvcmsuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEpzb25TY2hlbWFGb3JtTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFdpZGdldExpYnJhcnlNb2R1bGUsXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgQm9vdHN0cmFwNUZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgSnNvblNjaGVtYUZvcm1Nb2R1bGUsXG4gICAgICAgIEJvb3RzdHJhcDVGcmFtZXdvcmtDb21wb25lbnQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgSnNvblNjaGVtYUZvcm1TZXJ2aWNlLFxuICAgICAgICBGcmFtZXdvcmtMaWJyYXJ5U2VydmljZSxcbiAgICAgICAgV2lkZ2V0TGlicmFyeVNlcnZpY2UsXG4gICAgICAgIHsgcHJvdmlkZTogRnJhbWV3b3JrLCB1c2VDbGFzczogQm9vdHN0cmFwNUZyYW1ld29yaywgbXVsdGk6IHRydWUgfSxcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEJvb3RzdHJhcDVGcmFtZXdvcmtNb2R1bGUge1xufVxuIl19
@@ -1,27 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Framework } from '@ajsf/core';
3
- import { Bootstrap5FrameworkComponent } from './bootstrap5-framework.component';
4
- import * as i0 from "@angular/core";
5
- // Bootstrap 5 Framework
6
- // https://github.com/ng-bootstrap/ng-bootstrap
7
- export class Bootstrap5Framework extends Framework {
8
- constructor() {
9
- super(...arguments);
10
- this.name = 'bootstrap-5';
11
- this.framework = Bootstrap5FrameworkComponent;
12
- this.stylesheets = [
13
- '//cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css'
14
- ];
15
- // Bootstrap 5 dropped jQuery, and the bundle build already contains Popper,
16
- // so this is one script where Bootstrap 4 needed three.
17
- this.scripts = [
18
- '//cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js',
19
- ];
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5Framework, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
22
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5Framework }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Bootstrap5Framework, decorators: [{
25
- type: Injectable
26
- }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwNS5mcmFtZXdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hanNmLWJvb3RzdHJhcDUvc3JjL2xpYi9ib290c3RyYXA1LmZyYW1ld29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7O0FBRTlFLHdCQUF3QjtBQUN4QiwrQ0FBK0M7QUFHL0MsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFNBQVM7SUFEbEQ7O1FBRUUsU0FBSSxHQUFHLGFBQWEsQ0FBQztRQUVyQixjQUFTLEdBQUcsNEJBQTRCLENBQUM7UUFFekMsZ0JBQVcsR0FBRztZQUNaLG1FQUFtRTtTQUNwRSxDQUFDO1FBRUYsNEVBQTRFO1FBQzVFLHdEQUF3RDtRQUN4RCxZQUFPLEdBQUc7WUFDUix3RUFBd0U7U0FDekUsQ0FBQztLQUNIOytHQWRZLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RnJhbWV3b3JrfSBmcm9tICdAYWpzZi9jb3JlJztcbmltcG9ydCB7Qm9vdHN0cmFwNUZyYW1ld29ya0NvbXBvbmVudH0gZnJvbSAnLi9ib290c3RyYXA1LWZyYW1ld29yay5jb21wb25lbnQnO1xuXG4vLyBCb290c3RyYXAgNSBGcmFtZXdvcmtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCb290c3RyYXA1RnJhbWV3b3JrIGV4dGVuZHMgRnJhbWV3b3JrIHtcbiAgbmFtZSA9ICdib290c3RyYXAtNSc7XG5cbiAgZnJhbWV3b3JrID0gQm9vdHN0cmFwNUZyYW1ld29ya0NvbXBvbmVudDtcblxuICBzdHlsZXNoZWV0cyA9IFtcbiAgICAnLy9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4zLjgvZGlzdC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MnXG4gIF07XG5cbiAgLy8gQm9vdHN0cmFwIDUgZHJvcHBlZCBqUXVlcnksIGFuZCB0aGUgYnVuZGxlIGJ1aWxkIGFscmVhZHkgY29udGFpbnMgUG9wcGVyLFxuICAvLyBzbyB0aGlzIGlzIG9uZSBzY3JpcHQgd2hlcmUgQm9vdHN0cmFwIDQgbmVlZGVkIHRocmVlLlxuICBzY3JpcHRzID0gW1xuICAgICcvL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjMuOC9kaXN0L2pzL2Jvb3RzdHJhcC5idW5kbGUubWluLmpzJyxcbiAgXTtcbn1cbiJdfQ==
@@ -1,7 +0,0 @@
1
- /*
2
- * Public API Surface of @ajsf/bootstrap5
3
- */
4
- export * from './lib/bootstrap5-framework.module';
5
- export * from './lib/bootstrap5-framework.component';
6
- export * from './lib/bootstrap5.framework';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fqc2YtYm9vdHN0cmFwNS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBAYWpzZi9ib290c3RyYXA1XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYm9vdHN0cmFwNS1mcmFtZXdvcmsubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jvb3RzdHJhcDUtZnJhbWV3b3JrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ib290c3RyYXA1LmZyYW1ld29yayc7XG4iXX0=