{"version":3,"file":"bootkit-angular-components-json-editor.mjs","sources":["../../../projects/bootkit/components/json-editor/directives/label.directive.ts","../../../projects/bootkit/components/json-editor/directives/value.directive.ts","../../../projects/bootkit/components/json-editor/json-tree-node.ts","../../../projects/bootkit/components/json-editor/directives/default-editor.directive.ts","../../../projects/bootkit/components/json-editor/json-editor.component.ts","../../../projects/bootkit/components/json-editor/json-editor.component.html","../../../projects/bootkit/components/json-editor/json-editor.module.ts","../../../projects/bootkit/components/json-editor/bootkit-angular-components-json-editor.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[bkJsonNodeTitle]',\r\n    exportAs: 'bkJsonNodeTitle',\r\n    standalone: true,\r\n})\r\nexport class JsonNodeTitleDirective {\r\n    constructor(public readonly templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, input, TemplateRef } from '@angular/core';\r\nimport { JsonFieldType } from '../json/types';\r\n\r\n@Directive({\r\n    selector: '[bkJsonNodeValue]',\r\n    exportAs: 'bkJsonNodeValue',\r\n    standalone: true,\r\n})\r\nexport class JsonValueDirective {\r\n    type = input<JsonFieldType>(undefined);\r\n\r\n    constructor(public readonly templateRef: TemplateRef<any>) { }\r\n}\r\n","import { JsonSchema } from \"./json/schema/2020\";\r\nimport { JsonFieldType } from \"./json/types\";\r\n\r\nlet id = 0;\r\n\r\nexport class JsonTreeNode {\r\n    public readonly id: number;\r\n    public readonly type: JsonFieldType;\r\n    private _value: any;\r\n\r\n    constructor(\r\n        value: any,\r\n        public readonly key?: any,\r\n        public readonly parent?: JsonTreeNode,\r\n        public readonly schema?: JsonSchema) {\r\n            \r\n        this.id = id++;\r\n        if (parent) {\r\n            if (key == undefined) {\r\n                throw Error('A child json node must have a key');\r\n            }\r\n        }\r\n\r\n        this._value = value;\r\n        const t = typeof value;\r\n\r\n        if (t == 'function' || t == 'symbol' || t == 'bigint') {\r\n            throw Error('invalid json value')\r\n        } else if (t == 'undefined' || value === null) {\r\n            this.type = 'null';\r\n        } else if (Array.isArray(value)) {\r\n            this.type = 'array'\r\n        }\r\n        else {\r\n            this.type = t\r\n        }\r\n    }\r\n\r\n    public get value(): any {\r\n        return this._value;\r\n    }\r\n\r\n    public set value(v: any) {\r\n        if (this.parent) {\r\n            this._value = this.parent.value[this.key] = v;\r\n        } else {\r\n            this._value = v;\r\n        }\r\n    }\r\n\r\n    public openEditor() {\r\n    }\r\n\r\n    public closeEditor() {\r\n    }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { AfterViewInit, Directive, ElementRef, Inject, PLATFORM_ID, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[bkJsonDefaultEditor]',\r\n    exportAs: 'bkJsonDefaultEditor',\r\n    standalone: true,\r\n})\r\nexport class DefaultEditorDirective implements AfterViewInit {\r\n\r\n    constructor(private _element: ElementRef, private _renderer: Renderer2, @Inject(PLATFORM_ID) private _platformId) {\r\n\r\n    }\r\n    ngAfterViewInit(): void {\r\n        var elm: HTMLElement = this._element.nativeElement;\r\n\r\n        if (isPlatformBrowser(this._platformId)) {\r\n            elm.focus();\r\n\r\n            if (elm.tagName == 'INPUT') {\r\n                // var length = (elm as HTMLInputElement).value.length;\r\n                (elm as HTMLInputElement).select()\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { Component, ElementRef, Renderer2, ContentChild, ChangeDetectionStrategy, input, ContentChildren, QueryList, model, TemplateRef, ViewChild, AfterViewInit, AfterContentInit, AfterContentChecked } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CdkTree, CdkTreeModule } from '@angular/cdk/tree';\r\nimport { JsonSchema } from './json/schema/2020';\r\nimport { ArrayDataSource, DataSource } from '@angular/cdk/collections';\r\nimport { CollapseDirective } from '@bootkit/angular/components/collapse';\r\nimport { JsonNodeTitleDirective } from './directives/label.directive';\r\nimport { JsonValueDirective } from './directives/value.directive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { JsonTreeNode } from './json-tree-node';\r\nimport { DefaultEditorDirective } from './directives/default-editor.directive';\r\n\r\n@Component({\r\n    selector: 'bk-json-editor',\r\n    exportAs: 'bkJsonEditor',\r\n    templateUrl: 'json-editor.component.html',\r\n    styleUrl: 'json-editor.component.scss',\r\n    // changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    imports: [CommonModule, FormsModule, CdkTreeModule, CollapseDirective, DefaultEditorDirective]\r\n})\r\nexport class JsonEditorComponent {\r\n    public json = model<any>();\r\n    public schema = input<JsonSchema>();\r\n    public showKeyTitle = input<JsonSchema>();\r\n    protected dataSource: DataSource<JsonTreeNode>;\r\n    @ContentChild(JsonNodeTitleDirective) protected titleDirective?: JsonNodeTitleDirective;\r\n    @ContentChildren(JsonValueDirective) protected valueDirectives?: QueryList<JsonValueDirective>;\r\n\r\n    @ViewChild(CdkTree) private _cdkTree: CdkTree<JsonTreeNode>;\r\n    private _editingNode?: JsonTreeNode;\r\n\r\n    constructor(private _element: ElementRef, private _renderer: Renderer2) {\r\n    }\r\n\r\n    ngOnInit() {\r\n        const json = this.json();\r\n        if (json == null || typeof json != 'object') {\r\n            throw new Error('provide an object or array for \"json\" input');\r\n        }\r\n\r\n        var rootChildren = this._childrenAccessor(new JsonTreeNode(json, undefined, undefined, this.schema()));\r\n        this.dataSource = new ArrayDataSource(rootChildren);\r\n    }\r\n\r\n    public isExpanded(node: JsonTreeNode): boolean {\r\n        return this._cdkTree.isExpanded(node);\r\n    }\r\n\r\n    public edit(node: JsonTreeNode) {\r\n        this._editingNode = node;\r\n    };\r\n\r\n    public cancelEdit() {\r\n        this._editingNode = undefined;\r\n    };\r\n\r\n    public isEditing(node: JsonTreeNode) {\r\n        return this._editingNode === node;\r\n    };\r\n\r\n    protected _findValueTemplate = (type) => this.valueDirectives.find(x => x.type() == type)?.templateRef;\r\n\r\n    protected _childrenAccessor = (node: JsonTreeNode): JsonTreeNode[] => {\r\n        const v = node.value;\r\n\r\n        if (node.type == 'object') {\r\n            return Object.keys(v).map(k => {\r\n                var schema = node.schema?.properties ? node.schema?.properties[k] : undefined;\r\n                return new JsonTreeNode(v[k], k, node, schema);\r\n            })\r\n        } else if (node.type == 'array') {\r\n            return Object.keys(v).map(k => {\r\n                var itemsType = node.schema?.items && node.schema?.items[node.type];\r\n                var schema = itemsType ? { type: itemsType } as JsonSchema : undefined;\r\n                return new JsonTreeNode(v[k], k, node, schema);\r\n            })\r\n        } else {\r\n            return [];\r\n        }\r\n    };\r\n\r\n    protected _hasChildren(node: JsonTreeNode): boolean {\r\n        const value = node.value;\r\n        return (Array.isArray(value)) || (typeof value === 'object' && value != null);\r\n    }\r\n}\r\n","<cdk-tree #tree [dataSource]=\"dataSource\" [childrenAccessor]=\"_childrenAccessor\">\r\n    <cdk-nested-tree-node *cdkTreeNodeDef=\"let node\" class=\"bk-json-node\">\r\n        @let isExpanded = tree.isExpanded(node);\r\n        <!-- @let value = node.value; -->\r\n\r\n        <div class=\"bk-json-node-content\">\r\n            <button *ngIf=\"_hasChildren(node)\" cdkTreeNodeToggle>\r\n                {{isExpanded ? '-' : '+'}}\r\n            </button>\r\n\r\n            @if(node.key) {\r\n            <div class=\"bk-json-node-title me-2\">\r\n                <ng-container\r\n                              *ngTemplateOutlet=\"this.titleDirective?.templateRef || titleTemplate; context: {$implicit: node}\"></ng-container>\r\n            </div>\r\n            }\r\n\r\n            @if(isEditing(node)) {\r\n            <div class=\"bk-json-node-editor\">\r\n                @switch (node.type) {\r\n                @case ('string') {\r\n                <ng-container *ngTemplateOutlet=\"stringEditorTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                @case ('number') {\r\n                <ng-container *ngTemplateOutlet=\"numberEditorTemplate ; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                @case ('boolean') {\r\n                <ng-container *ngTemplateOutlet=\"booleanEditorTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                @case ('null') {\r\n                <ng-container *ngTemplateOutlet=\"nullEditorTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                }\r\n            </div>\r\n            }@else {\r\n            <div class=\"bk-json-node-value\">\r\n                @switch (node.type) {\r\n                @case ('array') {\r\n                <ng-container\r\n                              *ngTemplateOutlet=\"_findValueTemplate('array') || arrayTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                @case ('object') {\r\n                <ng-container\r\n                              *ngTemplateOutlet=\"_findValueTemplate('object') || objectTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                @case ('string') {\r\n                <ng-container\r\n                              *ngTemplateOutlet=\"_findValueTemplate('string') || stringTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                @case ('number') {\r\n                <ng-container\r\n                              *ngTemplateOutlet=\"_findValueTemplate('number') || numberTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                @case ('boolean') {\r\n                <ng-container\r\n                              *ngTemplateOutlet=\"_findValueTemplate('boolean') || booleanTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                @case ('null') {\r\n                <ng-container\r\n                              *ngTemplateOutlet=\"_findValueTemplate('null') || nullTemplate; context: {$implicit: node}\"></ng-container>\r\n                }\r\n\r\n                }\r\n            </div>\r\n            }\r\n        </div>\r\n\r\n        @if(node.schema?.title) {\r\n            <div class=\"bk-json-node-title\">\r\n                {{node.schema?.title}}\r\n            </div>\r\n        }\r\n\r\n        @if(_hasChildren(node)) {\r\n        <div class=\"bk-json-node-children ps-3\" bkCollapse [collapsed]=\"!isExpanded\" timings=\".05s\">\r\n            <ng-container cdkTreeNodeOutlet></ng-container>\r\n        </div>\r\n        }\r\n    </cdk-nested-tree-node>\r\n</cdk-tree>\r\n\r\n<!-- Key Template -->\r\n<ng-template #titleTemplate let-node>\r\n    @if(node.schema?.title) {\r\n        {{node.schema.title}}\r\n    }@if(node.key) {\r\n        {{node.key}}:\r\n    }\r\n</ng-template>\r\n\r\n<!-- Value Templates -->\r\n<ng-template #arrayTemplate let-node>\r\n    <span (click)=\"tree.toggle(node)\" class=\"cursor-pointer\">[{{node.value.length}}]</span>\r\n</ng-template>\r\n\r\n<ng-template #objectTemplate let-node>\r\n    @if(!tree.isExpanded(node)) {\r\n    <span (click)=\"tree.toggle(node)\" class=\"cursor-pointer\">{{'{ ... }'}}</span>\r\n    }\r\n</ng-template>\r\n\r\n<ng-template #numberTemplate let-node>\r\n    <span (dblclick)=\"edit(node)\">{{node.value | number}}</span>\r\n</ng-template>\r\n\r\n<ng-template #stringTemplate let-node>\r\n    <span (dblclick)=\"edit(node)\">{{node.value}}</span>\r\n</ng-template>\r\n\r\n<ng-template #booleanTemplate let-node>\r\n    <span (dblclick)=\"edit(node)\">{{node.value}}</span>\r\n</ng-template>\r\n\r\n<ng-template #nullTemplate let-node>\r\n    null\r\n</ng-template>\r\n\r\n<!-- Editor Templates -->\r\n<ng-template #numberEditorTemplate let-node>\r\n    <input type=\"number\"\r\n           [name]=\"'text-editor-' + node.id\"\r\n           [(ngModel)]=\"node.value\"\r\n           bkJsonDefaultEditor\r\n           (blur)=\"cancelEdit()\"\r\n           class=\"form-control form-control-sm\">\r\n</ng-template>\r\n\r\n<ng-template #stringEditorTemplate let-node>\r\n    <input type=\"text\"\r\n           [name]=\"'text-editor-' + node.id\"\r\n           [(ngModel)]=\"node.value\"\r\n           bkJsonDefaultEditor\r\n           (blur)=\"cancelEdit()\"\r\n           class=\"form-control form-control-sm\">\r\n</ng-template>\r\n\r\n<ng-template #booleanEditorTemplate let-node>\r\n    <select [name]=\"'boolean-editor-' + node.id\"\r\n            bkJsonDefaultEditor\r\n            [(ngModel)]=\"node.value\"\r\n            (blur)=\"cancelEdit()\"\r\n            class=\"form-select form-control-sm\">\r\n        <option [value]=\"true\">True</option>\r\n        <option [value]=\"false\">False</option>\r\n    </select>\r\n</ng-template>\r\n\r\n<ng-template #nullEditorTemplate let-node>\r\n    <input type=\"text\" [(ngModel)]=\"node.value\">\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { JsonEditorComponent } from './json-editor.component';\r\n// import { CardHeaderComponent } from './card-header.component';\r\n\r\nconst DECLARES = [\r\n    JsonEditorComponent,\r\n];\r\n\r\n@NgModule({\r\n    imports: DECLARES,\r\n    exports: DECLARES\r\n})\r\nexport class JsonEditorModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}