Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

vipera-npm-registry / motif-web-admin-core   js

Repository URL to install this package:

Version: 0.3.1 

/ esm2015 / lib / components / UI / wc-upload-panel-component / wc-upload-panel-component.js

/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
 */
import { WCFileDropPanelComponent } from './wc-file-drop-panel-component';
import { Component, ElementRef, Renderer2, ViewChild, EventEmitter, Output, Input } from '@angular/core';
import { WCSlidePanelComponent } from 'web-console-ui-kit';
import { NGXLogger } from 'ngx-logger';
import { WCSubscriptionHandler } from '../../Commons/wc-subscription-handler';
/** @type {?} */
const LOG_TAG = '[WCUploadPanelComponent]';
/**
 * @record
 */
export function WCUploadPanelEvent() { }
if (false) {
    /** @type {?} */
    WCUploadPanelEvent.prototype.file;
    /** @type {?} */
    WCUploadPanelEvent.prototype.fileName;
}
export class WCUploadPanelComponent {
    /**
     * @param {?} renderer2
     * @param {?} element
     * @param {?} logger
     */
    constructor(renderer2, element, logger) {
        this.renderer2 = renderer2;
        this.element = element;
        this.logger = logger;
        this._subHandler = new WCSubscriptionHandler();
        this.confirmationTitle = "Do Upload?";
        this.close = new EventEmitter();
        this.open = new EventEmitter();
        this.upload = new EventEmitter();
        this.uploadError = new EventEmitter();
    }
    /**
     * @return {?}
     */
    ngOnInit() {
    }
    /**
     * @return {?}
     */
    get isOpen() {
        return this._uploadSlideDownPanel.isOpen;
    }
    /**
     * @return {?}
     */
    toggle() {
        this._uploadSlideDownPanel.toggle();
    }
    /**
     *
     * @param {?} show Show/Hide the new Slide down panel
     * @return {?}
     */
    show(show) {
        this._uploadSlideDownPanel.show(show);
    }
    /**
     * @return {?}
     */
    onSlideEditorClose() {
        this.logger.trace(LOG_TAG, 'onSlideEditorClose');
        if (this.fileDrop.file) {
            this.fileDrop.reset();
        }
    }
    /**
     * @return {?}
     */
    onBundleUploadCancel() {
        this.logger.debug(LOG_TAG, 'onBundleUploadCancel');
        this._uploadSlideDownPanel.show(false);
    }
    /**
     * @return {?}
     */
    onBundleUploadConfirm() {
        this.logger.debug(LOG_TAG, 'onBundleUploadConfirm');
        if (this.fileDrop.file) {
            this.doUploadFile(this.fileDrop.file);
            this._uploadSlideDownPanel.show(false);
            this.fileDrop.reset();
        }
    }
    /**
     * @private
     * @param {?} file
     * @return {?}
     */
    doUploadFile(file) {
        this.logger.debug(LOG_TAG, 'doUploadNewBundle : ', file);
        /** @type {?} */
        const reader = new FileReader();
        reader.onloadend = (/**
         * @param {?} data
         * @return {?}
         */
        (data) => {
            this.uploadAssetBundle((/** @type {?} */ (reader.result)), file.name);
        });
        reader.onerror = (/**
         * @param {?} error
         * @return {?}
         */
        (error) => {
            this.logger.error(LOG_TAG, 'doUploadNewBundle error: ', error);
            this.uploadError.emit(error);
        });
        reader.readAsArrayBuffer(file);
    }
    /**
     * @private
     * @param {?} blob
     * @param {?} fileName
     * @return {?}
     */
    uploadAssetBundle(blob, fileName) {
        this.logger.debug(LOG_TAG, 'uploadAssetBundle : ', blob);
        /** @type {?} */
        const file = new File([blob], fileName);
        this.upload.emit({ file: file, fileName: fileName });
    }
}
WCUploadPanelComponent.decorators = [
    { type: Component, args: [{
                selector: 'wc-upload-panel',
                template: "<wc-slide-panel #uploadSlideDownPanel (close)=\"onSlideEditorClose()\">\n    \n    <div class=\"zzzz-container\" style=\"display: flex;flex-direction: column;\">\n\n        <div style=\"display: flex;\">\n            <div class=\"wc-slide-down-editor-pane\" style=\"display:flex;height: 45px;\">\n                <div style=\"width:350px;height: 100%;\">\n                        <wc-file-drop-panel #fileDrop></wc-file-drop-panel>\n                </div>\n            </div>\n        \n            <div class=\"cmd\" style=\"align-items: center;\">\n                <label style=\"padding-bottom: 0px;padding-left: 10px;padding-right: 10px;\">{{confirmationTitle}}</label>\n                <a (click)=\"onBundleUploadConfirm()\" style=\"margin-right: 3px;\">\n                    <i class=\"ok icon wa-ico-ok confirmation-icon\" data-id=\"ok\"></i>\n                </a>\n                <a (click)=\"onBundleUploadCancel()\" data-slideup=\"#user-add\">\n                    <i class=\"ko icon wa-ico-ko confirmation-icon\" data-id=\"ko\"></i>\n                </a>\n            </div>\n        </div>\n\n        <div>\n            <ng-content>\n            </ng-content>\n        </div>\n        \n    </div>\n\n</wc-slide-panel>",
                styles: [""]
            }] }
];
/** @nocollapse */
WCUploadPanelComponent.ctorParameters = () => [
    { type: Renderer2 },
    { type: ElementRef },
    { type: NGXLogger }
];
WCUploadPanelComponent.propDecorators = {
    confirmationTitle: [{ type: Input }],
    fileDrop: [{ type: ViewChild, args: ['fileDrop',] }],
    _uploadSlideDownPanel: [{ type: ViewChild, args: ['uploadSlideDownPanel',] }],
    close: [{ type: Output }],
    open: [{ type: Output }],
    upload: [{ type: Output }],
    uploadError: [{ type: Output }]
};
if (false) {
    /**
     * @type {?}
     * @private
     */
    WCUploadPanelComponent.prototype._subHandler;
    /** @type {?} */
    WCUploadPanelComponent.prototype.confirmationTitle;
    /** @type {?} */
    WCUploadPanelComponent.prototype.fileDrop;
    /** @type {?} */
    WCUploadPanelComponent.prototype._uploadSlideDownPanel;
    /** @type {?} */
    WCUploadPanelComponent.prototype.close;
    /** @type {?} */
    WCUploadPanelComponent.prototype.open;
    /** @type {?} */
    WCUploadPanelComponent.prototype.upload;
    /** @type {?} */
    WCUploadPanelComponent.prototype.uploadError;
    /**
     * @type {?}
     * @private
     */
    WCUploadPanelComponent.prototype.renderer2;
    /**
     * @type {?}
     * @private
     */
    WCUploadPanelComponent.prototype.element;
    /**
     * @type {?}
     * @private
     */
    WCUploadPanelComponent.prototype.logger;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2MtdXBsb2FkLXBhbmVsLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21vdGlmLXdlYi1hZG1pbi1jb3JlLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvVUkvd2MtdXBsb2FkLXBhbmVsLWNvbXBvbmVudC93Yy11cGxvYWQtcGFuZWwtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O01BRXhFLE9BQU8sR0FBRywwQkFBMEI7Ozs7QUFFMUMsd0NBR0M7OztJQUZHLGtDQUFXOztJQUNYLHNDQUFpQjs7QUFRcEIsTUFBTSxPQUFPLHNCQUFzQjs7Ozs7O0lBZWpDLFlBQW9CLFNBQW9CLEVBQy9CLE9BQW1CLEVBQ25CLE1BQWlCO1FBRk4sY0FBUyxHQUFULFNBQVMsQ0FBVztRQUMvQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQVc7UUFmakIsZ0JBQVcsR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBR2xFLHNCQUFpQixHQUFHLFlBQVksQ0FBQztRQUs5QixVQUFLLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQ3pGLFNBQUksR0FBeUMsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFDeEYsV0FBTSxHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUNsRixnQkFBVyxHQUFzQixJQUFJ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S0FBSzt1QkFHTCxTQUFTLFNBQUMsVUFBVTtvQ0FDcEIsU0FBUyxTQUFDLHNCQUFzQjtvQkFFaEMsTUFBTTttQkFDTixNQUFNO3FCQUNOLE1BQU07MEJBQ04sTUFBTTs7Ozs7OztJQVhQLDZDQUF5RTs7SUFFekUsbURBQ3dDOztJQUV4QywwQ0FBMEQ7O0lBQzFELHVEQUFnRjs7SUFFaEYsdUNBQW1HOztJQUNuRyxzQ0FBa0c7O0lBQ2xHLHdDQUE0Rjs7SUFDNUYsNkNBQW1FOzs7OztJQUV4RCwyQ0FBNEI7Ozs7O0lBQ3ZDLHlDQUEyQjs7Ozs7SUFDM0Isd0NBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV0NGaWxlRHJvcFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi93Yy1maWxlLWRyb3AtcGFuZWwtY29tcG9uZW50JztcbiBcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLE91dHB1dCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdDU2xpZGVQYW5lbENvbXBvbmVudCB9IGZyb20gJ3dlYi1jb25zb2xlLXVpLWtpdCc7XG5pbXBvcnQgeyBOR1hMb2dnZXIgfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7IFdDU3Vic2NyaXB0aW9uSGFuZGxlciB9IGZyb20gJy4uLy4uL0NvbW1vbnMvd2Mtc3Vic2NyaXB0aW9uLWhhbmRsZXInO1xuXG5jb25zdCBMT0dfVEFHID0gJ1tXQ1VwbG9hZFBhbmVsQ29tcG9uZW50XSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV0NVcGxvYWRQYW5lbEV2ZW50IHtcbiAgICBmaWxlOiBGaWxlO1xuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICd3Yy11cGxvYWQtcGFuZWwnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3djLXVwbG9hZC1wYW5lbC1jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsgJy4vd2MtdXBsb2FkLXBhbmVsLWNvbXBvbmVudC5zY3NzJyBdXG4gfSlcbiBleHBvcnQgY2xhc3MgV0NVcGxvYWRQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwcml2YXRlIF9zdWJIYW5kbGVyOiBXQ1N1YnNjcmlwdGlvbkhhbmRsZXIgPSBuZXcgV0NTdWJzY3JpcHRpb25IYW5kbGVyKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb25maXJtYXRpb25UaXRsZSA9IFwiRG8gVXBsb2FkP1wiO1xuXG4gICAgQFZpZXdDaGlsZCgnZmlsZURyb3AnKSBmaWxlRHJvcDogV0NGaWxlRHJvcFBhbmVsQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3VwbG9hZFNsaWRlRG93blBhbmVsJykgX3VwbG9hZFNsaWRlRG93blBhbmVsOiBXQ1NsaWRlUGFuZWxDb21wb25lbnQ7XG5cbiAgICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxXQ1VwbG9hZFBhbmVsQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8V0NVcGxvYWRQYW5lbENvbXBvbmVudD4oKTtcbiAgICBAT3V0cHV0KCkgb3BlbjogRXZlbnRFbWl0dGVyPFdDVXBsb2FkUGFuZWxDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxXQ1VwbG9hZFBhbmVsQ29tcG9uZW50PigpO1xuICAgIEBPdXRwdXQoKSB1cGxvYWQ6IEV2ZW50RW1pdHRlcjxXQ1VwbG9hZFBhbmVsRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxXQ1VwbG9hZFBhbmVsRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIHVwbG9hZEVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyLCBcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IE5HWExvZ2dlcikgeyB9XG4gXG4gICBuZ09uSW5pdCgpIHtcbiAgIH1cblxuICAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGxvYWRTbGlkZURvd25QYW5lbC5pc09wZW47XG4gICB9XG5cbiAgIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5fdXBsb2FkU2xpZGVEb3duUGFuZWwudG9nZ2xlKClcbiAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHNob3cgU2hvdy9IaWRlIHRoZSBuZXcgU2xpZGUgZG93biBwYW5lbFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXBsb2FkU2xpZGVEb3duUGFuZWwuc2hvdyhzaG93KTtcbiAgICB9XG5cbiAgICBvblNsaWRlRWRpdG9yQ2xvc2UoKTp2b2lkIHtcbiAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoTE9HX1RBRywgJ29uU2xpZGVFZGl0b3JDbG9zZScpO1xuICAgICAgICBpZiAodGhpcy5maWxlRHJvcC5maWxlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVEcm9wLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkJ1bmRsZVVwbG9hZENhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ29uQnVuZGxlVXBsb2FkQ2FuY2VsJyk7XG4gICAgICAgIHRoaXMuX3VwbG9hZFNsaWRlRG93blBhbmVsLnNob3coZmFsc2UpO1xuICAgIH1cblxuICAgIG9uQnVuZGxlVXBsb2FkQ29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ29uQnVuZGxlVXBsb2FkQ29uZmlybScpO1xuICAgICAgICBpZiAodGhpcy5maWxlRHJvcC5maWxlKSB7XG4gICAgICAgICAgICB0aGlzLmRvVXBsb2FkRmlsZSh0aGlzLmZpbGVEcm9wLmZpbGUpO1xuICAgICAgICAgICAgdGhpcy5fdXBsb2FkU2xpZGVEb3duUGFuZWwuc2hvdyhmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmZpbGVEcm9wLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRvVXBsb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICdkb1VwbG9hZE5ld0J1bmRsZSA6ICcsIGZpbGUpO1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkQXNzZXRCdW5kbGUocmVhZGVyLnJlc3VsdCBhcyBBcnJheUJ1ZmZlciwgZmlsZS5uYW1lKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKExPR19UQUcsICdkb1VwbG9hZE5ld0J1bmRsZSBlcnJvcjogJywgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRFcnJvci5lbWl0KGVycm9yKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBsb2FkQXNzZXRCdW5kbGUoYmxvYjogQXJyYXlCdWZmZXIsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ3VwbG9hZEFzc2V0QnVuZGxlIDogJywgYmxvYik7XG4gICAgICAgIGNvbnN0IGZpbGUgPSAgbmV3IEZpbGUoW2Jsb2JdLCBmaWxlTmFtZSk7XG4gICAgICAgIHRoaXMudXBsb2FkLmVtaXQoeyBmaWxlOiBmaWxlLCBmaWxlTmFtZTogZmlsZU5hbWV9KTtcbiAgICB9XG5cbiB9XG4gIl19