import { h } from "@stencil/core";
import { linker } from '../../../utils/input-linker';
export class BceElementImageTemplate {
    constructor() {
        this.metadata = {};
        this.location = '';
        this.placeholderLocation = 'Image URL';
        this._link = linker(this, this.handleInput);
        this._location = this._link('location');
    }
    handleInput(name, event) {
        const input = event.target;
        if (!input)
            return;
        event.cancelBubble = true;
        this[name] = input.value;
        this.value = this.updateValue({ [name]: input.value });
        this.el.dispatchEvent(new Event('input', { bubbles: true }));
    }
    updateValue(part = {}) {
        const current = {
            location: this.location,
            metadata: Object.assign({}, this.metadata)
        };
        return Object.assign({}, current, part);
    }
    componentDidLoad() {
        this.value = this.updateValue();
        this.el.dispatchEvent(new Event('input', { bubbles: true }));
    }
    render() {
        const buttons = {
            labelUploadButton: this.labelUploadButton,
            labelDeleteButton: this.labelDeleteButton
        };
        return h("bce-upload-input", Object.assign({}, this._location, buttons));
    }
    static get is() { return "bce-element-image-template"; }
    static get properties() { return {
        "metadata": {
            "type": "unknown",
            "mutable": false,
            "complexType": {
                "original": "Block.ElementMetadata",
                "resolved": "ElementMetadata",
                "references": {
                    "Block": {
                        "location": "import",
                        "path": "../../../models/block"
                    }
                }
            },
            "required": false,
            "optional": false,
            "docs": {
                "tags": [],
                "text": ""
            },
            "defaultValue": "{}"
        },
        "value": {
            "type": "unknown",
            "mutable": true,
            "complexType": {
                "original": "ImageTemplate",
                "resolved": "undefined | { readonly location: string; readonly metadata: ElementMetadata; }",
                "references": {
                    "ImageTemplate": {
                        "location": "local"
                    }
                }
            },
            "required": false,
            "optional": true,
            "docs": {
                "tags": [],
                "text": ""
            }
        },
        "location": {
            "type": "string",
            "mutable": true,
            "complexType": {
                "original": "string",
                "resolved": "string",
                "references": {}
            },
            "required": false,
            "optional": false,
            "docs": {
                "tags": [],
                "text": ""
            },
            "attribute": "location",
            "reflect": false,
            "defaultValue": "''"
        },
        "labelUploadButton": {
            "type": "string",
            "mutable": false,
            "complexType": {
                "original": "string",
                "resolved": "string | undefined",
                "references": {}
            },
            "required": false,
            "optional": true,
            "docs": {
                "tags": [],
                "text": ""
            },
            "attribute": "label-upload-button",
            "reflect": false
        },
        "labelDeleteButton": {
            "type": "string",
            "mutable": false,
            "complexType": {
                "original": "string",
                "resolved": "string | undefined",
                "references": {}
            },
            "required": false,
            "optional": true,
            "docs": {
                "tags": [],
                "text": ""
            },
            "attribute": "label-delete-button",
            "reflect": false
        },
        "placeholderLocation": {
            "type": "string",
            "mutable": false,
            "complexType": {
                "original": "string",
                "resolved": "string",
                "references": {}
            },
            "required": false,
            "optional": false,
            "docs": {
                "tags": [],
                "text": ""
            },
            "attribute": "placeholder-location",
            "reflect": false,
            "defaultValue": "'Image URL'"
        }
    }; }
    static get elementRef() { return "el"; }
}
