n8n-editor-ui
Version:
Workflow Editor UI for n8n
1,964 lines • 106 kB
JavaScript
;
(function () {
System.register(["./vue.runtime.esm-bundler-legacy--Sn1h8On.js", "./_MapCache-legacy-DlYNX_X1.js", "./src-legacy-uZTNWMC0.js", "./en-legacy-DJK4SpPN.js", "./preload-helper-legacy-CXRjoQ0T.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./truncate-legacy-BGje52Or.js", "./_initCloneObject-legacy-BQarUtj5.js", "./icon-legacy-CqVXaCIS.js", "./overlay-legacy-o1gtoD8p.js", "./empty-legacy-CA9D6itE.js", "./radio-legacy-D3Bp0uYy.js", "./dialog-legacy-Bm1i_4WP.js", "./useTelemetry-legacy-B3pzzkAE.js", "./useToast-legacy-C4Vu5mt9.js", "./sanitize-html-legacy-DLqXJu-U.js", "./CalendarDate-legacy-BUvNgcoo.js", "./path-browserify-legacy-C6ml8BkF.js", "./constants-legacy-TKxWCqvM.js", "./merge-legacy-8xjIc_ts.js", "./_baseOrderBy-legacy-CB2Dh5d_.js", "./dateformat-legacy-C4HUJTCr.js", "./useDebounce-legacy-CqZ-fJEm.js", "./useExternalHooks-legacy-8pg6K3ln.js", "./useStyles-legacy-E8NPEyeD.js", "./dataTable.store-legacy-CZUet4xq.js", "./Modal-legacy-Dhikbd26.js"], function (_export, _context) {
"use strict";
var computed, toDisplayString, createElementBlock, createCommentVNode, unref, ref, onBeforeUnmount, NOOP, createVNode, defineComponent, createBlock, toRef, mergeProps, onMounted, Fragment, watch, isFunction, renderSlot, normalizeStyle, withCtx, resolveDynamicComponent, openBlock, withModifiers, renderList, createTextVNode, createSlots, withKeys, isString, isArray, provide, TransitionGroup, init_shared_esm_bundler, isPlainObject, normalizeClass, createBaseVNode, inject, shallowRef, useI18n, _baseUnary_default, N8nSelect_default, N8nButton_default, N8nOption_default, keys_default, N8nText_default, N8nIcon_default, N8nInputLabel_default, N8nCheckbox_default, useFormDisabled, _getAllKeys_default, stubArray_default, isNil_default, isEqual_default, _getTag_default, isBuffer_default, _nodeUtil_default, mutable, _baseGetAllKeys_default, _arrayPush_default, _Stack_default, _getSymbols_default, N8nInput_default, __plugin_vue_export_helper_default, useLocale, definePropType, throwError, buildProps, _Symbol_default, entriesOf, debugWarn, isArray_default, isObjectLike_default, _assignValue_default, isObject_default, useVModel, useNamespace, useRoute, useRouter, _getPrototype_default, _copyArray_default, _cloneBuffer_default, _cloneTypedArray_default, keysIn_default, _cloneArrayBuffer_default, _copyObject_default, _initCloneObject_default, document_default, warning_filled_default, zoom_in_default, close_default, delete_default, circle_close_default, withInstall, _export_sfc, ElIcon, check_default, circle_check_default, ElRadioGroup, ElRadio, useUIStore, useTelemetry, useToast, PROJECT_DATA_TABLES, DATA_TABLE_DETAILS, DATA_TABLE_SYSTEM_COLUMNS, dataTableColumnNameSchema, useDataTableStore, Modal_default, __vite_style__, _arrayEach_default, _baseAssign_default, _baseAssignIn_default, _copySymbols_default, getSymbolsIn, _getSymbolsIn_default, _copySymbolsIn_default, _getAllKeysIn_default, hasOwnProperty, _initCloneArray_default, _cloneDataView_default, reFlags, _cloneRegExp_default, symbolProto, symbolValueOf, _cloneSymbol_default, boolTag$1, dateTag$1, mapTag$2, numberTag$1, regexpTag$1, setTag$2, stringTag$1, symbolTag$1, arrayBufferTag$1, dataViewTag$1, float32Tag$1, float64Tag$1, int8Tag$1, int16Tag$1, int32Tag$1, uint8Tag$1, uint8ClampedTag$1, uint16Tag$1, uint32Tag$1, _initCloneByTag_default, mapTag$1, _baseIsMap_default, nodeIsMap, isMap, isMap_default, setTag$1, _baseIsSet_default, nodeIsSet, isSet, isSet_default, CLONE_DEEP_FLAG$1, CLONE_FLAT_FLAG, CLONE_SYMBOLS_FLAG$1, argsTag, arrayTag, boolTag, dateTag, errorTag, funcTag, genTag, mapTag, numberTag, objectTag, regexpTag, setTag, stringTag, symbolTag, weakMapTag, arrayBufferTag, dataViewTag, float32Tag, float64Tag, int8Tag, int16Tag, int32Tag, uint8Tag, uint8ClampedTag, uint16Tag, uint32Tag, cloneableTags, _baseClone_default, CLONE_DEEP_FLAG, CLONE_SYMBOLS_FLAG, cloneDeep_default, progressProps, _hoisted_1$3, _hoisted_2$2, _hoisted_3$1, _hoisted_4$1, _hoisted_5$1, Progress, ElProgress, uploadContextKey, SCOPE$1, UploadAjaxError, ajaxUpload, uploadListTypes, fileId, genFileId, uploadBaseProps, uploadProps, uploadListProps, uploadListEmits, _hoisted_1$2, _hoisted_2$1, _hoisted_3, _hoisted_4, _hoisted_5, _hoisted_6, UploadList, uploadDraggerProps, uploadDraggerEmits, _hoisted_1$1, COMPONENT_NAME, UploadDragger, uploadContentProps, _hoisted_1, _hoisted_2, UploadContent, SCOPE, revokeFileObjectURL, useHandlers, Upload, ElUpload, AddDataTableModal_vue_vue_type_script_setup_true_lang_default, header, content, selectionContent, radioGroup, uploadSection, uploadingMessage, importContent, successNotice, columnHeaders, columnHeaderLabel, columnsContainer, columnItem, columnInputWrapper, columnTypeWrapper, inputError, columnErrorMessage, footer, fileSelectedContainer, uploadDemo, uploadIcon, fileName, AddDataTableModal_vue_vue_type_style_index_0_lang_module_default, cssModules, AddDataTableModal_default;
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayEach.js
/**
* A specialized version of `_.forEach` for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns `array`.
*/
function arrayEach(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length;
while (++index < length) if (iteratee(array[index], index, array) === false) break;
return array;
}
//#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssign.js
/**
* The base implementation of `_.assign` without support for multiple sources
* or `customizer` functions.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @returns {Object} Returns `object`.
*/
function baseAssign(object, source) {
return object && _copyObject_default(source, keys_default(source), object);
}
//#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignIn.js
/**
* The base implementation of `_.assignIn` without support for multiple sources
* or `customizer` functions.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @returns {Object} Returns `object`.
*/
function baseAssignIn(object, source) {
return object && _copyObject_default(source, keysIn_default(source), object);
}
//#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copySymbols.js
/**
* Copies own symbols of `source` to `object`.
*
* @private
* @param {Object} source The object to copy symbols from.
* @param {Object} [object={}] The object to copy symbols to.
* @returns {Object} Returns `object`.
*/
function copySymbols(source, object) {
return _copyObject_default(source, _getSymbols_default(source), object);
}
//#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copySymbolsIn.js
/**
* Copies own and inherited symbols of `source` to `object`.
*
* @private
* @param {Object} source The object to copy symbols from.
* @param {Object} [object={}] The object to copy symbols to.
* @returns {Object} Returns `object`.
*/
function copySymbolsIn(source, object) {
return _copyObject_default(source, _getSymbolsIn_default(source), object);
}
//#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeysIn.js
/**
* Creates an array of own and inherited enumerable property names and
* symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names and symbols.
*/
function getAllKeysIn(object) {
return _baseGetAllKeys_default(object, keysIn_default, _getSymbolsIn_default);
}
/**
* Initializes an array clone.
*
* @private
* @param {Array} array The array to clone.
* @returns {Array} Returns the initialized clone.
*/
function initCloneArray(array) {
var length = array.length,
result = new array.constructor(length);
if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
result.index = array.index;
result.input = array.input;
}
return result;
}
//#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneDataView.js
/**
* Creates a clone of `dataView`.
*
* @private
* @param {Object} dataView The data view to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Object} Returns the cloned data view.
*/
function cloneDataView(dataView, isDeep) {
var buffer = isDeep ? _cloneArrayBuffer_default(dataView.buffer) : dataView.buffer;
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
}
/**
* Creates a clone of `regexp`.
*
* @private
* @param {Object} regexp The regexp to clone.
* @returns {Object} Returns the cloned regexp.
*/
function cloneRegExp(regexp) {
var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
result.lastIndex = regexp.lastIndex;
return result;
}
/**
* Creates a clone of the `symbol` object.
*
* @private
* @param {Object} symbol The symbol object to clone.
* @returns {Object} Returns the cloned symbol object.
*/
function cloneSymbol(symbol) {
return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
}
/**
* Initializes an object clone based on its `toStringTag`.
*
* **Note:** This function only supports cloning values with tags of
* `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
*
* @private
* @param {Object} object The object to clone.
* @param {string} tag The `toStringTag` of the object to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Object} Returns the initialized clone.
*/
function initCloneByTag(object, tag, isDeep) {
var Ctor = object.constructor;
switch (tag) {
case arrayBufferTag$1:
return _cloneArrayBuffer_default(object);
case boolTag$1:
case dateTag$1:
return new Ctor(+object);
case dataViewTag$1:
return _cloneDataView_default(object, isDeep);
case float32Tag$1:
case float64Tag$1:
case int8Tag$1:
case int16Tag$1:
case int32Tag$1:
case uint8Tag$1:
case uint8ClampedTag$1:
case uint16Tag$1:
case uint32Tag$1:
return _cloneTypedArray_default(object, isDeep);
case mapTag$2:
return new Ctor();
case numberTag$1:
case stringTag$1:
return new Ctor(object);
case regexpTag$1:
return _cloneRegExp_default(object);
case setTag$2:
return new Ctor();
case symbolTag$1:
return _cloneSymbol_default(object);
}
}
/**
* The base implementation of `_.isMap` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a map, else `false`.
*/
function baseIsMap(value) {
return isObjectLike_default(value) && _getTag_default(value) == mapTag$1;
}
/**
* The base implementation of `_.isSet` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a set, else `false`.
*/
function baseIsSet(value) {
return isObjectLike_default(value) && _getTag_default(value) == setTag$1;
}
/**
* The base implementation of `_.clone` and `_.cloneDeep` which tracks
* traversed objects.
*
* @private
* @param {*} value The value to clone.
* @param {boolean} bitmask The bitmask flags.
* 1 - Deep clone
* 2 - Flatten inherited properties
* 4 - Clone symbols
* @param {Function} [customizer] The function to customize cloning.
* @param {string} [key] The key of `value`.
* @param {Object} [object] The parent object of `value`.
* @param {Object} [stack] Tracks traversed objects and their clone counterparts.
* @returns {*} Returns the cloned value.
*/
function baseClone(value, bitmask, customizer, key, object, stack) {
var result,
isDeep = bitmask & CLONE_DEEP_FLAG$1,
isFlat = bitmask & CLONE_FLAT_FLAG,
isFull = bitmask & CLONE_SYMBOLS_FLAG$1;
if (customizer) result = object ? customizer(value, key, object, stack) : customizer(value);
if (result !== void 0) return result;
if (!isObject_default(value)) return value;
var isArr = isArray_default(value);
if (isArr) {
result = _initCloneArray_default(value);
if (!isDeep) return _copyArray_default(value, result);
} else {
var tag = _getTag_default(value),
isFunc = tag == funcTag || tag == genTag;
if (isBuffer_default(value)) return _cloneBuffer_default(value, isDeep);
if (tag == objectTag || tag == argsTag || isFunc && !object) {
result = isFlat || isFunc ? {} : _initCloneObject_default(value);
if (!isDeep) return isFlat ? _copySymbolsIn_default(value, _baseAssignIn_default(result, value)) : _copySymbols_default(value, _baseAssign_default(result, value));
} else {
if (!cloneableTags[tag]) return object ? value : {};
result = _initCloneByTag_default(value, tag, isDeep);
}
}
stack || (stack = new _Stack_default());
var stacked = stack.get(value);
if (stacked) return stacked;
stack.set(value, result);
if (isSet_default(value)) value.forEach(function (subValue) {
result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
});else if (isMap_default(value)) value.forEach(function (subValue, key$1) {
result.set(key$1, baseClone(subValue, bitmask, customizer, key$1, value, stack));
});
var props = isArr ? void 0 : (isFull ? isFlat ? _getAllKeysIn_default : _getAllKeys_default : isFlat ? keysIn_default : keys_default)(value);
_arrayEach_default(props || value, function (subValue, key$1) {
if (props) {
key$1 = subValue;
subValue = value[key$1];
}
_assignValue_default(result, key$1, baseClone(subValue, bitmask, customizer, key$1, value, stack));
});
return result;
}
/**
* This method is like `_.clone` except that it recursively clones `value`.
*
* @static
* @memberOf _
* @since 1.0.0
* @category Lang
* @param {*} value The value to recursively clone.
* @returns {*} Returns the deep cloned value.
* @see _.clone
* @example
*
* var objects = [{ 'a': 1 }, { 'b': 2 }];
*
* var deep = _.cloneDeep(objects);
* console.log(deep[0] === objects[0]);
* // => false
*/
function cloneDeep(value) {
return _baseClone_default(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
}
function getError(action, option, xhr) {
let msg;
if (xhr.response) msg = `${xhr.response.error || xhr.response}`;else if (xhr.responseText) msg = `${xhr.responseText}`;else msg = `fail to ${option.method} ${action} ${xhr.status}`;
return new UploadAjaxError(msg, xhr.status, option.method, action);
}
function getBody(xhr) {
const text = xhr.responseText || xhr.response;
if (!text) return text;
try {
return JSON.parse(text);
} catch (e) {
return text;
}
}
return {
setters: [function (_vueRuntimeEsmBundlerLegacy003Js) {
computed = _vueRuntimeEsmBundlerLegacy003Js.C;
toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Cn;
createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D;
createCommentVNode = _vueRuntimeEsmBundlerLegacy003Js.E;
unref = _vueRuntimeEsmBundlerLegacy003Js.Gt;
ref = _vueRuntimeEsmBundlerLegacy003Js.It;
onBeforeUnmount = _vueRuntimeEsmBundlerLegacy003Js.J;
NOOP = _vueRuntimeEsmBundlerLegacy003Js.Jt;
createVNode = _vueRuntimeEsmBundlerLegacy003Js.M;
defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P;
createBlock = _vueRuntimeEsmBundlerLegacy003Js.T;
toRef = _vueRuntimeEsmBundlerLegacy003Js.Vt;
mergeProps = _vueRuntimeEsmBundlerLegacy003Js.W;
onMounted = _vueRuntimeEsmBundlerLegacy003Js.Z;
Fragment = _vueRuntimeEsmBundlerLegacy003Js._;
watch = _vueRuntimeEsmBundlerLegacy003Js._t;
isFunction = _vueRuntimeEsmBundlerLegacy003Js.an;
renderSlot = _vueRuntimeEsmBundlerLegacy003Js.at;
normalizeStyle = _vueRuntimeEsmBundlerLegacy003Js.bn;
withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt;
resolveDynamicComponent = _vueRuntimeEsmBundlerLegacy003Js.ct;
openBlock = _vueRuntimeEsmBundlerLegacy003Js.et;
withModifiers = _vueRuntimeEsmBundlerLegacy003Js.h;
renderList = _vueRuntimeEsmBundlerLegacy003Js.it;
createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j;
createSlots = _vueRuntimeEsmBundlerLegacy003Js.k;
withKeys = _vueRuntimeEsmBundlerLegacy003Js.m;
isString = _vueRuntimeEsmBundlerLegacy003Js.mn;
isArray = _vueRuntimeEsmBundlerLegacy003Js.nn;
provide = _vueRuntimeEsmBundlerLegacy003Js.nt;
TransitionGroup = _vueRuntimeEsmBundlerLegacy003Js.r;
init_shared_esm_bundler = _vueRuntimeEsmBundlerLegacy003Js.tn;
isPlainObject = _vueRuntimeEsmBundlerLegacy003Js.un;
normalizeClass = _vueRuntimeEsmBundlerLegacy003Js.vn;
createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w;
inject = _vueRuntimeEsmBundlerLegacy003Js.z;
shallowRef = _vueRuntimeEsmBundlerLegacy003Js.zt;
}, function (_MapCacheLegacy005Js) {
useI18n = _MapCacheLegacy005Js.gt;
}, function (_srcLegacy007Js) {
_baseUnary_default = _srcLegacy007Js.An;
N8nSelect_default = _srcLegacy007Js.G;
N8nButton_default = _srcLegacy007Js.Hn;
N8nOption_default = _srcLegacy007Js.K;
keys_default = _srcLegacy007Js.Tn;
N8nText_default = _srcLegacy007Js.Vn;
N8nIcon_default = _srcLegacy007Js.Wn;
N8nInputLabel_default = _srcLegacy007Js.X;
N8nCheckbox_default = _srcLegacy007Js.Y;
useFormDisabled = _srcLegacy007Js.Yt;
_getAllKeys_default = _srcLegacy007Js._n;
stubArray_default = _srcLegacy007Js.bn;
isNil_default = _srcLegacy007Js.dn;
isEqual_default = _srcLegacy007Js.fn;
_getTag_default = _srcLegacy007Js.gn;
isBuffer_default = _srcLegacy007Js.jn;
_nodeUtil_default = _srcLegacy007Js.kn;
mutable = _srcLegacy007Js.tn;
_baseGetAllKeys_default = _srcLegacy007Js.vn;
_arrayPush_default = _srcLegacy007Js.wn;
_Stack_default = _srcLegacy007Js.xn;
_getSymbols_default = _srcLegacy007Js.yn;
N8nInput_default = _srcLegacy007Js.yt;
}, function (_enLegacy00bJs) {}, function (_preloadHelperLegacy00dJs) {}, function (_pluginVue_exportHelperLegacy00fJs) {
__plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t;
}, function (_truncateLegacy00hJs) {
useLocale = _truncateLegacy00hJs.A;
definePropType = _truncateLegacy00hJs.F;
throwError = _truncateLegacy00hJs.H;
buildProps = _truncateLegacy00hJs.P;
_Symbol_default = _truncateLegacy00hJs.St;
entriesOf = _truncateLegacy00hJs.U;
debugWarn = _truncateLegacy00hJs.V;
isArray_default = _truncateLegacy00hJs._t;
isObjectLike_default = _truncateLegacy00hJs.bt;
_assignValue_default = _truncateLegacy00hJs.ct;
isObject_default = _truncateLegacy00hJs.gt;
useVModel = _truncateLegacy00hJs.jt;
useNamespace = _truncateLegacy00hJs.k;
useRoute = _truncateLegacy00hJs.v;
useRouter = _truncateLegacy00hJs.y;
}, function (_initCloneObjectLegacy00jJs) {
_getPrototype_default = _initCloneObjectLegacy00jJs.a;
_copyArray_default = _initCloneObjectLegacy00jJs.c;
_cloneBuffer_default = _initCloneObjectLegacy00jJs.i;
_cloneTypedArray_default = _initCloneObjectLegacy00jJs.n;
keysIn_default = _initCloneObjectLegacy00jJs.o;
_cloneArrayBuffer_default = _initCloneObjectLegacy00jJs.r;
_copyObject_default = _initCloneObjectLegacy00jJs.s;
_initCloneObject_default = _initCloneObjectLegacy00jJs.t;
}, function (_iconLegacy00nJs) {
document_default = _iconLegacy00nJs.E;
warning_filled_default = _iconLegacy00nJs.F;
zoom_in_default = _iconLegacy00nJs.I;
close_default = _iconLegacy00nJs.S;
delete_default = _iconLegacy00nJs.T;
circle_close_default = _iconLegacy00nJs.b;
withInstall = _iconLegacy00nJs.i;
_export_sfc = _iconLegacy00nJs.n;
ElIcon = _iconLegacy00nJs.t;
check_default = _iconLegacy00nJs.v;
circle_check_default = _iconLegacy00nJs.y;
}, function (_overlayLegacy00rJs) {}, function (_emptyLegacy00vJs) {}, function (_radioLegacy00zJs) {
ElRadioGroup = _radioLegacy00zJs.n;
ElRadio = _radioLegacy00zJs.t;
}, function (_dialogLegacy00DJs) {}, function (_useTelemetryLegacy00HJs) {
useUIStore = _useTelemetryLegacy00HJs.Fi;
useTelemetry = _useTelemetryLegacy00HJs.t;
}, function (_useToastLegacy00JJs) {
useToast = _useToastLegacy00JJs.t;
}, function (_sanitizeHtmlLegacy00LJs) {}, function (_CalendarDateLegacy00NJs) {}, function (_pathBrowserifyLegacy00RJs) {}, function (_constantsLegacy00TJs) {
PROJECT_DATA_TABLES = _constantsLegacy00TJs.Jr;
DATA_TABLE_DETAILS = _constantsLegacy00TJs.jr;
DATA_TABLE_SYSTEM_COLUMNS = _constantsLegacy00TJs.qi;
dataTableColumnNameSchema = _constantsLegacy00TJs.ri;
}, function (_mergeLegacy00VJs) {}, function (_baseOrderByLegacy00ZJs) {}, function (_dateformatLegacy00$Js) {}, function (_useDebounceLegacy011Js) {}, function (_useExternalHooksLegacy013Js) {}, function (_useStylesLegacy015Js) {}, function (_dataTableStoreLegacy01RJs) {
useDataTableStore = _dataTableStoreLegacy01RJs.t;
}, function (_ModalLegacy01TJs) {
Modal_default = _ModalLegacy01TJs.t;
}],
execute: function () {
__vite_style__ = document.createElement('style');
__vite_style__.textContent = "/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._header_1p7kw_123 {\n margin-bottom: var(--spacing--xs);\n}\n._content_1p7kw_127 {\n display: flex;\n flex-direction: column;\n}\n._selectionContent_1p7kw_132 {\n display: flex;\n flex-direction: column;\n gap: var(--spacing--md);\n}\n._radioGroup_1p7kw_138 {\n display: flex;\n flex-direction: column;\n gap: var(--spacing--xs);\n}\n._radioGroup_1p7kw_138 .el-radio {\n height: auto;\n margin-right: 0;\n}\n._radioGroup_1p7kw_138 .el-radio__input.is-checked .el-radio__inner {\n background-color: var(--color--primary);\n border-color: var(--color--primary);\n}\n._radioGroup_1p7kw_138 .el-radio__inner {\n width: 16px;\n height: 16px;\n}\n._radioGroup_1p7kw_138 .el-radio__input:hover .el-radio__inner {\n border-color: var(--color--foreground);\n}\n._radioGroup_1p7kw_138 .el-radio__input.is-checked:hover .el-radio__inner {\n border-color: var(--color--primary);\n}\n._radioGroup_1p7kw_138 .el-radio__label {\n font-size: var(--font-size--sm);\n color: var(--color--text) !important;\n padding-left: var(--spacing--xs);\n}\n._radioGroup_1p7kw_138 .el-radio.is-checked .el-radio__label {\n color: var(--color--text) !important;\n}\n._uploadSection_1p7kw_170 {\n display: flex;\n flex-direction: column;\n gap: var(--spacing--sm);\n}\n._uploadingMessage_1p7kw_176 {\n padding: var(--spacing--lg);\n text-align: center;\n color: var(--color--text--tint-1);\n}\n._importContent_1p7kw_182 {\n display: flex;\n flex-direction: column;\n gap: var(--spacing--md);\n}\n._successNotice_1p7kw_188 {\n padding: var(--spacing--sm) var(--spacing--md);\n background-color: var(--color--success--tint-4);\n border-radius: var(--radius);\n color: var(--color--success--shade-1);\n font-size: var(--font-size--sm);\n line-height: var(--line-height--lg);\n}\n._columnHeaders_1p7kw_197 {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--spacing--md);\n padding: 0 var(--spacing--2xs);\n}\n._columnHeaderLabel_1p7kw_204 {\n font-size: var(--font-size--sm);\n font-weight: var(--font-weight--regular);\n color: var(--color--text--tint-1);\n}\n._columnsContainer_1p7kw_210 {\n display: flex;\n flex-direction: column;\n gap: var(--spacing--md);\n max-height: 400px;\n overflow-y: auto;\n padding: var(--spacing--2xs);\n}\n._columnItem_1p7kw_219 {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--spacing--md);\n align-items: start;\n}\n._columnInputWrapper_1p7kw_226 {\n display: flex;\n flex-direction: column;\n gap: var(--spacing--4xs);\n}\n._columnTypeWrapper_1p7kw_232 {\n display: flex;\n align-items: center;\n}\n._inputError_1p7kw_237 {\n border-color: var(--color--danger) !important;\n}\n._inputError_1p7kw_237:focus {\n box-shadow: 0 0 0 2px var(--color--danger--tint-3) !important;\n}\n._columnErrorMessage_1p7kw_244 {\n font-size: var(--font-size--3xs);\n color: var(--color--danger);\n line-height: var(--line-height--sm);\n}\n._footer_1p7kw_250 {\n display: flex;\n gap: var(--spacing--2xs);\n justify-content: flex-end;\n margin-top: var(--spacing--lg);\n}\n._fileSelectedContainer_1p7kw_257 {\n display: flex;\n flex-direction: column;\n gap: var(--spacing--lg);\n padding: var(--spacing--lg) 0;\n}\n._uploadDemo_1p7kw_264 {\n width: 100%;\n}\n._uploadDemo_1p7kw_264 .el-upload {\n width: 100%;\n border-radius: var(--radius--lg);\n}\n._uploadDemo_1p7kw_264 .el-upload-dragger {\n width: 100%;\n padding: var(--spacing--2xl) var(--spacing--lg);\n border: 1px solid var(--color--foreground);\n background-color: var(--color--background-base);\n border-radius: var(--radius--lg);\n transition: all 0.2s ease;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n._uploadDemo_1p7kw_264 .el-upload-dragger:hover {\n background-color: var(--color--background);\n}\n._uploadDemo_1p7kw_264 input[type=\"file\"] {\n display: none !important;\n}\n._uploadIcon_1p7kw_290 {\n margin-bottom: var(--spacing--sm);\n}\n._fileName_1p7kw_294 {\n font-weight: var(--font-weight--regular);\n}/*$vite$:1*/";
document.head.appendChild(__vite_style__);
_arrayEach_default = arrayEach;
_baseAssign_default = baseAssign;
_baseAssignIn_default = baseAssignIn;
_copySymbols_default = copySymbols; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbolsIn.js
/**
* Creates an array of the own and inherited enumerable symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of symbols.
*/
getSymbolsIn = !Object.getOwnPropertySymbols ? stubArray_default : function (object) {
var result = [];
while (object) {
_arrayPush_default(result, _getSymbols_default(object));
object = _getPrototype_default(object);
}
return result;
};
_getSymbolsIn_default = getSymbolsIn;
_copySymbolsIn_default = copySymbolsIn;
_getAllKeysIn_default = getAllKeysIn; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_initCloneArray.js
/** Used to check objects for own properties. */
hasOwnProperty = Object.prototype.hasOwnProperty;
_initCloneArray_default = initCloneArray;
_cloneDataView_default = cloneDataView; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneRegExp.js
/** Used to match `RegExp` flags from their coerced string values. */
reFlags = /\w*$/;
_cloneRegExp_default = cloneRegExp; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneSymbol.js
/** Used to convert symbols to primitives and strings. */
symbolProto = _Symbol_default ? _Symbol_default.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
_cloneSymbol_default = cloneSymbol; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_initCloneByTag.js
/** `Object#toString` result references. */
boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", mapTag$2 = "[object Map]", numberTag$1 = "[object Number]", regexpTag$1 = "[object RegExp]", setTag$2 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]";
arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$1 = "[object DataView]", float32Tag$1 = "[object Float32Array]", float64Tag$1 = "[object Float64Array]", int8Tag$1 = "[object Int8Array]", int16Tag$1 = "[object Int16Array]", int32Tag$1 = "[object Int32Array]", uint8Tag$1 = "[object Uint8Array]", uint8ClampedTag$1 = "[object Uint8ClampedArray]", uint16Tag$1 = "[object Uint16Array]", uint32Tag$1 = "[object Uint32Array]";
_initCloneByTag_default = initCloneByTag; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsMap.js
/** `Object#toString` result references. */
mapTag$1 = "[object Map]";
_baseIsMap_default = baseIsMap; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isMap.js
nodeIsMap = _nodeUtil_default && _nodeUtil_default.isMap;
/**
* Checks if `value` is classified as a `Map` object.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a map, else `false`.
* @example
*
* _.isMap(new Map);
* // => true
*
* _.isMap(new WeakMap);
* // => false
*/
isMap = nodeIsMap ? _baseUnary_default(nodeIsMap) : _baseIsMap_default;
isMap_default = isMap; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsSet.js
/** `Object#toString` result references. */
setTag$1 = "[object Set]";
_baseIsSet_default = baseIsSet; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSet.js
nodeIsSet = _nodeUtil_default && _nodeUtil_default.isSet;
/**
* Checks if `value` is classified as a `Set` object.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a set, else `false`.
* @example
*
* _.isSet(new Set);
* // => true
*
* _.isSet(new WeakSet);
* // => false
*/
isSet = nodeIsSet ? _baseUnary_default(nodeIsSet) : _baseIsSet_default;
isSet_default = isSet; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseClone.js
/** Used to compose bitmasks for cloning. */
CLONE_DEEP_FLAG$1 = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG$1 = 4;
/** `Object#toString` result references. */
argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", objectTag = "[object Object]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", weakMapTag = "[object WeakMap]";
arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
/** Used to identify `toStringTag` values supported by `_.clone`. */
cloneableTags = {};
cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
_baseClone_default = baseClone; //#endregion
//#region ../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/cloneDeep.js
/** Used to compose bitmasks for cloning. */
CLONE_DEEP_FLAG = 1, CLONE_SYMBOLS_FLAG = 4;
cloneDeep_default = cloneDeep; //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/progress/src/progress.mjs
progressProps = buildProps({
type: {
type: String,
default: "line",
values: ["line", "circle", "dashboard"]
},
percentage: {
type: Number,
default: 0,
validator: val => val >= 0 && val <= 100
},
status: {
type: String,
default: "",
values: ["", "success", "exception", "warning"]
},
indeterminate: {
type: Boolean,
default: false
},
duration: {
type: Number,
default: 3
},
strokeWidth: {
type: Number,
default: 6
},
strokeLinecap: {
type: definePropType(String),
default: "round"
},
textInside: {
type: Boolean,
default: false
},
width: {
type: Number,
default: 126
},
showText: {
type: Boolean,
default: true
},
color: {
type: definePropType([String, Array, Function]),
default: ""
},
striped: Boolean,
stripedFlow: Boolean,
format: {
type: definePropType(Function),
default: percentage => `${percentage}%`
}
}); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/progress/src/progress2.mjs
init_shared_esm_bundler();
_hoisted_1$3 = ["aria-valuenow"];
_hoisted_2$2 = {
viewBox: "0 0 100 100"
};
_hoisted_3$1 = ["d", "stroke", "stroke-linecap", "stroke-width"];
_hoisted_4$1 = ["d", "stroke", "opacity", "stroke-linecap", "stroke-width"];
_hoisted_5$1 = {
key: 0
};
Progress = /* @__PURE__ */_export_sfc(/* @__PURE__ */defineComponent({
...defineComponent({
name: "ElProgress"
}),
props: progressProps,
setup(__props) {
const props = __props;
const STATUS_COLOR_MAP = {
success: "#13ce66",
exception: "#ff4949",
warning: "#e6a23c",
default: "#20a0ff"
};
const ns = useNamespace("progress");
const barStyle = computed(() => ({
width: `${props.percentage}%`,
animationDuration: `${props.duration}s`,
backgroundColor: getCurrentColor(props.percentage)
}));
const relativeStrokeWidth = computed(() => (props.strokeWidth / props.width * 100).toFixed(1));
const radius = computed(() => {
if (["circle", "dashboard"].includes(props.type)) return Number.parseInt(`${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`, 10);
return 0;
});
const trackPath = computed(() => {
const r = radius.value;
const isDashboard = props.type === "dashboard";
return `
M 50 50
m 0 ${isDashboard ? "" : "-"}${r}
a ${r} ${r} 0 1 1 0 ${isDashboard ? "-" : ""}${r * 2}
a ${r} ${r} 0 1 1 0 ${isDashboard ? "" : "-"}${r * 2}
`;
});
const perimeter = computed(() => 2 * Math.PI * radius.value);
const rate = computed(() => props.type === "dashboard" ? .75 : 1);
const strokeDashoffset = computed(() => {
return `${-1 * perimeter.value * (1 - rate.value) / 2}px`;
});
const trailPathStyle = computed(() => ({
strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,
strokeDashoffset: strokeDashoffset.value
}));
const circlePathStyle = computed(() => ({
strokeDasharray: `${perimeter.value * rate.value * (props.percentage / 100)}px, ${perimeter.value}px`,
strokeDashoffset: strokeDashoffset.value,
transition: "stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"
}));
const stroke = computed(() => {
let ret;
if (props.color) ret = getCurrentColor(props.percentage);else ret = STATUS_COLOR_MAP[props.status] || STATUS_COLOR_MAP.default;
return ret;
});
const statusIcon = computed(() => {
if (props.status === "warning") return warning_filled_default;
if (props.type === "line") return props.status === "success" ? circle_check_default : circle_close_default;else return props.status === "success" ? check_default : close_default;
});
const progressTextSize = computed(() => {
return props.type === "line" ? 12 + props.strokeWidth * .4 : props.width * .111111 + 2;
});
const content$1 = computed(() => props.format(props.percentage));
function getColors(color) {
const span = 100 / color.length;
return color.map((seriesColor, index) => {
if (isString(seriesColor)) return {
color: seriesColor,
percentage: (index + 1) * span
};
return seriesColor;
}).sort((a, b) => a.percentage - b.percentage);
}
const getCurrentColor = percentage => {
var _a;
const {
color
} = props;
if (isFunction(color)) return color(percentage);else if (isString(color)) return color;else {
const colors = getColors(color);
for (const color2 of colors) if (color2.percentage > percentage) return color2.color;
return (_a = colors[colors.length - 1]) == null ? void 0 : _a.color;
}
};
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.type), unref(ns).is(_ctx.status), {
[unref(ns).m("without-text")]: !_ctx.showText,
[unref(ns).m("text-inside")]: _ctx.textInside
}]),
role: "progressbar",
"aria-valuenow": _ctx.percentage,
"aria-valuemin": "0",
"aria-valuemax": "100"
}, [_ctx.type === "line" ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(unref(ns).b("bar"))
}, [createBaseVNode("div", {
class: normalizeClass(unref(ns).be("bar", "outer")),
style: normalizeStyle({
height: `${_ctx.strokeWidth}px`
})
}, [createBaseVNode("div", {
class: normalizeClass([unref(ns).be("bar", "inner"), {
[unref(ns).bem("bar", "inner", "indeterminate")]: _ctx.indeterminate
}, {
[unref(ns).bem("bar", "inner", "striped")]: _ctx.striped
}, {
[unref(ns).bem("bar", "inner", "striped-flow")]: _ctx.stripedFlow
}]),
style: normalizeStyle(unref(barStyle))
}, [(_ctx.showText || _ctx.$slots.default) && _ctx.textInside ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(unref(ns).be("bar", "innerText"))
}, [renderSlot(_ctx.$slots, "default", {
percentage: _ctx.percentage
}, () => [createBaseVNode("span", null, toDisplayString(unref(content$1)), 1)])], 2)) : createCommentVNode("v-if", true)], 6)], 6)], 2)) : (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(unref(ns).b("circle")),
style: normalizeStyle({
height: `${_ctx.width}px`,
width: `${_ctx.width}px`
})
}, [(openBlock(), createElementBlock("svg", _hoisted_2$2, [createBaseVNode("path", {
class: normalizeClass(unref(ns).be("circle", "track")),
d: unref(trackPath),
stroke: `var(${unref(ns).cssVarName("fill-color-light")}, #e5e9f2)`,
"stroke-linecap": _ctx.strokeLinecap,
"stroke-width": unref(relativeStrokeWidth),
fill: "none",
style: normalizeStyle(unref(trailPathStyle))
}, null, 14, _hoisted_3$1), createBaseVNode("path", {
class: normalizeClass(unref(ns).be("circle", "path")),
d: unref(trackPath),
stroke: unref(stroke),
fill: "none",
opacity: _ctx.percentage ? 1 : 0,
"stroke-linecap": _ctx.strokeLinecap,
"stroke-width": unref(relativeStrokeWidth),
style: normalizeStyle(unref(circlePathStyle))
}, null, 14, _hoisted_4$1)]))], 6)), (_ctx.showText || _ctx.$slots.default) && !_ctx.textInside ? (openBlock(), createElementBlock("div", {
key: 2,
class: normalizeClass(unref(ns).e("text")),
style: normalizeStyle({
fontSize: `${unref(progressTextSize)}px`
})
}, [renderSlot(_ctx.$slots, "default", {
percentage: _ctx.percentage
}, () => [!_ctx.status ? (openBlock(), createElementBlock("span", _hoisted_5$1, toDisplayString(unref(content$1)), 1)) : (openBlock(), createBlock(unref(ElIcon), {
key: 1
}, {
default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(unref(statusIcon))))]),
_: 1
}))])], 6)) : createCommentVNode("v-if", true)], 10, _hoisted_1$3);
};
}
}), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/progress/src/progress.vue"]]); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/progress/index.mjs
ElProgress = withInstall(Progress); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/constants.mjs
uploadContextKey = Symbol("uploadContextKey"); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/ajax.mjs
init_shared_esm_bundler();
SCOPE$1 = "ElUpload";
UploadAjaxError = class extends Error {
constructor(message, status, method, url) {
super(message);
this.name = "UploadAjaxError";
this.status = status;
this.method = method;
this.url = url;
}
};
ajaxUpload = option => {
if (typeof XMLHttpRequest === "undefined") throwError(SCOPE$1, "XMLHttpRequest is undefined");
const xhr = new XMLHttpRequest();
const action = option.action;
if (xhr.upload) xhr.upload.addEventListener("progress", evt => {
const progressEvt = evt;
progressEvt.percent = evt.total > 0 ? evt.loaded / evt.total * 100 : 0;
option.onProgress(progressEvt);
});
const formData = new FormData();
if (option.data) for (const [key, value] of Object.entries(option.data)) if (isArray(value) && value.length) formData.append(key, ...value);else formData.append(key, value);
formData.append(option.filename, option.file, option.file.name);
xhr.addEventListener("error", () => {
option.onError(getError(action, option, xhr));
});
xhr.addEventListener("load", () => {
if (xhr.status < 200 || xhr.status >= 300) return option.onError(getError(action, option, xhr));
option.onSuccess(getBody(xhr));
});
xhr.open(option.method, action, true);
if (option.withCredentials && "withCredentials" in xhr) xhr.withCredentials = true;
const headers = option.headers || {};
if (headers instanceof Headers) headers.forEach((value, key) => xhr.setRequestHeader(key, value));else for (const [key, value] of Object.entries(headers)) {
if (isNil_default(value)) continue;
xhr.setRequestHeader(key, String(value));
}
xhr.send(formData);
return xhr;
}; //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/upload.mjs
init_shared_esm_bundler();
uploadListTypes = ["text", "picture", "picture-card"];
fileId = 1;
genFileId = () => Date.now() + fileId++;
uploadBaseProps = buildProps({
action: {
type: String,
default: "#"
},
headers: {
type: definePropType(Object)
},
method: {
type: String,
default: "post"
},
data: {
type: definePropType([Object, Function, Promise]),
default: () => mutable({})
},
multiple: {
type: Boolean,
default: false
},
name: {
type: String,
default: "file"
},
drag: {
type: Boolean,
default: false
},
withCredentials: Boolean,
showFileList: {
type: Boolean,
default: true
},
accept: {
type: String,
default: ""
},
fileList: {
type: definePropType(Array),
default: () => mutable([])
},
autoUpload: {
type: Boolean,
default: true
},
listType: {
type: String,
values: uploadListTypes,
default: "text"
},
httpRequest: {
type: definePropType(Function),
default: ajaxUpload
},
disabled: Boolean,
limit: Number
});
uploadProps = buildProps({
...uploadBaseProps,
beforeUpload: {
type: definePropType(Function),
default: NOOP
},
beforeRemove: {
type: definePropType(Function)
},
onRemove: {
type: definePropType(Function),
default: NOOP
},
onChange: {
type: definePropType(Function),
default: NOOP
},
onPreview: {
type: definePropType(Function),
default: NOOP
},
onSuccess: {
type: definePropType(Function),
default: NOOP
},
onProgress: {
type: definePropType(Function),
default: NOOP
},
onError: {
type: definePropType(Function),
default: NOOP
},
onExceed: {
type: definePropType(Function),
default: NOOP
}
}); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/upload-list.mjs
init_shared_esm_bundler();
uploadListProps = buildProps({
files: {
type: definePropType(Array),
default: () => mutable([])
},
disabled: {
type: Boolean,
default: false
},
handlePreview: {
type: definePropType(Function),
default: NOOP
},
listType: {
type: String,
values: uploadListTypes,
default: "text"
}
});
uploadListEmits = {
remove: file => !!file
}; //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/upload-list2.mjs
_hoisted_1$2 = ["onKeydown"];
_hoisted_2$1 = ["src"];
_hoisted_3 = ["onClick"];
_hoisted_4 = ["title"];
_hoisted_5 = ["onClick"];
_hoisted_6 = ["onClick"];
UploadList = /* @__PURE__ */_export_sfc(/* @__PURE__ */defineComponent({
...defineComponent({
name: "ElUploadList"
}),
props: uploadListProps,
emits: uploadListEmits,
setup(__props, {
emit
}) {
const props = __props;
const {
t
} = useLocale();
const nsUpload = useNamespace("upload");
const nsIcon = useNamespace("icon");
const nsList = useNamespace("list");
const disabled = useFormDisabled();
const focusing = ref(false);
const containerKls = computed(() => [nsUpload.b("list"), nsUpload.bm("list", props.listType), nsUpload.is("disabled", props.disabled)]);
const handleRemove = file => {
emit("remove", file);
};
return (_ctx, _cache) => {
return openBlock(), createBlock(TransitionGroup, {
tag: "ul",
class: normalizeClass(unref(containerKls)),
name: unref(nsList).b()
}, {
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.files, file => {
return openBlock(), createElementBlock("li", {
key: file.uid || file.name,
class: normalizeClass([unref(nsUpload).be("list", "item"), unref(nsUpload).is(file.status), {
focusing: focusing.value
}]),
tabindex: "0",
onKeydown: withKeys($event => !unref(disabled) && handleRemove(file), ["delete"]),
onFocus: _cache[0] || (_cache[0] = $event => focusing.value = true),
onBlur: _cache[1] || (_cache[1] = $event => focusing.value = false),
onClick: _cache[2] || (_cache[2] = $event => focusing.value = false)
}, [renderSlot(_ctx.$slots, "default", {
file
}, () => [_ctx.listType === "picture" || file.status !== "uploading" && _ctx.listType === "picture-card" ? (openBlock(), createElementBlock("img", {
key: 0,
class: normalizeClass(unref(nsUpload).be("list", "item-thumbnail")),
src: file.url,
alt: ""
}, null, 10, _hoisted_2$1)) : createCommentVNode("v-if", true), file.status === "uploading" || _ctx.listType !== "picture-card" ? (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(unref(nsUpload).be("list", "item-info"))
}, [createBaseVNode("a", {
class: normalizeClass(unref(nsUpload).be("list", "item-name")),
onClick: withModifiers($event => _ctx.handlePreview(file), ["prevent"])
}, [createVNode(unref(ElIcon), {
class: normalizeClass(unref(nsIcon).m("document"))
}, {
default: withCtx(() => [createVNode(unref(document_default))]),
_: 1
}, 8, ["class"]), createBaseVNode("span", {
class: normalizeClass(unref(nsUpload).be("list", "item-file-name")),
title: file.name
}, toDisplayString(file.name), 11, _hoisted_4)], 10, _hoisted_3), file.status === "uploading" ? (openBlock(), createBlock(unref(ElProgress), {
key: 0,
type: _ctx.listType === "picture-card" ? "circle" : "line",
"stroke-width": _ctx.listType === "picture-card" ? 6 : 2,
percentage: Number(file.percentage),
style: normalizeStyle(_ctx.listType === "picture-card" ? "" : "margin-top: 0.5rem")
}, null, 8, ["type", "stroke-width", "percentage", "style"])) : createCommentVNode("v-if", true)], 2)) : createCommentVNode("v-if", true), createBaseVNode("label", {
class: normalizeClass(unref(nsUpload).be("list", "item-status-label"))
}, [_ctx.listType === "text" ? (openBlock(), createBlock(unref(ElIcon), {
key: 0,
class: normalizeClass([unref(nsIcon).m("upload-success"), unref(nsIcon).m("circle-check")])
}, {
default: withCtx(() => [createVNode(unref(circle_check_default))]),
_: 1
}, 8, ["class"])) : ["picture-card", "picture"].includes(_ctx.listType) ? (openBlock(), createBlock(unref(ElIcon), {
key: 1,
class: normalizeClass([unref(nsIcon).m("upload-success"), unref(nsIcon).m("check")])
}, {
default: withCtx(() => [createVNode(unref(check_default))]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)], 2), !unref(disabled) ? (openBlock(), createBlock(unref(ElIcon), {
key: 2,
class: normalizeClass(unref(nsIcon).m("close")),
onClick: $event => handleRemove(file)
}, {
default: withCtx(() => [createVNode(unref(close_default))]),
_: 2
}, 1032, ["class", "onClick"])) : createCommentVNode("v-if", true), createCommentVNode(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"), createCommentVNode(" This is a bug which needs to be fixed "), createCommentVNode(" TODO: Fix the incorrect navigation interaction "), !unref(disabled) ? (openBlock(), createElementBlock("i", {
key: 3,
class: normalizeClass(unref(nsIcon).m("close-tip"))
}, toDisplayString(unref(t)("el.upload.deleteTip")), 3)) : createCommentVNode("v-if", true), _ctx.listType === "picture-card" ? (openBlock(), createElementBlock("span", {
key: 4,
class: normalizeClass(unref(nsUpload).be("list", "item-actions"))
}, [createBaseVNode("span", {
class: normalizeClass(unref(nsUpload).be("list", "item-preview")),
onClick: $event => _ctx.handlePreview(file)
}, [createVNode(unref(ElIcon), {
class: normalizeClass(unref(nsIcon).m("zoom-in"))
}, {
default: withCtx(() => [createVNode(unref(zoom_in_default))]),
_: 1
}, 8, ["class"])], 10, _hoisted_5), !unref(disabled) ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass(unref(nsUpload).be("list", "item-delete")),
onClick: $event => handleRemove(file)
}, [createVNode(unref(ElIcon), {
class: normalizeClass(unref(nsIcon).m("delete"))
}, {
default: withCtx(() => [createVNode(unref(delete_default))]),
_: 1
}, 8, ["class"])], 10, _hoisted_6)) : createCommentVNode("v-if", true)], 2)) : createCommentVNode("v-if", true)])], 42, _hoisted_1$2);
}), 128)), renderSlot(_ctx.$slots, "append")]),
_: 3
}, 8, ["class", "name"]);
};
}
}), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-list.vue"]]); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/upload-dragger.mjs
init_shared_esm_bundler();
uploadDraggerProps = buildProps({
disabled: {
type: Boolean,
default: false
}
});
uploadDraggerEmits = {
file: file => isArray(file)
}; //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/upload-dragger2.mjs
_hoisted_1$1 = ["onDrop", "onDragover"];
COMPONENT_NAME = "ElUploadDrag";
UploadDragger = /* @__PURE__ */_export_sfc(/* @__PURE__ */defineComponent({
...defineComponent({
name: COMPONENT_NAME
}),
props: uploadDraggerProps,
emits: uploadDraggerEmits,
setup(__props, {
emit
}) {
const uploaderContext = inject(uploadContextKey);
if (!uploaderContext) throwError(COMPONENT_NAME, "usage: <el-upload><el-upload-dragger /></el-upload>");
const ns = useNamespace("upload");
const dragover = ref(false);
const disabled = useFormDisabled();
const onDrop = e => {
if (disabled.value) return;
dragover.value = false;
e.stopPropagation();
const files = Array.from(e.dataTransfer.files);
const accept = uploaderContext.accept.value;
if (!accept) {
emit("file", files);
return;
}
emit("file", files.filter(file => {
const {
type,
name
} = file;
const extension = name.includes(".") ? `.${name.split(".").pop()}` : "";
const baseType = type.replace(/\/.*$/, "");
return accept.split(",").map(type2 => type2.trim()).filter(type2 => type2).some(acceptedType => {
if (acceptedType.startsWith(".")) return extension === acceptedType;
if (/\/\*$/.test(acceptedType)) return baseType === acceptedType.replace(/\/\*$/, "");
if (/^[^/]+\/[^/]+$/.test(acceptedType)) return type === acceptedType;
return false;
});
}));
};
const onDragover = () => {
if (!disabled.value) dragover.value = true;
};
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass([unref(ns).b("dragger"), unref(ns).is("dragover", dragover.value)]),
onDrop: withModifiers(onDrop, ["prevent"]),
onDragover: withModifiers(onDragover, ["prevent"]),
onDragleave: _cache[0] || (_cache[0] = withModifiers($event => dragover.value = false, ["prevent"]))
}, [renderSlot(_ctx.$slots, "default")], 42, _hoisted_1$1);
};
}
}), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-dragger.vue"]]); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/upload-content.mjs
init_shared_esm_bundler();
uploadContentProps = buildProps({
...uploadBaseProps,
beforeUpload: {
type: definePropType(Function),
default: NOOP
},
onRemove: {
type: definePropType(Function),
default: NOOP
},
onStart: {
type: definePropType(Function),
default: NOOP
},
onSuccess: {
type: definePropType(Function),
default: NOOP
},
onProgress: {
type: definePropType(Function),
default: NOOP
},
onError: {
type: definePropType(Function),
default: NOOP
},
onExceed: {
type: definePropType(Function),
default: NOOP
}
}); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/upload-content2.mjs
init_shared_esm_bundler();
_hoisted_1 = ["onKeydown"];
_hoisted_2 = ["name", "multiple", "accept"];
UploadContent = /* @__PURE__ */_export_sfc(/* @__PURE__ */defineComponent({
...defineComponent({
name: "ElUploadContent",
inheritAttrs: false
}),
props: uploadContentProps,
setup(__props, {
expose
}) {
const props = __props;
const ns = useNamespace("upload");
const disabled = useFormDisabled();
const requests = shallowRef({});
const inputRef = shallowRef();
const uploadFiles = files => {
if (files.length === 0) return;
const {
autoUpload,
limit,
fileList,
multiple,
onStart,
onExceed
} = props;
if (limit && fileList.length + files.length > limit) {
onExceed(files, fileList);
return;
}
if (!multiple) files = files.slice(0, 1);
for (const file of files) {
const rawFile = file;
rawFile.uid = genFileId();
onStart(rawFile);
if (autoUpload) upload(rawFile);
}
};
const upload = async rawFile => {
inputRef.value.value = "";
if (!props.beforeUpload) return doUpload(rawFile);
let hookResult;
let beforeData = {};
try {
const originData = props.data;
const beforeUploadPromise = props.beforeUpload(rawFile);
beforeData = isPlainObject(props.data) ? cloneDeep_default(props.data) : props.data;
hookResult = await beforeUploadPromise;
if (isPlainObject(props.data) && isEqual_default(originData, beforeData)) beforeData = cloneDeep_default(props.data);
} catch (e) {
hookResult = false;
}
if (hookResult === false) {
props.onRemove(rawFile);
return;
}
let file = rawFile;
if (hookResult instanceof Blob) if (hookResult instanceof File) file = hookResult;else file = new File([hookResult], rawFile.name, {
type: rawFile.type
});
doUpload(Object.assign(file, {
uid: rawFile.uid
}), beforeData);
};
const resolveData = async (data, rawFile) => {
if (isFunction(data)) return data(rawFile);
return data;
};
const doUpload = async (rawFile, beforeData) => {
const {
headers,
data,
method,
withCredentials,
name: filename,
action,
onProgress,
onSuccess,
onError,
httpRequest
} = props;
try {
beforeData = await resolveData(beforeData != null ? beforeData : data, rawFile);
} catch (e) {
props.onRemove(rawFile);
return;
}
const {
uid
} = rawFile;
const options = {
headers: headers || {},
withCredentials,
file: rawFile,
data: beforeData,
method,
filename,
action,
onProgress: evt => {
onProgress(evt, rawFile);
},
onSuccess: res => {
onSuccess(res, rawFile);
delete requests.value[uid];
},
onError: err => {
onError(err, rawFile);
delete requests.value[uid];
}
};
const request = httpRequest(options);
requests.value[uid] = request;
if (request instanceof Promise) request.then(options.onSuccess, options.onError);
};
const handleChange = e => {
const files = e.target.files;
if (!files) return;
uploadFiles(Array.from(files));
};
const handleClick = () => {
if (!disabled.value) {
inputRef.value.value = "";
inputRef.value.click();
}
};
const handleKeydown = () => {
handleClick();
};
const abort = file => {
entriesOf(requests.value).filter(file ? ([uid]) => String(file.uid) === uid : () => true).forEach(([uid, req]) => {
if (req instanceof XMLHttpRequest) req.abort();
delete requests.value[uid];
});
};
expose({
abort,
upload
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.listType), unref(ns).is("drag", _ctx.drag)]),
tabindex: "0",
onClick: handleClick,
onKeydown: withKeys(withModifiers(handleKeydown, ["self"]), ["enter", "space"])
}, [_ctx.drag ? (openBlock(), createBlock(UploadDragger, {
key: 0,
disabled: unref(disabled),
onFile: uploadFiles
}, {
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
_: 3
}, 8, ["disabled"])) : renderSlot(_ctx.$slots, "default", {
key: 1
}), createBaseVNode("input", {
ref_key: "inputRef",
ref: inputRef,
class: normalizeClass(unref(ns).e("input")),
name: _ctx.name,
multiple: _ctx.multiple,
accept: _ctx.accept,
type: "file",
onChange: handleChange,
onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
}, null, 42, _hoisted_2)], 42, _hoisted_1);
};
}
}), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-content.vue"]]); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/use-handlers.mjs
SCOPE = "ElUpload";
revokeFileObjectURL = file => {
var _a;
if ((_a = file.url) == null ? void 0 : _a.startsWith("blob:")) URL.revokeObjectURL(file.url);
};
useHandlers = (props, uploadRef) => {
const uploadFiles = useVModel(props, "fileList", void 0, {
passive: true
});
const getFile = rawFile => uploadFiles.value.find(file => file.uid === rawFile.uid);
function abort(file) {
var _a;
(_a = uploadRef.value) == null || _a.abort(file);
}
function clearFiles(states = ["ready", "uploading", "success", "fail"]) {
uploadFiles.value = uploadFiles.value.filter(row => !states.includes(row.status));
}
const handleError = (err, rawFile) => {
const file = getFile(rawFile);
if (!file) return;
console.error(err);
file.status = "fail";
uploadFiles.value.splice(uploadFiles.value.indexOf(file), 1);
props.onError(err, file, uploadFiles.value);
props.onChange(file, uploadFiles.value);
};
const handleProgress = (evt, rawFile) => {
const file = getFile(rawFile);
if (!file) return;
props.onProgress(evt, file, uploadFiles.value);
file.status = "uploading";
file.percentage = Math.round(evt.percent);
};
const handleSuccess = (response, rawFile) => {
const file = getFile(rawFile);
if (!file) return;
file.status = "success";
file.response = response;
props.onSuccess(response, file, uploadFiles.value);
props.onChange(file, uploadFiles.value);
};
const handleStart = file => {
if (isNil_default(file.uid)) file.uid = genFileId();
const uploadFile = {
name: file.name,
percentage: 0,
status: "ready",
size: file.size,
raw: file,
uid: file.uid
};
if (props.listType === "picture-card" || props.listType === "picture") try {
uploadFile.url = URL.createObjectURL(file);
} catch (err) {
debugWarn(SCOPE, err.message);
props.onError(err, uploadFile, uploadFiles.value);
}
uploadFiles.value = [...uploadFiles.value, uploadFile];
props.onChange(uploadFile, uploadFiles.value);
};
const handleRemove = async file => {
const uploadFile = file instanceof File ? getFile(file) : file;
if (!uploadFile) throwError(SCOPE, "file to be removed not found");
const doRemove = file2 => {
abort(file2);
const fileList = uploadFiles.value;
fileList.splice(fileList.indexOf(file2), 1);
props.onRemove(file2, fileList);
revokeFileObjectURL(file2);
};
if (props.beforeRemove) {
if ((await props.beforeRemove(uploadFile, uploadFiles.value)) !== false) doRemove(uploadFile);
} else doRemove(uploadFile);
};
function submit() {
uploadFiles.value.filter(({
status
}) => status === "ready").forEach(({
raw
}) => {
var _a;
return raw && ((_a = uploadRef.value) == null ? void 0 : _a.upload(raw));
});
}
watch(() => props.listType, val => {
if (val !== "picture-card" && val !== "picture") return;
uploadFiles.value = uploadFiles.value.map(file => {
const {
raw,
url
} = file;
if (!url && raw) try {
file.url = URL.createObjectURL(raw);
} catch (err) {
props.onError(err, file, uploadFiles.value);
}
return file;
});
});
watch(uploadFiles, files => {
for (const file of files) {
file.uid || (file.uid = genFileId());
file.status || (file.status = "success");
}
}, {
immediate: true,
deep: true
});
return {
uploadFiles,
abort,
clearFiles,
handleError,
handleProgress,
handleStart,
handleSuccess,
handleRemove,
submit,
revokeFileObjectURL
};
}; //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/src/upload2.mjs
Upload = /* @__PURE__ */_export_sfc(/* @__PURE__ */defineComponent({
...defineComponent({
name: "ElUpload"
}),
props: uploadProps,
setup(__props, {
expose
}) {
const props = __props;
const disabled = useFormDisabled();
const uploadRef = shallowRef();
const {
abort,
submit,
clearFiles,
uploadFiles,
handleStart,
handleError,
handleRemove,
handleSuccess,
handleProgress,
revokeFileObjectURL: revokeFileObjectURL$1
} = useHandlers(props, uploadRef);
const isPictureCard = computed(() => props.listType === "picture-card");
const uploadContentProps$1 = computed(() => ({
...props,
fileList: uploadFiles.value,
onStart: handleStart,
onProgress: handleProgress,
onSuccess: handleSuccess,
onError: handleError,
onRemove: handleRemove
}));
onBeforeUnmount(() => {
uploadFiles.value.forEach(revokeFileObjectURL$1);
});
provide(uploadContextKey, {
accept: toRef(props, "accept")
});
expose({
abort,
submit,
clearFiles,
handleStart,
handleRemove
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [unref(isPictureCard) && _ctx.showFileList ? (openBlock(), createBlock(UploadList, {
key: 0,
disabled: unref(disabled),
"list-type": _ctx.listType,
files: unref(uploadFiles),
"handle-preview": _ctx.onPreview,
onRemove: unref(handleRemove)
}, createSlots({
append: withCtx(() => [createVNode(UploadContent, mergeProps({
ref_key: "uploadRef",
ref: uploadRef
}, unref(uploadContentProps$1)), {
default: withCtx(() => [_ctx.$slots.trigger ? renderSlot(_ctx.$slots, "trigger", {
key: 0
}) : createCommentVNode("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", {
key: 1
}) : createCommentVNode("v-if", true)]),
_: 3
}, 16)]),
_: 2
}, [_ctx.$slots.file ? {
name: "default",
fn: withCtx(({
file
}) => [renderSlot(_ctx.$slots, "file", {
file
})])
} : void 0]), 1032, ["disabled", "list-type", "files", "handle-preview", "onRemove"])) : createCommentVNode("v-if", true), !unref(isPictureCard) || unref(isPictureCard) && !_ctx.showFileList ? (openBlock(), createBlock(UploadContent, mergeProps({
key: 1,
ref_key: "uploadRef",
ref: uploadRef
}, unref(uploadContentProps$1)), {
default: withCtx(() => [_ctx.$slots.trigger ? renderSlot(_ctx.$slots, "trigger", {
key: 0
}) : createCommentVNode("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", {
key: 1
}) : createCommentVNode("v-if", true)]),
_: 3
}, 16)) : createCommentVNode("v-if", true), _ctx.$slots.trigger ? renderSlot(_ctx.$slots, "default", {
key: 2
}) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "tip"), !unref(isPictureCard) && _ctx.showFileList ? (openBlock(), createBlock(UploadList, {
key: 3,
disabled: unref(disabled),
"list-type": _ctx.listType,
files: unref(uploadFiles),
"handle-preview": _ctx.onPreview,
onRemove: unref(handleRemove)
}, createSlots({
_: 2
}, [_ctx.$slots.file ? {
name: "default",
fn: withCtx(({
file
}) => [renderSlot(_ctx.$slots, "file", {
file
})])
} : void 0]), 1032, ["disabled", "list-type", "files", "handle-preview", "onRemove"])) : createCommentVNode("v-if", true)]);
};
}
}), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload.vue"]]); //#endregion
//#region ../../../node_modules/.pnpm/element-plus@2.4.3_patch_hash=3bc4ea0a42ad52c6bbc3d06c12c2963d55b57d6b5b8d436e46e7fd8ff_87815230ec1d292541fa9e3e306612e7/node_modules/element-plus/es/components/upload/index.mjs
ElUpload = withInstall(Upload); //#endregion
//#region src/features/core/dataTable/components/AddDataTableModal.vue?vue&type=script&setup=true&lang.ts
AddDataTableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
__name: "AddDataTableModal",
props: {
modalName: {}
},
setup(__props) {
const props = __props;
const dataTableStore = useDataTableStore();
const uiStore = useUIStore();
const route = useRoute();
const router = useRouter();
const i18n = useI18n();
const toast = useToast();
const telemetry = useTelemetry();
const creationMode = ref("select");
const dataTableName = ref("");
const inputRef = ref(null);
const selectedFile = ref(null);
const uploadedFileId = ref(null);
const uploadedFileName = ref("");
const csvColumns = ref([]);
const csvRowCount = ref(0);
const csvColumnCount = ref(0);
const isUploading = ref(false);
const hasHeaders = ref(true);
const isUploadHovered = ref(false);
const allColumnTypeOptions = [{
label: "String",
value: "string"
}, {
label: "Number",
value: "number"
}, {
label: "Boolean",
value: "boolean"
}, {
label: "Datetime",
value: "date"
}];
const isColumnType = value => {
return allColumnTypeOptions.some(option => option.value === value);
};
const getColumnTypeOptions = compatibleTypes => {
if (!compatibleTypes || compatibleTypes.length === 0) return allColumnTypeOptions;
return allColumnTypeOptions.filter(option => compatibleTypes.includes(option.value));
};
const validateColumnName = columnName => {
if (DATA_TABLE_SYSTEM_COLUMNS.includes(columnName)) return i18n.baseText("dataTable.import.systemColumnName", {
interpolate: {
columnName
}
});
if (!dataTableColumnNameSchema.safeParse(columnName).success) return i18n.baseText("dataTable.import.invalidColumnName");
};
const hasValidationErrors = computed(() => {
if (creationMode.value !== "import") return false;
return csvColumns.value.some(column => column.error !== void 0);
});
const hasDuplicateNames = computed(() => {
if (creationMode.value !== "import") return false;
const names = csvColumns.value.map(col => col.name.toLowerCase());
return names.length !== new Set(names).size;
});
const modalTitle = computed(() => {
if (creationMode.value === "import") return "Set data table columns";
return i18n.baseText("dataTable.add.title");
});
const isCreateDisabled = computed(() => {
if (creationMode.value === "import") return !dataTableName.value || !uploadedFileId.value || hasValidationErrors.value || hasDuplicateNames.value;
return true;
});
onMounted(() => {
setTimeout(() => {
inputRef.value?.focus();
inputRef.value?.select();
}, 0);
});
const selectedOption = ref("scratch");
const proceedFromSelect = async () => {
if (!selectedOption.value || !dataTableName.value) return;
if (selectedOption.value === "scratch") await onSubmit();else if (selectedOption.value === "import") {
if (!selectedFile.value) return;
await uploadFile();
}
};
const onColumnNameChange = index => {
const column = csvColumns.value[index];
if (!column) return;
column.error = validateColumnName(column.name);
if (csvColumns.value.some((col, idx) => idx !== index && col.name.toLowerCase() === column.name.toLowerCase()) && !column.error) column.error = i18n.baseText("dataTable.import.duplicateColumnName");
csvColumns.value.forEach((col, idx) => {
if (idx !== index) {
const otherIsDuplicate = csvColumns.value.some((c, i) => i !== idx && c.name.toLowerCase() === col.name.toLowerCase());
const validationError = validateColumnName(col.name);
if (otherIsDuplicate && !validationError) col.error = i18n.baseText("dataTable.import.duplicateColumnName");else col.error = validationError;
}
});
};
const reset = (clearTableName = false) => {
if (clearTableName) dataTableName.value = "";
selectedFile.value = null;
uploadedFileId.value = null;
uploadedFileName.value = "";
csvColumns.value = [];
csvRowCount.value = 0;
csvColumnCount.value = 0;
selectedOption.value = "scratch";
creationMode.value = "select";
};
const handleFileChange = uploadFile$1 => {
if (uploadFile$1.raw) selectedFile.value = uploadFile$1.raw;
};
const uploadFile = async () => {
if (!selectedFile.value) return;
isUploading.value = true;
creationMode.value = "import";
try {
const uploadResponse = await dataTableStore.uploadCsvFile(selectedFile.value, hasHeaders.value);
uploadedFileId.value = uploadResponse.id;
uploadedFileName.value = uploadResponse.originalName;
csvRowCount.value = uploadResponse.rowCount;
csvColumnCount.value = uploadResponse.columnCount;
csvColumns.value = uploadResponse.columns.map(col => {
const compatibleTypes = (col.compatibleTypes || [col.type]).filter(isColumnType);
const sanitizedName = col.name.replace(/\s+/g, "_");
return {
name: sanitizedName,
type: isColumnType(col.type) ? col.type : "string",
compatibleTypes,
typeOptions: getColumnTypeOptions(compatibleTypes),
error: validateColumnName(sanitizedName)
};
});
if (!dataTableName.value) dataTableName.value = selectedFile.value.name.replace(/\.csv$/i, "");
} catch (error) {
toast.showError(error, i18n.baseText("dataTable.upload.error"));
reset();
} finally {
isUploading.value = false;
}
};
const onSubmit = async () => {
try {
let newDataTable;
if (selectedOption.value === "scratch") newDataTable = await dataTableStore.createDataTable(dataTableName.value, route.params.projectId);else if (creationMode.value === "import" && uploadedFileId.value) newDataTable = await dataTableStore.createDataTable(dataTableName.value, route.params.projectId, csvColumns.value.map(col => ({
name: col.name,
type: col.type
})), uploadedFileId.value, hasHeaders.value);
if (newDataTable) {
telemetry.track("User created data table", {
data_table_id: newDataTable.id,
data_table_project_id: newDataTable.project?.id,
creation_mode: selectedOption.value
});
reset(true);
uiStore.closeModal(props.modalName);
router.push({
name: DATA_TABLE_DETAILS,
params: {
id: newDataTable.id
}
});
}
} catch (error) {
toast.showError(error, i18n.baseText("dataTable.add.error"));
}
};
const goBack = () => {
creationMode.value = "select";
};
const redirectToDataTables = () => {
router.replace({
name: PROJECT_DATA_TABLES
});
};
return (_ctx, _cache) => {
return openBlock(), createBlock(Modal_default, {
name: props.modalName,
center: true,
width: creationMode.value === "import" ? "700px" : "540px",
"min-height": creationMode.value === "import" ? "600px" : void 0,
"before-close": redirectToDataTables
}, {
header: withCtx(() => [createBaseVNode("div", {
class: normalizeClass(_ctx.$style.header)
}, [createBaseVNode("h2", null, toDisplayString(modalTitle.value), 1)], 2)]),
content: withCtx(() => [creationMode.value === "select" ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.selectionContent)
}, [createVNode(unref(N8nInputLabel_default), {
label: unref(i18n).baseText("dataTable.add.input.name.label"),
required: true,
"input-name": "dataTableNameSelect"
}, {
default: withCtx(() => [createVNode(unref(N8nInput_default), {
ref_key: "inputRef",
ref: inputRef,
modelValue: dataTableName.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = $event => dataTableName.value = $event),
type: "text",
placeholder: unref(i18n).baseText("dataTable.add.input.name.placeholder"),
"data-test-id": "data-table-name-input-select",
name: "dataTableNameSelect"
}, null, 8, ["modelValue", "placeholder"])]),
_: 1
}, 8, ["label"]), createVNode(unref(ElRadioGroup), {
modelValue: selectedOption.value,
"onUpdate:modelValue": _cache[1] || (_cache[1] = $event => selectedOption.value = $event),
class: normalizeClass(_ctx.$style.radioGroup)
}, {
default: withCtx(() => [createVNode(unref(ElRadio), {
label: "scratch",
"data-test-id": "create-from-scratch-option"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("dataTable.add.fromScratch")), 1)]),
_: 1
}), createVNode(unref(ElRadio), {
label: "import",
"data-test-id": "import-csv-option"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("dataTable.add.importCsv")), 1)]),
_: 1
})]),
_: 1
}, 8, ["modelValue", "class"]), selectedOption.value === "import" ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.uploadSection)
}, [createVNode(unref(ElUpload), {
class: normalizeClass(_ctx.$style.uploadDemo),
drag: "",
"auto-upload": false,
"show-file-list": false,
accept: ".csv",
"on-change": handleFileChange,
onMouseenter: _cache[2] || (_cache[2] = $event => isUploadHovered.value = true),
onMouseleave: _cache[3] || (_cache[3] = $event => isUploadHovered.value = false)
}, {
default: withCtx(() => [createVNode(unref(N8nIcon_default), {
icon: "file",
size: 24,
color: isUploadHovered.value ? "text-dark" : "text-light",
class: normalizeClass(_ctx.$style.uploadIcon)
}, null, 8, ["color", "class"]), selectedFile.value ? (openBlock(), createBlock(unref(N8nText_default), {
key: 0,
color: isUploadHovered.value ? "text-dark" : "text-light"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(selectedFile.value?.name), 1)]),
_: 1
}, 8, ["color"])) : (openBlock(), createBlock(unref(N8nText_default), {
key: 1,
size: "medium",
color: isUploadHovered.value ? "text-dark" : "text-light"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("dataTable.upload.dropOrClick")), 1)]),
_: 1
}, 8, ["color"]))]),
_: 1
}, 8, ["class"]), createVNode(unref(N8nCheckbox_default), {
modelValue: hasHeaders.value,
"onUpdate:modelValue": _cache[4] || (_cache[4] = $event => hasHeaders.value = $event),
label: unref(i18n).baseText("dataTable.upload.hasHeaders"),
"data-test-id": "has-headers-checkbox"
}, null, 8, ["modelValue", "label"])], 2)) : createCommentVNode("", true)], 2)) : creationMode.value === "import" ? (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(_ctx.$style.content)
}, [isUploading.value ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.uploadingMessage)
}, toDisplayString(unref(i18n).baseText("dataTable.upload.uploading")), 3)) : !uploadedFileId.value ? (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(_ctx.$style.uploadingMessage)
}, toDisplayString(unref(i18n).baseText("dataTable.upload.selectFile")), 3)) : uploadedFileId.value && csvColumns.value.length > 0 ? (openBlock(), createElementBlock("div", {
key: 2,
class: normalizeClass(_ctx.$style.importContent)
}, [createBaseVNode("div", {
class: normalizeClass(_ctx.$style.successNotice)
}, toDisplayString(unref(i18n).baseText("dataTable.upload.success", {
adjustToNumber: csvRowCount.value,
interpolate: {
fileName: uploadedFileName.value,
columnCount: csvColumnCount.value,
rowCount: csvRowCount.value
}
})), 3), createBaseVNode("div", {
class: normalizeClass(_ctx.$style.columnHeaders)
}, [createBaseVNode("div", {
class: normalizeClass(_ctx.$style.columnHeaderLabel)
}, toDisplayString(unref(i18n).baseText("dataTable.import.columnName")), 3), createBaseVNode("div", {
class: normalizeClass(_ctx.$style.columnHeaderLabel)
}, toDisplayString(unref(i18n).baseText("dataTable.import.columnType")), 3)], 2), createBaseVNode("div", {
class: normalizeClass(_ctx.$style.columnsContainer)
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(csvColumns.value, (column, index) => {
return openBlock(), createElementBlock("div", {
key: index,
class: normalizeClass(_ctx.$style.columnItem)
}, [createBaseVNode("div", {
class: normalizeClass(_ctx.$style.columnInputWrapper)
}, [createVNode(unref(N8nInput_default), {
modelValue: column.name,
"onUpdate:modelValue": [$event => column.name = $event, $event => onColumnNameChange(index)],
placeholder: unref(i18n).baseText("dataTable.import.columnNamePlaceholder"),
"data-test-id": `column-name-${index}`,
class: normalizeClass({
[_ctx.$style.inputError]: column.error
})
}, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder", "data-test-id", "class"]), column.error ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.columnErrorMessage)
}, toDisplayString(column.error), 3)) : createCommentVNode("", true)], 2), createBaseVNode("div", {
class: normalizeClass(_ctx.$style.columnTypeWrapper)
}, [createVNode(unref(N8nSelect_default), {
modelValue: column.type,
"onUpdate:modelValue": $event => column.type = $event,
disabled: column.typeOptions.length === 1,
"data-test-id": `column-type-${index}`
}, {
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(column.typeOptions, option => {
return openBlock(), createBlock(unref(N8nOption_default), {
key: option.value,
value: option.value,
label: option.label
}, null, 8, ["value", "label"]);
}), 128))]),
_: 2
}, 1032, ["modelValue", "onUpdate:modelValue", "disabled", "data-test-id"])], 2)], 2);
}), 128))], 2)], 2)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)]),
footer: withCtx(() => [createBaseVNode("div", {
class: normalizeClass(_ctx.$style.footer)
}, [creationMode.value === "select" ? (openBlock(), createBlock(unref(N8nButton_default), {
key: 0,
type: "secondary",
size: "large",
label: unref(i18n).baseText("generic.cancel"),
"data-test-id": "cancel-select-button",
onClick: redirectToDataTables
}, null, 8, ["label"])) : createCommentVNode("", true), creationMode.value === "select" ? (openBlock(), createBlock(unref(N8nButton_default), {
key: 1,
size: "large",
disabled: !dataTableName.value || !selectedOption.value || selectedOption.value === "import" && !selectedFile.value,
label: unref(i18n).baseText("generic.create"),
"data-test-id": "proceed-from-select-button",
onClick: proceedFromSelect
}, null, 8, ["disabled", "label"])) : createCommentVNode("", true), creationMode.value === "import" ? (openBlock(), createBlock(unref(N8nButton_default), {
key: 2,
type: "secondary",
size: "large",
label: unref(i18n).baseText("generic.back"),
"data-test-id": "back-button",
onClick: goBack
}, null, 8, ["label"])) : createCommentVNode("", true), creationMode.value === "import" ? (openBlock(), createBlock(unref(N8nButton_default), {
key: 3,
size: "large",
disabled: isCreateDisabled.value,
label: unref(i18n).baseText("generic.create"),
"data-test-id": "confirm-add-data-table-button",
onClick: onSubmit
}, null, 8, ["disabled", "label"])) : createCommentVNode("", true)], 2)]),
_: 1
}, 8, ["name", "width", "min-height"]);
};
}
}); //#endregion
//#region src/features/core/dataTable/components/AddDataTableModal.vue?vue&type=style&index=0&lang.module.scss
header = "_header_1p7kw_123";
content = "_content_1p7kw_127";
selectionContent = "_selectionContent_1p7kw_132";
radioGroup = "_radioGroup_1p7kw_138";
uploadSection = "_uploadSection_1p7kw_170";
uploadingMessage = "_uploadingMessage_1p7kw_176";
importContent = "_importContent_1p7kw_182";
successNotice = "_successNotice_1p7kw_188";
columnHeaders = "_columnHeaders_1p7kw_197";
columnHeaderLabel = "_columnHeaderLabel_1p7kw_204";
columnsContainer = "_columnsContainer_1p7kw_210";
columnItem = "_columnItem_1p7kw_219";
columnInputWrapper = "_columnInputWrapper_1p7kw_226";
columnTypeWrapper = "_columnTypeWrapper_1p7kw_232";
inputError = "_inputError_1p7kw_237";
columnErrorMessage = "_columnErrorMessage_1p7kw_244";
footer = "_footer_1p7kw_250";
fileSelectedContainer = "_fileSelectedContainer_1p7kw_257";
uploadDemo = "_uploadDemo_1p7kw_264";
uploadIcon = "_uploadIcon_1p7kw_290";
fileName = "_fileName_1p7kw_294";
AddDataTableModal_vue_vue_type_style_index_0_lang_module_default = {
header,
content,
selectionContent,
radioGroup,
uploadSection,
uploadingMessage,
importContent,
successNotice,
columnHeaders,
columnHeaderLabel,
columnsContainer,
columnItem,
columnInputWrapper,
columnTypeWrapper,
inputError,
columnErrorMessage,
footer,
fileSelectedContainer,
uploadDemo,
uploadIcon,
fileName
}; //#endregion
//#region src/features/core/dataTable/components/AddDataTableModal.vue
cssModules = {
"$style": AddDataTableModal_vue_vue_type_style_index_0_lang_module_default
};
_export("default", AddDataTableModal_default = /* @__PURE__ */__plugin_vue_export_helper_default(AddDataTableModal_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules]])); //#endregion
}
};
});
})();