dext5upload-vue3
Version:
Vue3 + TypeScript component for DEXT5 Upload
143 lines (142 loc) • 6.64 kB
JavaScript
/**
* @license Copyright (c) 2003-2022, RAONWIZ DevTeam. All rights reserved.
*/
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Dext5Upload = void 0;
/* eslint-disable new-cap */
var raonwiz_integrations_common_1 = require("raonwiz-integrations-common");
var Dext5UploadObject_1 = require("../Dext5UploadObject");
var Utils_1 = require("../Utils");
var Dext5UploadPropTypes_1 = require("./Dext5UploadPropTypes");
var vue_1 = require("vue");
var renderComponent = function (ce, id, elementRef, tagName) {
return ce(tagName ? tagName : 'div', {
id: id,
ref: elementRef
});
};
exports.Dext5Upload = (0, vue_1.defineComponent)({
props: Dext5UploadPropTypes_1.uploadProps,
setup: function (props, ctx) {
var conf = props.config ? __assign({}, props.config) : {};
var mode = (0, vue_1.toRefs)(props).mode;
var element = (0, vue_1.ref)(null);
var vueUpload = null;
var elementId = props.id || (0, Utils_1.uuid)('dext5upload-vue');
var mounting = true;
var makeComponent = function () {
var uploadId = props.id ? props.id : elementId;
// config
if (props.createMode && props.createMode.toLocaleLowerCase() == "object") {
props.config.Id = uploadId;
props.config.UploadHolder = uploadId;
// event
if (typeof (0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap === 'undefined') {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap = new Map();
}
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.has(uploadId)) {
return;
}
(0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.set(uploadId, ctx);
(0, Utils_1.setUpComponentEvents)(uploadId, ctx);
var UploadConstructor = (0, Dext5UploadObject_1.getDext5Upload)();
vueUpload = new UploadConstructor(props.config);
}
else if (props.config) {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)().config.UploadHolder = uploadId;
var entries = Object.entries(props.config);
var entry_1;
entries.map(function (_a) {
var _b = _a === void 0 ? entry_1 : _a, key = _b[0], val = _b[1];
(0, Dext5UploadObject_1.getDEXT5UPLOAD)().config[key] = val;
});
// event
if (typeof (0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap === 'undefined') {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap = new Map();
}
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.has(uploadId)) {
return;
}
(0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.set(uploadId, ctx);
(0, Utils_1.setUpComponentEvents)(uploadId, ctx);
var UploadConstructor = (0, Dext5UploadObject_1.getDext5Upload)();
vueUpload = new UploadConstructor(uploadId);
}
mounting = false;
};
(0, vue_1.watch)(mode, function (mode) {
if (vueUpload !== null) {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)().SetUploadMode(mode, vueUpload.ID);
}
});
(0, vue_1.onMounted)(function () {
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)() !== null) {
makeComponent();
}
else if (element.value && element.value.ownerDocument) {
var componentUrl = props.componentUrl;
if (typeof componentUrl === 'undefined') {
componentUrl = '/dext5upload/js/dext5upload.js';
}
(0, raonwiz_integrations_common_1.getRaonwizComponentNamespace)('DEXT5UPLOAD', componentUrl)
.then(makeComponent)
.catch(function (error) {
console.error(error);
});
}
});
(0, vue_1.onBeforeUnmount)(function () {
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)() !== null) {
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.has(vueUpload.ID)) {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.delete(vueUpload.ID);
}
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)().isLoadedUploadEx(vueUpload.ID)) {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)().Destroy(vueUpload.ID);
}
}
});
(0, vue_1.onActivated)(function () {
if (!mounting) {
makeComponent();
}
});
(0, vue_1.onDeactivated)(function () {
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)() !== null) {
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.has(vueUpload.ID)) {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.delete(vueUpload.ID);
}
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)().isLoadedUploadEx(vueUpload.ID)) {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)().Destroy(vueUpload.ID);
}
}
});
var rerender = function (init) {
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)() !== null) {
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.has(vueUpload.ID)) {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)()._EventHashMap.delete(vueUpload.ID);
}
if ((0, Dext5UploadObject_1.getDEXT5UPLOAD)().isLoadedUploadEx(vueUpload.ID)) {
(0, Dext5UploadObject_1.getDEXT5UPLOAD)().Destroy(vueUpload.ID);
}
}
conf = __assign(__assign({}, conf), init);
(0, vue_1.nextTick)(function () { return makeComponent(); });
};
ctx.expose({
rerender: rerender
});
return function () { return renderComponent(vue_1.h, elementId, element, props.tagName); };
}
});
;