Socket
Socket
Sign inDemoInstall

@opentiny/vue-renderless

Package Overview
Dependencies
Maintainers
1
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opentiny/vue-renderless - npm Package Compare versions

Comparing version 3.6.8 to 3.8.0

calendar-bar/index.js

29

action-sheet/index.js

@@ -25,3 +25,3 @@ import "../chunk-PKUHTIDK.js";

const { scrollMenu } = refs;
if (!state.scroll) {
if (state.scroll) {
state.scroll = new BScroll(scrollMenu, {

@@ -55,5 +55,32 @@ probeType: 3,

};
const close = ({ emit, vm }) => () => {
vm.$refs.drawer.close();
emit("close", false);
};
const hide = (emit) => () => {
emit("hide", false);
emit("update:visible", false);
};
const selectOption = ({ emit, props }) => (option) => {
const { valueField } = props;
emit("update:visible", false);
emit("update:modelValue", option[valueField]);
emit("click", option);
};
const confirm = ({ emit, state }) => () => {
emit("confirm", state);
emit("update:visible", false);
};
const actionSelectOption = ({ emit }) => (option, index) => {
emit("update:visible", false);
emit("click", option, index);
};
export {
actionSelectOption,
close,
confirm,
hide,
initScrollMenu,
menuHandle,
selectOption,
setSheetStyle,

@@ -60,0 +87,0 @@ visibleHandle,

14

action-sheet/vue.js
import "../chunk-PKUHTIDK.js";
import { setSheetStyle, initScrollMenu, visibleHandle, watchVisible, menuHandle } from "./index";
const api = ["state", "setSheetStyle", "initScrollMenu", "visibleHandle", "menuHandle"];
const renderless = (props, { reactive, watch }, { emit, nextTick, refs }, { BScroll }) => {
import { setSheetStyle, initScrollMenu, visibleHandle, watchVisible, menuHandle, close, selectOption, confirm, actionSelectOption, hide } from "./index";
const api = ["state", "setSheetStyle", "initScrollMenu", "visibleHandle", "menuHandle", "close", "selectOption", "confirm", "actionSelectOption", "hide"];
const renderless = (props, { reactive, watch }, { emit, nextTick, refs, vm }, { BScroll }) => {
const api2 = {};

@@ -23,2 +23,3 @@ const state = reactive({

);
watch(() => props.visible, api2.watchVisible, { immediate: true });
Object.assign(api2, {

@@ -30,3 +31,8 @@ state,

watchVisible: watchVisible({ emit, props, state }),
menuHandle: menuHandle({ state, emit })
menuHandle: menuHandle({ state, emit }),
confirm: confirm({ state, emit }),
selectOption: selectOption({ emit, props }),
actionSelectOption: actionSelectOption({ emit }),
close: close({ emit, vm }),
hide: hide(emit)
});

@@ -33,0 +39,0 @@ return api2;

@@ -6,8 +6,30 @@ import "../chunk-PKUHTIDK.js";

};
const computedGetIcon = ({ constants, props }) => () => props.icon || constants.ICON_MAP[props.type];
const computedGetIcon = ({ constants, props, designConfig }) => () => {
var _a;
const designIcon = (_a = designConfig == null ? void 0 : designConfig.icons) == null ? void 0 : _a[props.type];
return props.icon || designIcon || constants.ICON_MAP[props.type];
};
const computedGetTitle = ({ constants, t, props }) => () => props.title || t(constants.TITLE_MAP[props.type]);
const handleHeaderClick = ({ state, props, vm }) => () => {
if (props.showFoldable) {
state.contentVisible = !state.contentVisible;
}
if (vm.$refs.ContentDescribe) {
state.contentDescribeHeight = vm.$refs.ContentDescribe.scrollHeight;
if (state.contentDescribeHeight > state.contentMaxHeight) {
state.scrollStatus = true;
}
}
if (vm.$refs.ContentDefault) {
state.contentDefaultHeight = vm.$refs.ContentDefault.scrollHeight;
if (state.contentDefaultHeight > state.contentMaxHeight) {
state.scrollStatus = true;
}
}
};
export {
close,
computedGetIcon,
computedGetTitle
computedGetTitle,
handleHeaderClick
};
import "../chunk-PKUHTIDK.js";
import { close, computedGetIcon, computedGetTitle } from "./index";
const api = ["close", "state"];
const renderless = (props, { computed, reactive }, { t, emit, constants }) => {
const api2 = {
computedGetIcon: computedGetIcon({ constants, props }),
computedGetTitle: computedGetTitle({ constants, props, t })
};
import { close, computedGetIcon, computedGetTitle, handleHeaderClick } from "./index";
const api = ["close", "state", "handleHeaderClick"];
const renderless = (props, { computed, reactive }, { t, emit, constants, vm, designConfig }) => {
const state = reactive({
show: true,
getIcon: computed(() => api2.computedGetIcon()),
getTitle: computed(() => api2.computedGetTitle())
getTitle: computed(() => api2.computedGetTitle()),
contentVisible: false,
contentDescribeHeight: 0,
contentDefaultHeight: 0,
contentMaxHeight: constants.CONTENT_MAXHEUGHT,
scrollStatus: false
});
Object.assign(api2, {
const api2 = {
state,
close: close({ state, emit })
});
computedGetIcon: computedGetIcon({ constants, props, designConfig }),
computedGetTitle: computedGetTitle({ constants, props, t }),
close: close({ state, emit }),
handleHeaderClick: handleHeaderClick({ state, props, vm })
};
return api2;

@@ -19,0 +23,0 @@ };

@@ -5,6 +5,6 @@ import {

} from "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { formatNumber } from "@opentiny/vue-renderless/common/decimal";
import { getMiniDecimal, equalsDecimal } from "@opentiny/vue-renderless/common/bigInt";
import { isNumber } from "@opentiny/vue-renderless/common/type";
import { on, off } from "../common/deps/dom";
import { formatNumber } from "../common/decimal";
import { getMiniDecimal, equalsDecimal } from "../common/bigInt";
import { isNumber } from "../common/type";
const initService = (service) => {

@@ -11,0 +11,0 @@ const { utils = {} } = service || {};

import "../chunk-PKUHTIDK.js";
import { addClass, removeClass } from "@opentiny/vue-renderless/common/deps/dom";
import { addClass, removeClass } from "../common/deps/dom";
const setFixAnchor = ({ vm }) => {

@@ -4,0 +4,0 @@ const { fixRef } = vm.$refs;

import "../chunk-PKUHTIDK.js";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import userPopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import { guid } from "@opentiny/vue-renderless/common/string";
import debounce from "../common/deps/debounce";
import userPopper from "../common/deps/vue-popper";
import { guid } from "../common/string";
import {

@@ -6,0 +6,0 @@ computedVisible,

import "../chunk-PKUHTIDK.js";
import { getAmap } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { getAmap } from "../chart-core/deps/utils";
const amap = (columns, rows, settings, extra) => {

@@ -4,0 +4,0 @@ const { key, v, amap: amap2, useOuterMap, url } = settings;

import "../chunk-PKUHTIDK.js";
import { computedContent, computedValueRef } from "./index";
import { xss } from "@opentiny/vue-renderless/common/xss";
import { xss } from "../common/xss";
const api = ["state"];
const renderless = (props, { computed, reactive }) => {
const api2 = {
computedValueRef: computedValueRef({ props })
};
const state = reactive({

@@ -15,4 +12,7 @@ isOverstep: false,

});
api2.state = state;
api2.computedContent = computedContent({ props, state });
const api2 = {
state,
computedValueRef: computedValueRef({ props }),
computedContent: computedContent({ props, state })
};
return api2;

@@ -19,0 +19,0 @@ };

import "../chunk-PKUHTIDK.js";
import { getBmap } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { getBmap } from "../chart-core/deps/utils";
const bmap = (columns, rows, settings, extra) => {

@@ -4,0 +4,0 @@ const { key, v, bmap: bmap2, useOuterMap, url } = settings;

import "../chunk-PKUHTIDK.js";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import { xss } from "../common/xss.js";
const getRoute = (route) => `/${route || ""}`.replace(/^\/+/, "/");

@@ -4,0 +4,0 @@ const computedDataList = ({ props, state }) => () => {

import "../chunk-PKUHTIDK.js";
import { isLeapYear } from "@opentiny/vue-renderless/common/date";
import { copyArray } from "@opentiny/vue-renderless/common/object";
import { isLeapYear } from "../common/date";
import { copyArray } from "../common/object";
const getDays = (year, month) => [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1];

@@ -5,0 +5,0 @@ const getWeek = (year, month, day) => (/* @__PURE__ */ new Date(`${year}/${month}/${day}`)).getDay();

import "../chunk-PKUHTIDK.js";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import PopupManager from "../common/deps/popup-manager";
const toolClick = (showMoreTools) => (cb) => {

@@ -4,0 +4,0 @@ typeof cb === "function" && cb();

@@ -64,2 +64,8 @@ import "../chunk-PKUHTIDK.js";

};
const resetAnimatingMf = (state) => () => {
state.animatingMf = false;
};
const setDelta = ({ state }) => (val) => {
state.delta = val;
};
export {

@@ -70,3 +76,5 @@ calculateTranslate,

processIndex,
resetAnimatingMf,
setDelta,
translateItem
};
import "../chunk-PKUHTIDK.js";
import { processIndex, calculateTranslate, translateItem, handleItemClick, computedTransform } from "./index";
import { processIndex, calculateTranslate, translateItem, handleItemClick, computedTransform, resetAnimatingMf, setDelta } from "./index";
const api = [

@@ -18,3 +18,5 @@ "state",

"translateItem",
"handleItemClick"
"handleItemClick",
"resetAnimatingMf",
"setDelta"
];

@@ -44,3 +46,5 @@ const renderless = (props, { computed, onMounted, onUnmounted, reactive }, { parent, dispatch }) => {

calculateTranslate: calculateTranslate({ CARD_SCALE, state }),
translateItem: translateItem({ api: api2, CARD_SCALE, parent, state })
translateItem: translateItem({ api: api2, CARD_SCALE, parent, state }),
setDelta: setDelta({ state }),
resetAnimatingMf: resetAnimatingMf(state)
});

@@ -47,0 +51,0 @@ onMounted(() => {

import "../chunk-PKUHTIDK.js";
import throttle from "@opentiny/vue-renderless/common/deps/throttle";
import { POSITION } from "@opentiny/vue-renderless/common";
import throttle from "../common/deps/throttle";
import { POSITION } from "../common";
const handleMouseEnter = ({ api, state }) => () => {

@@ -102,2 +102,9 @@ state.hover = true;

const computedHasLable = (items) => items.some((item) => item.label.toString().length > 0);
const computedStyle = ({ props }) => () => {
if (props.height) {
return { "height": props.height };
} else {
return { "aspect-ratio": props.aspectRatio.replace(":", " / ") };
}
};
const onComplete = ({ count, emit, props, state }) => (total) => {

@@ -112,4 +119,81 @@ if (count++ === total) {

};
const touchstart = ({ state, api }) => (event) => {
if (state.items.length <= 1 || ~state.noTouchNode.indexOf(event.target.nodeName))
return;
event.preventDefault();
event.stopPropagation();
resetTouchStatus(state);
api.pauseTimer();
state.itemsTranslate = state.items.map((item) => item.state.translate);
state.moving = true;
state.touchTime = Date.now();
state.startPos.X = event.touches[0].clientX;
state.startPos.Y = event.touches[0].clientY;
};
const touchmove = ({ props, state, vm }) => (event) => {
if (state.items.length <= 1 || ~state.noTouchNode.indexOf(event.target.nodeName))
return;
const touch = event.touches[0];
const itemsLen = state.items.length;
const carousel = vm.$refs.carousel;
state.deltaPos.X = touch.clientX - state.startPos.X;
state.deltaPos.Y = touch.clientY - state.startPos.Y;
state.offsetPos.X = Math.abs(state.deltaPos.X);
state.offsetPos.Y = Math.abs(state.deltaPos.Y);
state.direction = state.direction || getDirection(state.offsetPos.X, state.offsetPos.Y);
state.isCorrectDirection = state.direction === props.type;
if (!state.isCorrectDirection)
return;
state.size = state.direction === "horizontal" ? carousel.offsetWidth : carousel.offsetHeight;
const nextIndex = state.activeIndex === itemsLen - 1 ? 0 : state.activeIndex + 1;
const prevIndex = state.activeIndex === 0 ? itemsLen - 1 : state.activeIndex - 1;
state.delta = state.direction === "horizontal" ? state.deltaPos.X : state.deltaPos.Y;
state.moveDisable = !props.loop && (state.activeIndex === 0 && state.delta > 0 || state.activeIndex === state.items.length - 1 && state.delta < 0);
if (state.moveDisable)
return;
state.items[state.activeIndex].setDelta(state.delta);
state.items[nextIndex].setDelta(state.delta);
if (itemsLen > 2) {
state.items[prevIndex].setDelta(state.delta);
}
};
const touchend = ({ state, api }) => (event) => {
if (state.moveDisable || state.items.length <= 1 || ~state.noTouchNode.indexOf(event.target.nodeName))
return;
const speed = state.delta / (Date.now() - state.touchTime);
const isShouldMove = Math.abs(speed) > 0.3 || Math.abs(state.delta) > +(state.size / 2).toFixed(2);
state.moving = false;
state.itemsTranslate.forEach((item, index) => {
state.items[index].setDelta(0);
});
if (isShouldMove && state.isCorrectDirection) {
state.delta < 0 ? api.next() : api.prev();
} else if (Math.abs(state.delta) > 1) {
state.items.forEach((item) => {
item.resetAnimatingMf();
});
}
api.startTimer();
};
function getDirection(x, y) {
const MIN_DISTANCE = 10;
if (x > y && x > MIN_DISTANCE) {
return "horizontal";
}
if (y > x && y > MIN_DISTANCE) {
return "vertical";
}
return "";
}
function resetTouchStatus(state) {
state.direction = "";
state.delta = 0;
state.deltaPos.X = 0;
state.deltaPos.Y = 0;
state.offsetPos.X = 0;
state.offsetPos.Y = 0;
}
export {
computedHasLable,
computedStyle,
handleButtonEnter,

@@ -132,2 +216,5 @@ handleButtonLeave,

throttledIndicatorHover,
touchend,
touchmove,
touchstart,
watchActiveIndex,

@@ -134,0 +221,0 @@ watchAutoplay,

@@ -23,5 +23,8 @@ import "../chunk-PKUHTIDK.js";

throttledIndicatorHover,
computedHasLable
computedHasLable,
touchstart,
touchmove,
touchend
} from "./index";
import { addResizeListener, removeResizeListener } from "@opentiny/vue-renderless/common/deps/resize-event";
import { addResizeListener, removeResizeListener } from "../common/deps/resize-event";
const api = [

@@ -51,3 +54,6 @@ "state",

"throttledArrowClick",
"throttledIndicatorHover"
"throttledIndicatorHover",
"touchstart",
"touchmove",
"touchend"
];

@@ -66,6 +72,9 @@ const initState = ({ reactive, computed, api: api2 }) => {

};
const initApi = ({ api: api2, state, props, emit }) => {
const initApi = ({ api: api2, state, props, emit, vm }) => {
Object.assign(api2, {
state,
computedHasLable,
touchstart: touchstart({ state, api: api2 }),
touchmove: touchmove({ props, state, vm }),
touchend: touchend({ state, api: api2 }),
playSlides: playSlides({ props, state }),

@@ -139,3 +148,3 @@ pauseTimer: pauseTimer(state),

const state = initState({ reactive, computed, api: api2 });
initApi({ api: api2, state, props, emit });
initApi({ api: api2, state, props, emit, vm });
const { updateItems } = useItems({

@@ -142,0 +151,0 @@ api: api2,

import "../chunk-PKUHTIDK.js";
import { handleExpand, handleMouseMove, clearHoverZone } from "./index";
import { CASCADER } from "@opentiny/vue-renderless/common";
import { random } from "@opentiny/vue-renderless/common/string";
import { CASCADER } from "../common";
import { random } from "../common/string";
const api = ["state", "handleMouseMove", "handleExpand"];

@@ -6,0 +6,0 @@ const renderless = (props, { computed, reactive }, { vm, parent }) => {

import "../chunk-PKUHTIDK.js";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { isEqual } from "@opentiny/vue-renderless/common/object";
import { isEmpty } from "@opentiny/vue-renderless/cascader";
import { KEY_CODE, CASCADER } from "@opentiny/vue-renderless/common";
import { isNull } from "../common/type";
import { isEqual } from "../common/object";
import { isEmpty } from "../cascader";
import { KEY_CODE, CASCADER } from "../common";
const watchCheckedValue = ({ api, emit, props, state }) => (value) => {

@@ -7,0 +7,0 @@ if (!isEqual(value, props.modelValue)) {

import "../chunk-PKUHTIDK.js";
import { isEqual } from "@opentiny/vue-renderless/common/object";
import { capitalize } from "@opentiny/vue-renderless/common/string";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { isEqual } from "../common/object";
import { capitalize } from "../common/string";
import { isNull } from "../common/type";
let uid = 0;

@@ -27,3 +27,3 @@ class Node {

const childrenData = this.data[childrenKey];
this.hasChildren = Array.isArray(childrenData) && childrenData.length > 0;
this.hasChildren = Array.isArray(childrenData);
this.children = (childrenData || []).map((child) => new Node(child, config, this));

@@ -30,0 +30,0 @@ }

@@ -28,4 +28,4 @@ import {

} from "./index";
import { merge } from "@opentiny/vue-renderless/common/object";
import { isEmpty } from "@opentiny/vue-renderless/cascader";
import { merge } from "../common/object";
import { isEmpty } from "../cascader";
import Store from "./store.js";

@@ -32,0 +32,0 @@ const api = [

import "../chunk-PKUHTIDK.js";
import browser from "@opentiny/vue-renderless/common/browser";
import { isNull } from "@opentiny/vue-renderless/common/type";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { isEqual } from "@opentiny/vue-renderless/common/object";
import { addResizeListener } from "@opentiny/vue-renderless/common/deps/resize-event";
import { KEY_CODE, CASCADER } from "@opentiny/vue-renderless/common";
import browser from "../common/browser";
import { isNull } from "../common/type";
import debounce from "../common/deps/debounce";
import { isEqual } from "../common/object";
import { addResizeListener } from "../common/deps/resize-event";
import { KEY_CODE, CASCADER } from "../common";
const initMigratingProps = () => ({

@@ -9,0 +9,0 @@ expandTrigger: { newProp: CASCADER.PropsExpandTri, type: String },

@@ -34,5 +34,5 @@ import {

} from "./index";
import { removeResizeListener } from "@opentiny/vue-renderless/common/deps/resize-event";
import userPopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { removeResizeListener } from "../common/deps/resize-event";
import userPopper from "../common/deps/vue-popper";
import { DATEPICKER } from "../common";
const api = [

@@ -39,0 +39,0 @@ "state",

@@ -5,5 +5,5 @@ import {

} from "../chunk-PKUHTIDK.js";
import { getFormated, getStackMap, get, set, cloneDeep } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { getFormated, getStackMap, get, set, cloneDeep } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
import { isNull } from "../common/type";
const VALUE_AXIS_OPACITY = 0.5;

@@ -10,0 +10,0 @@ const getValueAxisData = (dims) => {

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { getFormated, htmlHandler, getLegend } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { getFormated, htmlHandler, getLegend } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
const getXAxis = (args) => {

@@ -7,0 +7,0 @@ const { columns, xAxisName, axisVisible, xAxisType } = args;

import "../chunk-PKUHTIDK.js";
import { getFormated } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { getFormated } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
import { isNull } from "../common/type";
const DEF_MA = [5, 10, 20, 30];

@@ -6,0 +6,0 @@ const DEF_DOWN_COLOR = "#eb171f";

@@ -5,10 +5,10 @@ import {

} from "../../chunk-PKUHTIDK.js";
import { extend, copyArray } from "@opentiny/vue-renderless/common/object";
import { isObject, typeOf as getType, isNull } from "@opentiny/vue-renderless/common/type";
import _debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { extend, copyArray } from "../../common/object";
import { isObject, typeOf as getType, isNull } from "../../common/type";
import _debounce from "../../common/deps/debounce";
import _numerify from "./numerify";
import { escapeHtml } from "@opentiny/vue-renderless/common/string";
import { xss } from "@opentiny/vue-renderless/common";
import { setObj, getObj, isEqual } from "@opentiny/vue-renderless/common/object";
import { typeOf, isObject as isObject2 } from "@opentiny/vue-renderless/common/type";
import { escapeHtml } from "../../common/string";
import { xss } from "../../common";
import { setObj, getObj, isEqual } from "../../common/object";
import { typeOf, isObject as isObject2 } from "../../common/type";
const debounce = (callback, delay) => _debounce(delay, false, callback);

@@ -15,0 +15,0 @@ const camelToKebab = (str) => str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
import { DEFAULT_COLORS, DEFAULT_THEME, STATIC_PROPS, ECHARTS_SETTINGS, SAAS_DEFAULT_COLORS_10, SAAS_DEFAULT_COLORS_18, DEFAULT_CONFIG } from "./deps/constants";

@@ -233,3 +233,3 @@ import { getType, debounce, isObject, cloneDeep, isEqual, htmlHandler } from "./deps/utils";

const themeName = props.themeName || props.theme || DEFAULT_THEME;
state.echarts = markRaw(echartsLib.init(refs.canvas, themeName, __spreadValues(__spreadValues({}, themeName), ictThemeName), props.initOptions));
state.echarts = markRaw(echartsLib.init(refs.canvas, __spreadValues(__spreadValues({}, themeName), ictThemeName), props.initOptions));
if (props.data) {

@@ -236,0 +236,0 @@ api.changeHandler();

import "../chunk-PKUHTIDK.js";
import { getFormated } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { getFormated } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
import { isNull } from "../common/type";
const getFunnelTooltip = (dataType, digit) => {

@@ -6,0 +6,0 @@ function formatter(item) {

import "../chunk-PKUHTIDK.js";
import { getFormated, isObject } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { getFormated, isObject } from "../chart-core/deps/utils";
import { isNull } from "../common/type";
import { itemLabel, itemContent } from "../chart-core/deps/constants";
const getTooltip = (args) => {

@@ -6,0 +6,0 @@ const { dataType, digit, tooltipFormatter } = args;

import "../chunk-PKUHTIDK.js";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
const getTooltip = () => ({

@@ -4,0 +4,0 @@ trigger: "item",

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { getFormated, getBmap, getAmap, getMapJSON } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { HEAT_MAP_COLOR, itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { getFormated, getBmap, getAmap, getMapJSON } from "../chart-core/deps/utils";
import { HEAT_MAP_COLOR, itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
const getAxisList = (rows, label) => {

@@ -7,0 +7,0 @@ const result = [];

@@ -5,5 +5,5 @@ import {

} from "../chunk-PKUHTIDK.js";
import { getFormated, getStackMap, getLegend, hexToRgb, set } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { itemPoint, itemLabel, itemContent, SAAS_DEFAULT_COLORS_10 } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { getFormated, getStackMap, getLegend, hexToRgb, set } from "../chart-core/deps/utils";
import { isNull } from "../common/type";
import { itemPoint, itemLabel, itemContent, SAAS_DEFAULT_COLORS_10 } from "../chart-core/deps/constants";
const getLineXAxis = (args) => {

@@ -10,0 +10,0 @@ const { xAxisType, dimension, rows, xAxisName, axisVisible } = args;

import "../chunk-PKUHTIDK.js";
import { getFormated, isObject } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { getFormated, isObject } from "../chart-core/deps/utils";
import { itemLabel, itemContent } from "../chart-core/deps/constants";
const isArr = Array.isArray;

@@ -5,0 +5,0 @@ const getTooltip = (args) => {

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { getFormated, getMapJSON, getLegend as getLegendMap } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { getFormated, getMapJSON, getLegend as getLegendMap } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
import { isNull } from "../common/type";
const getTooltip = ({ dataType, digit, dataStore, metrics, color, labelMap }) => {

@@ -8,0 +8,0 @@ function formatter(item) {

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { getFormated, setArrayValue, cloneDeep } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { getFormated, setArrayValue, cloneDeep } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
import { isNull } from "../common/type";
const pieRadius = 100;

@@ -8,0 +8,0 @@ const ringRadius = [90, 100];

import "../chunk-PKUHTIDK.js";
import { getFormated } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { getFormated } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
import { isNull } from "../common/type";
const getRadarLegend = (rows, dimension, legendName) => {

@@ -6,0 +6,0 @@ let legendData = rows.map((row) => row[dimension]);

@@ -5,5 +5,5 @@ import {

} from "../chunk-PKUHTIDK.js";
import { getFormated } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { getFormated } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
import { isNull } from "../common/type";
const getTooltip = (args) => {

@@ -10,0 +10,0 @@ const { digit, itemDataType, linksDataType } = args;

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { getFormated, hexToRgb } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { line } from "@opentiny/vue-renderless/chart-line";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { getFormated, hexToRgb } from "../chart-core/deps/utils";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
import { line } from "../chart-line";
import { isNull } from "../common/type";
const getScatterLegend = (dataLabels, legendName) => {

@@ -9,0 +9,0 @@ function formatter(name) {

import "../chunk-PKUHTIDK.js";
import { itemPoint, itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { itemPoint, itemLabel, itemContent } from "../chart-core/deps/constants";
const getTooltip = () => ({

@@ -4,0 +4,0 @@ trigger: "item",

import "../chunk-PKUHTIDK.js";
import { isObject } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { itemLabel, itemContent, SAAS_DEFAULT_COLORS_10 } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { isObject } from "../chart-core/deps/utils";
import { itemLabel, itemContent, SAAS_DEFAULT_COLORS_10 } from "../chart-core/deps/constants";
const getTreeLegend = (args) => {

@@ -5,0 +5,0 @@ const { dimension, rows } = args;

@@ -5,5 +5,5 @@ import {

} from "../chunk-PKUHTIDK.js";
import { getFormated } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { itemLabel, itemContent, SAAS_DEFAULT_COLORS_10 } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { getFormated } from "../chart-core/deps/utils";
import { isNull } from "../common/type";
import { itemLabel, itemContent, SAAS_DEFAULT_COLORS_10 } from "../chart-core/deps/constants";
const getWaterfallTooltip = (dataType, digit) => {

@@ -10,0 +10,0 @@ let trigger = "axis";

import "../chunk-PKUHTIDK.js";
import { random } from "@opentiny/vue-renderless/common/string";
import { itemLabel, itemContent } from "@opentiny/vue-renderless/chart-core/deps/constants";
import { random } from "../common/string";
import { itemLabel, itemContent } from "../chart-core/deps/constants";
const isArr = Array.isArray;

@@ -5,0 +5,0 @@ const getSeries = (args) => {

@@ -13,3 +13,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { addToStore, computedIsChecked, computedStore, computedIsLimitDisabled } from "@opentiny/vue-renderless/checkbox";
import { addToStore, computedIsChecked, computedStore, computedIsLimitDisabled } from "../checkbox";
const api = ["state", "handleChange"];

@@ -16,0 +16,0 @@ const initState = ({ reactive, computed, api: api2 }) => {

@@ -80,2 +80,19 @@ import "../chunk-PKUHTIDK.js";

};
const dispatchDisplayedValue = ({ state, api, dispatch }) => () => {
if (state.isDisplayOnly) {
dispatch("FormItem", "displayed-value-changed", {
type: "checkbox",
val: api.getDisplayedValue()
});
}
};
const getDisplayedValue = ({ vm, state, props }) => () => {
if (state.isChecked) {
return vm.$refs.label && vm.$refs.label.innerText || props.text || props.label;
} else {
return "";
}
};
const computedIsDisplayOnly = ({ state, props }) => () => props.displayOnly || state.formDisplayOnly;
const computedIsGroupDisplayOnly = ({ state }) => () => state.isGroup && (state.checkboxGroup.displayOnly || state.formDisplayOnly);
export {

@@ -89,5 +106,9 @@ addToStore,

computedIsDisabled,
computedIsDisplayOnly,
computedIsGroup,
computedIsGroupDisplayOnly,
computedIsLimitDisabled,
computedStore,
dispatchDisplayedValue,
getDisplayedValue,
handleChange,

@@ -94,0 +115,0 @@ mounted,

@@ -18,6 +18,10 @@ import {

mounted,
toggleEvent
toggleEvent,
dispatchDisplayedValue,
getDisplayedValue,
computedIsDisplayOnly,
computedIsGroupDisplayOnly
} from "./index";
const api = ["state", "handleChange"];
const renderless = (props, { computed, onMounted, onBeforeUnmount, reactive, watch, inject }, { parent, emit, constants, nextTick, dispatch }) => {
const renderless = (props, { computed, onMounted, onBeforeUnmount, reactive, watch, inject }, { vm, parent, emit, constants, nextTick, dispatch }) => {
parent.tinyForm = parent.tinyForm || inject("form", null);

@@ -33,2 +37,5 @@ const api2 = { dispatch };

formDisabled: computed(() => (parent.tinyForm || {}).disabled),
formDisplayOnly: computed(() => (parent.tinyForm || {}).displayOnly),
isDisplayOnly: computed(() => api2.computedIsDisplayOnly()),
isGroupDisplayOnly: computed(() => api2.computedIsGroupDisplayOnly()),
model: computed({ get: () => api2.computedGetModelGet(), set: (value) => api2.computedGetModelSet(value) })

@@ -44,2 +51,4 @@ }));

computedIsDisabled: computedIsDisabled({ state, props }),
computedIsDisplayOnly: computedIsDisplayOnly({ state, props }),
computedIsGroupDisplayOnly: computedIsGroupDisplayOnly({ state }),
computedGetModelGet: computedGetModelGet({ state, props }),

@@ -53,3 +62,5 @@ computedIsGroup: computedIsGroup({ state, parent, constants }),

mounted: mounted({ emit, props, api: api2, parent }),
handleChange: handleChange({ state, props, emit, nextTick, dispatch: api2.dispatch, constants })
handleChange: handleChange({ state, props, emit, nextTick, dispatch: api2.dispatch, constants }),
dispatchDisplayedValue: dispatchDisplayedValue({ state, api: api2, dispatch }),
getDisplayedValue: getDisplayedValue({ state, props, vm })
});

@@ -60,2 +71,3 @@ watch(

);
watch(() => state.isDisplayOnly, api2.dispatchDisplayedValue);
onBeforeUnmount(() => {

@@ -67,2 +79,3 @@ toggleEvent({ parent, props, type: "remove" });

toggleEvent({ parent, props, type: "add" });
api2.dispatchDisplayedValue();
api2.mounted();

@@ -69,0 +82,0 @@ });

import "../chunk-PKUHTIDK.js";
import { handleFocus, handleEnterClick, handleHeaderClick } from "./index";
import { guid } from "@opentiny/vue-renderless/common/string";
import { guid } from "../common/string";
const api = ["state", "isActive", "handleFocus", "handleEnterClick", "handleHeaderClick"];

@@ -5,0 +5,0 @@ const renderless = (props, { computed, reactive }, { parent, constants, dispatch }) => {

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { SORT } from "@opentiny/vue-renderless/common";
import { isSame } from "@opentiny/vue-renderless/common/type";
import { getObj } from "@opentiny/vue-renderless/common/object";
import { SORT } from "./index";
import { isSame } from "./type";
import { getObj } from "./object";
const indexOf = (arr, data, predicate = isSame) => {

@@ -8,0 +8,0 @@ if (Array.isArray(arr) && typeof predicate === "function") {

import "../chunk-PKUHTIDK.js";
import { fillChar } from "@opentiny/vue-renderless/common/string";
import { fillChar } from "./string";
const BigInt = window.BigInt;

@@ -119,3 +119,6 @@ function supportBigInt() {

const f = Function;
const convertBigInt = (str) => f(`return BigInt(${str})`)();
const convertBigInt = (str) => {
const validStr = str.replace(/^0+/, "") || "0";
return f(`return BigInt(${validStr})`)();
};
if (validateNumber(mergedValue)) {

@@ -122,0 +125,0 @@ const trimRet = trimNumber(mergedValue);

@@ -5,5 +5,5 @@ import {

} from "../../chunk-PKUHTIDK.js";
import { format } from "@opentiny/vue-renderless/common/string";
import { isObject } from "@opentiny/vue-renderless/common/type";
import { transformTreeData } from "@opentiny/vue-renderless/common/array";
import { format } from "../string";
import { isObject } from "../type";
import { transformTreeData } from "../array";
const getFilterStr = (filters) => {

@@ -10,0 +10,0 @@ const filterArr = {};

import "../chunk-PKUHTIDK.js";
import { isDate, isNumber, isNumeric } from "@opentiny/vue-renderless/common/type";
import { fillChar } from "@opentiny/vue-renderless/common/string";
import { isDate, isNumber, isNumeric } from "./type";
import { fillChar } from "./string";
const daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

@@ -5,0 +5,0 @@ const yyyymmddReg = new RegExp(

import "../../chunk-PKUHTIDK.js";
import { on } from "@opentiny/vue-renderless/common/deps/dom";
import { on } from "./dom";
const isServer = typeof window === "undefined";

@@ -4,0 +4,0 @@ const nodeList = [];

import "../../chunk-PKUHTIDK.js";
import fecha from "@opentiny/vue-renderless/common/deps/date";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { isLeapYear } from "@opentiny/vue-renderless/common/date";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import fecha from "./date";
import { isNull } from "../type";
import { isLeapYear } from "../date";
import { DATEPICKER } from "../index";
const weeks = DATEPICKER.Weeks;

@@ -7,0 +7,0 @@ const months = DATEPICKER.MonhtList;

import "../../chunk-PKUHTIDK.js";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { isNull, isDate } from "@opentiny/vue-renderless/common/type";
import { DATEPICKER } from "../index";
import { isNull, isDate } from "../type";
const fecha = {};

@@ -5,0 +5,0 @@ const digitsReg = ["\\d\\d?", "\\d{3}", "\\d{4}"];

import "../../chunk-PKUHTIDK.js";
import throttle from "@opentiny/vue-renderless/common/deps/throttle";
import throttle from "./throttle";
function debounce_default(delay, atBegin, callback) {

@@ -4,0 +4,0 @@ return callback === void 0 ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);

import "../../chunk-PKUHTIDK.js";
import { hasOwn, isObject, isNull } from "@opentiny/vue-renderless/common/type";
import { hasOwn, isObject, isNull } from "../type";
const isServer = typeof window === "undefined";

@@ -4,0 +4,0 @@ const SPECIAL_CHARS_REGEXP = /([:\-_]+(.))/g;

import "../../../chunk-PKUHTIDK.js";
import { extend } from "@opentiny/vue-renderless/common/object";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import screenfull from "@opentiny/vue-renderless/common/deps/fullscreen/screenfull";
import { extend } from "../../object";
import { on, off } from "../dom";
import screenfull from "./screenfull";
const defaults = {

@@ -6,0 +6,0 @@ callback: () => void 0,

import "../../../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../dom";
const fullscreenApi = ["fullscreenElement", "fullscreenEnabled", "requestFullscreen", "exitFullscreen", "fullscreenchange", "fullscreenerror"];

@@ -4,0 +4,0 @@ const fullscreenApiMoz = [

import "../../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "./dom";
const checkValue = (event) => {

@@ -4,0 +4,0 @@ if (event.charCode >= 48 && event.charCode <= 57) {

import "../../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "./dom";
const checkValue = (event) => {

@@ -4,0 +4,0 @@ event.target.value = event.target.value.replace(/[^0-9]/g, "");

import {
__spreadValues
} from "../../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import { typeOf } from "@opentiny/vue-renderless/common/type";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import { on, off } from "./dom";
import PopupManager from "./popup-manager";
import { typeOf } from "../type";
import { xss } from "../xss";
const win = window;

@@ -131,4 +131,4 @@ const positions = ["left", "right", "top", "bottom"];

};
const getScrollTopValue = (el) => el == document.body ? Math.max(document.documentElement.scrollTop, document.body.scrollTop) : el.scrollTop;
const getScrollLeftValue = (el) => el == document.body ? Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) : el.scrollLeft;
const getScrollTopValue = (el) => el === document.body ? Math.max(document.documentElement.scrollTop, document.body.scrollTop) : el.scrollTop;
const getScrollLeftValue = (el) => el === document.body ? Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) : el.scrollLeft;
const getMaxWH = (body, html) => {

@@ -139,13 +139,2 @@ const height = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);

};
const adjustArrowStyle = (arrowStyle, side, arrowRect, popperRect, popperOptions) => {
let params = popperOptions.placement.split("-");
if (popperOptions.adjustArrow && ~["top", "bottom"].indexOf(params[0]) && side === "left") {
if (params[1] === "start") {
arrowStyle.left = 8;
} else if (!params[1]) {
arrowStyle.left = (popperRect.width - arrowRect.width) / 2;
}
}
return arrowStyle;
};
const getOuterSizes = (el) => {

@@ -599,3 +588,3 @@ let _display = el.style.display;

let isVertical = ~["left", "right"].indexOf(placement);
let len = isVertical ? "height" : "width";
let calcProp = isVertical ? "height" : "width";
let opSide = isVertical ? "bottom" : "right";

@@ -606,3 +595,3 @@ let altSide = isVertical ? "left" : "top";

let arrowRect = getOuterSizes(arrow);
let arrowSize = arrowRect[len];
let arrowSize = arrowRect[calcProp];
if (reference[opSide] - arrowSize < popper[side]) {

@@ -614,8 +603,17 @@ data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowSize);

}
let center = reference[side] + (arrowOffset || reference[len] / 2 - arrowSize / 2);
let center = reference[side] + (arrowOffset || reference[calcProp] / 2 - arrowSize / 2);
let sideValue = center - popper[side];
sideValue = Math.max(Math.min(popper[len] - arrowSize - 8, sideValue), 8);
sideValue = Math.max(Math.min(popper[calcProp] - arrowSize - 8, sideValue), 8);
arrowStyle[side] = sideValue;
arrowStyle[altSide] = "";
data.offsets.arrow = adjustArrowStyle(arrowStyle, side, arrowRect, popperRect, this._options);
const popperOptions = this._options;
const params = popperOptions.placement.split("-");
if (popperOptions.adjustArrow && ~["top", "bottom"].indexOf(params[0]) && side === "left") {
if (params[1] === "start") {
arrowStyle.left = 8;
} else if (!params[1]) {
arrowStyle.left = (popperRect.width - arrowRect.width) / 2;
}
}
data.offsets.arrow = arrowStyle;
data.arrowElement = arrow;

@@ -622,0 +620,0 @@ return data;

import "../../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { addClass, removeClass, on } from "@opentiny/vue-renderless/common/deps/dom";
import { KEY_CODE } from "../index";
import { addClass, removeClass, on } from "./dom";
let hasModal = false;

@@ -5,0 +5,0 @@ const isServer = typeof window === "undefined";

import "../../chunk-PKUHTIDK.js";
import { on, once } from "@opentiny/vue-renderless/common/deps/dom";
import { on, once } from "./dom";
var repeat_click_default = (el, binding) => {

@@ -4,0 +4,0 @@ let interval = null;

import "../../chunk-PKUHTIDK.js";
import ResizeObserver from "@opentiny/vue-renderless/common/deps/ResizeObserver";
import ResizeObserver from "./ResizeObserver";
const isServer = typeof window === "undefined";

@@ -4,0 +4,0 @@ const cacheKey = "__resizeListeners__";

import "../../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "./dom";
const MapShim = function() {

@@ -4,0 +4,0 @@ if (typeof Map !== "undefined") {

import "../../../chunk-PKUHTIDK.js";
import { merge } from "@opentiny/vue-renderless/common/object";
import { markNodeData, NODE_KEY } from "@opentiny/vue-renderless/common/deps/tree-model/util";
import { indexOf } from "@opentiny/vue-renderless/common/array";
import { hasOwn, typeOf } from "@opentiny/vue-renderless/common/type";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { merge } from "../../object";
import { markNodeData, NODE_KEY } from "./util";
import { indexOf } from "../../array";
import { hasOwn, typeOf } from "../../type";
import debounce from "../debounce";
const defaultChildrenKey = "children";

@@ -8,0 +8,0 @@ const getPropertyFromData = (node, prop) => {

import "../../../chunk-PKUHTIDK.js";
import { hasOwn, isNull } from "@opentiny/vue-renderless/common/type";
import { getNodeKey } from "@opentiny/vue-renderless/common/deps/tree-model/util";
import Node from "@opentiny/vue-renderless/common/deps/tree-model/node";
import { hasOwn, isNull } from "../../type";
import { getNodeKey } from "./util";
import Node from "./node";
class TreeStore {

@@ -6,0 +6,0 @@ constructor(options) {

import "../../chunk-PKUHTIDK.js";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import { hasOwn } from "../type";
import { xss } from "../xss";
const getBody = (xhr) => {

@@ -5,0 +5,0 @@ const text = xhr.responseText || xhr.response;

import {
__spreadValues
} from "../../chunk-PKUHTIDK.js";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import PopperJS from "@opentiny/vue-renderless/common/deps/popper";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import PopupManager from "./popup-manager";
import PopperJS from "./popper";
import { on, off } from "./dom";
const stop = (e) => {

@@ -31,3 +31,3 @@ e.stopPropagation();

max = z > max ? z : max;
} while (reference !== document.body && ((_a = reference == null ? void 0 : reference.parentNode) == null ? void 0 : _a.nodeType) !== 11);
} while (reference !== document.body && ((_a = reference == null ? void 0 : reference.parentNode) == null ? void 0 : _a.nodeType) !== 11 && reference.parentNode);
return `${max + 1}`;

@@ -34,0 +34,0 @@ };

import {
__spreadValues
} from "../../chunk-PKUHTIDK.js";
import { merge } from "@opentiny/vue-renderless/common/object";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import getScrollBarWidth from "@opentiny/vue-renderless/common/deps/scrollbar-width";
import { getStyle, addClass, removeClass, hasClass } from "@opentiny/vue-renderless/common/deps/dom";
import { merge } from "../object";
import PopupManager from "./popup-manager";
import getScrollBarWidth from "./scrollbar-width";
import { getStyle, addClass, removeClass, hasClass } from "./dom";
let idSeed = 1;

@@ -9,0 +9,0 @@ let scrollBarWidth;

import "../chunk-PKUHTIDK.js";
import { log as uLog, xss } from "@opentiny/vue-renderless/common/xss.js";
import { log as uLog, xss } from "./xss.js";
const KEY_CODE = {

@@ -254,3 +254,3 @@ Backspace: 8,

};
const version = "3.6.6";
const version = "3.8.0";
const log = (data, type = "log") => {

@@ -257,0 +257,0 @@ uLog.logger[type](data);

import "../chunk-PKUHTIDK.js";
import { hasOwn, typeOf, isObject, isPlainObject, isNull } from "@opentiny/vue-renderless/common/type";
import { hasOwn, typeOf, isObject, isPlainObject, isNull } from "./type";
const each = (obj, handle) => {

@@ -4,0 +4,0 @@ if (typeof handle !== "function") {

import "../chunk-PKUHTIDK.js";
import * as array from "@opentiny/vue-renderless/common/array";
import browser from "@opentiny/vue-renderless/common/browser";
import * as date from "@opentiny/vue-renderless/common/date";
import * as decimal from "@opentiny/vue-renderless/common/decimal";
import * as object from "@opentiny/vue-renderless/common/object";
import * as string from "@opentiny/vue-renderless/common/string";
import * as type from "@opentiny/vue-renderless/common/type";
import * as dataset from "@opentiny/vue-renderless/common/dataset";
import afterLeave from "@opentiny/vue-renderless/common/deps/after-leave";
import clickoutside from "@opentiny/vue-renderless/common/deps/clickoutside";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import * as dom from "@opentiny/vue-renderless/common/deps/dom";
import popper from "@opentiny/vue-renderless/common/deps/popper";
import popupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import * as resizeEvent from "@opentiny/vue-renderless/common/deps/resize-event";
import * as scrollbarWidth from "@opentiny/vue-renderless/common/deps/scrollbar-width";
import throttle from "@opentiny/vue-renderless/common/deps/throttle";
import vueEmitter from "@opentiny/vue-renderless/common/deps/vue-emitter";
import vuePopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import vuePopup from "@opentiny/vue-renderless/common/deps/vue-popup";
import validate from "@opentiny/vue-renderless/common/validate";
import memorize from "@opentiny/vue-renderless/common/deps/memorize";
import * as common from "@opentiny/vue-renderless/common";
const version = "3.6.6";
import * as array from "./array";
import browser from "./browser";
import * as date from "./date";
import * as decimal from "./decimal";
import * as object from "./object";
import * as string from "./string";
import * as type from "./type";
import * as dataset from "./dataset";
import afterLeave from "./deps/after-leave";
import clickoutside from "./deps/clickoutside";
import debounce from "./deps/debounce";
import * as dom from "./deps/dom";
import popper from "./deps/popper";
import popupManager from "./deps/popup-manager";
import * as resizeEvent from "./deps/resize-event";
import * as scrollbarWidth from "./deps/scrollbar-width";
import throttle from "./deps/throttle";
import vueEmitter from "./deps/vue-emitter";
import vuePopper from "./deps/vue-popper";
import vuePopup from "./deps/vue-popup";
import validate from "./validate";
import memorize from "./deps/memorize";
import * as common from ".";
const version = "3.8.0";
const Renderless = {

@@ -27,0 +27,0 @@ browser,

import "../chunk-PKUHTIDK.js";
import { isPlainObject, isNumber, isNumeric, isNull } from "@opentiny/vue-renderless/common/type";
import { getObj, toJsonStr } from "@opentiny/vue-renderless/common/object";
import { toFixed } from "@opentiny/vue-renderless/common/decimal";
import { nanoid } from "@opentiny/vue-renderless/common/xss.js";
import { isPlainObject, isNumber, isNumeric, isNull } from "./type";
import { getObj, toJsonStr } from "./object";
import { toFixed } from "./decimal";
import { nanoid } from "./xss";
const formatTypes = {

@@ -344,2 +344,20 @@ text: "text",

const isKorean = (text) => /([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(text);
const omitText = (text, font, w) => {
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
ctx.font = font;
let metric = ctx.measureText(text);
let t;
if (metric.width < w) {
return { t: text, o: false };
} else {
for (let i = -1; ; i--) {
t = text.slice(0, i) + "...";
metric = ctx.measureText(t);
if (metric.width < w) {
return { t, o: true };
}
}
}
};
export {

@@ -360,2 +378,3 @@ camelize,

isNullOrEmpty,
omitText,
random,

@@ -362,0 +381,0 @@ toBoolValue,

import "../../../chunk-PKUHTIDK.js";
import * as util from "../util";
import { isNumber } from "@opentiny/vue-renderless/common/type";
import { getLength } from "@opentiny/vue-renderless/common/string";
import { isNumber } from "../../type";
import { getLength } from "../../string";
function getErro({ min, max, val, key, rule, errors, util: util2, options }) {

@@ -6,0 +6,0 @@ if (min && !max && val < rule.min) {

import "../../../chunk-PKUHTIDK.js";
import * as util from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function required_default({ rule, checkValue, source, errors, options, type }) {

@@ -5,0 +5,0 @@ if (rule.required && (!hasOwn.call(source, rule.field) || util.isEmptyValue(checkValue, type || rule.type))) {

import "../../../chunk-PKUHTIDK.js";
import * as util from "../util";
import required from "./required";
import { format } from "@opentiny/vue-renderless/common/date";
import { isNullOrEmpty } from "@opentiny/vue-renderless/common/string";
import { isNumber, isObject, isDate, typeOf } from "@opentiny/vue-renderless/common/type";
import { format } from "../../date";
import { isNullOrEmpty } from "../../string";
import { isNumber, isObject, isDate, typeOf } from "../../type";
const emailReg1 = '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))';

@@ -8,0 +8,0 @@ const emailReg = new RegExp(emailReg1 + "@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,6}))$");

@@ -6,3 +6,3 @@ import {

import { format, complementError, asyncMap, warning, deepMerge, convertFieldsError } from "./util";
import { hasOwn, isFunction } from "@opentiny/vue-renderless/common/type";
import { hasOwn, isFunction } from "../type";
function Schema(descriptor, translate) {

@@ -9,0 +9,0 @@ Schema.getSystemMessage = () => Schema.getDefaultMessage(translate);

import {
__spreadValues
} from "../../chunk-PKUHTIDK.js";
import { hasOwn, isNull } from "@opentiny/vue-renderless/common/type";
import { hasOwn, isNull } from "../type";
const formatRegExp = /%[sdj%]/g;

@@ -6,0 +6,0 @@ let warning = () => void 0;

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function array_default(rule, checkValue, callback, source, options) {

@@ -6,0 +6,0 @@ const errors = [];

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function date_default(rule, checkValue, callback, source, options) {

@@ -6,0 +6,0 @@ const errors = [];

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
const ENUM = "enum";

@@ -6,0 +6,0 @@ function enum_default(rule, checkValue, callback, source, options) {

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function float_default(rule, checkValue, cb, source, options) {

@@ -6,0 +6,0 @@ const errors = [];

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function integer_default(rule, checkValue, callback, source, options) {

@@ -6,0 +6,0 @@ const errors = [];

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function method_default(rule, checkValue, callback, source, options) {

@@ -6,0 +6,0 @@ const validate = rule.required || !rule.required && hasOwn.call(source, rule.field);

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function number_default(rule, checkValue, callback, source, options) {

@@ -6,0 +6,0 @@ const errors = [];

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function pattern_default(rule, checkValue, callback, source, options) {

@@ -6,0 +6,0 @@ const errors = [];

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function string_default(rule, checkValue, callback, source, options) {

@@ -6,0 +6,0 @@ const errors = [];

import "../../../chunk-PKUHTIDK.js";
import rules from "../rules/index";
import { isEmptyValue } from "../util";
import { hasOwn } from "@opentiny/vue-renderless/common/type";
import { hasOwn } from "../../type";
function type_default(rule, checkValue, callback, source, options) {

@@ -6,0 +6,0 @@ const ruleType = rule.type;

import "../chunk-PKUHTIDK.js";
import { isNumber } from "@opentiny/vue-renderless/common/type";
import { isNumber } from "../common/type";
const computedShowHeader = ({ constants, props }) => () => props.pattern !== constants.SIMPLE;

@@ -4,0 +4,0 @@ const computedShowFooter = ({ constants, props }) => () => props.pattern === constants.LEGEND || props.pattern === constants.CLASSIC;

import "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { toFileSize } from "@opentiny/vue-renderless/common/string";
import { on, off } from "../common/deps/dom";
import { toFileSize } from "../common/string";
const computedCropImages = ({ constants, t }) => () => t(constants.CROP_IMAGE);

@@ -5,0 +5,0 @@ const watchImageSrc = (state) => (value) => state.src = value;

import "../chunk-PKUHTIDK.js";
import { isUndefined, isNull } from "@opentiny/vue-renderless/grid/static";
import { log } from "@opentiny/vue-renderless/common";
import { isUndefined, isNull } from "../grid/static";
import { log } from "../common";
const init = ({ state, service, api }) => () => {

@@ -5,0 +5,0 @@ const { textField, valueField } = service.fields;

@@ -5,4 +5,4 @@ import {

} from "../chunk-PKUHTIDK.js";
import { getWeekData } from "@opentiny/vue-renderless/picker";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { getWeekData } from "../picker";
import debounce from "../common/deps/debounce";
import {

@@ -24,7 +24,7 @@ isDate,

extractTimeFormat
} from "@opentiny/vue-renderless/common/deps/date-util";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { getDateWithNewTimezone, getLocalTimezone } from "@opentiny/vue-renderless/common/date";
import { fillChar } from "@opentiny/vue-renderless/common/string";
} from "../common/deps/date-util";
import { DATEPICKER } from "../common";
import { on, off } from "../common/deps/dom";
import { getDateWithNewTimezone, getLocalTimezone } from "../common/date";
import { fillChar } from "../common/string";
const getYearLabel = ({ state, t }) => () => {

@@ -31,0 +31,0 @@ const yearTranslation = t(DATEPICKER.YearI18n);

@@ -47,4 +47,4 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { getWeekNumber, extractDateFormat } from "@opentiny/vue-renderless/common/deps/date-util";
import { DATEPICKER, DATE } from "@opentiny/vue-renderless/common";
import { getWeekNumber, extractDateFormat } from "../common/deps/date-util";
import { DATEPICKER, DATE } from "../common";
const api = [

@@ -105,2 +105,3 @@ "state",

animationName: "",
startYear: Math.floor((/* @__PURE__ */ new Date()).getFullYear() / 10) * 10,
year: computed(() => state.date.getFullYear()),

@@ -107,0 +108,0 @@ month: computed(() => state.date.getMonth()),

@@ -14,3 +14,3 @@ import "../chunk-PKUHTIDK.js";

modifyWithTimeString
} from "@opentiny/vue-renderless/common/deps/date-util";
} from "../common/deps/date-util";
const calcDefaultValue = (defaultValue) => {

@@ -17,0 +17,0 @@ if (Array.isArray(defaultValue)) {

@@ -43,3 +43,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { nextMonth, extractDateFormat, extractTimeFormat } from "@opentiny/vue-renderless/common/deps/date-util";
import { nextMonth, extractDateFormat, extractTimeFormat } from "../common/deps/date-util";
const api = [

@@ -46,0 +46,0 @@ "state",

import "../chunk-PKUHTIDK.js";
import { formatDate } from "@opentiny/vue-renderless/common/deps/date-util";
import { getFirstDayOfMonth, getDayCountOfMonth, getWeekNumber, prevDate, nextDate, isDate, clearTime } from "@opentiny/vue-renderless/common/deps/date-util";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { formatDate } from "../common/deps/date-util";
import { getFirstDayOfMonth, getDayCountOfMonth, getWeekNumber, prevDate, nextDate, isDate, clearTime } from "../common/deps/date-util";
import { DATEPICKER } from "../common";
const formatJudg = ({ day, offset, j, i, cell, count, dateCountOfLastMonth }) => {

@@ -6,0 +6,0 @@ const nodfpm = day + offset < 0 ? 7 + day + offset : day + offset;

@@ -18,3 +18,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { getStartDateOfMonth } from "@opentiny/vue-renderless/common/deps/date-util";
import { getStartDateOfMonth } from "../common/deps/date-util";
const api = ["state", "getCellClasses", "isWeekActive", "handleMouseMove", "handleClick"];

@@ -21,0 +21,0 @@ const initState = ({ reactive, computed, api: api2, props }) => {

import "../chunk-PKUHTIDK.js";
import { on, off, addClass, removeClass } from "@opentiny/vue-renderless/common/deps/dom";
import { emitEvent } from "@opentiny/vue-renderless/common/event";
import { getDomNode } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off, addClass, removeClass } from "../common/deps/dom";
import { emitEvent } from "../common/event";
import { getDomNode } from "../common/deps/dom";
const computedAnimationName = ({ constants, props }) => () => props.rightSlide ? constants.DIALOG_SLIDER_RIGHT : constants.DIALOG_FADE;

@@ -9,3 +9,3 @@ const computedAddUnit = (value) => isNaN(Number(value)) ? value : value + "px";

const style = {};
let { width, top, rightSlide } = props;
let { width, top, rightSlide, maxHeight } = props;
if (top === void 0) {

@@ -16,5 +16,7 @@ top = rightSlide ? "0" : "15vh";

top = computedAddUnit(top);
maxHeight = computedAddUnit(maxHeight);
if (!state.isFull) {
style.width = width;
style.top = state.top || top;
style.maxHeight = maxHeight;
if (rightSlide) {

@@ -21,0 +23,0 @@ style.right = 0;

@@ -22,3 +22,3 @@ import {

} from "./index";
import usePopup from "@opentiny/vue-renderless/common/deps/vue-popup";
import usePopup from "../common/deps/vue-popup";
const api = ["afterEnter", "afterLeave", "handleClose", "handleWrapperClick", "handleCancel", "handleConfirm", "handleDrag", "state"];

@@ -25,0 +25,0 @@ const initState = ({ reactive, computed, api: api2, emitter, props }) => {

import "../chunk-PKUHTIDK.js";
import { format } from "@opentiny/vue-renderless/common/date";
import { format } from "../common/date";
const init = ({ state, props }) => () => {

@@ -4,0 +4,0 @@ let list = [];

import "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
const getTitle = (props) => () => {

@@ -4,0 +4,0 @@ if (props.title) {

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import userPopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import userPopper from "../common/deps/vue-popper";
const toggleItem = (state) => (active, item) => {

@@ -116,5 +116,34 @@ if (item.disabled) {

};
const mounted = ({ api, parent, state }) => () => {
parent.$on("menuselectedIndex", (selectedIndex) => {
state.selectedIndex = selectedIndex;
});
parent.$on("menu-item-click", api.handleMenuItemClick);
parent.$on("mouseenter-tips", (showContent, label) => {
state.label = label;
state.showContent = showContent;
});
parent.$on("mouseleave-tips", (showContent, label) => {
state.label = label;
state.showContent = showContent;
});
};
const handleMenuItemClick = ({ state, dispatch }) => (itemData, instance, label, showContent) => {
state.label = label;
state.showContent = showContent;
dispatch("TinyDropdown", "current-item-click", [itemData, instance]);
};
const handleMouseenter = ({ emit }) => ($event) => {
emit("mouseenter", $event);
};
const handleMouseleave = ({ emit }) => ($event) => {
emit("mouseleave", $event);
};
export {
clickOutside,
getScroller,
handleMenuItemClick,
handleMouseenter,
handleMouseleave,
mounted,
toggleItem,

@@ -121,0 +150,0 @@ updateOffset,

import "../chunk-PKUHTIDK.js";
import { toggleItem, updateOffset, clickOutside, getScroller, useVuePopper } from "./index";
const api = ["state", "toggleItem", "updateOffset", "clickOutside", "doDestroy"];
import { toggleItem, updateOffset, clickOutside, getScroller, useVuePopper, mounted, handleMenuItemClick, handleMouseenter, handleMouseleave } from "./index";
const api = ["state", "toggleItem", "updateOffset", "clickOutside", "doDestroy", "handleMouseenter", "handleMouseleave"];
const renderless = (props, hooks, instance) => {
const api2 = {};
const { reactive, provide } = hooks;
const { refs, nextTick, mode, vm } = instance;
const { reactive, provide, onMounted } = hooks;
const { nextTick, mode, vm, parent, dispatch, emit, refs } = instance;
const state = reactive({

@@ -13,6 +13,11 @@ offset: 0,

size: "",
showPopper: false
showPopper: false,
label: "",
showContent: false,
selected: false,
selectedIndex: -1
});
provide("dropdownMenu", vm);
provide("multiStage", props.multiStage);
if (mode === "mobile") {
provide("dropdownMenu", vm);
nextTick(() => {

@@ -28,4 +33,9 @@ state.scroller = getScroller(refs.menu);

clickOutside: clickOutside({ props, refs, state }),
updateOffset: updateOffset({ props, state, refs })
updateOffset: updateOffset({ props, state, refs }),
mounted: mounted({ api: api2, parent, state }),
handleMouseenter: handleMouseenter({ emit }),
handleMouseleave: handleMouseleave({ emit }),
handleMenuItemClick: handleMenuItemClick({ dispatch, state })
});
onMounted(api2.mounted);
return api2;

@@ -32,0 +42,0 @@ };

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { addClass, removeClass, on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { KEY_CODE } from "../common";
import { addClass, removeClass, on, off } from "../common/deps/dom";
const watchVisible = ({ broadcast, emit, nextTick }) => (value) => {

@@ -5,0 +5,0 @@ broadcast("TinyDropdownMenu", "visible", value);

import "../chunk-PKUHTIDK.js";
import { guid } from "@opentiny/vue-renderless/common/string";
import { guid } from "../common/string";
import {

@@ -4,0 +4,0 @@ watchVisible,

import "../chunk-PKUHTIDK.js";
import { xss } from "@opentiny/vue-renderless/common";
import { xss } from "../common";
const getUserHref = ({ api, props }) => (item) => {

@@ -4,0 +4,0 @@ const type = item.type ? String(item.type).toLocaleLowerCase() : "";

import "../chunk-PKUHTIDK.js";
import { init } from "@opentiny/vue-renderless/common/deps/eSpaceCtrl";
import { init } from "../common/deps/eSpaceCtrl";
import { getUserHref, getUserTitle, doUserAction, initEspaceLink, openEspace, testUID, soundEspace } from "./index";

@@ -4,0 +4,0 @@ const api = ["getUserHref", "getUserTitle", "doUserAction", "initEspaceLink", "openEspace", "testUID", "soundEspace"];

import "../chunk-PKUHTIDK.js";
import { create, getMessage } from "./index";
const api = ["state", "create"];
const renderless = (props, { computed, reactive }, { t, emit }) => {
const renderless = (props, { computed, reactive }, { t, emit }, { images }) => {
const api2 = {

@@ -10,2 +10,4 @@ create: create(emit),

const state = reactive({
urlType: props.type,
images,
message: computed(() => api2.getMessage({ props, t }))

@@ -12,0 +14,0 @@ });

import "../chunk-PKUHTIDK.js";
import { REFRESH_INTERVAL } from "@opentiny/vue-renderless/common";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import { REFRESH_INTERVAL } from "../common";
import { on, off } from "../common/deps/dom";
import PopupManager from "../common/deps/popup-manager";
import { xss } from "../common/xss.js";
const arrowClick = (state) => (opt) => {

@@ -7,0 +7,0 @@ state.pager += opt;

import {
__spreadProps,
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { extend } from "@opentiny/vue-renderless/common/object";
import { xss, log } from "@opentiny/vue-renderless/common/xss";
import uploadAjax from "@opentiny/vue-renderless/common/deps/upload-ajax";
import { extend } from "../common/object";
import { xss, log } from "../common/xss";
import uploadAjax from "../common/deps/upload-ajax";
import { isObject } from "../common/type";
import { isEmptyObject } from "../common/type";
let initTokenPromise = null;
const shaMap = {
sHA256: "SHA256"
};
const initService = ({ props, service }) => {
const noopFnCreator = (propName) => () => {
const noopFnCreator = (fn, propName) => {
const noFn = () => {
if (propName) {
return Promise.reject(new Error(`[TINY Error][FileUpload] Prop ${propName} is not configured`));
} else {
return Promise.reject(new Error("[TINY Error][FileUpload] This component depends on @opentiny/vue-service"));
return Promise.reject(
new Error(
"[TINY Error][FileUpload] This component depends on @opentiny/vue-service, Currently unable to generate a default gateway, please set a value for the action"
)
);
}
};
return fn || noFn;
};
const initService = ({ props, service }) => {
const { network = {}, common = {} } = service || {};
const { request, get, post, all, spread, CancelToken = {} } = network;
const noopFn = noopFnCreator();
let requestFn;
if (!isEmptyObject(props.hwh5)) {
const { HWH5 } = props.hwh5;
const { uploadToEDM } = HWH5();
requestFn = props.httpRequest || uploadToEDM;
} else if (request) {
requestFn = props.httpRequest || request;
} else {
requestFn = props.httpRequest || uploadAjax;
}
return {
get: get || noopFn,
post: post || noopFn,
request: request || noopFn,
all: all || noopFn,
spread: spread || noopFn,
cancelToken: CancelToken.source || noopFn,
getSingleUploadUrl: common.getSingleUploadUrl || noopFn,
getFileUploadUrl: common.getFileUploadUrl || noopFn,
getFileDownloadUrl: common.getFileDownloadUrl || noopFn,
getSingleDownloadUrl: common.getSingleDownloadUrl || noopFn,
getPackageDownloadUrl: common.getPackageDownloadUrl || noopFn,
getLargeFileInitUrl: common.getLargeFileInitUrl || noopFn,
getChunkUploadUrl: common.getChunkUploadUrl || noopFn,
getPreviewUrl: common.getPreviewUrl || noopFn,
getDocumentInfoUrl: common.getDocumentInfoUrl || noopFn,
httpRequest: props.httpRequest || request || uploadAjax
get: noopFnCreator(get),
post: noopFnCreator(post),
request: noopFnCreator(request),
all: noopFnCreator(all),
spread: noopFnCreator(spread),
cancelToken: noopFnCreator(CancelToken.source),
getSingleUploadUrl: noopFnCreator(common.getSingleUploadUrl),
getFileUploadUrl: noopFnCreator(common.getFileUploadUrl),
getFileDownloadUrl: noopFnCreator(common.getFileDownloadUrl),
getSingleDownloadUrl: noopFnCreator(common.getSingleDownloadUrl),
getPackageDownloadUrl: noopFnCreator(common.getPackageDownloadUrl),
getLargeFileInitUrl: noopFnCreator(common.getLargeFileInitUrl),
getChunkUploadUrl: noopFnCreator(common.getChunkUploadUrl),
getPreviewUrl: noopFnCreator(common.getPreviewUrl),
getDocumentInfoUrl: noopFnCreator(common.getDocumentInfoUrl),
getPreviewUrlBatch: noopFnCreator(common.getPreviewUrlBatch),
httpRequest: noopFnCreator(requestFn, "httpRequest")
};
};
const computedUploadDisabled = ({ props, state }) => () => props.disabled || (state.elForm || {}).disabled;
const computedUploadingSize = (state) => () => state.uploadingFiles.reduce((total, file) => total + file.size, 0);
const computedUploadingSize = ({ state, constants }) => () => state.uploadingFiles.reduce((total, file) => total + file.status !== constants.FILE_STATUS.FAIL ? file.size : 0, 0);
const watchListType = ({ constants, state }) => (type) => {
if (type === constants.LIST_TYPE.PICTURE_CARD || type === constants.LIST_TYPE.PICTURE) {
if ([
constants.LIST_TYPE.PICTURE_CARD,
constants.LIST_TYPE.PICTURE,
constants.LIST_TYPE.PICTURE_SINGLE,
constants.LIST_TYPE.DRAG_SINGLE
].includes(type)) {
state.uploadFiles = state.uploadFiles.map((file) => {

@@ -50,2 +72,3 @@ if (!file.url && file.raw) {

} catch (err) {
return;
}

@@ -57,4 +80,4 @@ }

};
const watchFileList = ({ constants, state }) => (fileList) => {
state.uploadFiles = fileList && fileList.map((item) => {
const watchFileList = ({ constants, state, props }) => (fileList) => {
let uploadFiles = fileList && fileList.map((item) => {
item.uid = item.uid || Date.now() + state.tempIndex++;

@@ -64,2 +87,6 @@ item.status = item.status || constants.FILE_STATUS.SUCESS;

});
if ([constants.LIST_TYPE.PICTURE_SINGLE, constants.LIST_TYPE.DRAG_SINGLE].includes(props.listType)) {
uploadFiles = uploadFiles.slice(0, 1);
}
state.uploadFiles = uploadFiles;
};

@@ -76,5 +103,3 @@ const isNonFuncPropBeforeUpload = ({ flag, doUpload, file }) => !flag && doUpload(file);

for (const p in rawFile) {
if (Object.prototype.hasOwnProperty.call(rawFile, p)) {
processedFile[p] = rawFile[p];
}
Object.prototype.hasOwnProperty.call(rawFile, p) && (processedFile[p] = rawFile[p]);
}

@@ -96,12 +121,16 @@ file.raw = processedFile;

};
const getFileType = ({ file }) => file.name && file.name.split(".")[file.name.split(".").length - 1].toLowerCase();
const remove = ({ api, file, autoRemove }) => {
if (autoRemove) {
const rawFile = file.raw;
if (Array.isArray(rawFile)) {
rawFile.forEach((raw) => api.handleRemove(null, raw));
} else {
api.handleRemove(null, rawFile);
}
}
};
const beforeUpload = ({ props, api, Modal, constants, t, state }) => (file, autoRemove, doUpload) => {
if (state.isEdm && file.name.length > 255) {
if (autoRemove) {
const rawFile = file.raw;
if (Array.isArray(rawFile)) {
rawFile.forEach((raw) => api.handleRemove(null, raw));
} else {
api.handleRemove(null, rawFile);
}
}
remove({ api, file, autoRemove });
return Modal.message({

@@ -112,2 +141,19 @@ message: `${t(constants.EDM.THEFILENAME)}"${file.name}"${t(constants.EDM.FILENAMEEXCEEDS)}`,

}
if (file) {
const accept = state.isEdm ? state.accept : props.accept;
const fileType = getFileType({ file });
const isExist = accept && accept.split(",").some((type) => {
if (type.toLowerCase() === constants.IMAGE_TYPE) {
return constants.IMAGE_TYPES.includes(fileType.toLowerCase());
}
return new RegExp(type.trim(), "i").test(`.${fileType}` || file.raw.type);
});
if (accept && !isExist) {
remove({ api, file, autoRemove });
return Modal.message({
message: t("ui.fileUpload.notSupport"),
status: "warning"
});
}
}
let flag = typeof props.beforeUpload === "function";

@@ -132,3 +178,7 @@ isNonFuncPropBeforeUpload({ flag, doUpload, file });

};
const startUpload = ({ state, constants, refs, Modal, api, t }) => (file, isList) => {
const startUpload = ({ state, constants, vm, Modal, api, t }) => (file, isList) => {
if (state.isHwh5) {
vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].upload(file.raw);
return;
}
if (file.size > state.docSize && file.size > state.chunkSize) {

@@ -147,3 +197,3 @@ file.isLargeFile = true;

} else {
refs[constants.UPLOAD_INNER].upload(file.raw);
vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].upload(file.raw);
}

@@ -164,2 +214,4 @@ };

const properFileSize = ({ props, state, constants, Modal, t }) => (file) => {
if ([void 0, null].includes(file.size))
return true;
let maxSize = 0;

@@ -171,8 +223,10 @@ if (Array.isArray(props.fileSize) && props.fileSize[1]) {

}
if (file.size > maxSize * 1024 * 1024) {
Modal.message({
message: `${file.name} ${t(constants.EDM.EXCEED)} ${maxSize} MB`,
status: "warning"
});
return false;
if (state.isEdm || !state.isEdm && Array.isArray(props.fileSize) && props.fileSize[1]) {
if (file.size > maxSize * 1024 * 1024) {
Modal.message({
message: `${file.name} ${t(constants.EDM.EXCEED)} ${maxSize} MB`,
status: "warning"
});
return false;
}
}

@@ -196,4 +250,4 @@ if (file.size <= 0) {

};
const addFileToList = ({ api, constants, emit, props, state, mode }) => (rawFile, updateId) => {
rawFile.uid = Date.now() + state.tempIndex++;
const addFileToList = ({ api, constants, emit, props, state, mode }) => (rawFile, updateId, reUpload) => {
!reUpload && (rawFile.uid = Date.now() + state.tempIndex++);
let file = { status: constants.FILE_STATUS.READY, name: rawFile.name, size: rawFile.size };

@@ -208,5 +262,14 @@ Object.assign(file, { percentage: 0, uid: rawFile.uid, raw: rawFile, response: {} });

mode === "mobile" && calcFileForMobile(rawFile, file);
if (~[constants.LIST_TYPE.PICTURE_CARD, constants.LIST_TYPE.PICTURE].indexOf(props.listType)) {
if ([
constants.LIST_TYPE.PICTURE_CARD,
constants.LIST_TYPE.PICTURE,
constants.LIST_TYPE.PICTURE_SINGLE,
constants.LIST_TYPE.DRAG_SINGLE
].includes(props.listType) && !state.isHwh5) {
try {
file.url = URL.createObjectURL(rawFile);
if (state.isHwh5) {
file.url = rawFile.filePath;
} else {
file.url = URL.createObjectURL(rawFile);
}
} catch (err) {

@@ -222,3 +285,6 @@ return;

state.updateId = updateId || props.edm.updateId || "";
if (state.updateId) {
if (reUpload) {
const index = state.uploadFiles.findIndex((item) => item.uid === file.uid);
state.uploadFiles.splice(index, 1);
} else if (state.updateId) {
const index = state.uploadFiles.findIndex((item) => item.docId === updateId);

@@ -230,2 +296,8 @@ state.uploadFiles.splice(index, 1, file);

}
if (!state.isEdm) {
const proper = api.properFileSize(file);
if (!proper) {
return;
}
}
state.uploadFiles.push(file);

@@ -235,19 +307,73 @@ state.currentUploadingFileUids.push(file.uid);

};
const rawfileUpload = ({ state, props, refs, constants, rawFiles, api }) => {
if (!state.isEdm && props.autoUpload) {
if (props.multiple && props.mergeService) {
const handler = (file) => refs[constants.UPLOAD_INNER].upload(file.raw);
rawFiles.length && api.beforeUpload({ raw: rawFiles }, true, handler);
const getFileHash = ({ emit, Modal, constants, t, CryptoJS, state }) => ({ file, chunkSize, showTips }) => {
if (showTips) {
Modal.message({
message: `${t(constants.EDM.CALCHASH)}`,
status: "warning"
});
}
const chunks = Math.ceil(file.size / chunkSize);
let chunkIndex = 0;
let start = chunkIndex * chunkSize;
let end = Math.min(file.size, start + chunkSize);
let chunk = file.raw.slice(start, end);
const hasher = CryptoJS.algo.SHA256.create();
let calculated = 0;
return new Promise((resolve) => {
const reader = new FileReader();
reader.readAsArrayBuffer(chunk);
reader.onload = (e) => {
if (file.status === constants.FILE_STATUS.FAIL)
return;
chunkIndex++;
let wordArray = CryptoJS.lib.WordArray.create(e.target.result);
hasher.update(wordArray);
wordArray = null;
if (chunkIndex < chunks) {
start = chunkIndex * chunkSize;
end = Math.min(file.size, start + chunkSize);
calculated += end - start;
emit("hash-progress", Math.min(Math.floor(calculated / file.size * 100), 100));
chunk = file.raw.slice(start, end);
reader.readAsArrayBuffer(chunk);
} else {
const hash = hasher.finalize().toString();
file.hash = file.raw.hash = hash;
resolve(hash);
emit("hash-progress", 100);
}
};
reader.onerror = (err) => {
file.status = constants.FILE_STATUS.FAIL;
emit("error", err, file, state.uploadFiles);
};
});
};
const handleHwh5Files = (files) => {
return files.map((file) => {
if (file instanceof File)
return file;
let f = {};
if (isObject(file)) {
const { fileName, fileSize, filePath } = file;
f = __spreadProps(__spreadValues({}, file), {
name: fileName,
size: fileSize,
webkitRelativePath: filePath
});
} else {
rawFiles.forEach((rawFile) => {
const file = api.getFile(rawFile);
const handler = (file2) => refs[constants.UPLOAD_INNER].upload(file2.raw);
api.beforeUpload(file, true, handler);
});
const [name, index] = file.match(/[^/]*$/);
const [type] = file.match(/\.[^.]*$/);
const filePath = file.substring(0, index);
f = { type, name, filePath, webkitRelativePath: filePath };
}
return f;
});
};
const handleStart = ({ api, constants, props, state, vm }) => (rawFiles, updateId, reUpload = false) => {
if (state.isHwh5) {
rawFiles = handleHwh5Files(rawFiles);
}
};
const handleStart = ({ api, constants, props, state, refs }) => (rawFiles, updateId) => {
state.currentUploadingFileUids = [];
rawFiles.forEach((rawFile) => api.addFileToList(rawFile, updateId));
rawFiles.forEach((rawFile) => api.addFileToList(rawFile, updateId, reUpload));
const { UPLOADING, READY } = constants.FILE_STATUS;

@@ -258,23 +384,20 @@ state.uploadingFiles = state.uploadFiles.filter((file) => [UPLOADING, READY].includes(file.status));

const file = api.getFile(rawFile);
if (!file) {
if (!file)
return;
}
api.beforeUpload(file, true, (file2) => {
typeof props.edm.upload.loading === "function" && props.edm.upload.loading(file2);
new Promise((resolve) => {
if (props.edm.isCheckCode !== true) {
if (state.isHwh5)
return resolve();
}
if (file2.size > state.docSize && file2.size > state.chunkSize && !state.isEntireCheckCode) {
let isLargeFileHash = false;
if (props.edm.isCheckCode !== true)
return resolve();
if (file2.size > state.docSize && file2.size > state.chunkSize) {
if (!state.isEntireCheckCode) {
return resolve();
} else {
isLargeFileHash = true;
}
}
const reader = new FileReader();
reader.readAsArrayBuffer(file2.raw);
reader.onload = (e) => {
const cryptoJS = props.edm.upload.plugin();
const wordArray = cryptoJS.lib.WordArray.create(e.target.result);
const hash = cryptoJS[shaMap.shaMap](wordArray).toString();
file2.hash = file2.raw.hash = hash;
resolve(hash);
};
api.getFileHash({ file: file2, chunkSize: state.chunkSize, showTips: isLargeFileHash }).then((hash) => resolve(hash));
}).then(() => {

@@ -294,12 +417,34 @@ if (props.autoUpload) {

}
rawfileUpload({ state, props, refs, constants, rawFiles, api });
if (!state.isEdm && props.autoUpload) {
if (props.multiple && props.mergeService) {
const handler = (file) => (vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].upload(file.raw), void 0);
rawFiles.length && api.beforeUpload({ raw: rawFiles }, true, handler);
} else {
rawFiles.forEach((rawFile) => {
const file = api.getFile(rawFile);
if (!file)
return;
const handler = (file2) => (vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].upload(file2.raw), void 0);
api.beforeUpload(file, true, handler);
});
}
}
};
const calcUploadingFilesInfo = ({ state }) => () => {
const totalLoadedSize = state.uploadingFiles.reduce((loadedSize, file) => {
const loaded = file.size * file.percentage / 100;
return loadedSize + loaded;
}, 0);
const calcUploadingFilesInfo = ({ state, constants }) => () => {
let percentage;
if (state.isHwh5) {
const totalPercentage = state.uploadingFiles.reduce((total, file) => {
const curPercentage = file.status !== constants.FILE_STATUS.FAIL ? file.percentage / 100 : 0;
return total + curPercentage;
}, 0);
percentage = Math.floor(totalPercentage / state.uploadingFiles.length * 100);
} else {
const totalLoadedSize = state.uploadingFiles.reduce((loadedSize, file) => {
const loaded = file.status !== constants.FILE_STATUS.FAIL ? file.size * file.percentage / 100 : 0;
return loadedSize + loaded;
}, 0);
percentage = Math.floor(totalLoadedSize / state.uploadingSize * 100);
}
percentage = Math.min(percentage, 100);
const uploadedFiles = state.uploadingFiles.filter((file) => file.percentage === 100);
let percentage = Math.floor(totalLoadedSize / state.uploadingSize * 100);
percentage = Math.min(percentage, 100);
return {

@@ -326,4 +471,5 @@ percentage,

file.status = constants.FILE_STATUS.UPLOADING;
if (event.lengthComputable && !file.isLargeFile) {
file.percentage = Math.floor(event.loaded * 100 / event.total) || 0;
if (state.isHwh5) {
const { progress } = JSON.parse(event);
file.percentage = progress;
if (file.percentage >= 100) {

@@ -333,2 +479,10 @@ file.isFinished = true;

emit("progress", file, state.uploadFiles, api.calcUploadingFilesInfo());
} else {
if (event.lengthComputable && !file.isLargeFile) {
file.percentage = Math.floor(event.loaded * 100 / event.total) || 0;
if (file.percentage >= 100) {
file.isFinished = true;
}
emit("progress", file, state.uploadFiles, api.calcUploadingFilesInfo());
}
}

@@ -367,10 +521,13 @@ }

file.response = res;
if (state.isEdm && res.data.result) {
file.serverName = res.data.result.serverName;
file.docRelativePath = res.data.result.docRelativePath;
file.docId = res.data.result.docId;
file.docVersion = res.data.result.version;
file.docSize = res.data.result.docSize;
if (state.isEdm) {
const result = state.isHwh5 ? res : res.data.result;
if (!result)
return;
file.serverName = result.serverName;
file.docRelativePath = result.docRelativePath;
file.docId = result.docId;
file.docVersion = result.version;
file.docSize = result.docSize;
file.isLargeFile && delete file.raw;
Object.assign(file, res.data.result);
Object.assign(file, result);
}

@@ -385,14 +542,14 @@ emit("success", res, file, currentUploadFiles);

const file = api.getFile(rawFile);
if (file) {
file.status = constants.FILE_STATUS.FAIL;
file.percentage = 100;
if (!state.isEdm) {
state.uploadFiles.splice(state.uploadFiles.indexOf(file), 1);
}
api.clearUploadingFiles();
emit("error", err, file, state.uploadFiles);
emit("change", file, state.uploadFiles);
if (!file)
return;
file.status = constants.FILE_STATUS.FAIL;
file.percentage = 100;
if (!state.isEdm) {
state.uploadFiles.splice(state.uploadFiles.indexOf(file), 1);
}
api.clearUploadingFiles();
emit("error", err, file, state.uploadFiles);
emit("change", file, state.uploadFiles);
};
const handleRemove = ({ api, emit, props, state }) => (file, raw) => {
const handleRemove = ({ api, emit, props, state, constants }) => (file, raw) => {
if (raw) {

@@ -402,6 +559,7 @@ file = api.getFile(raw);

let doRemove = () => {
file.status = constants.FILE_STATUS.FAIL;
api.abort(file);
let fileList = state.uploadFiles;
fileList.splice(fileList.indexOf(file), 1);
emit("remove", file, fileList);
emit("remove", __spreadProps(__spreadValues({}, file), { status: constants.FILE_STATUS.FAIL }), fileList);
};

@@ -440,7 +598,50 @@ if (!props.beforeRemove) {

};
const abort = ({ constants, refs }) => (file) => refs[constants.UPLOAD_INNER].abort(file);
const abort = ({ constants, vm, state }) => (file) => {
const { READY, UPLOADING, FAIL } = constants.FILE_STATUS;
if (file) {
state.uploadingFiles.forEach((f) => {
const uid = file.uid || file;
if (f.uid === uid && [READY, UPLOADING].includes(f.status)) {
f.status = FAIL;
}
});
} else {
state.uploadingFiles.forEach((f) => {
if ([READY, UPLOADING].includes(f.status)) {
f.status = FAIL;
}
});
}
vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].abort(file);
};
const abortDownload = ({ state }) => (file, batch = false) => {
const cancel = (docId) => {
if (!docId)
return;
const cancels = state.downloadCancelToken[docId];
cancels && cancels.forEach((cancel2) => cancel2());
delete state.downloadCancelToken[docId];
const clearDataFn = state.downloadCancelData[docId];
clearDataFn && clearDataFn(docId);
};
if (Array.isArray(file)) {
if (batch) {
cancel(
file.map((f) => f.docId || f).sort().join(",")
);
} else {
file.forEach((f) => f && cancel(file.docId || file));
}
} else if (file) {
cancel(file.docId || file);
} else {
Object.keys(state.downloadCancelToken).forEach((docId) => {
cancel(docId);
});
}
};
const clearFiles = (state) => () => {
state.uploadFiles = [];
};
const submit = ({ api, constants, refs, state, props }) => () => {
const submit = ({ api, constants, vm, state, props }) => () => {
const files = state.uploadFiles.filter((file) => file.status === constants.FILE_STATUS.READY);

@@ -465,3 +666,3 @@ if (state.isEdm && state.isSuccess) {

rawFiles.length && api.beforeUpload({ raw: rawFiles }, false, (file) => {
refs[constants.UPLOAD_INNER].upload(file.raw);
vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].upload(file.raw);
});

@@ -471,3 +672,3 @@ } else {

api.beforeUpload(file, false, (file2) => {
refs[constants.UPLOAD_INNER].upload(file2.raw);
vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].upload(file2.raw);
});

@@ -478,3 +679,3 @@ });

};
const handleClick = ({ constants, refs }) => () => refs[constants.UPLOAD_INNER].handleClick();
const handleClick = ({ constants, vm }) => () => vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].handleClick();
const getFileUploadUrl = (service) => () => service.getFileUploadUrl();

@@ -488,6 +689,6 @@ const updateUrl = ({ api, props, state }) => () => {

};
const getTranslateFile = ({ api, isChunk }) => (data, type, index) => {
const getTranslateFile = ({ api, isChunk, isLessThan17G, file, state }) => (data, type, index) => {
if (isChunk) {
if (index === 0) {
api.setWriterFile({ data, index });
state.downloadCancelData[file.docId] = api.setWriterFile({ data, index, isLessThan17G, file });
}

@@ -498,35 +699,40 @@ } else {

const blob = new Blob([data.data], { type: type !== "zip" ? "application / x - xls" : "application/zip" });
if (window && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, decodeURIComponent(name));
return;
}
const url = window.URL || window.webkitURL || window.moxURL;
const downloadHref = xss.filterUrl(url.createObjectURL(blob));
let downloadLink = document.createElement("a");
downloadLink.href = downloadHref;
downloadLink.download = decodeURIComponent(name);
downloadLink.click();
aLinkDownload({ blob, name });
}
};
const getHandleSuccess = ({ downloadOps, file, translateFile, isChunk, state }) => (data, type, index) => {
const aLinkDownload = ({ blob, name }) => {
if (window && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, decodeURIComponent(name));
return;
}
const url = window.URL || window.webkitURL || window.moxURL;
const downloadHref = xss.filterUrl(url.createObjectURL(blob));
let downloadLink = document.createElement("a");
downloadLink.href = downloadHref;
downloadLink.download = decodeURIComponent(name);
downloadLink.click();
url.revokeObjectURL && url.revokeObjectURL(downloadHref);
};
const getHandleSuccess = ({ state, downloadOps, file, translateFile, isChunk, isLessThan17G }) => (data, type, index) => {
if (isChunk) {
state.dowuloadChunkFile.set(index, new Uint8Array(data.data));
const res = isLessThan17G ? data.data : new Uint8Array(data.data);
let downloadChunkFile = state.downloadChunkFile[file.docId];
if (!downloadChunkFile) {
downloadChunkFile = {};
}
downloadChunkFile[index] = res;
translateFile(data, type, index);
} else {
if (data.data.type.includes("application/json")) {
const reader = new FileReader();
reader.onload = (e) => {
if (typeof downloadOps.fail === "function") {
downloadOps.fail(JSON.parse(e.target.result), file);
}
};
reader.readAsText(data.data);
} else {
typeof downloadOps.loading === "function" && downloadOps.loading(file);
translateFile(data, type);
}
typeof downloadOps.loading === "function" && downloadOps.loading(file);
translateFile(data, type);
}
return true;
};
const getCalcProgress = () => (evt) => {
let total = Number(evt.target.getResponseHeader("Content-Size"));
let total;
if (evt.target && evt.target.getResponseHeader) {
total = Number(evt.target.getResponseHeader("Content-Size"));
} else {
total = Number(evt.total);
}
total = Math.max(total, evt.loaded);

@@ -538,5 +744,5 @@ let progress = Math.ceil(evt.loaded / total * 100) || 0;

};
const modifyServiceUrlSingle = ({ file, serviceUrl, range, constants }) => {
const modifyServiceUrlSingle = ({ constants }) => ({ file, serviceUrl, range }) => {
if (typeof file === "object") {
let tempFile = __spreadValues(__spreadValues({}, file), range);
let tempFile = Object.assign({}, file, range);
delete tempFile.docId;

@@ -546,8 +752,6 @@ delete tempFile.docVersion;

for (let key in tempFile) {
if (Object.prototype.hasOwnProperty.call(tempFile, key)) {
const value = tempFile[key];
const dataType = typeof value;
if (!~["undefined", "object", "function"].indexOf(dataType)) {
serviceUrl += `&${key}=${value}`;
}
const value = tempFile[key];
const dataType = typeof value;
if (!~["undefined", "object", "function"].indexOf(dataType)) {
serviceUrl += `&${key}=${value}`;
}

@@ -560,4 +764,4 @@ }

};
const getKiaScanTip = ({ data, t, Modal, constants }) => {
if (data.status === "12079") {
const getKiaScanTip = ({ Modal, constants, t }) => ({ data }) => {
if (data.status === constants.EDM.KIASTATUS) {
return Modal.message({

@@ -569,9 +773,52 @@ message: `${t(constants.EDM.KIASCANTIP)}`,

};
const getServiceUrl = ({ url, file }) => url.replace(/{docId}/, file.docId || file) + `${~url.indexOf("?") ? "&" : "?"}x-download-sign=true&docVersion=${file.docVersion || ""}`;
const downloadFileSingle = (args) => {
let { file, service, constants, props, state, batchIndex, isChunk, api } = args;
let { calcProgress, emit, handleSuccess: handleSuccess2, t, Modal, range = {}, isBatch } = args;
const validateDownloadStatus = ({ state, Modal }) => ({ downloadOps, file, isLessThan17G, data }) => {
const errorHandle = ({ state: state2, file: file2, errRes, Modal: Modal2, downloadOps: downloadOps2 }) => {
if (state2.currentDownloadFiles && state2.currentDownloadFiles.docId === file2.docId)
return;
if (errRes && errRes.message) {
Modal2.message({
message: errRes.message,
status: "warning"
});
}
state2.currentDownloadFiles = file2;
if (typeof downloadOps2.fail === "function") {
downloadOps2.fail(errRes, file2);
}
};
if (data.data && data.data.type && data.data.type.includes("application/json")) {
const reader = new FileReader();
reader.onload = (e) => {
const errRes = JSON.parse(e.target.result);
errorHandle({ state, file, errRes, Modal, downloadOps });
};
reader.readAsText(data.data);
return true;
}
if (!isLessThan17G && data.headers["content-type"].includes("application/json")) {
const errRes = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(data.data)));
errorHandle({ state, file, errRes, Modal, downloadOps });
return true;
}
};
const createDownloadCancelToken = ({ state, service }) => (file) => {
let docId;
if (Array.isArray(file)) {
docId = file.map((f) => f.docId || f).sort().join(",");
} else {
docId = file.docId || file;
}
if (!state.downloadCancelToken[docId]) {
state.downloadCancelToken[docId] = [];
}
const { cancel, token } = service.cancelToken();
state.downloadCancelToken[docId].push(cancel);
return token;
};
const downloadFileSingle = ({ service, constants, props, state, api, emit }) => (args) => {
let { file, batchIndex, isChunk, calcProgress, handleSuccess: handleSuccess2, range = {}, isBatch, isLessThan17G } = args;
let getServiceUrl = ({ url, file: file2 }) => url.replace(/{docId}/, file2.docId || file2) + `${~url.indexOf("?") ? "&" : "?"}x-download-sign=true&docVersion=${file2.docVersion || ""}`;
let sdResolver = (url) => {
let serviceUrl = getServiceUrl({ url, file });
serviceUrl = modifyServiceUrlSingle({ file, serviceUrl, range, constants });
serviceUrl = api.modifyServiceUrlSingle({ file, serviceUrl, range });
serviceUrl = xss.filterUrl(serviceUrl);

@@ -581,4 +828,5 @@ let params = {

headers: Object.assign(props.headers, state.headers),
responseType: isChunk ? "arraybuffer" : "blob",
responseType: isChunk && !isLessThan17G ? "arraybuffer" : "blob",
hideErr: true,
cancelToken: api.createDownloadCancelToken(file),
onDownloadProgress(evt) {

@@ -595,8 +843,9 @@ let progress = calcProgress(evt, isChunk);

service.get(serviceUrl, params).then((data) => {
if (getKiaScanTip({ data, t, Modal, constants })) {
if (api.getKiaScanTip({ data }))
return;
}
if (api.validateDownloadStatus({ downloadOps: props.edm.download || {}, file, isLessThan17G, data }))
return;
handleSuccess2(data, "", range.index);
const { checkcode, "content-size": fileSize } = data.headers;
!isChunk && emit("download", 100, { checkcode, fileSize });
handleSuccess2(data, "", range.index);
!isChunk && emit("download", 100, "", { checkcode, fileSize });
if (typeof file === "object") {

@@ -608,7 +857,7 @@ file.percentage = 100;

}).catch((data) => {
if (data.response && data.response.status === 401) {
if (data.response && state.errorStatusCodes.includes(data.response.status)) {
const downloadOps = props.edm.download || {};
const tokenParams = { token: downloadOps.token, file, type: "download" };
api.getToken(tokenParams).then((data2) => {
api.afterDownload({ batchIndex, data: data2, file, range, isChunk, isBatch });
api.afterDownload({ batchIndex, data: data2, file, range, isChunk, isBatch, isLessThan17G });
});

@@ -620,5 +869,4 @@ }

};
const downloadFileBatch = (args) => {
let { api, downloadOps, file, service, props, state, calcProgress, emit, handleSuccess: handleSuccess2 } = args;
let { t, Modal, constants, range = {} } = args;
const downloadFileBatch = ({ api, service, props, state, emit }) => (args) => {
let { downloadOps, file, calcProgress, handleSuccess: handleSuccess2, range = {} } = args;
let tokenParams = { token: downloadOps.packageToken, file, type: "download" };

@@ -630,8 +878,9 @@ api.getToken(tokenParams).then((data) => {

const params = { downloadTOs: [], attachdownloadTOs: [], isZip: "true", transformType: "sync", type: "package" };
const hasWmType = file.some((item) => Boolean(item.wmType));
if (hasWmType) {
params.attachdownloadTOs = file;
} else {
params.downloadTOs = file;
}
file.forEach((item) => {
if (item.wmType) {
params.attachdownloadTOs.push(item);
} else {
params.downloadTOs.push(item);
}
});
service.getPackageDownloadUrl().then((url) => {

@@ -647,2 +896,3 @@ url += `${~url.indexOf("?") ? "&" : "?"}x-download-sign=true`;

responseType: "blob",
cancelToken: api.createDownloadCancelToken(file),
onDownloadProgress(evt) {

@@ -656,7 +906,6 @@ let progress = calcProgress(evt);

).then((data2) => {
if (getKiaScanTip({ data: data2, t, Modal, constants })) {
if (api.getKiaScanTip({ data: data2 }))
return;
}
const { "content-size": fileSize } = data2.headers;
emit("download", 100, { fileSize });
const { "content-size": fileSize, checkcode } = data2.headers;
emit("download", 100, "", { fileSize, checkcode });
handleSuccess2(data2, "zip");

@@ -667,57 +916,104 @@ });

};
const downloadFile = ({ api, state, props }) => (file) => {
const downloadFileSingleHwh5 = ({ state, props, emit, constants }) => ({ file }) => {
const { HWH5, appId } = props.hwh5;
const { downloadToEDM } = HWH5();
const options = {
edmAuth: {
edmToken: state.headers[constants.EDM.EDMTOKEN],
appId
},
docId: file.docId || file,
docVersion: file.docVersion,
filePath: file.filePath,
progress: 1,
onProgress: (event) => {
const { progress } = JSON.parse(event);
if (progress * 1 !== 100) {
emit("download", progress);
}
}
};
downloadToEDM(options).then((data) => {
emit("download", 100, "", { data });
});
};
const downloadFile = ({ api, state }) => (file) => {
state.currentDownloadFiles = "";
if (!state.isEdm) {
api.ordinaryDownload(file);
return;
} else {
const isBatch = Array.isArray(file);
if (state.isHwh5) {
let files = file;
if (!isBatch) {
files = [file];
}
files.forEach((f) => api.downloadFileSingleInner({ file: f, isBatch: false }));
return;
}
if (isBatch) {
api.downloadFileInner({ file, isBatch });
} else {
api.downloadFileSingleInner({ file, isBatch });
}
}
const isBatch = Array.isArray(file);
if (isBatch) {
return api.downloadFileInner({ file, isBatch });
}
};
const downloadFileSingleInner = ({ props, state, api, constants }) => ({ file, isBatch }) => {
const { SIZE_17G } = constants.EDM;
const downloadOps = props.edm.download || {};
let tokenParams = { token: downloadOps.token, file, type: "download" };
api.getToken(tokenParams).then((data) => {
if (!data) {
if (!data)
return;
if (state.isHwh5) {
api.downloadFileSingleHwh5({ file });
return;
}
api.getDownloadFileInfo({ docId: file.docId }).then((res) => {
let fileInfo;
if (res && res.outDocQueryList[0].verInfo[0]) {
fileInfo = res.outDocQueryList[0].verInfo[0].docInfo[0];
}
const { fileSize } = fileInfo;
const isLargeFile = fileSize > state.docSize && fileSize > state.chunkSize && fileSize > 10 * 1024 * 1024 * 1024;
if (isLargeFile) {
api.largeDocumentDownload({ file: fileInfo, isBatch });
} else {
api.downloadFileInner({ file, isBatch });
}
if (state.hasFileInfoInterface) {
api.getDownloadFileInfo({ docId: file.docId }).then((res) => {
let fileInfo;
if (res && res.outDocQueryList[0].verInfo[0]) {
fileInfo = res.outDocQueryList[0].verInfo[0].docInfo[0];
}
const { fileSize } = fileInfo;
const isLargeFile = fileSize > state.docSize && fileSize > state.chunkSize;
const isLessThan17G = fileSize < SIZE_17G * 1024;
if (isLargeFile) {
api.largeDocumentDownload({ file: fileInfo, isBatch, isLessThan17G });
} else {
api.downloadFileInner({ file, isBatch });
}
});
} else {
api.downloadFileInner({ file, isBatch });
}
});
};
const getDownloadFileInfo = ({ api, state, props, service }) => ({ docId }) => {
return service.getDocumentInfoUrl().then((url) => {
return new Promise((resolve, reject) => {
service.request({
method: "post",
url: xss.filterUrl(url),
withCredentials: props.withCredentials,
headers: Object.assign(props.headers, state.headers),
cancelToken: api.createDownloadCancelToken({ docId }),
data: { docInfoVO: { ids: [docId], docType: "", docVersion: "" } }
}).then((res) => {
if (res.data.status === 200) {
resolve(res.data.result);
} else {
reject(res);
}
});
});
});
};
const getDownloadFileInfo = ({ state, props, service }) => ({ docId }) => service.getDocumentInfoUrl().then(
(url) => new Promise((resolve, reject) => {
service.request({
method: "post",
url: xss.filterUrl(url),
withCredentials: props.withCredentials,
headers: Object.assign(props.headers, state.headers),
data: { docInfoVO: { ids: [docId], docType: "", docVersion: "" } }
}).then((res) => {
if (res.data.status === 200) {
resolve(res.data.result);
} else {
reject(res);
}
});
})
);
const largeDocumentDownload = ({ api, state }) => ({ file, isBatch }) => {
const chunkSize = Math.ceil(file.fileSize / state.chunkSize);
state.dowuloadChunkFile.set("chunkSize", chunkSize);
state.dowuloadChunkFile.set("fileSize", file.fileSize);
state.dowuloadChunkFile.set("docName", file.docName);
const largeDocumentDownload = ({ api, state }) => ({ file, isBatch, isLessThan17G }) => {
const { fileSize, docId, docName } = file;
const chunkSize = Math.ceil(fileSize / state.chunkSize);
state.downloadChunkFile[docId] = { chunkNum: chunkSize, fileSize, docName };
file.chunkSize = chunkSize;
const batches = api.sliceDownloadChunk(file);
api.batchSegmentDownload({ batchIndex: 0, batches, docId: file.docId, isBatch });
api.batchSegmentDownload({ batchIndex: 0, batches, docId: file.docId, isBatch, isLessThan17G });
};

@@ -729,5 +1025,10 @@ const sliceDownloadChunk = ({ state }) => (file) => {

state.downloadBatchQueueListen[file.docId + "-0"] = 0;
let startRange = 0;
let endRange = -1;
for (let i = 0; i < chunkSize; i++) {
const startRange = i * state.chunkSize;
const endRange = Math.min(file.fileSize, startRange + state.chunkSize);
startRange = endRange + 1;
endRange = Math.min(file.fileSize, startRange + state.chunkSize);
if (endRange < startRange) {
return downloadChunkArray;
}
const lastIndex = downloadChunkArray.length - 1;

@@ -749,3 +1050,3 @@ if (downloadChunkArray[lastIndex].length < state.downloadChunkLimit) {

};
const batchSegmentDownload = ({ state, api }) => ({ batchIndex, batches, docId, isBatch }) => {
const batchSegmentDownload = ({ state, api }) => ({ batchIndex, batches, docId, isBatch, isLessThan17G }) => {
if (batchIndex < batches.length) {

@@ -765,3 +1066,4 @@ const batch = batches[batchIndex];

batches,
isBatch
isBatch,
isLessThan17G
});

@@ -773,22 +1075,54 @@ }

while (batch.length - index > 0) {
api.downloadFileInner({ batchIndex, range: batch[index++], file: { docId }, isBatch, isChunk: true });
api.downloadFileInner({
batchIndex,
range: batch[index++],
file: { docId },
isBatch,
isChunk: true,
isLessThan17G
});
}
}
};
const downloadFileInner = ({ api, props, service, state, emit, constants, t, Modal }) => ({ batchIndex, file, range, isBatch, isChunk }) => {
const downloadFileInner = ({ api, props, state }) => ({
batchIndex,
file,
range,
isBatch,
isChunk,
isLessThan17G
}) => {
const downloadOps = props.edm.download || {};
const translateFile = getTranslateFile({ api, isChunk });
const handleSuccess2 = getHandleSuccess({ downloadOps, file, translateFile, isChunk, state });
const translateFile = getTranslateFile({ api, isChunk, isLessThan17G, file, state });
const handleSuccess2 = getHandleSuccess({ downloadOps, file, translateFile, isChunk, state, isLessThan17G });
const calcProgress = getCalcProgress();
let { isFinished = false } = {};
if (!isBatch) {
let args = { api, downloadOps, file, service, constants, props, state, t, Modal, isChunk };
Object.assign(args, { calcProgress, isFinished, emit, handleSuccess: handleSuccess2, range, batchIndex, isBatch });
downloadFileSingle(args);
const args = {
calcProgress,
isFinished,
handleSuccess: handleSuccess2,
range,
batchIndex,
isBatch,
downloadOps,
file,
isChunk,
isLessThan17G
};
api.downloadFileSingle(args);
return;
}
const params = { api, downloadOps, file, service, props, state, calcProgress, emit, handleSuccess: handleSuccess2, t, Modal, range };
isBatch && downloadFileBatch(params);
const params = { downloadOps, file, calcProgress, handleSuccess: handleSuccess2, range };
isBatch && api.downloadFileBatch(params);
};
const afterDownload = ({ api, state }) => ({ batchIndex, range, data, file, isBatch, isChunk }) => {
const afterDownload = ({ api, state }) => ({
batchIndex,
range,
data,
file,
isBatch,
isChunk,
isLessThan17G
}) => {
if (data.status === 200) {

@@ -801,3 +1135,9 @@ const key = file.docId + "-" + batchIndex;

if (countDownloadReplay && countDownloadReplay >= 2) {
const msgArray = ["The number of retry times exceeds the threshold! [docId:", file.docId, ", chunk:", range.index, "]"];
const msgArray = [
"The number of retry times exceeds the threshold! [docId:",
file.docId,
", chunk:",
range.index,
"]"
];
log.logger.warn(msgArray.join(""));

@@ -809,49 +1149,74 @@ delete state.downloadReplayAtoms[file.docId + "-" + range.index];

state.downloadReplayAtoms[file.docId + "-" + range.index] = countDownloadReplay + 1;
api.downloadFileInner({ batchIndex, range, file, isBatch, isChunk });
api.downloadFileInner({ batchIndex, range, file, isBatch, isChunk, isLessThan17G });
}
}
};
const setWriterFile = ({ state, emit, props }) => ({ data, index }) => {
const fileStream = props.plugin && props.plugin.createWriteStream(state.dowuloadChunkFile.get("docName"), {
size: data.byteLength
});
const writer = fileStream.getWriter();
let downloaded = 0;
const fileSize = state.dowuloadChunkFile.get("fileSize");
const setWriterFile = ({ state, emit, Streamsaver }) => ({ data, index, isLessThan17G, file }) => {
let { fileStream, writer, fileData = [], downloaded = 0 } = {};
const { checkcode } = data.headers;
const content = data.headers["content-disposition"];
const name = content.match(/fileName.?=(.*)/)[1] || content.match(/fileName=(.*)/)[1];
let { chunkNum, fileSize, docName } = state.downloadChunkFile[file.docId];
docName = name || docName;
if (!isLessThan17G) {
fileStream = Streamsaver.createWriteStream(docName, { size: data.byteLength });
writer = fileStream.getWriter();
}
const writerStreamSaver = () => {
let chunk = state.dowuloadChunkFile.get(index);
const downloadChunkFile = state.downloadChunkFile[file.docId] || {};
let chunk = downloadChunkFile[index];
if (chunk) {
writer.write(chunk).then(() => {
downloaded += chunk.byteLength;
state.dowuloadChunkFile.delete(index);
if (index + 1 === state.dowuloadChunkFile.get("chunkSize")) {
emit("download", 100);
writer.close();
if (!isLessThan17G) {
writer.write(chunk).then(() => {
downloaded += chunk.byteLength;
downloadChunkFile[index] = null;
delete downloadChunkFile[index];
if (index + 1 >= chunkNum) {
delete state.downloadChunkFile[file.docId];
emit("download", 100, "", { fileSize, checkcode });
writer.close();
} else {
const progress = Math.ceil(downloaded / fileSize * 100) || 0;
progress !== 100 && emit("download", progress);
index++;
writerStreamSaver();
}
});
} else {
fileData.push(chunk);
downloaded += chunk.size;
state.downloadChunkFile[file.docId][index] = null;
delete state.downloadChunkFile[file.docId][index];
if (index + 1 >= chunkNum) {
delete state.downloadChunkFile[file.docId];
aLinkDownload({ blob: new Blob(fileData), name: docName });
emit("download", 100, "", { fileSize, checkcode });
} else {
const progress = Math.ceil(downloaded / fileSize * 100) || 0;
if (progress !== 100) {
emit("download", progress);
}
progress !== 100 && emit("download", progress);
index++;
writerStreamSaver();
}
chunk = null;
});
}
} else {
setTimeout(() => {
writerStreamSaver();
}, 1e3);
setTimeout(() => writerStreamSaver(), 1e3);
}
};
writerStreamSaver();
return (docId) => {
const downloadChunkFile = state.downloadChunkFile[docId];
Object.keys(downloadChunkFile).forEach((k) => downloadChunkFile[k] = null);
delete state.downloadChunkFile[docId];
if (isLessThan17G) {
fileData = [];
} else {
writer && writer.close();
}
};
};
const getFormData = ({ constants, props, state }) => ({ formData, file, type }) => {
if (state.isEdm && props.edm.upload) {
const propData = props.data || {};
const edmData = props.edm.upload.params || {};
const params = __spreadValues(__spreadValues({}, propData), edmData);
const params = Object.assign({}, props.data || {}, props.edm.upload.params || {});
for (let key in params) {
if (Object.prototype.hasOwnProperty.call(params, key)) {
formData.set(key, params[key] || "");
}
formData.set(key, params[key] || "");
}

@@ -903,4 +1268,4 @@ }

});
const fileData = api.getFile(file);
state.uploadFiles.splice(state.uploadFiles.indexOf(fileData), 1);
const file2 = api.getFile(file2);
state.uploadFiles.splice(state.uploadFiles.indexOf(file2), 1);
}

@@ -940,3 +1305,9 @@ }).catch((err) => {

if (countReplay && countReplay >= 2) {
const msgArray = ["The number of retry times exceeds the threshold! [docId:", file.docId, ", chunk:", file.chunk, "]"];
const msgArray = [
"The number of retry times exceeds the threshold! [docId:",
file.docId,
", chunk:",
file.chunk,
"]"
];
log.logger.warn(msgArray.join(""));

@@ -952,12 +1323,2 @@ delete state.replayAtoms[file.docId + "-" + file.chunk];

};
const chunkUpload = ({ state, service, postChunk }) => {
if (!state.chunkUploadUrl) {
service.getChunkUploadUrl().then((data) => {
state.chunkUploadUrl = data;
postChunk(data);
});
} else {
postChunk(state.chunkUploadUrl);
}
};
const segmentUploadInner = ({ api, props, service, state, emit, constants, batchIndex, file, progress }) => {

@@ -969,2 +1330,3 @@ const formData = new FormData();

progress.file.cancelToken.push(source.cancel);
const { SUCESS, FAIL } = constants.FILE_STATUS;
service.request({

@@ -984,5 +1346,3 @@ method: "post",

event.percentage = progress.file.percentage = percentage > 100 ? 100 : percentage;
if (percentage >= 100) {
progress.file.isFinished = true;
}
percentage >= 100 && (progress.file.isFinished = true);
emit("progress", progress.file, state.uploadFiles, api.calcUploadingFilesInfo());

@@ -992,13 +1352,11 @@ }

afterUpload({ data, file, batchIndex, state, api, progress });
if (progress.file.percentage === 100) {
progress.file.status = constants.FILE_STATUS.SUCESS;
}
progress.file.percentage === 100 && (progress.file.status = SUCESS);
}).catch((data) => {
if (data.response && data.response.status === 401) {
if (data.response && state.errorStatusCodes.includes(data.response.status)) {
const tokenParams = { token: props.edm.upload.token, file, type: "upload" };
api.getToken(tokenParams).then((data2) => {
afterUpload({ data: data2, file, batchIndex, state, api, progress });
});
api.getToken(tokenParams).then((data2) => afterUpload({ data: data2, file, batchIndex, state, api, progress }));
} else {
file.state = constants.FILE_STATUS.FAIL;
progress.file.status !== FAIL && emit("error", data, progress.file, state.uploadFiles);
progress.file.status = FAIL;
progress.file.docId = "";
}

@@ -1008,7 +1366,29 @@ });

};
chunkUpload({ state, service, postChunk });
if (!state.chunkUploadUrl) {
service.getChunkUploadUrl().then((data) => {
state.chunkUploadUrl = data;
postChunk(data);
});
} else {
postChunk(state.chunkUploadUrl);
}
};
const segmentUpload = ({ api, props, service, state, emit, constants }) => (batchIndex, file, progress) => {
const segmentUpload = ({ api, props, service, state, emit, constants, CryptoJS }) => (batchIndex, file, progress) => {
if (typeof file.then === "function") {
file.then((file2) => {
file.then(
(file2) => new Promise((resolve) => {
if (props.edm.isCheckCode !== true)
return resolve(file2);
const reader = new FileReader();
reader.readAsArrayBuffer(file2);
reader.onload = (e) => {
if (props.edm.isCheckCode === true) {
let wordArray = CryptoJS.lib.WordArray.create(e.target.result);
const hash = CryptoJS.SHA256(wordArray).toString();
file2.hash = hash;
}
resolve(file2);
};
})
).then((file2) => {
segmentUploadInner({

@@ -1040,3 +1420,8 @@ batchIndex,

};
const batchSegmentUpload = ({ api, constants, props, refs, state }) => ({ docId, batchIndex, batches, progress }) => {
const batchSegmentUpload = ({ api, constants, props, vm, state }) => ({
docId,
batchIndex,
batches,
progress
}) => {
if (batchIndex < batches.length && progress.file.cancelToken) {

@@ -1067,6 +1452,6 @@ const key = docId + "-" + batchIndex;

typeof props.edm.upload.closeloading === "function" && props.edm.upload.closeloading();
refs[constants.UPLOAD_INNER].upload(state.largeFileInfo[docId]);
vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].upload(state.largeFileInfo[docId]);
}
};
const sliceChunk = ({ state, props }) => (file) => {
const sliceChunk = ({ state }) => (file) => {
const chunkSize = file.chunkSize;

@@ -1090,18 +1475,3 @@ const chunkBatchArray = [[]];

atom.percentage = file.percentage;
const promise = new Promise((resolve) => {
if (props.edm.isCheckCode !== true) {
return resolve(atom);
}
const reader = new FileReader();
reader.readAsArrayBuffer(atom);
reader.onload = (e) => {
if (props.edm.isCheckCode === true) {
const cryptoJS = props.edm.upload.plugin();
const wordArray = cryptoJS.lib.WordArray.create(e.target.result);
const hash = cryptoJS[shaMap.shaMap](wordArray).toString();
atom.hash = hash;
}
resolve(atom);
};
});
const promise = Promise.resolve(atom);
const lastIndex = chunkBatchArray.length - 1;

@@ -1119,3 +1489,9 @@ if (chunkBatchArray[lastIndex].length < state.chunkBatchLimit) {

};
const getToken = ({ constants, props, state, t, Modal }) => ({ token, file, isOnlinePreview = false, type = "", isinit = false }) => {
const getToken = ({ constants, props, state, t, Modal }) => ({
token,
file,
isOnlinePreview = false,
type = "",
isinit = false
}) => {
if (props.edm.isExtranet && !isOnlinePreview) {

@@ -1150,3 +1526,3 @@ state.isSuccess = true;

state.isSuccess = true;
state.accept = type === "download" || type === "preview" ? props.accept : `${whitelist},${props.accept}`;
state.accept = type === "download" || type === "preview" ? props.accept : `${whitelist}${props.accept ? `,${props.accept}` : ""}`;
state.headers[constants.EDM.EDMTOKEN] = result.edmToken || "";

@@ -1165,9 +1541,28 @@ state.headers[constants.EDM.TRACEID] = result.traceId || "";

};
const getTokenResolver = ({ reject, api, file, state, resolve, props, constants, service }) => (data) => {
if (!data) {
const message = "[TINY Error][FileUpload] No edm token";
reject(new Error(message));
return;
}
const previewFile = ({ api, props }) => (file, open = false) => {
return new Promise((resolve, reject) => {
try {
const tokenParams = { isOnlinePreview: true, file, type: "preview", token: props.edm.preview.token };
api.getToken(tokenParams).then((data) => {
if (!data) {
const message = "[TINY Error][FileUpload] No edm token";
reject(new Error(message));
return;
}
if (isObject(file) || Array.isArray(file) && file.length === 1) {
api.previewFileSingle({ file: Array.isArray(file) ? __spreadValues({}, file[0]) : file, resolve, open });
} else if (Array.isArray(file) && file.length > 1) {
api.previewFileBatch({ file, resolve, open });
}
}).catch((e) => reject(new Error(e)));
} catch (e) {
reject(new Error(e));
}
});
};
const getNewTabPreviewUrl = ({ api }) => (file) => api.previewFile(file, true);
const previewFileSingle = ({ api, state, props, constants, service }) => ({ file, resolve, open }) => {
const iframeUrl = api.getPreviewUrlSync(file);
if (open)
return resolve(iframeUrl);
if (iframeUrl) {

@@ -1206,97 +1601,134 @@ state.showPreview = true;

};
const previewFile = ({ api, constants, props, service, state }) => (file) => new Promise((resolve, reject) => {
try {
const tokenParams = { isOnlinePreview: true, file, type: "preview", token: props.edm.preview.token };
const tokenCatcher = (e) => {
reject(new Error(e));
};
const tokenResolver = getTokenResolver({ reject, api, file, state, resolve, props, constants, service });
api.getToken(tokenParams).then(tokenResolver).catch(tokenCatcher);
} catch (e) {
reject(new Error(e));
}
});
const getNewTabPreviewUrl = ({ api, props }) => (file) => new Promise((resolve, reject) => {
api.getToken({
token: props.edm.preview.token,
file,
isOnlinePreview: true,
type: "preview"
}).then((data) => {
if (!data) {
reject(new Error("[TINY Error][FileUpload] No edm token"));
return;
}
const iframeUrl = api.getPreviewUrlSync(file);
if (!iframeUrl) {
reject(new Error(new Error("[TINY Error][FileUpload] No preview url")));
} else {
resolve(iframeUrl);
}
}).catch((e) => {
reject(new Error(e));
const previewFileBatch = ({ service, props, state, api }) => ({ file, resolve, open }) => {
service.getPreviewUrlBatch().then((url) => {
const edm = props.edm || {};
const preview = edm.preview || {};
const online = preview.online || {};
const { jslibhtml, baseurl } = online;
const { text } = preview.watermark || {};
service.request({
method: "post",
url: xss.filterUrl(url),
withCredentials: props.withCredentials,
headers: state.headers,
data: {
documents: file,
asposeClient: jslibhtml,
asposeService: baseurl,
watermark: text
}
}).then(({ data }) => {
const iframeUrl = api.getPreviewUrlSync({ generate: data.result.generate, size: file.length }, true);
if (open)
return resolve(iframeUrl);
if (iframeUrl) {
state.showPreview = true;
state.iframeUrl = iframeUrl;
resolve(state.iframeUrl);
}
});
});
});
const getPreviewUrlSync = ({ constants, props, state }) => (file) => {
};
const getPreviewUrlSync = ({ constants, props, state }) => (file, batch) => {
const { ASPOSE, WPS } = constants.EDM.FILE_PREVIEW_TYPE;
const edm = props.edm || {};
const preview = edm.preview || {};
const online = preview.online;
if (!online) {
return;
const { watermark, online, bar = {}, lang } = preview;
const { filePreviewType = ASPOSE, http = false, jslibhtml, appid, baseurl } = online;
const { styles } = bar;
bar.styles = JSON.stringify(styles);
let html;
if (filePreviewType === WPS) {
html = `${http ? "http:" : "https:"}${baseurl.replace(/\/$/, "")}/edm/projects/${appid}/web/preview`;
} else {
html = jslibhtml.split("?").shift();
}
const html = online.jslibhtml.split("?").shift();
if (!html) {
return;
const params = [];
let paramsData;
const edmToken = state.headers[constants.EDM.EDMTOKEN];
if (batch) {
html = html = `${baseurl.replace(/\/$/, "")}/edm/projects/${appid}/web/batchPreview`;
const { generate, size } = file;
paramsData = { generate, "EDM-Authorization": edmToken, docIndex: 1, size };
} else {
paramsData = Object.assign(
{},
online,
watermark,
filePreviewType === WPS ? { "EDM-Authorization": edmToken } : { authToken: edmToken },
{
jslibhtml: html,
docId: file.docId,
docVersion: file.docVersion || file.version || "V1",
type: "doc",
pageNum: "1",
lang,
bar: window.btoa(JSON.stringify(bar))
}
);
}
const watermark = preview.watermark || {};
const paramsData = __spreadValues(__spreadValues(__spreadValues({}, online), watermark), {
jslibhtml: html,
authToken: state.headers[constants.EDM.EDMTOKEN],
docId: file.docId,
docVersion: file.docVersion || file.version || "V1",
type: "doc",
pageNum: "1"
});
const params = [];
for (let key in paramsData) {
if (Object.prototype.hasOwnProperty.call(paramsData, key)) {
params.push(`${key}=${paramsData[key]}`);
const val = paramsData[key];
if (!isObject(val)) {
if (key === "text") {
params.push(`watermark=${encodeURIComponent(val)}`);
}
params.push(`${key}=${val}`);
}
}
const iframeUrl = html + "?" + params.join("&");
return iframeUrl;
return html + "?" + params.join("&");
};
const previewImage = ({ api, props, service, state }) => (file) => new Promise((resolve, reject) => {
try {
api.getToken({
token: props.edm.preview.token,
file,
type: "preview"
}).then((data) => {
if (!data) {
reject(new Error("[TINY Error][FileUpload] No edm token"));
return;
}
service.getPreviewUrl().then((url) => {
const imgParam = Object.assign(file, {
type: "image",
imageType: "image"
const previewImage = ({ api, props, service }) => (file) => {
return new Promise((resolve, reject) => {
try {
api.getToken({
token: props.edm.preview.token,
file,
type: "preview"
}).then((data) => {
if (!data) {
reject(new Error("[TINY Error][FileUpload] No edm token"));
return;
}
service.getPreviewUrl().then((url) => {
if (isObject(file) || Array.isArray(file) && file.length === 1) {
api.previewImageSingle({ url, file: Array.isArray(file) ? __spreadValues({}, file[0]) : file }).then((link) => resolve(link));
} else if (Array.isArray(file) && file.length > 1) {
api.previewImageBatch({ url, file }).then((links) => resolve(links));
}
});
url = url.replace(/{docId}/, file.docId);
service.post(xss.filterUrl(url), imgParam, {
withCredentials: props.withCredentials,
headers: Object.assign(props.headers, state.headers),
responseType: "blob"
}).then((data2) => {
const blob = new Blob([data2.data]);
const URL2 = window.URL || window.webkitURL;
const link = URL2.createObjectURL(blob);
resolve(link);
});
});
});
} catch (e) {
reject(new Error(e));
}
});
} catch (e) {
reject(new Error(e));
}
});
};
const previewImageSingle = ({ service, state, props }) => ({ file, url }) => {
const edm = props.edm || {};
const preview = edm.preview || {};
let { text, textStyle } = preview.watermark || {};
textStyle = __spreadValues({ tile: true }, textStyle);
const imgParam = Object.assign(file, {
type: "image",
imageType: "image",
watermark: text,
textStyle
});
return service.post(xss.filterUrl(url.replace(/{docId}/, file.docId)), imgParam, {
withCredentials: props.withCredentials,
headers: Object.assign(props.headers, state.headers),
responseType: "blob"
}).then((data) => {
const blob = new Blob([data.data]);
const URL2 = window.URL || window.webkitURL;
return URL2.createObjectURL(blob);
});
};
const previewImageBatch = ({ service, api }) => ({ url, file }) => {
const promises = [];
file.forEach((f) => {
promises.push(api.previewImageSingle({ url, file: f }));
});
return service.all(promises);
};
const getDialogConfigObj = ({ props, state }) => () => {

@@ -1335,18 +1767,17 @@ const dialogConfigDefault = {

};
const computeDocChunkSize = ({ props, state, SIZE_2G, SIZE_20M, SIZE_8M }) => () => {
const computeDocChunkSize = ({ props, state, constants }) => () => {
const isDefaultChunkSize = !(props.edm && props.edm.chunkSize);
const { SIZE_0M, SIZE_2M, SIZE_4M, SIZE_8M, SIZE_16M, SIZE_20M, SIZE_32M, SIZE_64M, SIZE_2G } = constants.EDM;
let { docSize = SIZE_20M, chunkSize = SIZE_8M } = props.edm || {};
docSize = docSize < 0 ? 0 : docSize;
docSize = docSize > SIZE_2G ? SIZE_2G : docSize;
if (docSize) {
if (docSize)
chunkSize = chunkSize < 0 ? 0 : chunkSize;
}
if (!isDefaultChunkSize) {
const chunkSizes = [64 * 1024, 32 * 1024, 16 * 1024, 8 * 1024, 4 * 1024, 2 * 1024, 0 * 1024];
const chunkSizes = [SIZE_64M, SIZE_32M, SIZE_16M, SIZE_8M, SIZE_4M, SIZE_2M, SIZE_0M];
chunkSizes.some((size) => {
if (chunkSize >= size) {
chunkSize = Math.max(size, 2 * 1024);
chunkSize = Math.max(size, SIZE_2M);
return true;
}
return false;
});

@@ -1357,5 +1788,14 @@ }

};
const updateFile = ({ constants, refs }) => (file) => {
refs[constants.UPLOAD_INNER].handleUpdate(file);
const updateFile = ({ constants, vm }) => (file) => {
vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].handleUpdate(file);
};
const handleChange = ({ vm, constants }) => (file) => {
if (typeof file === "object" && file !== null && file !== void 0) {
let files = file;
if (!Array.isArray(file)) {
files = [file];
}
vm.$refs[constants.UPLOAD_INNER].$refs[constants.UPLOAD_INNER_TEMPLATE].handleChange({ target: { files } });
}
};
const onBeforeDestroy = (state) => () => {

@@ -1368,4 +1808,12 @@ state.uploadFiles.forEach((file) => {

};
const handleClickFileList = ({ state, emit }) => (file) => {
state.selected = file;
emit("click-file-list", file);
};
const mounted = ({ vm, state }) => () => {
vm.$on("drag-over", (isDragover) => state.isDragover = isDragover);
};
export {
abort,
abortDownload,
addFileToList,

@@ -1382,13 +1830,22 @@ afterDownload,

computedUploadingSize,
createDownloadCancelToken,
downloadFile,
downloadFileBatch,
downloadFileInner,
downloadFileSingle,
downloadFileSingleHwh5,
downloadFileSingleInner,
getDialogConfigObj,
getDownloadFileInfo,
getFile,
getFileHash,
getFileUploadUrl,
getFormData,
getKiaScanTip,
getNewTabPreviewUrl,
getPreviewUrlSync,
getToken,
handleChange,
handleClick,
handleClickFileList,
handleError,

@@ -1402,5 +1859,11 @@ handleProgress,

largeDocumentUpload,
modifyServiceUrlSingle,
mounted,
onBeforeDestroy,
previewFile,
previewFileBatch,
previewFileSingle,
previewImage,
previewImageBatch,
previewImageSingle,
properFileSize,

@@ -1416,4 +1879,5 @@ segmentUpload,

updateUrl,
validateDownloadStatus,
watchFileList,
watchListType
};
import "../chunk-PKUHTIDK.js";
import { downloadFile as ordinaryDownload } from "@opentiny/vue-renderless/upload-list";
import { downloadFile as ordinaryDownload } from "../upload-list";
import {

@@ -9,2 +9,3 @@ initService,

downloadFile,
downloadFileSingleInner,
batchSegmentUpload,

@@ -50,5 +51,21 @@ segmentUpload,

setWriterFile,
afterDownload
afterDownload,
getFileHash,
modifyServiceUrlSingle,
getKiaScanTip,
downloadFileSingle,
downloadFileBatch,
downloadFileSingleHwh5,
validateDownloadStatus,
mounted,
handleChange,
previewFileSingle,
previewFileBatch,
previewImageSingle,
previewImageBatch,
abortDownload,
createDownloadCancelToken,
handleClickFileList
} from "./index";
import { isEmptyObject } from "@opentiny/vue-renderless/common/type";
import { isEmptyObject } from "../common/type";
const api = [

@@ -72,5 +89,8 @@ "state",

"previewImage",
"updateFile"
"updateFile",
"handleChange",
"abortDownload",
"handleClickFileList"
];
const initState = ({ api: api2, reactive, computed, inject, ref, vm, props, httpRequest }) => {
const initState = ({ api: api2, reactive, computed, inject, ref, vm, props, httpRequest, service }) => {
const state = reactive({

@@ -88,3 +108,3 @@ url: "",

chunkSize: 0,
chunkBatchLimit: 20,
chunkBatchLimit: 5,
downloadChunkLimit: 5,

@@ -117,9 +137,19 @@ batchQueue: {},

downloadBatchQueueListen: {},
dowuloadChunkFile: /* @__PURE__ */ new Map(),
downloadReplayAtoms: {}
downloadChunkFile: {},
downloadReplayAtoms: {},
errorStatusCodes: [0, 401, 429],
// 0:上传异常 401:没权限(token过期)429:超限
hasFileInfoInterface: computed(() => service.setting.services.EDM && service.setting.services.EDM.DocumentInfoUrl),
currentDownloadFile: "",
isDragover: false,
downloadCancelToken: {},
// 取消下载token
downloadCancelData: {},
// 取消下载时需要清空的缓存数据
isHwh5: computed(() => !isEmptyObject(props.hwh5)),
selected: null
});
return state;
};
const initApi = ({ api: api2, state, props, constants, refs, $service, t, Modal }) => {
const { SIZE_2G, SIZE_20M, SIZE_8M } = constants.EDM;
const initApi = ({ api: api2, state, props, constants, vm, $service, t, Modal }) => {
Object.assign(api2, {

@@ -129,35 +159,43 @@ state,

getFormData: getFormData({ constants, props, state }),
abort: abort({ constants, refs }),
handleClick: handleClick({ constants, refs }),
abort: abort({ constants, vm, state }),
handleClick: handleClick({ constants, vm }),
getFile: getFile(state),
clearFiles: clearFiles(state),
watchFileList: watchFileList({ constants, state }),
watchFileList: watchFileList({ constants, state, props }),
watchListType: watchListType({ constants, state }),
onBeforeDestroy: onBeforeDestroy(state),
computedUploadDisabled: computedUploadDisabled({ props, state }),
computedUploadingSize: computedUploadingSize(state),
computedUploadingSize: computedUploadingSize({ state, constants }),
getFileUploadUrl: getFileUploadUrl($service),
getToken: getToken({ constants, props, state, t, Modal }),
getDialogConfigObj: getDialogConfigObj({ props, state }),
computeDocChunkSize: computeDocChunkSize({ props, state, SIZE_2G, SIZE_20M, SIZE_8M }),
updateFile: updateFile({ constants, refs }),
computeDocChunkSize: computeDocChunkSize({ props, state, constants }),
updateFile: updateFile({ constants, vm }),
getPreviewUrlSync: getPreviewUrlSync({ constants, props, state }),
ordinaryDownload: ordinaryDownload($service),
clearUploadingFiles: clearUploadingFiles({ constants, state }),
calcUploadingFilesInfo: calcUploadingFilesInfo({ state }),
properFileSize: properFileSize({ props, state, constants, Modal, t })
calcUploadingFilesInfo: calcUploadingFilesInfo({ state, constants }),
properFileSize: properFileSize({ props, state, constants, Modal, t }),
mounted: mounted({ vm, state }),
previewFileSingle: previewFileSingle({ api: api2, state, props, constants, service: $service }),
previewFileBatch: previewFileBatch({ service: $service, props, state, api: api2 }),
previewImageSingle: previewImageSingle({ state, props, service: $service }),
previewImageBatch: previewImageBatch({ service: $service, api: api2 }),
abortDownload: abortDownload({ state }),
createDownloadCancelToken: createDownloadCancelToken({ state, service: $service })
});
};
const mergeApi = ({ api: api2, props, $service, state, constants, emit, mode, Modal, t, refs }) => {
const mergeApi = ({ api: api2, props, $service, state, constants, emit, mode, Modal, t, vm, CryptoJS, Streamsaver }) => {
Object.assign(api2, {
segmentUploadInit: segmentUploadInit({ api: api2, props, service: $service, state, constants }),
segmentUpload: segmentUpload({ api: api2, props, service: $service, state, emit, constants }),
segmentUpload: segmentUpload({ api: api2, props, service: $service, state, emit, constants, CryptoJS }),
addFileToList: addFileToList({ api: api2, constants, emit, props, state, mode }),
downloadFile: downloadFile({ api: api2, state, props }),
previewImage: previewImage({ api: api2, props, service: $service, state }),
previewFile: previewFile({ api: api2, constants, Modal, props, service: $service, state, t }),
getNewTabPreviewUrl: getNewTabPreviewUrl({ api: api2, props }),
submit: submit({ api: api2, constants, Modal, refs, props, state, t }),
handleStart: handleStart({ api: api2, constants, props, state, refs }),
batchSegmentUpload: batchSegmentUpload({ api: api2, constants, props, refs, state }),
downloadFile: downloadFile({ api: api2, state }),
downloadFileSingleInner: downloadFileSingleInner({ props, state, api: api2, constants }),
previewImage: previewImage({ api: api2, props, service: $service }),
previewFile: previewFile({ api: api2, props }),
getNewTabPreviewUrl: getNewTabPreviewUrl({ api: api2 }),
submit: submit({ api: api2, constants, Modal, vm, props, state, t }),
handleStart: handleStart({ api: api2, constants, props, state, vm }),
batchSegmentUpload: batchSegmentUpload({ api: api2, constants, props, vm, state }),
largeDocumentUpload: largeDocumentUpload({ api: api2, Modal, state, emit, constants, t }),

@@ -167,5 +205,5 @@ handleProgress: handleProgress({ api: api2, constants, emit, state }),

handleError: handleError({ api: api2, constants, emit, state }),
handleRemove: handleRemove({ api: api2, emit, props, state }),
handleRemove: handleRemove({ api: api2, emit, props, state, constants }),
updateUrl: updateUrl({ api: api2, props, service: $service, state }),
startUpload: startUpload({ api: api2, state, constants, refs, Modal, t }),
startUpload: startUpload({ api: api2, state, constants, vm, Modal, t }),
beforeUpload: beforeUpload({ api: api2, props, Modal, constants, t, state }),

@@ -176,5 +214,14 @@ getDownloadFileInfo: getDownloadFileInfo({ api: api2, props, state, service: $service }),

batchSegmentDownload: batchSegmentDownload({ state, api: api2 }),
downloadFileInner: downloadFileInner({ api: api2, props, service: $service, state, emit, constants, t, Modal }),
setWriterFile: setWriterFile({ state, emit, props }),
afterDownload: afterDownload({ api: api2, state })
downloadFileInner: downloadFileInner({ api: api2, props, state }),
setWriterFile: setWriterFile({ state, emit, Streamsaver }),
afterDownload: afterDownload({ api: api2, state }),
getFileHash: getFileHash({ emit, Modal, constants, t, CryptoJS, state }),
modifyServiceUrlSingle: modifyServiceUrlSingle({ constants }),
getKiaScanTip: getKiaScanTip({ Modal, constants, t }),
downloadFileSingle: downloadFileSingle({ service: $service, constants, props, state, api: api2, emit }),
downloadFileBatch: downloadFileBatch({ api: api2, service: $service, props, state, emit }),
downloadFileSingleHwh5: downloadFileSingleHwh5({ state, props, emit, constants }),
validateDownloadStatus: validateDownloadStatus({ state, Modal }),
handleChange: handleChange({ vm, constants }),
handleClickFileList: handleClickFileList({ state, emit })
});

@@ -210,10 +257,13 @@ };

};
const renderless = (props, { computed, inject, onBeforeUnmount, provide, reactive, ref, watch }, { t, vm, refs, parent, emit, service, mode, constants }, { Modal }) => {
let getApi = () => ({});
const renderless = (props, { computed, inject, onBeforeUnmount, provide, reactive, ref, watch, onMounted }, { t, vm, parent, emit, service, mode, constants }, { Modal, CryptoJS, Streamsaver }) => {
const api2 = {};
const $service = initService({ props, service });
const httpRequest = $service.httpRequest;
const state = initState({ reactive, computed, api: api2, inject, ref, vm, props, httpRequest });
initApi({ api: api2, state, props, constants, refs, $service, t, Modal });
mergeApi({ api: api2, props, $service, state, constants, emit, mode, Modal, t, refs });
const state = initState({ reactive, computed, api: api2, inject, ref, vm, props, httpRequest, service });
initApi({ api: api2, state, props, constants, vm, $service, t, Modal });
mergeApi({ api: api2, props, $service, state, constants, emit, mode, Modal, t, vm, CryptoJS, Streamsaver });
getApi = () => api2;
provide("uploader", parent);
onMounted(api2.mounted);
onBeforeUnmount(api2.onBeforeDestroy);

@@ -225,3 +275,4 @@ initWatch({ watch, state, api: api2, props, $service });

api,
getApi,
renderless
};
import "../chunk-PKUHTIDK.js";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import { xss } from "../common/xss.js";
const computeData = ({ props }) => {

@@ -4,0 +4,0 @@ if (Array.isArray(props.data) && props.data.length) {

import "../chunk-PKUHTIDK.js";
import { POSITION, VALIDATE_STATE } from "@opentiny/vue-renderless/common";
import { merge } from "@opentiny/vue-renderless/common/object";
import Validator from "@opentiny/vue-renderless/common/validate";
import { isNull } from "@opentiny/vue-renderless/common/type";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { POSITION, VALIDATE_STATE } from "../common";
import { omitText } from "../common/string";
import { merge } from "../common/object";
import Validator from "../common/validate";
import { isNull } from "../common/type";
import debounce from "../common/deps/debounce";
const watchError = (state) => (value) => {

@@ -67,3 +68,3 @@ if (!isNull(value) && state.getValidateType === "tip") {

const { FORM_NAME, FORM_ITEM_NAME } = constants;
let parent = instance.$parent;
let parent = instance.$parent.$parent;
let parentName = parent.$options.componentName;

@@ -295,4 +296,40 @@ while (parentName !== FORM_NAME) {

};
const handleMouseenter = ({ state }) => (e) => {
if (!state.isDisplayOnly || !state.typeName || !state.form)
return;
const dom = e.target;
const text = dom.textContent;
const font = window.getComputedStyle(dom).font;
const rect = dom.getBoundingClientRect();
let res = {};
let overHeight = false;
if (["text", "password", "number"].includes(state.typeName)) {
res = omitText(text, font, rect.width);
}
if (state.typeName === "textarea" && dom && dom.scrollHeight > dom.offsetHeight) {
overHeight = true;
}
if (res.o || overHeight) {
state.form.showTooltip(dom, state.displayedValue);
}
};
const handleMouseleave = (state) => () => {
state.form && state.form.hideTooltip();
};
const getDisplayedValue = ({ state }) => (param) => {
if (!state.formInstance.displayOnly)
return;
const valueSplit = state.formInstance.valueSplit || "; ";
state.typeName = param.type;
state.isBasicComp = true;
state.displayedValue = state.displayedValue + (state.displayedValue && param.val ? valueSplit : "") + param.val;
};
const clearDisplayedValue = ({ state }) => () => {
state.typeName = "";
state.isBasicComp = false;
state.displayedValue = "";
};
export {
addValidateEvents,
clearDisplayedValue,
clearValidate,

@@ -306,2 +343,3 @@ computedContentStyle,

computedValueStyle,
getDisplayedValue,
getFilteredRule,

@@ -311,2 +349,4 @@ getPropByPath,

getValueByPath,
handleMouseenter,
handleMouseleave,
mounted,

@@ -313,0 +353,0 @@ onFieldBlur,

@@ -25,3 +25,7 @@ import "../chunk-PKUHTIDK.js";

updateTip,
wrapValidate
wrapValidate,
getDisplayedValue,
clearDisplayedValue,
handleMouseenter,
handleMouseleave
} from "./index";

@@ -40,3 +44,6 @@ const api = [

"removeValidateEvents",
"updateTip"
"updateTip",
"getDisplayedValue",
"handleMouseenter",
"handleMouseleave"
];

@@ -57,3 +64,8 @@ const initState = ({ reactive, computed, api: api2, mode, inject, props }) => {

validationRequired: false,
validateType: "text",
tooltip: null,
displayedValue: "",
isBasicComp: false,
showTooltip: false,
typeName: "",
formInstance: inject("form", null),

@@ -67,4 +79,12 @@ labelFor: computed(() => props.for || props.prop),

isRequired: computed(() => api2.computedIsRequired()),
formInline: computed(() => state.formInstance.inline),
formSize: computed(() => state.formInstance.size),
formItemSize: computed(() => props.size || state.formSize),
isDisplayOnly: computed(() => state.formInstance.displayOnly),
labelPosition: computed(() => state.formInstance.labelPosition),
hideRequiredAsterisk: computed(() => state.formInstance.hideRequiredAsterisk),
labelSuffix: computed(() => state.formInstance.labelSuffix),
labelWidth: computed(() => state.formInstance.labelWidth),
showMessage: computed(() => state.formInstance.showMessage),
inlineMessage: computed(() => state.formInstance.inlineMessage),
sizeClass: computed(() => state.formItemSize),

@@ -101,3 +121,7 @@ getValidateType: computed(() => api2.computedGetValidateType())

addValidateEvents: addValidateEvents({ api: api2, instance, props, state }),
validate: wrapValidate({ validateFunc: validate({ api: api2, props, state, t }), props })
validate: wrapValidate({ validateFunc: validate({ api: api2, props, state, t }), props }),
getDisplayedValue: getDisplayedValue({ state }),
clearDisplayedValue: clearDisplayedValue({ state }),
handleMouseenter: handleMouseenter({ state }),
handleMouseleave: handleMouseleave(state)
});

@@ -104,0 +128,0 @@ };

import "../chunk-PKUHTIDK.js";
import { merge } from "@opentiny/vue-renderless/common/object";
import { merge } from "../common/object";
const watchRules = ({ api, props, state }) => (newRules = {}, oldRules = {}) => {

@@ -134,2 +134,14 @@ const newValidFields = Object.keys(newRules);

};
const showTooltip = ({ vm, state }) => (dom, val) => {
const tooltip = vm.$refs.tooltip;
tooltip.state.referenceElm = dom;
tooltip.state.popperElm && (tooltip.state.popperElm.style.display = "none");
tooltip.doDestroy();
state.tooltipVisible = true;
state.displayedValue = val;
setTimeout(tooltip.updatePopper, 20);
};
const hideTooltip = ({ state }) => () => {
state.tooltipVisible = false;
};
export {

@@ -142,4 +154,6 @@ bindDialogEvent,

getLabelWidthIndex,
hideTooltip,
registerLabelWidth,
resetFields,
showTooltip,
updateTip,

@@ -146,0 +160,0 @@ validate,

@@ -14,3 +14,5 @@ import "../chunk-PKUHTIDK.js";

updateTip,
bindDialogEvent
bindDialogEvent,
showTooltip,
hideTooltip
} from "./index";

@@ -26,5 +28,7 @@ const api = [

"deregisterLabelWidth",
"updateTip"
"updateTip",
"showTooltip",
"hideTooltip"
];
const renderless = (props, { computed, inject, provide, reactive, watch }, { parent }) => {
const renderless = (props, { computed, inject, provide, reactive, watch }, { vm, parent }) => {
const api2 = {};

@@ -63,3 +67,5 @@ const dialog = inject("dialog", null);

deregisterLabelWidth: deregisterLabelWidth({ api: api2, state }),
watchRules: watchRules({ api: api2, props, state })
watchRules: watchRules({ api: api2, props, state }),
showTooltip: showTooltip({ vm, state }),
hideTooltip: hideTooltip({ state })
});

@@ -66,0 +72,0 @@ api2.created();

import "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
const toggle = ({ state, api }) => (value) => {

@@ -4,0 +4,0 @@ if (value === void 0) {

import "../chunk-PKUHTIDK.js";
import sf from "@opentiny/vue-renderless/common/deps/fullscreen/screenfull";
import sf from "../common/deps/fullscreen/screenfull";
import { exit, enter, toggle, request, getState, shadeClick, keypressCallback, fullScreenCallback, onChangeFullscreen, computeWrapperStyle } from "./index";

@@ -4,0 +4,0 @@ const api = ["state", "exit", "enter", "toggle", "request", "getState", "shadeClick", "keypressCallback", "fullScreenCallback", "onChangeFullscreen"];

import {
__spreadValues
} from "../../chunk-PKUHTIDK.js";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import browser from "@opentiny/vue-renderless/common/browser";
import { xss } from "../../common/xss.js";
import browser from "../../common/browser";
import { toTreeArray } from "../static";

@@ -7,0 +7,0 @@ import { getCellValue, getFuncText } from "../utils";

import "../../chunk-PKUHTIDK.js";
import { extend } from "@opentiny/vue-renderless/common/object";
import browser from "@opentiny/vue-renderless/common/browser";
import { extend } from "../../common/object";
import browser from "../../common/browser";
const isIE = browser.name === "ie";

@@ -5,0 +5,0 @@ const rgbRegExp = /^rgba?\((\d+),\s(\d+),\s(\d+)([\s\S]*)\)$/;

import "../../chunk-PKUHTIDK.js";
import browser from "@opentiny/vue-renderless/common/browser";
import browser from "../../common/browser";
import { remove } from "../static";

@@ -4,0 +4,0 @@ let resizeTimeout;

import "../../../chunk-PKUHTIDK.js";
import { isDate, isRegExp } from "@opentiny/vue-renderless/common/type";
import { isDate, isRegExp } from "../../../common/type";
import isNumber from "./isNumber";

@@ -4,0 +4,0 @@ import isString from "./isString";

import "../../../chunk-PKUHTIDK.js";
import { isPlainObject } from "@opentiny/vue-renderless/common/type";
import { isPlainObject } from "../../../common/type";
var isPlainObject_default = isPlainObject;

@@ -4,0 +4,0 @@ export {

import "../../chunk-PKUHTIDK.js";
import { extend } from "@opentiny/vue-renderless/common/object";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { find } from "@opentiny/vue-renderless/common/array";
import { extend } from "../../common/object";
import { isNull } from "../../common/type";
import { find } from "../../common/array";
import { get, isFunction, set, findTree } from "../static";

@@ -6,0 +6,0 @@ const gridSize = ["medium", "small", "mini"];

import "../../chunk-PKUHTIDK.js";
import { getRowid } from "./common";
import { hasClass } from "@opentiny/vue-renderless/common/deps/dom";
import { hasClass } from "../../common/deps/dom";
import { arrayIndexOf } from "../static";

@@ -69,3 +69,3 @@ const ATTR_NAME = "data-rowid";

if (isLeftArrow && fixedDom) {
const div = fixedDom.querySelector("td.fixed__hidden");
const div = fixedDom.querySelector("td.fixed__column");
const division = div ? div.getBoundingClientRect().left : fixedDom.getBoundingClientRect().right;

@@ -75,3 +75,3 @@ division > left && (offset = left - division);

if (isRightArrow && fixedDom) {
const div = fixedDom.querySelector("td:not(.fixed__hidden)") || fixedDom;
const div = fixedDom.querySelector("td:not(.fixed__column)") || fixedDom;
const division = div.getBoundingClientRect().left;

@@ -78,0 +78,0 @@ division < right && (offset = right - division);

import "../../chunk-PKUHTIDK.js";
import browser from "@opentiny/vue-renderless/common/browser";
import browser from "../../common/browser";
import { remove } from "../static";
import { on } from "@opentiny/vue-renderless/common/deps/dom";
import { on } from "../../common/deps/dom";
const wheelName = browser.isDoc && /Firefox/i.test(navigator.userAgent) ? "DOMMouseScroll" : "mousewheel";

@@ -6,0 +6,0 @@ const eventStore = [];

import "../chunk-PKUHTIDK.js";
import { extend } from "@opentiny/vue-renderless/common/object";
import { extend } from "../common/object";
const getHrList = ({ api, props, state }) => (deptCode) => {

@@ -4,0 +4,0 @@ state.loading = true;

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import { on, off } from "../common/deps/dom";
import { KEY_CODE } from "../common";
import PopupManager from "../common/deps/popup-manager";
const isFirefox = () => !!window.navigator.userAgent.match(/firefox/i);

@@ -8,0 +8,0 @@ const mousewheelEventName = isFirefox() ? "DOMMouseScroll" : "mousewheel";

@@ -50,5 +50,15 @@ import "../chunk-PKUHTIDK.js";

];
const initState = ({ reactive, computed, api: api2, mode, props, constants }) => {
const initState = ({ reactive, computed, api: api2, mode, props, constants, inject }) => {
const state = reactive({
index: mode == "pc" ? 0 : props.startPosition,
originScale: "",
moveable: false,
pageX: "",
pageY: "",
pageY2: "",
pageX2: "",
mfPreviewVisible: inject("mfPreviewVisible", null),
scale: 1,
time: null,
index: mode === "pc" || mode === "mobile-first" ? 0 : props.startPosition,
imageName: "",
isShow: false,

@@ -58,3 +68,3 @@ infinite: true,

transform: { scale: 1, deg: 0, offsetX: 0, offsetY: 0, objfit: "contain", enableTransition: false },
urlList: props.urlList,
urlList: inject("urlList", null) || props.urlList,
mode: constants.MODE.CONTAIN,

@@ -125,3 +135,3 @@ previewVisible: props.previewVisible,

api2.watchVisible(value);
if (props.previewVisible) {
if (props.previewVisible || state.mfPreviewVisible) {
nextTick(() => {

@@ -152,5 +162,5 @@ state.urlList = props.urlList;

};
const renderless = (props, { computed, onMounted, onUpdated, reactive, watch }, { t, parent, nextTick, emit, constants, vm, mode }) => {
const renderless = (props, { computed, onMounted, onUpdated, reactive, watch, inject }, { t, parent, nextTick, emit, constants, vm, mode }) => {
const api2 = {};
const state = initState({ reactive, computed, api: api2, mode, props, constants });
const state = initState({ reactive, computed, api: api2, mode, props, constants, inject });
initApi({ api: api2, state, props, parent, nextTick, emit, t, constants });

@@ -157,0 +167,0 @@ initWatch({ watch, state, api: api2, props, nextTick, vm });

import "../chunk-PKUHTIDK.js";
import { on, off, getScrollContainer, isInContainer } from "@opentiny/vue-renderless/common/deps/dom";
import { typeOf } from "@opentiny/vue-renderless/common/type";
import "@opentiny/vue-renderless/common/deps/requestAnimationFrame";
import { rafThrottle } from "@opentiny/vue-renderless/image-viewer";
import { on, off, getScrollContainer, isInContainer } from "../common/deps/dom";
import { typeOf } from "../common/type";
import "../common/deps/requestAnimationFrame";
import { rafThrottle } from "../image-viewer";
const isSupportObjectFit = () => document.documentElement.style.objectFit !== void 0;

@@ -37,2 +37,5 @@ const isHtmlElement = (node) => node && node.nodeType === Node.ELEMENT_NODE;

};
const deleteHander = (emit) => (event) => {
emit("delete", event);
};
const handleError = ({ state, emit }) => (event) => {

@@ -113,2 +116,3 @@ state.loading = false;

computedGetPreview,
deleteHander,
getImageStyle,

@@ -115,0 +119,0 @@ handleError,

@@ -15,7 +15,10 @@ import "../chunk-PKUHTIDK.js";

closeViewer,
mounted
mounted,
deleteHander
} from "./index";
const api = ["state", "src", "zIndex", "previewSrcList", "loadImage", "clickHandler", "closeViewer", "handleLoad", "handleError"];
const initState = ({ reactive, computed, api: api2, props }) => {
const api = ["state", "src", "zIndex", "previewSrcList", "loadImage", "clickHandler", "closeViewer", "handleLoad", "handleError", "deleteHander"];
const initState = ({ reactive, computed, api: api2, props, images }) => {
const state = reactive({
mfPreviewVisible: props.previewVisible,
images,
error: false,

@@ -48,3 +51,4 @@ loading: true,

computedGetImageStyle: computedGetImageStyle({ api: api2, props }),
addLazyLoadListener: addLazyLoadListener({ api: api2, props, state, vm })
addLazyLoadListener: addLazyLoadListener({ api: api2, props, state, vm }),
deleteHander: deleteHander(emit)
});

@@ -62,5 +66,5 @@ };

};
const renderless = (props, { computed, onBeforeUnmount, onMounted, reactive, watch }, { vm, emit, constants, nextTick, attrs }) => {
const renderless = (props, { computed, onBeforeUnmount, onMounted, reactive, watch, provide }, { vm, emit, constants, nextTick, attrs }, { images }) => {
const api2 = {};
const state = initState({ reactive, computed, api: api2, props });
const state = initState({ reactive, computed, api: api2, props, images });
initApi({ api: api2, state, emit, props, vm, constants, nextTick, attrs });

@@ -70,2 +74,4 @@ initWatch({ watch, state, api: api2, props });

onBeforeUnmount(() => props.lazy && api2.removeLazyLoadListener());
provide("mfPreviewVisible", state.mfPreviewVisible);
provide("urlList", props.previewSrcList);
return api2;

@@ -72,0 +78,0 @@ };

import "../chunk-PKUHTIDK.js";
import { isSame } from "@opentiny/vue-renderless/common/type";
import { isSame } from "../common/type";
const HIDDEN_STYLE = `

@@ -224,2 +224,31 @@ height:0 !important;visibility:hidden !important;overflow:hidden !important;

};
const handleEnterDisplayOnlyContent = ({ state, props }) => ($event, type) => {
const target = $event.target;
if (target && (target.scrollWidth > target.offsetWidth || type === "textarea" && target.scrollHeight > target.offsetHeight)) {
state.displayOnlyTooltip = props.displayOnlyContent || state.nativeInputValue;
}
};
const hiddenPassword = ({ state, props }) => () => {
let str = "";
const password = props.displayOnlyContent || state.nativeInputValue;
for (let i = 0; i < password.length; i++) {
str += "*";
}
return str;
};
const dispatchDisplayedValue = ({ state, props, dispatch, api }) => () => {
if (state.isDisplayOnly) {
dispatch("FormItem", "displayed-value-changed", {
type: props.type || "text",
val: api.getDisplayedValue()
});
}
};
const getDisplayedValue = ({ state, props }) => () => {
if (props.type === "password") {
return state.hiddenPassword || "-";
} else {
return props.displayOnlyContent || state.nativeInputValue || "-";
}
};
export {

@@ -231,3 +260,5 @@ blur,

clear,
dispatchDisplayedValue,
focus,
getDisplayedValue,
getInput,

@@ -240,2 +271,3 @@ getSuffixVisible,

handleCompositionUpdate,
handleEnterDisplayOnlyContent,
handleFocus,

@@ -245,2 +277,3 @@ handleInput,

hasSelection,
hiddenPassword,
resizeTextarea,

@@ -247,0 +280,0 @@ select,

@@ -29,5 +29,9 @@ import {

handleCompositionUpdate,
hasSelection
hasSelection,
handleEnterDisplayOnlyContent,
hiddenPassword,
dispatchDisplayedValue,
getDisplayedValue
} from "./index";
import useStorageBox from "@opentiny/vue-renderless/tall-storage/vue-storage-box";
import useStorageBox from "../tall-storage/vue-storage-box";
const api = [

@@ -61,3 +65,5 @@ "blur",

"isMemoryStorage",
"hasSelection"
"hasSelection",
"handleEnterDisplayOnlyContent",
"hiddenPassword"
];

@@ -93,3 +99,8 @@ const initState = ({ reactive, computed, mode, props, parent, constants }) => {

() => (props.showWordLimit && parent.$attrs.maxlength || props.counter) && (parent.type === "text" || parent.type === "textarea") && !state.inputDisabled && !props.readonly && !props.showPassword
)
),
isDisplayOnly: computed(
() => (props.displayOnly || (parent.tinyForm || {}).displayOnly) && ["text", "textarea", "password", "number"].includes(props.type)
),
displayOnlyTooltip: "",
hiddenPassword: computed(() => api.hiddenPassword())
});

@@ -112,3 +123,5 @@ return state;

handleCompositionStart: handleCompositionStart(state),
handleCompositionUpdate: handleCompositionUpdate(state)
handleCompositionUpdate: handleCompositionUpdate(state),
dispatchDisplayedValue: dispatchDisplayedValue({ state, props, dispatch, api: api2 }),
getDisplayedValue: getDisplayedValue({ state, props })
});

@@ -147,3 +160,5 @@ };

handlePasswordVisible: handlePasswordVisible({ api: api2, nextTick, state }),
hasSelection: hasSelection(api2)
hasSelection: hasSelection(api2),
handleEnterDisplayOnlyContent: handleEnterDisplayOnlyContent({ state, props }),
hiddenPassword: hiddenPassword({ state, props })
});

@@ -210,2 +225,3 @@ };

api2.updateIconOffset();
api2.dispatchDisplayedValue();
dispatch("Select", "input-mounted", vm.$el);

@@ -212,0 +228,0 @@ dispatch("Tooltip", "tooltip-update", vm.$el);

import "../chunk-PKUHTIDK.js";
import { KEY_CODE, IPTHRESHOLD } from "@opentiny/vue-renderless/common";
import { KEY_CODE, IPTHRESHOLD } from "../common";
const isIP6 = (str) => /^IPv6$/i.test(str);

@@ -4,0 +4,0 @@ const isIP4 = (str) => /^IPv4$/i.test(str);

@@ -21,3 +21,3 @@ import {

} from "./index";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { KEY_CODE } from "../common";
const api = ["state", "focus", "inputEvent", "blur", "keyup", "keydown", "change", "select"];

@@ -24,0 +24,0 @@ const initState = ({ reactive, computed, handleValue, parent, props }) => {

@@ -5,4 +5,4 @@ import {

} from "../chunk-PKUHTIDK.js";
import { mapTree } from "@opentiny/vue-renderless/grid/static";
import { copyArray } from "@opentiny/vue-renderless/common/object";
import { mapTree } from "../grid/static";
import { copyArray } from "../common/object";
const dialogTitle = ({ constants, props, t }) => () => props.title || t(constants.DIALOG_TITLE);

@@ -9,0 +9,0 @@ const showDialog = (state) => () => state.boxVisibility = true;

import "../chunk-PKUHTIDK.js";
import { initData, dialogTitle, disabledParentNode, filterNode, getValue, hideDialog, showDialog, sureNodevalue, disabledTreeNode, initService } from "./index";
import { copyArray } from "@opentiny/vue-renderless/common/object";
import { setMenuKey } from "@opentiny/vue-renderless/tree-menu";
import { copyArray } from "../common/object";
import { setMenuKey } from "../tree-menu";
const api = ["state", "initData", "filterNode", "getValue", "hideDialog", "setMenuKey", "showDialog", "sureNodevalue"];

@@ -6,0 +6,0 @@ const initState = ({ reactive, computed, api: api2 }) => {

import "../chunk-PKUHTIDK.js";
import afterLeave from "@opentiny/vue-renderless/common/deps/after-leave";
import { removeClass } from "@opentiny/vue-renderless/common/deps/dom";
import afterLeave from "../common/deps/after-leave";
import { removeClass } from "../common/deps/dom";
const handleAfterLeave = (emit) => () => {

@@ -5,0 +5,0 @@ emit("after-leave");

@@ -12,3 +12,4 @@ import "../chunk-PKUHTIDK.js";

fullscreen: true,
closed: false
closed: false,
size: "small"
});

@@ -15,0 +16,0 @@ const api2 = {

import "../chunk-PKUHTIDK.js";
import { xss } from "@opentiny/vue-renderless/common";
import { xss } from "../common";
const getLocales = ({ api, service, state }) => () => {

@@ -4,0 +4,0 @@ Promise.all([service.getLocale(), service.getCurrentLocale()]).then(([locales, current]) => {

import "../chunk-PKUHTIDK.js";
import { xss } from "@opentiny/vue-renderless/common";
import { xss } from "../common";
const logout = ({ service, state, props }) => () => {

@@ -4,0 +4,0 @@ let { isMock, isLocal, redirectUrl = "", getLogoutUrl, showLogin } = service;

import "../chunk-PKUHTIDK.js";
const hexToRgb = (hex) => {
hex = hex.slice(1);
if (hex.includes("var")) {
hex = hex.replace(/var\(|\)/g, "");
hex = getComputedStyle(document.documentElement).getPropertyValue(hex);
}
hex = hex.replace(/\s*#/g, "");
if (hex.length == 3) {

@@ -5,0 +9,0 @@ hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { on, off, addClass, hasClass, removeClass } from "@opentiny/vue-renderless/common/deps/dom";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import { getDomNode } from "@opentiny/vue-renderless/common/deps/dom";
import { KEY_CODE } from "../common";
import { on, off, addClass, hasClass, removeClass } from "../common/deps/dom";
import PopupManager from "../common/deps/popup-manager";
import { getDomNode } from "../common/deps/dom";
const DragClass = "is__drag";

@@ -24,8 +24,12 @@ const emitZoom = ({ params, parent, emit, event }) => {

};
const mounted = ({ api, parent, props }) => () => {
let modalBoxElem = api.getBox();
Object.assign(modalBoxElem.style, {
width: props.width ? isNaN(props.width) ? props.width : `${props.width}px` : null,
height: props.height ? isNaN(props.height) ? props.height : `${props.height}px` : null
});
const mounted = ({ api, parent, props, isMobileFirstMode }) => () => {
if (!isMobileFirstMode) {
let modalBoxElem = api.getBox();
Object.assign(modalBoxElem.style, {
width: props.width ? isNaN(props.width) ? props.width : `${props.width}px` : null,
height: props.height ? isNaN(props.height) ? props.height : `${props.height}px` : null
});
} else {
on(window, "resize", api.resetDragStyle);
}
if (props.escClosable) {

@@ -36,3 +40,4 @@ on(document, "keydown", api.handleGlobalKeydownEvent);

};
const beforeUnmouted = ({ api, parent }) => () => {
const beforeUnmouted = ({ api, parent, isMobileFirstMode }) => () => {
isMobileFirstMode && off(window, "resize", api.resetDragStyle);
off(document, "keydown", api.handleGlobalKeydownEvent);

@@ -52,3 +57,3 @@ api.removeMsgQueue();

};
const handleEvent = ({ api, emit, parent, props }) => (type, event) => {
const handleEvent = ({ api, emit, parent, props, isMobileFirstMode }) => (type, event, options) => {
if (~["close", "confirm", "cancel"].indexOf(type) && typeof props.beforeClose === "function" && props.beforeClose(type) === false) {

@@ -62,2 +67,5 @@ return;

};
if (isMobileFirstMode && type === "confirm") {
params.options = options;
}
emit(type, params, event);

@@ -76,3 +84,3 @@ events[type] && events[type].call(parent, params);

};
const open = ({ api, emit, nextTick, parent, props, state }) => () => {
const open = ({ api, emit, nextTick, parent, props, state, isMobileFirstMode }) => () => {
let { $listeners, events = {} } = parent;

@@ -103,8 +111,10 @@ if (!state.visible) {

nextTick(() => {
let modalBoxElem = api.getBox();
let clientVisibleWidth = document.documentElement.clientWidth || document.body.clientWidth;
let clientVisibleHeight = document.documentElement.clientHeight || document.body.clientHeight;
modalBoxElem.style.left = `${clientVisibleWidth / 2 - modalBoxElem.offsetWidth / 2}px`;
if (modalBoxElem.offsetHeight + modalBoxElem.offsetTop + props.marginSize > clientVisibleHeight) {
modalBoxElem.style.top = `${props.marginSize}px`;
if (!isMobileFirstMode) {
let modalBoxElem = api.getBox();
let clientVisibleWidth = document.documentElement.clientWidth || document.body.clientWidth;
let clientVisibleHeight = document.documentElement.clientHeight || document.body.clientHeight;
modalBoxElem.style.left = `${clientVisibleWidth / 2 - modalBoxElem.offsetWidth / 2}px`;
if (modalBoxElem.offsetHeight + modalBoxElem.offsetTop + props.marginSize > clientVisibleHeight) {
modalBoxElem.style.top = `${props.marginSize}px`;
}
}

@@ -168,3 +178,3 @@ if (props.fullscreen) {

const getBox = (refs) => () => refs.modalBox;
const maximize = ({ api, nextTick, props, state }) => () => nextTick().then(() => {
const maximize = ({ api, nextTick, props, state, isMobileFirstMode }) => () => nextTick().then(() => {
if (!state.zoomLocat) {

@@ -180,12 +190,14 @@ let marginSize = props.marginSize;

};
Object.assign(modalBoxElement.style, {
width: `${visibleWidth - marginSize * 2}px`,
height: `${visibleHeight - marginSize * 2}px`,
top: `${marginSize}px`,
left: `${marginSize}px`
});
if (!isMobileFirstMode) {
Object.assign(modalBoxElement.style, {
width: `${visibleWidth - marginSize * 2}px`,
height: `${visibleHeight - marginSize * 2}px`,
top: `${marginSize}px`,
left: `${marginSize}px`
});
}
state.emitter.emit("boxdrag");
}
});
const revert = ({ api, nextTick, state }) => () => nextTick().then(() => {
const revert = ({ api, nextTick, state, isMobileFirstMode }) => () => nextTick().then(() => {
let zoomLocat = state.zoomLocat;

@@ -195,14 +207,17 @@ if (zoomLocat) {

state.zoomLocat = null;
Object.assign(modalBoxElement.style, {
width: `${zoomLocat.width}px`,
height: `${zoomLocat.height}px`,
top: `${zoomLocat.top}px`,
left: `${zoomLocat.left}px`
});
if (!isMobileFirstMode) {
Object.assign(modalBoxElement.style, {
width: `${zoomLocat.width}px`,
height: `${zoomLocat.height}px`,
top: `${zoomLocat.top}px`,
left: `${zoomLocat.left}px`
});
}
state.emitter.emit("boxdrag");
}
});
const toggleZoomEvent = ({ api, emit, parent, state }) => (event) => {
const toggleZoomEvent = ({ api, emit, parent, state, isMobileFirstMode }) => (event) => {
let params = { type: state.zoomLocat ? "min" : "max", $modal: parent };
const callback = state.zoomLocat ? api.revert : api.maximize;
isMobileFirstMode && api.resetDragStyle();
return callback().then(() => {

@@ -229,3 +244,3 @@ emitZoom({ params, parent, emit, event });

}
const mousedownEvent = ({ api, nextTick, props, state, emit }) => (event) => {
const mousedownEvent = ({ api, nextTick, props, state, emit, isMobileFirstMode }) => (event) => {
let modalBoxElement = api.getBox();

@@ -244,8 +259,16 @@ if (!state.zoomLocat && event.button === 0 && !getEventTargetNode(event, modalBoxElement, "trigger__btn").flag) {

let offsetHeight = modalBoxElement.offsetHeight;
let minX = props.marginSize;
let maxX = visibleWidth - offsetWidth - props.marginSize;
let minY = props.marginSize;
let maxY = visibleHeight - offsetHeight - props.marginSize;
let left = event2.clientX - disX;
let top = event2.clientY - disY;
let minX, maxX, minY, maxY;
if (isMobileFirstMode) {
minX = offsetWidth / 2 + props.marginSize;
maxX = visibleWidth - offsetWidth / 2 - props.marginSize;
minY = offsetHeight / 2 + props.marginSize;
maxY = visibleHeight - offsetHeight / 2 - props.marginSize;
} else {
minX = props.marginSize;
maxX = visibleWidth - offsetWidth - props.marginSize;
minY = props.marginSize;
maxY = visibleHeight - offsetHeight - props.marginSize;
}
if (left < minX) {

@@ -503,2 +526,7 @@ left = minX;

};
const resetDragStyle = (api) => () => {
const modalBoxElement = api.getBox();
modalBoxElement.style.left = null;
modalBoxElement.style.top = null;
};
export {

@@ -523,2 +551,3 @@ MsgQueue,

removeMsgQueue,
resetDragStyle,
resetFormTip,

@@ -525,0 +554,0 @@ revert,

@@ -25,3 +25,4 @@ import "../chunk-PKUHTIDK.js";

cancelEvent,
open
open,
resetDragStyle
} from "./index";

@@ -44,5 +45,6 @@ const api = [

"open",
"beforeUnmouted"
"beforeUnmouted",
"resetDragStyle"
];
const renderless = (props, { computed, onMounted, onBeforeUnmount, reactive, watch }, { refs, emit, emitter, nextTick, broadcast, vm: parent }) => {
const renderless = (props, { computed, onMounted, onBeforeUnmount, reactive, watch }, { refs, emit, emitter, nextTick, broadcast, vm: parent }, { isMobileFirstMode }) => {
const api2 = {};

@@ -68,11 +70,11 @@ const state = reactive({

created: created({ api: api2, props, state }),
mounted: mounted({ api: api2, parent, props }),
beforeUnmouted: beforeUnmouted({ api: api2, parent }),
mounted: mounted({ api: api2, parent, props, isMobileFirstMode }),
beforeUnmouted: beforeUnmouted({ api: api2, parent, isMobileFirstMode }),
selfClickEvent: selfClickEvent({ api: api2, parent, props }),
updateZindex: updateZindex({ state, props }),
handleEvent: handleEvent({ api: api2, emit, parent, props }),
handleEvent: handleEvent({ api: api2, emit, parent, props, isMobileFirstMode }),
closeEvent: closeEvent(api2),
confirmEvent: confirmEvent(api2),
cancelEvent: cancelEvent(api2),
open: open({ api: api2, emit, nextTick, parent, props, state }),
open: open({ api: api2, emit, nextTick, parent, props, state, isMobileFirstMode }),
addMsgQueue: addMsgQueue({ api: api2, parent }),

@@ -82,7 +84,8 @@ removeMsgQueue: removeMsgQueue({ api: api2, parent }),

handleGlobalKeydownEvent: handleGlobalKeydownEvent(api2),
maximize: maximize({ api: api2, nextTick, props, state }),
revert: revert({ api: api2, nextTick, state }),
toggleZoomEvent: toggleZoomEvent({ api: api2, emit, parent, state }),
mousedownEvent: mousedownEvent({ api: api2, nextTick, props, state, emit }),
dragEvent: dragEvent({ api: api2, emit, parent, props, state })
maximize: maximize({ api: api2, nextTick, props, state, isMobileFirstMode }),
revert: revert({ api: api2, nextTick, state, isMobileFirstMode }),
toggleZoomEvent: toggleZoomEvent({ api: api2, emit, parent, state, isMobileFirstMode }),
mousedownEvent: mousedownEvent({ api: api2, nextTick, props, state, emit, isMobileFirstMode }),
dragEvent: dragEvent({ api: api2, emit, parent, props, state }),
resetDragStyle: resetDragStyle(api2)
});

@@ -89,0 +92,0 @@ watch(() => props.modelValue, api2.watchValue);

import "../chunk-PKUHTIDK.js";
import { isDate, modifyWithTimeString, prevYear, nextYear, nextMonth } from "@opentiny/vue-renderless/common/deps/date-util";
import { isDate, modifyWithTimeString, prevYear, nextYear, nextMonth } from "../common/deps/date-util";
const calcDefaultValue = (defaultValue) => {

@@ -4,0 +4,0 @@ if (Array.isArray(defaultValue)) {

@@ -18,3 +18,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { nextYear } from "@opentiny/vue-renderless/common/deps/date-util";
import { nextYear } from "../common/deps/date-util";
const api = ["state", "rightNextYear", "rightPrevYear", "handleRangePick", "handleShortcutClick", "handleChangeRange", "leftPrevYear", "leftNextYear"];

@@ -21,0 +21,0 @@ const initState = ({ reactive, computed, api: api2, t }) => {

import "../chunk-PKUHTIDK.js";
import { toDate } from "@opentiny/vue-renderless/common/date";
import { hasClass } from "@opentiny/vue-renderless/common/deps/dom";
import { range as rangeDate, getDayCountOfMonth, nextDate } from "@opentiny/vue-renderless/common/deps/date-util";
import { arrayFindIndex, coerceTruthyValueToArray, arrayFind } from "@opentiny/vue-renderless/date-table";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { toDate } from "../common/date";
import { hasClass } from "../common/deps/dom";
import { range as rangeDate, getDayCountOfMonth, nextDate } from "../common/deps/date-util";
import { arrayFindIndex, coerceTruthyValueToArray, arrayFind } from "../date-table";
import { DATEPICKER } from "../common";
const datesInMonth = (year, month) => {

@@ -8,0 +8,0 @@ const numOfDays = getDayCountOfMonth(year, month);

@@ -13,3 +13,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { DATEPICKER } from "../common";
const api = ["state", "handleMonthTableClick", "handleMouseMove", "getCellStyle"];

@@ -16,0 +16,0 @@ const renderless = (props, { computed, reactive, watch }, { t, vm, emit }) => {

import "../chunk-PKUHTIDK.js";
import { cloneDeep } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { cloneDeep } from "../chart-core/deps/utils";
const created = ({ props, state, refs, nextTick }) => () => {

@@ -166,3 +166,6 @@ nextTick(() => {

const len = state.dataSource.length;
if (!widthInfo.length || widthInfo.length === state.labelLevelsInfo.length || len >= 4) {
if (len >= 4) {
return getStyleConfig(state.labelLevelsInfo, { width: `${(1 / len * 100).toFixed(2)}%` });
}
if (!widthInfo.length || widthInfo.length === state.labelLevelsInfo.length) {
return getStyleConfig(state.labelLevelsInfo, { maxWidth: `${(1 / len * 100).toFixed(2)}%` });

@@ -169,0 +172,0 @@ }

@@ -21,3 +21,3 @@ import "../chunk-PKUHTIDK.js";

];
const initState = ({ computed, reactive }) => {
const initState = (reactive) => {
const state = reactive({

@@ -34,4 +34,3 @@ dataSource: [],

defaultSelectedIndexs: [],
defaultSelectedArray: [],
isActive: computed(() => state.headerInfo.some((item) => item.isUP))
defaultSelectedArray: []
});

@@ -66,5 +65,5 @@ return state;

};
const renderless = (props, { computed, onMounted, reactive, watch }, { emit, nextTick, refs }) => {
const renderless = (props, { onMounted, reactive, watch }, { emit, nextTick, refs }) => {
const api2 = {};
const state = initState({ computed, reactive });
const state = initState(reactive);
initApi({ api: api2, props, state, emit, nextTick, refs });

@@ -71,0 +70,0 @@ initWatch({ watch, props, state, refs, nextTick });

import "../chunk-PKUHTIDK.js";
import { isEmptyObject, isObject } from "@opentiny/vue-renderless/common/type";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import { mapTree } from "@opentiny/vue-renderless/grid/static";
import { transformTreeData } from "@opentiny/vue-renderless/common/array";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import { isEmptyObject, isObject } from "../common/type";
import PopupManager from "../common/deps/popup-manager";
import { mapTree } from "../grid/static";
import { transformTreeData } from "../common/array";
import { on, off } from "../common/deps/dom";
import { xss } from "../common/xss.js";
const { nextZIndex } = PopupManager;

@@ -9,0 +9,0 @@ const computedIsShowMore = ({ props, state }) => () => !/^(retract|fixed|hidden)$/.test(props.overflow) && state.more && state.more.length;

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import { KEY_CODE } from "../common";
import { on, off } from "../common/deps/dom";
import PopupManager from "../common/deps/popup-manager";
const startTimer = ({ api, state }) => () => {

@@ -6,0 +6,0 @@ if (state.duration > 0) {

@@ -5,7 +5,7 @@ import {

} from "../chunk-PKUHTIDK.js";
import { formatNumber, roundFixed } from "@opentiny/vue-renderless/common/decimal";
import { getMiniDecimal, lessEquals, equalsDecimal } from "@opentiny/vue-renderless/common/bigInt";
import { isNumber, isNull } from "@opentiny/vue-renderless/common/type";
import { MOUSEDELTA } from "@opentiny/vue-renderless/common";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { formatNumber, roundFixed } from "../common/decimal";
import { getMiniDecimal, lessEquals, equalsDecimal } from "../common/bigInt";
import { isNumber, isNull } from "../common/type";
import { MOUSEDELTA } from "../common";
import { on, off } from "../common/deps/dom";
const initService = (service) => {

@@ -267,7 +267,17 @@ const { utils = {} } = service || {};

};
const dispatchDisplayedValue = ({ state, api, dispatch }) => () => {
if (state.isDisplayOnly) {
dispatch("FormItem", "displayed-value-changed", { type: "numeric", val: api.getDisplayedValue() });
}
};
const getDisplayedValue = ({ state, props }) => () => {
return state.displayValue || state.displayValue === 0 ? state.displayValue + " " + (props.unit || "") : "-";
};
export {
decrease,
dispatchDisplayedValue,
displayValue,
focus,
getDecimal,
getDisplayedValue,
getNumPecision,

@@ -274,0 +284,0 @@ getPrecision,

@@ -25,3 +25,5 @@ import "../chunk-PKUHTIDK.js";

unmounted,
initService
initService,
dispatchDisplayedValue,
getDisplayedValue
} from "./index";

@@ -46,3 +48,4 @@ const api = ["state", "decrease", "increase", "handleBlur", "handleFocus", "handleInput", "handleInputChange", "mouseEvent", "focus", "select"];

controlsAtRight: computed(() => props.controls && props.controlsPosition === "right"),
format: computed(() => getUnitPrecision({ service: $service, props }))
format: computed(() => getUnitPrecision({ service: $service, props })),
isDisplayOnly: computed(() => props.displayOnly || (parent.tinyForm || {}).displayOnly)
});

@@ -74,8 +77,11 @@ return state;

watchValue: watchValue({ api: api2, state }),
setCurrentValue: setCurrentValue({ api: api2, constants, dispatch, emit, props, state })
setCurrentValue: setCurrentValue({ api: api2, constants, dispatch, emit, props, state }),
dispatchDisplayedValue: dispatchDisplayedValue({ api: api2, state, dispatch }),
getDisplayedValue: getDisplayedValue({ state, props })
});
api2.getDecimal(0);
};
const initWatch = ({ watch, props, api: api2 }) => {
const initWatch = ({ state, watch, props, api: api2 }) => {
watch(() => props.modelValue, api2.watchValue, { immediate: true });
watch(() => state.isDisplayOnly, api2.dispatchDisplayedValue);
};

@@ -88,4 +94,7 @@ const renderless = (props, { computed, onMounted, onUpdated, onUnmounted, reactive, watch, inject }, { parent, emit, refs, constants, dispatch, service }) => {

initApi({ api: api2, props, state, parent, refs, emit, dispatch, constants });
initWatch({ watch, props, api: api2 });
onMounted(api2.mounted);
initWatch({ state, watch, props, api: api2 });
onMounted(() => {
api2.dispatchDisplayedValue();
api2.mounted();
});
onUpdated(api2.updated);

@@ -92,0 +101,0 @@ onUnmounted(api2.unmounted);

import "../chunk-PKUHTIDK.js";
import { getObj } from "@opentiny/vue-renderless/common/object";
import { getObj } from "../common/object";
const escapeRegexpString = (value = "") => String(value).replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");

@@ -4,0 +4,0 @@ const isEqual = ({ select, state }) => (a, b) => {

{
"name": "@opentiny/vue-renderless",
"version": "3.6.8",
"version": "3.8.0",
"description": "An enterprise-class UI component library, support both Vue.js 2 and Vue.js 3, as well as PC and mobile.",

@@ -22,2 +22,3 @@ "homepage": "https://opentiny.design/tiny-vue",

"build": "tsup",
"build:fast": "npm run build && npm run release",
"postversion": "pnpm build",

@@ -24,0 +25,0 @@ "release": "esno ./scripts/postbuild.ts && cp README.md dist"

@@ -91,3 +91,3 @@ import "../chunk-PKUHTIDK.js";

let params = { newPage, currentPage, callback };
vm.$parent.beforePagerChangeHandler(params);
vm.$parent.$parent.beforePagerChangeHandler(params);
} else {

@@ -94,0 +94,0 @@ callback();

import "../chunk-PKUHTIDK.js";
import { emitEvent } from "@opentiny/vue-renderless/common/event";
import { emitEvent } from "../common/event";
const toggle = ({ api, state }) => () => {

@@ -4,0 +4,0 @@ state.isShow ? api.collapse() : api.expand();

import "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
const computedWrapperStyle = (state) => () => {

@@ -4,0 +4,0 @@ const wrapperStyle = {

@@ -5,9 +5,9 @@ import {

} from "../chunk-PKUHTIDK.js";
import { toDate, getDateWithNewTimezone, getStrTimezone, getLocalTimezone } from "@opentiny/vue-renderless/common/date";
import { isNumber, isDate } from "@opentiny/vue-renderless/common/type";
import userPopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { formatDate, parseDate, isDateObject, getWeekNumber } from "@opentiny/vue-renderless/common/deps/date-util";
import { extend } from "@opentiny/vue-renderless/common/object";
import globalTimezone from "@opentiny/vue-renderless/picker/timezone";
import { toDate, getDateWithNewTimezone, getStrTimezone, getLocalTimezone } from "../common/date";
import { isNumber, isDate } from "../common/type";
import userPopper from "../common/deps/vue-popper";
import { DATEPICKER } from "../common";
import { formatDate, parseDate, isDateObject, getWeekNumber } from "../common/deps/date-util";
import { extend } from "../common/object";
import globalTimezone from "../picker/timezone";
const iso8601Reg = /^\d{4}-\d{2}-\d{2}(.)\d{2}:\d{2}:\d{2}(.+)$/;

@@ -14,0 +14,0 @@ const getPanel = ({ DatePanel, DateRangePanel, MonthRangePanel, TimePanel, TimeRangePanel, TimeSelect }) => (type) => {

@@ -55,3 +55,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { DATEPICKER } from "../common";
const api = [

@@ -58,0 +58,0 @@ "state",

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { find } from "@opentiny/vue-renderless/common/array";
import { typeOf, isNull } from "@opentiny/vue-renderless/common/type";
import { getDataset } from "@opentiny/vue-renderless/common/dataset";
import { isNullOrEmpty } from "@opentiny/vue-renderless/common/string";
import { isEqual } from "@opentiny/vue-renderless/common/object";
import { eachTree } from "@opentiny/vue-renderless/grid/static";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { find } from "../common/array";
import { typeOf, isNull } from "../common/type";
import { getDataset } from "../common/dataset";
import { isNullOrEmpty } from "../common/string";
import { isEqual } from "../common/object";
import { eachTree } from "../grid/static";
import { on, off } from "../common/deps/dom";
const computedGetTitle = ({ constants, props, t }) => props.title || t(constants.TITLE);

@@ -12,0 +12,0 @@ const computedModalWidth = ({ constants, props }) => {

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import userPopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import debounce from "../common/deps/debounce";
import userPopper from "../common/deps/vue-popper";
import {

@@ -7,0 +7,0 @@ computedGetTitle,

import "../chunk-PKUHTIDK.js";
import { on, off, addClass, removeClass } from "@opentiny/vue-renderless/common/deps/dom";
import { guid } from "@opentiny/vue-renderless/common/string";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { on, off, addClass, removeClass } from "../common/deps/dom";
import { guid } from "../common/string";
import { KEY_CODE } from "../common";
const processTrigger = ({ api, state, props, nextTick }) => {

@@ -158,2 +158,9 @@ const { referenceElm, popperElm } = state;

};
const observeCallback = ({ state, vm }) => (mutationsList) => {
for (let mutation of mutationsList) {
if (mutation.type === "attributes" && mutation.attributeName === "x-placement") {
state.xPlacement = vm.$refs.popper.getAttribute("x-placement") || "bottom";
}
}
};
export {

@@ -177,3 +184,4 @@ cleanup,

mounted,
observeCallback,
wrapMounted
};

@@ -20,5 +20,6 @@ import "../chunk-PKUHTIDK.js";

wrapMounted,
handleItemClick
handleItemClick,
observeCallback
} from "./index";
import userPopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import userPopper from "../common/deps/vue-popper";
const api = ["state", "handleAfterEnter", "handleAfterLeave", "handleItemClick"];

@@ -36,3 +37,3 @@ const initState = ({ reactive, computed, api: api2, popperElm, showPopper, referenceElm }) => {

};
const initApi = ({ api: api2, props, state, refs, emit, doDestroy, constants, nextTick }) => {
const initApi = ({ api: api2, props, state, refs, emit, doDestroy, constants, nextTick, vm }) => {
Object.assign(api2, {

@@ -58,6 +59,7 @@ state,

wrapMounted: wrapMounted({ api: api2, props, refs, state }),
handleItemClick: handleItemClick({ emit, state })
handleItemClick: handleItemClick({ emit, state }),
observeCallback: observeCallback({ vm, state })
});
};
const initWatch = ({ watch, props, state, emit }) => {
const initWatch = ({ watch, props, state, emit, api: api2, nextTick }) => {
watch(

@@ -73,4 +75,15 @@ () => state.showPopper,

);
watch(
() => props.reference,
(val, oldVal) => {
if (val !== oldVal) {
api2.destroyed();
nextTick(() => {
api2.wrapMounted();
});
}
}
);
};
const renderless = (props, { reactive, computed, watch, toRefs, onBeforeUnmount, onMounted, onUnmounted, onActivated, onDeactivated }, { $prefix, emit, refs, slots, nextTick }) => {
const renderless = (props, { reactive, computed, watch, toRefs, onBeforeUnmount, onMounted, onUnmounted, onActivated, onDeactivated }, { $prefix, emit, vm, refs, slots, nextTick }) => {
const api2 = {};

@@ -81,3 +94,3 @@ const constants = { IDPREFIX: `${$prefix.toLowerCase()}-popover` };

const state = initState({ reactive, computed, api: api2, popperElm, showPopper, referenceElm });
initApi({ api: api2, constants, props, state, refs, emit, doDestroy, nextTick });
initApi({ api: api2, constants, props, state, refs, emit, doDestroy, nextTick, vm });
onDeactivated(() => {

@@ -87,7 +100,17 @@ api2.destroyed();

});
onMounted(api2.wrapMounted);
onMounted(() => {
api2.wrapMounted();
if (props.genArrowByHtml) {
const config = { attributes: true, childList: false, subtree: false };
api2.observer = new MutationObserver(api2.observeCallback);
api2.observer.observe(vm.$refs.popper, config);
}
});
onActivated(api2.mounted);
onUnmounted(api2.destroyed);
onUnmounted(() => {
api2.destroyed();
api2.observer && api2.observer.disconnect();
});
onBeforeUnmount(api2.cleanup);
initWatch({ watch, props, state, emit });
initWatch({ watch, props, state, emit, api: api2, nextTick });
return api2;

@@ -94,0 +117,0 @@ };

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { touchStart, touchMove } from "@opentiny/vue-renderless/common/deps/touch";
import { getScroller } from "@opentiny/vue-renderless/dropdown-menu";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { on, off } from "../common/deps/dom";
import { touchStart, touchMove } from "../common/deps/touch";
import { getScroller } from "../dropdown-menu";
import { isNull } from "../common/type";
const getStyle = (props) => () => {

@@ -9,0 +9,0 @@ const style = __spreadValues({}, props.popupStyle);

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
const initPullRefresh = ({ t, props, state }) => () => {
var _a, _b, _c;
const defaultOption = {

@@ -20,2 +21,5 @@ pullingUpText: t("ui.pullRefresh.pullingUp"),

};
state.loosingText = (_a = props.loosingText) != null ? _a : t("ui.pullRefresh.loosing");
state.successText = (_b = props.successText) != null ? _b : t("ui.pullRefresh.success");
state.failedText = (_c = props.failedText) != null ? _c : t("ui.pullRefresh.failed");
};

@@ -25,9 +29,5 @@ const onTouchstart = (state) => (event) => {

};
const onTouchmove = ({ props, state, refs }) => (event) => {
const onTouchmove = ({ props, state }) => (event) => {
if (event.touches[0].clientY < state.draggposition) {
const scrollBottom = refs.content.scrollHeight - refs.content.clientHeight - refs.content.scrollTop;
if (scrollBottom > 10) {
return;
}
if (!state.pullUp.pullUpDisabled && state.pullUp.handler) {
if (!state.pullUp.pullUpDisabled) {
if (props.hasMore) {

@@ -40,6 +40,3 @@ state.translate3d = (event.touches[0].clientY - state.draggposition) / 2;

} else {
if (refs.content.scrollTop > 10) {
return;
}
if (!state.pullDown.pullDownDisabled && state.pullDown.handler) {
if (!state.pullDown.pullDownDisabled) {
state.translate3d = (event.touches[0].clientY - state.draggposition) / 2;

@@ -46,0 +43,0 @@ state.pullDownReplaces = Math.abs(state.translate3d) > state.pullDown.headHeight ? state.loosingText : state.pullDown.pullingDownText;

import "../chunk-PKUHTIDK.js";
import { mountedHandler, beforeUnmountHandler, handlerModelValue, onTouchstart, onTouchmove, onTouchend, initPullRefresh, clearPullRefresh } from "./index";
const api = ["state"];
const renderless = (props, { watch, onMounted, computed, reactive, onBeforeUnmount }, { t, refs }) => {
const renderless = (props, { watch, onMounted, reactive, onBeforeUnmount }, { t, refs }) => {
const api2 = {};

@@ -14,6 +14,6 @@ const state = reactive({

pullDownLoading: false,
loosingText: computed(() => props.loosingText || t("ui.pullRefresh.loosing")),
successText: computed(() => props.successText || t("ui.pullRefresh.success")),
failedText: computed(() => props.failedText || t("ui.pullRefresh.failed")),
noMoreText: computed(() => !props.hasMore ? t("ui.pullRefresh.noMore") : ""),
loosingText: "",
successText: "",
failedText: "",
noMoreText: "",
pullUp: null,

@@ -27,3 +27,3 @@ pullDown: null,

onTouchstart: onTouchstart(state),
onTouchmove: onTouchmove({ props, state, refs }),
onTouchmove: onTouchmove({ props, state }),
onTouchend: onTouchend({ api: api2, props, state }),

@@ -40,3 +40,3 @@ mountedHandler: mountedHandler({ api: api2, refs }),

if (!value) {
state.pullUpLoading = false;
state.noMoreText = t("ui.pullRefresh.noMore");
api2.clearPullRefresh();

@@ -43,0 +43,0 @@ }

@@ -32,2 +32,7 @@ import "../chunk-PKUHTIDK.js";

};
const keydownHandle = ({ state, props }) => () => {
state.value = state.isDisabled ? state.value : props.label;
};
const handleFocus = (state) => () => state.focus = true;
const handleBlur = (state) => () => state.focus = false;
export {

@@ -37,5 +42,8 @@ getGroup,

getValue,
handleBlur,
handleChange,
handleFocus,
keydownHandle,
setValue,
toggleEvents
};
import "../chunk-PKUHTIDK.js";
import { handleChange, getValue, setValue, getGroup, getStyle, toggleEvents } from "./index";
import {
handleChange,
getValue,
setValue,
getGroup,
getStyle,
toggleEvents,
keydownHandle,
handleFocus,
handleBlur
} from "./index";
const api = ["state", "handleChange"];
const renderless = (props, { computed, reactive, onMounted, onBeforeUnmount }, { emit, parent, dispatch, constants, nextTick, refs }) => {
const renderless = (props, { computed, reactive, onMounted, onBeforeUnmount, inject }, { emit, parent, dispatch, constants, nextTick, refs }) => {
const api2 = {

@@ -19,3 +29,5 @@ getGroup: getGroup({ constants, parent }),

isDisabled: computed(() => props.disabled || state.radioGroup.disabled),
tabIndex: computed(() => state.isDisabled || state.radioGroup && state.value !== props.label ? -1 : 0)
tabIndex: computed(() => state.isDisabled || state.radioGroup && state.value !== props.label ? -1 : 0),
showTips: inject("showTips", null),
tipContent: props.tipContent
});

@@ -27,3 +39,6 @@ Object.assign(api2, {

setValue: setValue({ emit, state }),
handleChange: handleChange({ constants, dispatch, nextTick, state })
handleChange: handleChange({ constants, dispatch, nextTick, state }),
keydownHandle: keydownHandle({ state, props }),
handleFocus: handleFocus(state),
handleBlur: handleBlur(state)
});

@@ -30,0 +45,0 @@ onMounted(api2.toggleEvents);

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { KEY_CODE } from "../common";
const handleKeydown = ({ parent }) => (event) => {

@@ -4,0 +4,0 @@ const target = event.target;

import "../chunk-PKUHTIDK.js";
import { handleKeydown, mounted } from "./index";
const api = ["state", "handleKeydown"];
const renderless = (props, { computed, onMounted, reactive, watch }, { parent, dispatch }) => {
const renderless = (props, { computed, onMounted, reactive, watch, provide }, { parent, dispatch }) => {
const state = reactive({
radioGroupSize: computed(() => props.size),
tag: "div"
tag: "div",
activeStyle: props.fill
});

@@ -25,2 +26,4 @@ parent.$on("handleChange", (value) => {

onMounted(api2.onMounted);
provide("radioVertical", props.vertical);
provide("showTips", props.showTips);
return api2;

@@ -27,0 +30,0 @@ };

@@ -38,3 +38,20 @@ import "../chunk-PKUHTIDK.js";

};
const dispatchDisplayedValue = ({ state, dispatch, api }) => () => {
if (state.isDisplayOnly) {
dispatch("FormItem", "displayed-value-changed", {
type: "radio",
val: api.getDisplayedValue()
});
}
};
const getDisplayedValue = ({ vm, state, props }) => () => {
if (state.model === props.label) {
return vm.$refs.label && vm.$refs.label.innerText || props.text || props.label;
} else {
return "";
}
};
export {
dispatchDisplayedValue,
getDisplayedValue,
getModel,

@@ -41,0 +58,0 @@ handleChange,

import "../chunk-PKUHTIDK.js";
import { handleChange, isGroup, radioSize, isDisabled, tabIndex, getModel, setModel, toggleEvent } from "./index";
import {
handleChange,
isGroup,
radioSize,
isDisabled,
tabIndex,
getModel,
setModel,
toggleEvent,
dispatchDisplayedValue,
getDisplayedValue
} from "./index";
const api = ["state", "handleChange"];
const renderless = (props, { onMounted, onBeforeUnmount, computed, reactive, inject }, { refs, parent, emit, constants, nextTick, dispatch }) => {
const renderless = (props, { onMounted, onBeforeUnmount, computed, reactive, inject, watch }, { refs, vm, parent, emit, constants, nextTick, dispatch }) => {
parent.tinyForm = parent.tinyForm || inject("form", null);

@@ -28,5 +39,9 @@ const api2 = {};

setModel: setModel({ constants, dispatch, emit, props, refs, state }),
handleChange: handleChange({ constants, dispatch, emit, state, nextTick })
handleChange: handleChange({ constants, dispatch, emit, state, nextTick }),
dispatchDisplayedValue: dispatchDisplayedValue({ state, api: api2, dispatch }),
getDisplayedValue: getDisplayedValue({ vm, state, props })
});
watch(() => state.isDisplayOnly, api2.dispatchDisplayedValue);
onMounted(() => {
api2.dispatchDisplayedValue();
dispatch("Tooltip", "tooltip-update");

@@ -33,0 +48,0 @@ toggleEvent({ props, refs, type: "add" });

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { KEY_CODE } from "../common";
const computedActiveColor = (props) => (state) => {

@@ -149,3 +149,5 @@ let result = "";

width = `${props.modelValue * 100 - Math.floor(props.modelValue) * 100 < 50 ? 0 : 100}%`;
} else if (props.allowHalf) {
}
if (props.allowHalf) {
width = "";
const reactSize = props.size ? Math.ceil(parseInt(props.size) / 2) + "px" : "6px";

@@ -152,0 +154,0 @@ clip = `rect(0px, ${reactSize}, ${props.size || "14px"}, 0px)`;

@@ -21,3 +21,3 @@ import {

} from "./index";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
const api = ["state", "showDecimalIcon", "getIconStyle", "getTextStyle", "selectValue", "handelKey", "setCurrentValue", "resetCurrentValue"];

@@ -24,0 +24,0 @@ const useChangeValue = ({ constants, emit, props, reactive, toRefs, watch, onMounted, onUnmounted, parent }) => {

import "../chunk-PKUHTIDK.js";
import { xss } from "@opentiny/vue-renderless/common";
import { xss } from "../common";
const showList = (state) => () => state.showPopover = true;

@@ -4,0 +4,0 @@ const show = (state) => () => state.showIcon = false;

import "../chunk-PKUHTIDK.js";
import { BAR_MAP, renderThumbStyle, clickThumbHandler, clickTrackHandler, startDrag, mouseMoveDocumentHandler, mouseUpDocumentHandler } from "./index";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
const api = ["state", "startDrag", "renderThumbStyle", "clickTrackHandler", "clickThumbHandler", "mouseUpDocumentHandler", "mouseMoveDocumentHandler"];

@@ -5,0 +5,0 @@ const renderless = (props, { computed, onUnmounted, reactive }, { refs, parent }) => {

import "../chunk-PKUHTIDK.js";
import { handleScroll, update } from "./index";
import { addResizeListener, removeResizeListener } from "@opentiny/vue-renderless/common/deps/resize-event";
import { addResizeListener, removeResizeListener } from "../common/deps/resize-event";
const api = ["state", "update", "handleScroll"];

@@ -5,0 +5,0 @@ const renderless = (props, { onBeforeUnmount, onMounted, reactive }, { refs, nextTick, emit }) => {

import "../chunk-PKUHTIDK.js";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import { isObject, typeOf } from "@opentiny/vue-renderless/common/type";
import { on, off } from "../common/deps/dom";
import PopupManager from "../common/deps/popup-manager";
import { isObject, typeOf } from "../common/type";
const handleChange = ({ emit, state }) => (event) => {

@@ -6,0 +6,0 @@ const value = event.target.value;

import "../chunk-PKUHTIDK.js";
import { mounted } from "./index";
import userPopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import userPopper from "../common/deps/vue-popper";
const api = ["state", "doDestroy"];

@@ -5,0 +5,0 @@ const initState = ({ reactive, computed, popper, selectVm }) => {

@@ -5,13 +5,13 @@ import {

} from "../chunk-PKUHTIDK.js";
import { find } from "@opentiny/vue-renderless/common/array";
import { getObj, isEqual } from "@opentiny/vue-renderless/common/object";
import { isKorean } from "@opentiny/vue-renderless/common/string";
import scrollIntoView from "@opentiny/vue-renderless/common/deps/scroll-into-view";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { getDataset } from "@opentiny/vue-renderless/common/dataset";
import Memorize from "@opentiny/vue-renderless/common/deps/memorize";
import { isEmptyObject } from "@opentiny/vue-renderless/common/type";
import { addResizeListener, removeResizeListener } from "@opentiny/vue-renderless/common/deps/resize-event";
import { extend } from "@opentiny/vue-renderless/common/object";
import { find } from "../common/array";
import { getObj, isEqual } from "../common/object";
import { isKorean } from "../common/string";
import scrollIntoView from "../common/deps/scroll-into-view";
import PopupManager from "../common/deps/popup-manager";
import debounce from "../common/deps/debounce";
import { getDataset } from "../common/dataset";
import Memorize from "../common/deps/memorize";
import { isEmptyObject } from "../common/type";
import { addResizeListener, removeResizeListener } from "../common/deps/resize-event";
import { extend } from "../common/object";
const handleComposition = ({ api, nextTick, state }) => (event) => {

@@ -422,3 +422,4 @@ const text = event.target.value;

const noSelected = state.selected.length === 0;
input.style.height = noSelected ? sizeInMap + "px" : Math.max(tags ? tags.clientHeight + (tags.clientHeight > sizeInMap ? 6 : 0) : 0, sizeInMap) + "px";
const borderHeight = 2;
input.style.height = noSelected ? sizeInMap + "px" : Math.max(tags ? tags.clientHeight + (tags.clientHeight > sizeInMap ? borderHeight : 0) : 0, sizeInMap) + "px";
if (state.visible && state.emptyText !== false) {

@@ -759,3 +760,3 @@ state.selectEmitter.emit(constants.EVENT_NAME.updatePopper, true);

queryWrap: (refs) => refs.scrollbar.$el.querySelector(".tiny-scrollbar__wrap.virtual"),
queryItems: (refs) => refs.scrollbar.$el.querySelectorAll(".tiny-select-dropdown__item.virtual"),
queryItems: (refs) => refs.scrollbar.$el.querySelectorAll(".tiny-option.virtual"),
createMacro: (cb) => setTimeout(cb),

@@ -989,3 +990,5 @@ setScrollTop: ({ refs, state }) => {

} else {
checked ? state.selected = state.selected.concat(selection.filter((row2) => !~props.modelValue.indexOf(row2[valueField]))) : $table.tableData.forEach((row2) => remoteItem(row2));
checked ? state.selected = state.selected.concat(
selection.filter((row2) => !~props.modelValue.indexOf(row2[valueField]))
) : $table.tableData.forEach((row2) => remoteItem(row2));
}

@@ -992,0 +995,0 @@ const keys = state.selected.map((item) => item[valueField]);

@@ -79,6 +79,6 @@ import {

} from "./index";
import { BROWSER_NAME } from "@opentiny/vue-renderless/common";
import browserInfo from "@opentiny/vue-renderless/common/browser";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { isNumber, isNull } from "@opentiny/vue-renderless/common/type";
import { BROWSER_NAME } from "../common";
import browserInfo from "../common/browser";
import debounce from "../common/deps/debounce";
import { isNumber, isNull } from "../common/type";
const api = [

@@ -178,3 +178,5 @@ "state",

gridCheckedData: computed(() => api2.getcheckedData()),
isExpandAll: computed(() => props.treeOp && props.treeOp.defaultExpandAll !== void 0 ? props.treeOp.defaultExpandAll : true),
isExpandAll: computed(
() => props.treeOp && props.treeOp.defaultExpandAll !== void 0 ? props.treeOp.defaultExpandAll : true
),
searchSingleCopy: computed(() => props.allowCopy && !props.multiple && props.filterable),

@@ -205,4 +207,6 @@ filterOrSearch: computed(() => props.filterable || props.searchable)

),
optionsAllDisabled: computed(() => state.options.filter((option) => option.visible).every((option) => option.disabled)),
collapseTagSize: computed(() => ~["small", "mini"].indexOf(state.selectSize) ? "mini" : "small"),
optionsAllDisabled: computed(
() => state.options.filter((option) => option.visible).every((option) => option.disabled)
),
collapseTagSize: computed(() => state.selectSize),
showNewOption: computed(

@@ -215,3 +219,5 @@ () => props.filterable && props.allowCreate && state.query !== "" && !state.options.filter((option) => !option.created).some((option) => option.state.currentLabel === state.query)

collapseTags: computed(() => api2.computeCollapseTags()),
multipleLimit: computed(() => api2.computeMultipleLimit())
multipleLimit: computed(() => api2.computeMultipleLimit()),
isSelectAll: computed(() => state.selectCls === "checked-sur"),
isHalfSelect: computed(() => state.selectCls === "halfselect")
}));

@@ -218,0 +224,0 @@ return state;

import "../chunk-PKUHTIDK.js";
import { emitEvent } from "@opentiny/vue-renderless/common/event";
import { emitEvent } from "../common/event";
const leftClick = ({ api, props, refs, state }) => () => {

@@ -4,0 +4,0 @@ if (state.leftLength >= 0) {

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { emitEvent } from "@opentiny/vue-renderless/common/event";
import { on, off, hasClass } from "@opentiny/vue-renderless/common/deps/dom";
import { toNumber } from "@opentiny/vue-renderless/common/string";
import { KEY_CODE } from "../common";
import { emitEvent } from "../common/event";
import { on, off, hasClass } from "../common/deps/dom";
import { toNumber } from "../common/string";
const bindEvent = (api) => () => {

@@ -317,2 +317,44 @@ on(window, "resize", api.bindResize);

};
const getPoints = ({ props, state }) => () => {
if (props.showSteps && props.step > 0) {
state.points = [];
const num = parseInt(props.max / props.step);
for (let i = 1; i < num; i++) {
const point = {
position: i / num * 100 + "%",
value: i / num * props.max
};
state.points.push(point);
}
}
};
const getLabels = ({ props, state }) => () => {
if (props.showLabel) {
state.labels = [];
const isFunction = props.formatLabel instanceof Function;
const num = parseInt(props.max / props.step);
for (let i = 0; i <= num; i++) {
const val = i / num * props.max;
const label = {
position: i / num * 100 + "%",
label: isFunction ? props.formatLabel(val, i) : val,
value: val
};
state.labels.push(label);
}
}
};
const inputValueChange = ({ props, state, api }) => ($event, pos) => {
if (props.disabled || !state.isDouble)
return;
if (!/^\d+$/.test($event.target.value)) {
if (pos === "left") {
state.inputValue.splice(0, 1, state.leftBtnValue);
} else {
state.inputValue.splice(1, 1, state.rightBtnValue);
}
return;
}
api.initSlider([Math.min(...state.inputValue), Math.max(...state.inputValue)]);
};
export {

@@ -334,4 +376,7 @@ autoSlider,

getActiveButtonValue,
getLabels,
getPoints,
hideTip,
initSlider,
inputValueChange,
setActiveButtonValue,

@@ -338,0 +383,0 @@ setBarStyle,

@@ -26,3 +26,6 @@ import "../chunk-PKUHTIDK.js";

watchActiveValue,
watchModelValue
watchModelValue,
getPoints,
getLabels,
inputValueChange
} from "./index";

@@ -52,3 +55,4 @@ const api = [

"customBeforeAppearHook",
"customAfterAppearHook"
"customAfterAppearHook",
"inputValueChange"
];

@@ -113,7 +117,14 @@ const initState = ({ reactive, computed, props, api: api2, parent }) => {

watchModelValue: watchModelValue({ api: api2, state }),
watchActiveValue: watchActiveValue({ api: api2, emit, props, state })
watchActiveValue: watchActiveValue({ api: api2, emit, props, state }),
getPoints: getPoints({ props, state }),
getLabels: getLabels({ props, state }),
inputValueChange: inputValueChange({ props, api: api2, state })
});
watch(() => props.modelValue, api2.watchModelValue, { immediate: true });
watch(() => state.activeValue, api2.watchActiveValue, { immediate: true });
onMounted(api2.bindEvent);
onMounted(() => {
api2.bindEvent();
api2.getPoints();
api2.getLabels();
});
onBeforeUnmount(api2.unBindEvent);

@@ -120,0 +131,0 @@ return api2;

@@ -17,3 +17,3 @@ import {

} from "./index";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
const api = ["state", "handleMousedown", "handleCollapse"];

@@ -20,0 +20,0 @@ const useOffset = ({ nextTick, props, refs, constants, hooks }) => {

import "../chunk-PKUHTIDK.js";
const api = [];
const renderless = function() {
return {};
import { updateStartIndex, isVisibleHandler, computedRightNodePos } from "./index";
const api = ["state", "isVisibleHandler"];
const renderless = (props, { reactive, watch, computed }) => {
const state = reactive({
startIndex: 0,
endIndex: computed(() => state.startIndex + props.visibleNum),
rightNodePositions: computed(() => api2.computedRightNodePos())
});
const api2 = {
updateStartIndex: updateStartIndex({ state, props }),
isVisibleHandler: isVisibleHandler({ state, props }),
computedRightNodePos: computedRightNodePos({ state, props })
};
watch(() => props.active, api2.updateStartIndex, { immediate: true });
return Object.assign(api2, { state });
};

@@ -6,0 +18,0 @@ export {

import "../chunk-PKUHTIDK.js";
import { isNull } from "@opentiny/vue-renderless/common/type";
import { isNull } from "../common/type";
const toggle = ({ emit, props, state }) => (event) => {

@@ -4,0 +4,0 @@ event.preventDefault();

@@ -16,3 +16,4 @@ import "../chunk-PKUHTIDK.js";

formDisabled: computed(() => (parent.tinyForm || {}).disabled),
disabled: computed(() => props.disabled || state.formDisabled)
disabled: computed(() => props.disabled || state.formDisabled),
isDisplayOnly: computed(() => props.displayOnly || (parent.tinyForm || {}).displayOnly)
});

@@ -19,0 +20,0 @@ Object.assign(api2, {

import "../chunk-PKUHTIDK.js";
import { POSITION } from "@opentiny/vue-renderless/common";
import { capitalize } from "@opentiny/vue-renderless/common/string";
import { POSITION } from "../common";
import { capitalize } from "../common/string";
const computedBarStyle = (parent) => (props, state) => {

@@ -5,0 +5,0 @@ const style = {};

import "../chunk-PKUHTIDK.js";
const computedIsClosable = ({ parent, props }) => () => props.withClose || parent.withClose;
const computedActive = ({ parent, nextTick, props, state }) => () => {
const active = parent.state.currentName === (props.name || state.index);
const computedActive = ({ nextTick, props, state }) => () => {
const active = state.rootTabs.state.currentName === (props.name || state.index);
if (active) {

@@ -6,0 +6,0 @@ state.loaded = true;

@@ -20,3 +20,3 @@ import "../chunk-PKUHTIDK.js";

state,
computedActive: computedActive({ parent, nextTick, props, state }),
computedActive: computedActive({ nextTick, props, state }),
computedPaneName: computedPaneName({ props, state })

@@ -23,0 +23,0 @@ });

import "../chunk-PKUHTIDK.js";
import { KEY_CODE, POSITION } from "@opentiny/vue-renderless/common";
import { capitalize } from "@opentiny/vue-renderless/common/string";
import { addResizeListener, removeResizeListener } from "@opentiny/vue-renderless/common/deps/resize-event";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { KEY_CODE, POSITION } from "../common";
import { capitalize } from "../common/string";
import { addResizeListener, removeResizeListener } from "../common/deps/resize-event";
import { on, off } from "../common/deps/dom";
const computedNavStyle = (state) => {

@@ -78,2 +78,3 @@ const dir = ~[POSITION.Top, POSITION.Bottom].indexOf(state.rootTabs.position) ? "X" : "Y";

api.scrollIntoView();
api.sortableEvent();
};

@@ -212,2 +213,71 @@ const beforeUnmount = ({ api, parent }) => {

};
const handleTabDragStart = ({ state, vm, emit }) => (event) => {
state.dragging = true;
if ([POSITION.Top, POSITION.Bottom].indexOf(state.rootTabs.position) === -1) {
emit("tab-drag-start", event);
return;
}
const navContainer = vm.$refs.navScroll;
const nav = vm.$refs.nav;
const containerWidth = navContainer.offsetWidth;
const navWidth = nav.offsetWidth;
if (navWidth > containerWidth) {
const navHeight = nav.offsetHeight;
navContainer.style.height = navHeight + "px";
nav.style.transition = "none";
nav.style.transform = "";
nav.style.width = containerWidth + "px";
nav.style.overflowX = "scroll";
nav.scrollTo(state.navOffset, 0);
}
emit("tab-drag-start", event);
};
const handleTabDragEnd = ({ vm, state, nextTick }) => () => {
state.dragging = false;
if ([POSITION.Top, POSITION.Bottom].indexOf(state.rootTabs.position) === -1) {
return;
}
const nav = vm.$refs.nav;
if (nav.style.width) {
const navOffset = nav.scrollLeft;
const navContainer = vm.$refs.navScroll;
navContainer.style.height = "";
nav.style.width = "";
nav.style.overflowX = "";
state.navOffset = navOffset;
nextTick(() => {
nav.style.transition = "";
});
}
};
const sortableEvent = ({ api, props, state, vm, emit, markRaw }) => () => {
if (!props.dropConfig || typeof props.dropConfig.plugin !== "function") {
return;
}
const navSortableObj = new props.dropConfig.plugin(vm.$refs.nav, {
sort: true,
draggable: ".tiny-tabs__item",
onUpdate(event) {
emit("tab-drag-end", event);
},
onMove(event) {
emit("tab-drag-over", event);
},
onStart(event) {
api.handleTabDragStart(event);
},
onEnd(event) {
api.handleTabDragEnd(event);
}
});
state.navSortableObj = markRaw(navSortableObj);
};
const watchCurrentName = ({ nextTick, vm, state }) => () => {
nextTick(() => {
const tabBarVnode = vm.$refs.tabBar;
if (tabBarVnode) {
tabBarVnode.state.barStyle = tabBarVnode.computedBarStyle(tabBarVnode, state);
}
});
};
export {

@@ -221,2 +291,4 @@ beforeUnmount,

expandTabShow,
handleTabDragEnd,
handleTabDragStart,
moreTabShow,

@@ -230,6 +302,8 @@ mounted,

setFocus,
sortableEvent,
updated,
visibilityChangeHandler,
watchCurrentName,
windowBlurHandler,
windowFocusHandler
};

@@ -21,3 +21,7 @@ import "../chunk-PKUHTIDK.js";

setFocus,
removeFocus
removeFocus,
sortableEvent,
handleTabDragStart,
handleTabDragEnd,
watchCurrentName
} from "./index";

@@ -39,3 +43,3 @@ const api = [

];
const renderless = (props, { computed, inject, onBeforeUnmount, onMounted, onUpdated, reactive }, { parent, refs, mode: tinyMode }) => {
const renderless = (props, { computed, inject, onBeforeUnmount, onMounted, onUpdated, reactive, markRaw }, { parent, vm, nextTick, refs, mode: tinyMode, emit }) => {
const api2 = { mounted, beforeUnmount, computedNavStyle, computedSizeName };

@@ -73,3 +77,7 @@ const state = reactive({

scrollIntoView: scrollIntoView({ props, parent, refs, state }),
computedHeaderStyle: computedHeaderStyle({ refs, state })
computedHeaderStyle: computedHeaderStyle({ refs, state }),
watchCurrentName: watchCurrentName({ nextTick, vm, state }),
handleTabDragStart: handleTabDragStart({ state, vm, emit }),
handleTabDragEnd: handleTabDragEnd({ state, vm, nextTick }),
sortableEvent: sortableEvent({ api: api2, props, state, vm, emit, markRaw })
});

@@ -76,0 +84,0 @@ Object.assign(api2, { updated: updated({ api: api2, props, refs, state }), changeTab: changeTab(api2) });

import "../chunk-PKUHTIDK.js";
import { isObject, isNull } from "@opentiny/vue-renderless/common/type";
import { isObject, isNull } from "../common/type";
const getRouteActive = ({ props, route }) => () => {

@@ -4,0 +4,0 @@ if (props.to && route) {

import "../chunk-PKUHTIDK.js";
import { getRouteActive, onClick, bindChildren, routeTab } from "./index";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import { xss } from "../common/xss.js";
const api = ["state", "onClick"];

@@ -5,0 +5,0 @@ const renderless = (props, { computed, onMounted, reactive }, { parent, emit, nextTick, route, router }) => {

@@ -30,3 +30,3 @@ import "../chunk-PKUHTIDK.js";

};
const calcMorePanes = ({ parent, props, state }) => () => {
const calcMorePanes = ({ parent, props, state, refs }) => () => {
if (!props.showMoreTabs) {

@@ -37,9 +37,9 @@ return;

const tabs = el.querySelectorAll(".tiny-tabs__item");
if (tabs && tabs.length) {
const tabsHeaderWidth = el.querySelector(".tiny-tabs__nav-scroll").clientWidth + 15;
let tabsAllWidth = 0;
for (let i = 0, length = tabs.length; i < length; i++) {
const width = tabs[i].offsetWidth;
tabsAllWidth += width;
if (tabsAllWidth > tabsHeaderWidth) {
const navRef = refs.nav.$refs;
const NavWidth = navRef.nav.offsetWidth || 0;
const tabsHeaderWidth = navRef.navScroll.offsetWidth || 0;
if (NavWidth > tabsHeaderWidth) {
for (let i = 0; i < tabs.length; i++) {
const isHiddenWidth = tabs[i].offsetLeft + tabs[i].offsetWidth / 2;
if (isHiddenWidth > tabsHeaderWidth) {
state.showPanesCount = i;

@@ -65,3 +65,2 @@ break;

}
event.stopPropagation();
api.setCurrentName(tabName);

@@ -68,0 +67,0 @@ emit("click", pane, event);

@@ -75,3 +75,3 @@ import "../chunk-PKUHTIDK.js";

changeCurrentName: changeCurrentName({ emit, state }),
calcMorePanes: calcMorePanes({ parent, props, state }),
calcMorePanes: calcMorePanes({ parent, props, state, refs }),
calcExpandPanes: calcExpandPanes({ parent, props, state }),

@@ -78,0 +78,0 @@ calcPaneInstances: calcPaneInstances({ constants, parent, state, childrenHandler }),

import "../chunk-PKUHTIDK.js";
const handleClose = ({ emit, props }) => (event) => {
const handleClose = ({ emit, props, state }) => (event) => {
if (props.disabled)
return;
event.stopPropagation();
state.show = false;
const close = () => emit("close", event);
props.beforeDelete ? props.beforeDelete(close) : close();
};
const handleClick = ({ emit, parent }) => (event) => {
const handleClick = ({ emit, props, parent, state }) => (event) => {
if (props.selectable || props.disabled)
return;
parent.$parent && parent.$parent.tagSelectable && event.stopPropagation();
state.selected = !state.selected;
emit("click", event);

@@ -10,0 +16,0 @@ };

import "../chunk-PKUHTIDK.js";
import { handleClose, handleClick } from "./index";
const api = ["handleClose", "handleClick"];
const renderless = (props, hooks, { emit, parent }) => ({
handleClose: handleClose({ emit, props }),
handleClick: handleClick({ emit, parent })
});
const api = ["state", "handleClose", "handleClick"];
const renderless = (props, { reactive, computed }, { emit, parent }) => {
const state = reactive({
type: computed(() => props.theme || props.type),
show: true,
selected: false
});
const api2 = {
handleClose: handleClose({ emit, props, state }),
handleClick: handleClick({ emit, props, parent, state })
};
return Object.assign(api2, { state });
};
export {

@@ -9,0 +17,0 @@ api,

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { KEY_CODE } from "../common";
const mousedown = (event) => {

@@ -4,0 +4,0 @@ if (event && event.preventDefault) {

import "../chunk-PKUHTIDK.js";
import { mousedown, selectItem, keydown } from "./index";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "../common/deps/dom";
const api = ["state", "mousedown", "selectItem"];

@@ -5,0 +5,0 @@ const renderless = (props, { onUnmounted, reactive, watch }, { emit }) => {

import "../chunk-PKUHTIDK.js";
import { format } from "@opentiny/vue-renderless/common/date";
import { format } from "../common/date";
const getDate = (dateTime) => ({

@@ -12,11 +12,19 @@ date: format(dateTime, "yyyy-MM-dd"),

const handleClick = ({ emit, state }) => ({ index, node }) => {
emit("click", state.isReverse ? state.nodes.length - index - 1 : index, node);
if (!node.disabled) {
emit("click", state.isReverse ? state.nodes.length - index - 1 : index, node);
}
};
const getStatusCls = ({ constants, state }) => (index) => {
const { PROCESS_DONE_CLS, PROCESS_CUR_CLS, PROCESS_WAIT_CLS } = constants;
const getStatusCls = ({ constants, state }) => (index, node) => {
const { PROCESS_DONE_CLS, PROCESS_CUR_CLS, PROCESS_WAIT_CLS, PROCESS_DISABLED_CLS, PROCESS_ERROR_CLS } = constants;
const cls = {};
const reverse = state.isReverse;
cls[PROCESS_DONE_CLS] = reverse ? index > state.current : index < state.current;
cls[PROCESS_CUR_CLS] = index === state.current;
cls[PROCESS_WAIT_CLS] = reverse ? index < state.current : index > state.current;
if (node == null ? void 0 : node.disabled) {
cls[PROCESS_DISABLED_CLS] = true;
} else if (node == null ? void 0 : node.error) {
cls[PROCESS_ERROR_CLS] = true;
} else {
cls[PROCESS_DONE_CLS] = reverse ? index > state.current : index < state.current;
cls[PROCESS_CUR_CLS] = index === state.current;
cls[PROCESS_WAIT_CLS] = reverse ? index < state.current : index > state.current;
}
return cls;

@@ -27,6 +35,19 @@ };

const computedIsReverse = (props) => () => props.reverse && props.vertical;
const computedStackNodes = ({ state, constants }) => () => {
if (state.nodes.length >= constants.STACK_NODES_MAX) {
state.showData = true;
return state.nodes.slice(0, constants.LIMITED_STACK_NODES);
}
return state.nodes;
};
const changeStatus = ({ state }) => () => {
state.showAll = !state.showAll;
return state.showAll;
};
export {
changeStatus,
computedCurrent,
computedData,
computedIsReverse,
computedStackNodes,
getDate,

@@ -33,0 +54,0 @@ getStatus,

import "../chunk-PKUHTIDK.js";
import { handleClick, getStatusCls, getStatus, computedData, getDate, computedCurrent, computedIsReverse } from "./index";
const api = ["state", "handleClick", "getStatusCls", "getStatus", "getDate"];
import { handleClick, getStatusCls, getStatus, computedData, getDate, computedCurrent, computedIsReverse, changeStatus, computedStackNodes } from "./index";
const api = ["state", "handleClick", "getStatusCls", "getStatus", "getDate", "changeStatus"];
const renderless = (props, { computed, reactive }, { t, emit, constants }) => {

@@ -9,3 +9,6 @@ const api2 = {};

current: computed(() => api2.computedCurrent()),
isReverse: computed(() => api2.computedIsReverse())
isReverse: computed(() => api2.computedIsReverse()),
stackNodes: computed(() => state.showAll ? state.nodes : api2.computedStackNodes()),
showData: false,
showAll: false
});

@@ -20,3 +23,5 @@ Object.assign(api2, {

handleClick: handleClick({ emit, state, api: api2 }),
getStatusCls: getStatusCls({ constants, props, state })
getStatusCls: getStatusCls({ constants, props, state }),
computedStackNodes: computedStackNodes({ state, constants }),
changeStatus: changeStatus({ state })
});

@@ -23,0 +28,0 @@ return api2;

import "../chunk-PKUHTIDK.js";
import scrollIntoView from "@opentiny/vue-renderless/common/deps/scroll-into-view";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import scrollIntoView from "../common/deps/scroll-into-view";
import { DATEPICKER } from "../common";
const parseTime = () => (time) => {

@@ -5,0 +5,0 @@ const values = (time || "").split(":");

@@ -19,3 +19,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { DATEPICKER } from "../common";
const api = ["state", "handleMenuEnter", "handleClick", "handleClear", "emitDestroy"];

@@ -22,0 +22,0 @@ const initState = ({ reactive, computed, api: api2 }) => {

import "../chunk-PKUHTIDK.js";
import { clearMilliseconds, timeWithinRange, limitTimeRange, modifyDate } from "@opentiny/vue-renderless/common/deps/date-util";
import { clearMilliseconds, timeWithinRange, limitTimeRange, modifyDate } from "../common/deps/date-util";
const minTimeOfDay = ({ MIN_TIME }) => (date) => modifyDate(MIN_TIME, date.getFullYear(), date.getMonth(), date.getDate());

@@ -4,0 +4,0 @@ const maxTimeOfDay = ({ MAX_TIME }) => (date) => modifyDate(MAX_TIME, date.getFullYear(), date.getMonth(), date.getDate());

@@ -21,3 +21,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { parseDate } from "@opentiny/vue-renderless/common/deps/date-util";
import { parseDate } from "../common/deps/date-util";
const api = ["state", "handleMinChange", "handleConfirm", "setMinSelectionRange", "handleCancel", "setMaxSelectionRange", "handleMaxChange"];

@@ -24,0 +24,0 @@ const initState = ({ reactive, computed, refs, api: api2 }) => {

import "../chunk-PKUHTIDK.js";
import { modifyTime } from "@opentiny/vue-renderless/common/deps/date-util";
import { DATEPICKER } from "@opentiny/vue-renderless/common";
import { modifyTime } from "../common/deps/date-util";
import { DATEPICKER } from "../common";
const getArrowHourList = (state) => () => {

@@ -5,0 +5,0 @@ const hours = state.hours;

@@ -21,3 +21,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { getRangeHours, getRangeMinutes } from "@opentiny/vue-renderless/common/deps/date-util";
import { getRangeHours, getRangeMinutes } from "../common/deps/date-util";
const api = ["state", "emitSelectRange", "adjustCurrentSpinner", "handleClick", "decrease", "increase", "amPm", "adjustSpinners"];

@@ -24,0 +24,0 @@ const initState = ({ reactive, computed, props, api: api2 }) => {

import "../chunk-PKUHTIDK.js";
import { limitTimeRange, clearMilliseconds, timeWithinRange } from "@opentiny/vue-renderless/common/deps/date-util";
import { limitTimeRange, clearMilliseconds, timeWithinRange } from "../common/deps/date-util";
const watchValue = ({ api, nextTick, state }) => (value) => {

@@ -4,0 +4,0 @@ let date;

@@ -14,4 +14,4 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { compuAmPmMode } from "@opentiny/vue-renderless/time-range";
import { isDate } from "@opentiny/vue-renderless/common/deps/date-util";
import { compuAmPmMode } from "../time-range";
import { isDate } from "../common/deps/date-util";
const api = ["state", "handleChange", "setSelectionRange", "handleCancel", "handleConfirm", "adjustSpinners"];

@@ -18,0 +18,0 @@ const initState = ({ reactive, props, computed, api: api2 }) => {

import "../chunk-PKUHTIDK.js";
import { xss } from "@opentiny/vue-renderless/common/xss.js";
import { isObject } from "@opentiny/vue-renderless/common/type";
import { xss } from "../common/xss.js";
import { isObject } from "../common/type";
const filterNode = (props) => (value, data) => {

@@ -5,0 +5,0 @@ const node = data[props.props.label || "label"] || "";

@@ -19,3 +19,3 @@ import "../chunk-PKUHTIDK.js";

} from "./index";
import { setMenuKey } from "@opentiny/vue-renderless/tree-menu";
import { setMenuKey } from "../tree-menu";
const api = [

@@ -22,0 +22,0 @@ "state",

import "../chunk-PKUHTIDK.js";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { on, off, addClass, removeClass } from "@opentiny/vue-renderless/common/deps/dom";
import debounce from "../common/deps/debounce";
import { on, off, addClass, removeClass } from "../common/deps/dom";
const show = ({ api, state, props }) => () => {

@@ -115,5 +115,10 @@ if (props.visible === "auto") {

};
const bindPopper = ({ vm, refs, nextTick }) => (el) => {
const bindPopper = ({ vm, refs, nextTick, popperVmRef }) => (el) => {
nextTick(() => vm.bindEvent(el));
if (vm.popperVM) {
if (!vm.$refs.popper) {
popperVmRef.popper = vm.popperVM.$el;
} else {
popperVmRef.popper = vm.$refs.popper;
}
refs.popper || (refs.popper = vm.popperVM.$el);

@@ -127,2 +132,22 @@ nextTick(() => {

};
const observeCallback = ({ state, popperVmRef }) => (mutationsList) => {
for (let mutation of mutationsList) {
if (mutation.type === "attributes" && mutation.attributeName === "x-placement") {
state.xPlacement = popperVmRef.popper.getAttribute("x-placement") || "bottom";
}
}
};
const handleDocumentClick = ({ props, api, state, popperVmRef }) => (event) => {
if (props.manual)
return;
const reference = state.referenceElm;
const $el = popperVmRef.popper;
if (!$el || !reference || $el.contains(event.target) || reference.contains(event.target)) {
return;
}
if (state.showPopper) {
api.setExpectedState(false);
api.debounceClose();
}
};
export {

@@ -136,5 +161,7 @@ bindEvent,

handleClosePopper,
handleDocumentClick,
handleFocus,
handleShowPopper,
hide,
observeCallback,
removeFocusing,

@@ -141,0 +168,0 @@ setExpectedState,

@@ -16,6 +16,8 @@ import "../chunk-PKUHTIDK.js";

bindPopper,
focusHandler
focusHandler,
observeCallback,
handleDocumentClick
} from "./index";
import userPopper from "@opentiny/vue-renderless/common/deps/vue-popper";
import { guid } from "@opentiny/vue-renderless/common/string";
import userPopper from "../common/deps/vue-popper";
import { guid } from "../common/string";
const api = [

@@ -33,5 +35,6 @@ "state",

"updatePopper",
"focusHandler"
"focusHandler",
"markRaw"
];
const initState = ({ reactive, showPopper, popperElm, referenceElm, props }) => reactive({
const initState = ({ reactive, showPopper, popperElm, referenceElm, props, markRaw, inject }) => reactive({
showPopper,

@@ -45,12 +48,18 @@ popperElm,

tooltipId: guid("tiny-tooltip-", 4),
tabindex: props.tabindex
tabindex: props.tabindex,
xPlacement: "bottom",
poppers: markRaw([]),
showContent: inject("showContent", null),
tipsMaxWidth: inject("tips-max-width", null)
});
const renderless = (props, { watch, toRefs, reactive, onBeforeUnmount, onDeactivated, onMounted, onUnmounted }, { vm, emit, refs, slots, nextTick, parent }) => {
const renderless = (props, { watch, toRefs, reactive, onBeforeUnmount, onDeactivated, onMounted, onUnmounted, markRaw, inject }, { vm, emit, refs, slots, nextTick, parent }) => {
const api2 = {};
const popperParam = { emit, props, nextTick, toRefs, reactive, parent, refs };
const popperVmRef = {};
Object.assign(popperParam, { slots, onBeforeUnmount, onDeactivated, watch });
const { showPopper, updatePopper, popperElm, referenceElm, doDestroy } = userPopper(popperParam);
const state = initState({ reactive, showPopper, popperElm, referenceElm, props });
const state = initState({ reactive, showPopper, popperElm, referenceElm, props, markRaw, inject });
Object.assign(api2, {
state,
markRaw,
doDestroy,

@@ -61,3 +70,3 @@ updatePopper,

destroyed: destroyed({ state, api: api2 }),
bindPopper: bindPopper({ vm, refs, nextTick }),
bindPopper: bindPopper({ vm, refs, nextTick, popperVmRef }),
watchFocusing: watchFocusing(state),

@@ -72,3 +81,5 @@ removeFocusing: removeFocusing(state),

bindEvent: bindEvent({ api: api2, state, vm }),
focusHandler: focusHandler({ slots, api: api2 })
focusHandler: focusHandler({ slots, api: api2 }),
handleDocumentClick: handleDocumentClick({ props, api: api2, state, popperVmRef }),
observeCallback: observeCallback({ state, popperVmRef })
});

@@ -80,5 +91,15 @@ watch(() => state.focusing, api2.watchFocusing);

);
onMounted(api2.bindPopper);
onMounted(() => {
api2.bindPopper();
if (props.genArrowByHtml) {
const config = { attributes: true, childList: false, subtree: false };
api2.observer = new MutationObserver(api2.observeCallback);
api2.observer.observe(popperVmRef.popper, config);
}
});
vm.$on("tooltip-update", api2.bindPopper);
onUnmounted(api2.destroyed);
onUnmounted(() => {
api2.destroyed();
api2.observer && api2.observer.disconnect();
});
return api2;

@@ -85,0 +106,0 @@ };

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import PopupManager from "@opentiny/vue-renderless/common/deps/popup-manager";
import { KEY_CODE } from "../common";
import { on, off } from "../common/deps/dom";
import PopupManager from "../common/deps/popup-manager";
const handleAfterLeave = (api) => () => api.destroy();

@@ -6,0 +6,0 @@ const destroy = (parent) => () => {

import "../chunk-PKUHTIDK.js";
import { copyArray } from "@opentiny/vue-renderless/common/object";
import { getFlatData } from "@opentiny/vue-renderless/transfer";
import { copyArray } from "../common/object";
import { getFlatData } from "../transfer";
const showFilterData = (data, sign) => {

@@ -5,0 +5,0 @@ const getChild = (data2, sign2) => data2.filter((node) => {

import "../chunk-PKUHTIDK.js";
import { copyArray } from "@opentiny/vue-renderless/common/object";
import { copyArray } from "../common/object";
const getObj = (props) => () => props.data.reduce((o, cur) => (o[cur[props.props.key]] = cur) && o, {});

@@ -4,0 +4,0 @@ const getSourceData = ({ props, Tree }) => () => {

import {
__spreadValues
} from "../chunk-PKUHTIDK.js";
import { getNodeKey as getTreeNodeKey } from "@opentiny/vue-renderless/common/deps/tree-model/util";
import { getNodeKey as getTreeNodeKey } from "../common/deps/tree-model/util";
const watchIndeterminate = ({ api, props }) => (value) => api.handleSelectChange(props.node.checked, value);

@@ -6,0 +6,0 @@ const watchChecked = ({ api, props }) => (value) => api.handleSelectChange(value, props.node.indeterminate);

import "../chunk-PKUHTIDK.js";
import { getNodeKey as innerGetNodekey } from "@opentiny/vue-renderless/common/deps/tree-model/util";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import TreeStore from "@opentiny/vue-renderless/common/deps/tree-model/tree-store";
import { addClass, removeClass } from "@opentiny/vue-renderless/common/deps/dom";
import { on, off } from "@opentiny/vue-renderless/common/deps/dom";
import { getDataset } from "@opentiny/vue-renderless/common/dataset";
import { getNodeKey as innerGetNodekey } from "../common/deps/tree-model/util";
import { KEY_CODE } from "../common";
import TreeStore from "../common/deps/tree-model/tree-store";
import { addClass, removeClass } from "../common/deps/dom";
import { on, off } from "../common/deps/dom";
import { getDataset } from "../common/dataset";
const setChildren = (props) => (data) => props.data = data;

@@ -9,0 +9,0 @@ const getChildren = () => (props) => props.data;

import "../chunk-PKUHTIDK.js";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import debounce from "../common/deps/debounce";
import {

@@ -4,0 +4,0 @@ computedShowEmptyText,

@@ -36,5 +36,9 @@ import "../chunk-PKUHTIDK.js";

};
const watchDragover = ({ state, constants }) => () => {
state.uploader.$refs[constants.FILE_UPLOAD_INNER].$emit("drag-over", state.dragover);
};
export {
onDragOver,
onDrop
onDrop,
watchDragover
};
import "../chunk-PKUHTIDK.js";
import { onDragOver, onDrop } from "./index";
import { onDragOver, onDrop, watchDragover } from "./index";
const api = ["state", "onDragOver", "onDrop"];
const renderless = (props, { inject, reactive, ref }, { emit }) => {
const renderless = (props, { inject, reactive, ref, watch }, { emit }) => {
const state = reactive({

@@ -9,7 +9,13 @@ dragover: false,

});
const constants = state.uploader.$constants || {};
const api2 = {
state,
onDragOver: onDragOver({ props, state }),
onDrop: onDrop({ emit, props, state })
onDrop: onDrop({ emit, props, state }),
watchDragover: watchDragover({ state, constants })
};
watch(
() => state.dragover,
() => api2.watchDragover()
);
return api2;

@@ -16,0 +22,0 @@ };

import "../chunk-PKUHTIDK.js";
import { xss } from "../common/xss";
import { addResizeListener, removeResizeListener } from "../common/deps/resize-event";
const parsePercentage = () => (val) => parseInt(val, 10);
const handleClick = ({ props, api, parent }) => (file) => {
if (parent.state.isEdm) {
props.openDownloadFile && api.edmDownloadFile(file);
const { downloadFile: downloadFile2 } = api.getApi();
props.openDownloadFile && downloadFile2 && downloadFile2(file);
} else {

@@ -17,3 +20,3 @@ props.openDownloadFile && api.downloadFile(file);

} else if (data && typeof data === "object") {
for (let key of Object.keys(data)) {
for (let key in data) {
responseFile = data[key];

@@ -24,10 +27,9 @@ break;

if (responseFile) {
const getFileDownloadUrl = service && service.common && service.common.getFileDownloadUrl;
getFileDownloadUrl && getFileDownloadUrl().then((url) => {
window.open(url + "&id=" + responseFile.attachmentId + "&type=AttachmentDemo").opener = null;
service.getFileDownloadUrl().then((url) => {
window.open(xss.filterUrl(url + "&id=" + responseFile.attachmentId + "&type=AttachmentDemo")).opener = null;
});
} else if (file.url) {
window.open(file.url).opener = null;
window.open(xss.filterUrl(file.url)).opener = null;
} else {
throw new Error("[tiny Error][FileUpload]file.url must not be empty");
throw new Error("[TINY Error][FileUpload]file.url must not be empty");
}

@@ -42,8 +44,156 @@ };

};
const showOperatePanel = ({ state }) => ({ file }) => {
state.currentFile = file;
state.showPanel = true;
};
const reUpload = ({ emit, props, parent }) => (file) => {
parent.state.isEdm ? emit("start", [file && file.raw], "", true) : props.handleReUpload && props.handleReUpload(file);
};
const addPlayEventListener = ({ type, el }, fn) => el && el.addEventListener(type, fn);
const removePlayEventListener = ({ type, el }, fn) => el && el.removeEventListener(type, fn);
const play = ({ vm, api }) => ({ file, index, type }) => {
const videoOrAudioEle = vm.$refs[type + (file.uid || index)] && vm.$refs[type + (file.uid || index)][index];
if (file.isPlay)
return api.pause({ file, index, type });
if (videoOrAudioEle && videoOrAudioEle.play) {
file.playEvent = () => {
if (file) {
file.isPlay = false;
removePlayEventListener({ type: "ended", el: videoOrAudioEle }, file.playEvent);
}
};
file.el = videoOrAudioEle;
removePlayEventListener({ type: "ended", el: videoOrAudioEle }, file.playEvent);
addPlayEventListener({ type: "ended", el: videoOrAudioEle }, file.playEvent);
vm.$set(file, "isPlay", true);
videoOrAudioEle.play();
}
};
const pause = ({ vm }) => ({ file, index, type }) => {
const videoOrAudioEle = vm.$refs[type + (file.uid || index)] && vm.$refs[type + (file.uid || index)][index];
if (videoOrAudioEle && videoOrAudioEle.pause) {
removePlayEventListener({ type: "ended", el: videoOrAudioEle }, file.playEvent);
file.isPlay = false;
videoOrAudioEle.pause();
}
};
const handleLoadedmetadata = ({ vm }) => ({ e, file }) => {
vm.$set(file, "totalSecond", parseInt(e.target.duration));
vm.$set(file, "currentSecond", parseInt(e.target.currentTime));
};
const handleTimeupdate = () => ({ e, file }) => {
file.currentSecond = parseInt(e.target.currentTime);
};
const getFileType = () => ({ file }) => file.name && file.name.split(".")[file.name.split(".").length - 1].toLowerCase();
const getFileIcon = () => ({ type }) => {
let iconTypes = {
"xls/xlsx": {
name: "icon-excel-type",
color: "#00A2B5"
},
file: {
name: "icon-file-type",
color: "#71C14C"
},
pdf: {
name: "icon-pdf-type",
color: "#FC916E"
},
"png/jpg/jpeg/gif/svg/webp/bmp/tif/pjp/apng/xbm/jxl/svgz/ico/tiff/jfif/pjpeg/avif": {
name: "icon-picture-type",
color: "#2E94FF"
},
"ppt/pptx": {
name: "icon-ppt-type",
color: "#F46087"
},
txt: {
name: "icon-text-type",
color: "#9185F0"
},
"doc/docx": {
name: "icon-word-type",
color: "#2070F3"
},
"zip/rar/arj/z/jar/lzh": {
name: "icon-zip-type",
color: "#FDC000"
},
"mp4/ogg/webm": {
name: "icon-video-type",
color: "#2E94FF"
},
"mp3/ogg/wav": {
name: "icon-audio",
color: "#2E94FF"
},
default: {
name: "icon-other-type",
color: "#9185F0"
}
};
for (const typeName in iconTypes) {
if (Object.hasOwnProperty.call(iconTypes, typeName)) {
const typeValue = iconTypes[typeName];
delete iconTypes[typeName];
typeName.split("/").forEach((type2) => iconTypes[type2] = typeValue);
}
}
return iconTypes[type] || iconTypes["default"];
};
const remove = ({ emit }) => ({ file }) => emit("remove", file);
const calcUploadListLiWidth = ({ vm, nextTick, props, constants }) => () => {
const { listType } = props, { LIST_TYPE } = constants;
nextTick(() => {
const uploadListEle = vm.$refs["upload-list"];
const uploadListLiEle = vm.$refs["upload-list-li"];
if (!uploadListEle || !(uploadListLiEle && uploadListLiEle[0]))
return;
if (listType === LIST_TYPE.TEXT) {
const { minWidth } = window.getComputedStyle(uploadListLiEle && uploadListLiEle[0]);
const marginRight = 8;
const num = Math.floor(uploadListEle.offsetWidth / (parseFloat(minWidth) + marginRight));
Array.from(uploadListLiEle).forEach((li, index) => {
if (!((index + 1) % num) || num === 1) {
li.style.marginRight = 0;
li.style.width = `${100 / num}%`;
} else {
li.style.marginRight = `${marginRight}px`;
li.style.width = `calc(${100 / num}% - ${marginRight}px)`;
}
});
}
});
};
const mounted = ({ api, vm }) => () => {
const el = vm.$refs["upload-list"];
el && addResizeListener(el, api.calcUploadListLiWidth);
};
const destroyed = ({ api, props, vm }) => () => {
removeResizeListener(vm.$refs["upload-list"], api.calcUploadListLiWidth);
props.files.forEach((file) => {
removePlayEventListener({ type: "ended", el: file.el }, file.playEvent);
delete file.playEvent;
delete file.isPlay;
delete file.el;
});
};
export {
calcUploadListLiWidth,
destroyed,
downloadFile,
getDeleteData,
getFileIcon,
getFileType,
handleClick,
handleLoadedmetadata,
handleTimeupdate,
mounted,
parsePercentage,
picturefilePreview
pause,
picturefilePreview,
play,
reUpload,
remove,
showOperatePanel
};
import "../chunk-PKUHTIDK.js";
import { parsePercentage, handleClick, picturefilePreview, getDeleteData, downloadFile } from "./index";
import { downloadFile as edmDownloadFile, getToken } from "@opentiny/vue-renderless/file-upload";
const api = ["t", "state", "parsePercentage", "handleClick", "handlePreview", "picturefilePreview", "getDeleteData", "downloadFile"];
const renderless = (props, { reactive }, { t, parent, mode: tinyMode, emit, service }, { Modal }) => {
const mode = props._mode || parent.$mode || (tinyMode ? tinyMode.value ? tinyMode.value : "pc" : "pc");
import {
parsePercentage,
handleClick,
picturefilePreview,
getDeleteData,
downloadFile,
play,
pause,
handleLoadedmetadata,
handleTimeupdate,
destroyed,
showOperatePanel,
getFileType,
getFileIcon,
mounted,
calcUploadListLiWidth,
reUpload,
remove
} from "./index";
import { getToken, initService } from "../file-upload";
import { getApi } from "../file-upload/vue";
const api = [
"t",
"state",
"parsePercentage",
"handleClick",
"handlePreview",
"picturefilePreview",
"getDeleteData",
"downloadFile",
"play",
"pause",
"handleLoadedmetadata",
"handleTimeupdate",
"showOperatePanel",
"getFileType",
"getFileIcon",
"reUpload",
"remove"
];
const renderless = (props, { reactive, onMounted, onUnmounted, watch }, { t, parent, mode, emit, service, vm, nextTick }, { Modal }) => {
const api2 = { getApi };
parent = parent.$parent;
const constants = parent.$constants;
const $service = initService({ props, service });
const state = reactive({

@@ -11,28 +51,40 @@ focusing: false,

startPostion: 0,
screenType: mode !== "pc"
screenType: mode === "mobile" ? true : false,
showPanel: false
});
parent.getToken = getToken({
constants: parent.$constants,
props: parent,
state: parent.state,
t,
Modal
});
const api2 = {
parent.getToken = getToken({ constants, props: parent, state: parent.state, t, Modal });
Object.assign(api2, {
state,
getDeleteData: getDeleteData(emit),
parsePercentage: parsePercentage(),
downloadFile: downloadFile(service),
downloadFile: downloadFile($service),
picturefilePreview: picturefilePreview(state),
edmDownloadFile: edmDownloadFile({
api: parent,
constants: parent.$constants,
props: parent,
service,
state: parent.state
})
};
Object.assign(api2, {
handleClick: handleClick({ props, api: api2, parent })
handleClick: handleClick({ props, api: api2, parent }),
play: play({ vm, api: api2 }),
pause: pause({ vm }),
handleLoadedmetadata: handleLoadedmetadata({ vm }),
handleTimeupdate: handleTimeupdate(),
destroyed: destroyed({ api: api2, props, vm }),
showOperatePanel: showOperatePanel({ state }),
getFileType: getFileType(),
getFileIcon: getFileIcon(),
mounted: mounted({ api: api2, vm }),
calcUploadListLiWidth: calcUploadListLiWidth({ vm, nextTick, props, constants }),
reUpload: reUpload({ emit, props, parent }),
remove: remove({ emit })
});
props.listType === constants.LIST_TYPE.DRAG_SINGLE && watch(
() => props.files && props.files[0],
(file) => {
if (file && file.status === constants.FILE_STATUS.FAIL) {
setTimeout(() => {
api2.remove({ file });
}, 2e3);
}
},
{ immediate: true, deep: true }
);
watch(() => props.files, api2.calcUploadListLiWidth);
onMounted(api2.mounted);
onUnmounted(api2.destroyed);
return api2;

@@ -39,0 +91,0 @@ };

import "../chunk-PKUHTIDK.js";
import { KEY_CODE } from "@opentiny/vue-renderless/common";
import { KEY_CODE } from "../common";
const isImage = (str) => str.includes("image");

@@ -4,0 +4,0 @@ const handleChange = (api) => (event) => {

@@ -25,4 +25,4 @@ import "../chunk-PKUHTIDK.js";

accecpt: "",
isEdm: computed(() => parent.state.isEdm),
openEdmDownload: computed(() => parent.edm.download),
isEdm: computed(() => state.uploader.$refs[constants.FILE_UPLOAD_INNER].state.isEdm),
openEdmDownload: computed(() => state.uploader.$refs[constants.FILE_UPLOAD_INNER].edm.download),
headers: computed(() => {

@@ -29,0 +29,0 @@ if (state.isEdm) {

import "../chunk-PKUHTIDK.js";
import { initService } from "@opentiny/vue-renderless/user";
import { initService } from "../user";
import { init } from "./index";

@@ -4,0 +4,0 @@ const api = ["state"];

import "../chunk-PKUHTIDK.js";
const getUserHref = ({ props }) => () => {
import { xss } from "../common/xss";
const getUserHref = ({ api, props }) => () => {
let href = "javascript:;";
if (!props.isNewImMode) {
href = "javascript:;";
const data = props.data;
const roleNumber = data.roleNumber ? data.roleNumber.toLocaleLowerCase() : "";
if (roleNumber && api.testUID(roleNumber)) {
href = `im:${roleNumber}`;
return xss.filterUrl(href);
}
}
return href;
};
const doUserAction = ({ api, props, state, eSpaceCtrl }) => () => {
if (props.isNewImMode) {
if (eSpaceCtrl) {
if (state.initialized) {
api.openEspace();
} else {
api.initEspaceLink();
}
}
}
};
const initEspaceLink = ({ api, props, state, eSpaceCtrl, eSpaceCtrlDisabled }) => () => {
const flag = localStorage.getItem("eSpaceCtrl_initialized");
if (Number(flag)) {
state.initialized = true;
api.openEspace();
} else if (!eSpaceCtrlDisabled) {
const timeout = props.timeout || 3e3;
const pollingInterval = props.pollingInterval || 1e3;
const options = { timeout, pollingInterval };
eSpaceCtrl.init && eSpaceCtrl.init(options);
eSpaceCtrl.ready && eSpaceCtrl.ready(() => {
state.initialized = true;
api.openEspace();
});
eSpaceCtrl.error && eSpaceCtrl.error(() => {
state.initialized = false;
});
}
};
const openEspace = ({ api, props, eSpaceCtrl }) => () => {
const data = props.data;
const roleNumber = data.roleNumber ? data.roleNumber.toLocaleLowerCase() : "";
if (roleNumber && api.testUID(roleNumber)) {
eSpaceCtrl.showImDialog(roleNumber);
}
};
export {
getUserHref
doUserAction,
getUserHref,
initEspaceLink,
openEspace
};
import "../chunk-PKUHTIDK.js";
import { getUserHref } from "./index";
const api = ["show", "getUserHref"];
const renderless = (props, { reactive, ref }) => {
import { init } from "../common/deps/eSpaceCtrl";
import { getUserHref, doUserAction, initEspaceLink, openEspace } from "./index";
import { testUID } from "../espace";
const api = ["show", "getUserHref", "doUserAction", "initEspaceLink", "openEspace", "testUID"];
const renderless = (props, { reactive, ref }, { service }) => {
const api2 = {};
const { setting = {} } = service || {};
const { widgets = {} } = setting;
const eSpaceCtrlDisabled = widgets.ESpaceCtrl && !widgets.ESpaceCtrl.autoLink;
const eSpaceCtrl = eSpaceCtrlDisabled ? {} : init();
const state = reactive({
initialized: false
});
const api2 = {
Object.assign(api2, {
state,
show: ref(false)
};
Object.assign(api2, {
getUserHref: getUserHref({ api: api2, props })
testUID,
show: ref(false),
getUserHref: getUserHref({ api: api2, props }),
initEspaceLink: initEspaceLink({ api: api2, props, state, eSpaceCtrl, eSpaceCtrlDisabled }),
doUserAction: doUserAction({ api: api2, props, state, eSpaceCtrl }),
openEspace: openEspace({ api: api2, props, eSpaceCtrl })
});

@@ -15,0 +24,0 @@ return api2;

@@ -8,4 +8,8 @@ import "../chunk-PKUHTIDK.js";

api.getUsers(value).then((info) => {
info.sort((a, b) => value.indexOf(String(a[props.valueField])) > value.indexOf(String(b[props.valueField])) ? 1 : -1);
const list = info.map((user) => user[props.valueField]);
info.sort((a, b) => {
return value.indexOf(a[state.valueField] + "") > value.indexOf(b[state.valueField] + "") ? 1 : -1;
});
const list = info.map((user) => {
return user[state.valueField];
});
state.options = info;

@@ -30,3 +34,7 @@ state.user = props.multiple ? list : list[0];

};
const computedTextField = ({ service, props }) => () => props.textField || service.textField || "userCN";
const computedValueField = ({ service, props }) => () => props.valueField || service.valueField || "userId";
export {
computedTextField,
computedValueField,
initUser,

@@ -33,0 +41,0 @@ showCard,

import "../chunk-PKUHTIDK.js";
import { getUsers, cacheUser, saveCache, initService } from "@opentiny/vue-renderless/user";
import { initUser, showCard, showDetail } from "./index";
import { getUsers, cacheUser, saveCache, initService, syncCacheIds } from "../user";
import { initUser, showCard, showDetail, computedTextField, computedValueField } from "./index";
const api = ["state", "showCard", "showDetail"];
const renderless = (props, { reactive, watch }, { service }) => {
const renderless = (props, { reactive, watch, computed }, { service }) => {
service = initService({ props, service });

@@ -17,3 +17,5 @@ const api2 = {};

imgUrl: "",
batch: props.batch === false ? false : props.batch || service.batch
batch: props.batch === false ? false : props.batch || service.batch,
textField: computed(() => api2.computedTextField()),
valueField: computed(() => api2.computedValueField())
});

@@ -24,3 +26,4 @@ Object.assign(api2, {

saveCache: saveCache({ props }),
cacheUser: cacheUser({ api: api2, props, service }),
syncCacheIds: syncCacheIds({ props, state }),
cacheUser: cacheUser({ api: api2, props, service, state }),
initUser: initUser({ api: api2, props, state }),

@@ -31,3 +34,5 @@ getUsers: getUsers({ api: api2, props, state }),

fetchW3Accounts: service.fetchW3Accounts,
fetchUserByUserId: service.fetchUserByUserId
fetchUserByUserId: service.fetchUserByUserId,
computedTextField: computedTextField({ service, props }),
computedValueField: computedValueField({ service, props })
});

@@ -34,0 +39,0 @@ watch(() => props.modelValue, api2.initUser, { immediate: true });

import "../chunk-PKUHTIDK.js";
import debounce from "@opentiny/vue-renderless/common/deps/debounce";
import { toDateStr } from "@opentiny/vue-renderless/common/date";
import { toJsonStr } from "@opentiny/vue-renderless/common/object";
import { toJson } from "@opentiny/vue-renderless/common/string";
import { log } from "@opentiny/vue-renderless/common";
import debounce from "../common/deps/debounce";
import { toDateStr } from "../common/date";
import { toJsonStr } from "../common/object";
import { toJson } from "../common/string";
import { log } from "../common/xss";
const request = {

@@ -20,5 +20,4 @@ timmer: null,

queryIds.forEach((id) => {
if (!~this.group[valueField].indexOf(id)) {
if (!~this.group[valueField].indexOf(id))
!this.group[valueField].push(id);
}
});

@@ -40,16 +39,14 @@ },

for (let key in this.group) {
if (Object.prototype.hasOwnProperty.call(this.group, key)) {
const all = this.group[key];
const items = this.splitArr(all, this.batch);
if (key === "userId") {
args.push(...items.map((item) => item.join(",")));
} else {
args.push(
...items.map((item) => ({
valueField: key,
valueSplit: item.valueSplit,
[key]: item.join(",")
}))
);
}
const all = this.group[key];
const items = this.splitArr(all, this.batch);
if (key === "userId") {
args.push(...items.map((item) => item.join(",")));
} else {
args.push(
...items.map((item) => ({
valueField: key,
valueSplit: item.valueSplit,
[key]: item.join(",")
}))
);
}

@@ -66,8 +63,5 @@ }

for (let key in this.group) {
if (Object.prototype.hasOwnProperty.call(this.group, key)) {
if (!me.cache[key]) {
me.cache[key] = {};
}
me.cache[key][item[key]] = item;
}
if (!me.cache[key])
me.cache[key] = {};
me.cache[key][item[key]] = item;
}

@@ -90,3 +84,3 @@ });

let reqLen = reqParamsSeq.length;
reqParamsSeq.forEach((params) => {
reqParamsSeq.map((params) => {
api.fetchW3Accounts(params).then((data) => {

@@ -119,3 +113,3 @@ me.setCache(data);

});
errors.length && log(`user [${errors.join(",")}] not found`, "warn");
errors.length && log.logger.warn(`user [${errors.join(",")}] not found`);
this.clearRequest();

@@ -157,13 +151,16 @@ }

};
const suggestUser = (api) => (query) => new Promise((resolve, reject) => {
api.fetchSuggestUser(query).then((users) => {
if (users.length) {
resolve(users);
} else {
resolve({ invalid: query });
}
}).catch(reject);
});
const suggestUser = (api) => (query) => {
return new Promise((resolve, reject) => {
api.fetchSuggestUser(query).then((users) => {
if (users.length) {
resolve(users);
} else {
resolve({ invalid: query });
}
}).catch(reject);
});
};
const updateOptions = ({ props, state, nextTick }) => (usersList) => {
const { valueField, textField, noDataText } = props;
const { noDataText } = props;
const { valueField, textField } = state;
const values = [].concat(state.user || []);

@@ -203,3 +200,3 @@ const options = [].concat(state.selected);

if (list.length === 1) {
const value = list[0][props.valueField];
const value = list[0][state.valueField];
!~values.indexOf(value) && values.push(value);

@@ -242,5 +239,4 @@ if (props.autoClose) {

});
if (failList.length) {
if (failList.length)
emit("error", failList);
}
api.updateOptions(usersList).then(() => {

@@ -256,4 +252,6 @@ api.autoSelect(usersList).then(() => {

const setSelected = ({ api, props, state }) => (value) => {
const values = Array.isArray(value) ? value.map((v) => String(v).toLocaleLowerCase()) : String(value).toLocaleLowerCase().split(props.valueSplit);
state.selected = state.options.filter((user) => ~values.indexOf(String(user[props.valueField]).toLocaleLowerCase()));
const values = Array.isArray(value) ? value.map((v) => (v + "").toLocaleLowerCase()) : (value + "").toLocaleLowerCase().split(props.valueSplit);
state.selected = state.options.filter((user) => {
return ~values.indexOf((user[state.valueField] + "").toLocaleLowerCase());
});
props.cache && api.cacheUser(state.selected);

@@ -263,3 +261,3 @@ };

const { multiple } = props;
let newVal = multiple && Array.isArray(value) ? value.join(props.valueSplit) : String(value || "");
let newVal = multiple && Array.isArray(value) ? value.join(props.valueSplit) : (value || "") + "";
api.setSelected(newVal);

@@ -272,4 +270,5 @@ if (typeof state.lastValue === "string" && state.lastValue !== null && state.lastValue.toLocaleLowerCase() !== newVal.toLocaleLowerCase()) {

};
const syncCacheIds = (ids, props, queryIds, cacheData) => {
const { valueField, cacheFields, cacheKey } = props;
const syncCacheIds = ({ props, state }) => (ids, queryIds, cacheData) => {
const { cacheFields, cacheKey } = props;
const { valueField } = state;
const cacheUsers = toJson(window.localStorage.getItem(cacheKey)) || {};

@@ -279,3 +278,3 @@ ids.forEach((id) => {

const cacheUser2 = cacheUsers[id];
const textField = props.textField === "userCN" || props.textField === "userId" || props.textField === "dept" ? "" : props.textField;
const textField = state.textField === "userCN" || state.textField === "userId" || state.textField === "dept" ? "" : state.textField;
if (textField !== "" && !cacheUser2.a) {

@@ -306,3 +305,4 @@ window.localStorage.removeItem(cacheKey);

const getUsers = ({ api, props, state }) => (value) => {
const { valueField, cache } = props;
const { cache } = props;
const { valueField } = state;
const ids = Array.isArray(value) ? value : value.split(props.valueSplit);

@@ -312,3 +312,3 @@ const cacheData = [];

if (cache) {
syncCacheIds(ids, props, queryIds, cacheData);
api.syncCacheIds(ids, queryIds, cacheData);
request.setCache(cacheData, valueField);

@@ -325,3 +325,4 @@ if (!queryIds.length) {

} else {
resolve(data.concat(cacheData));
const filterData = cacheData.filter((cache2) => !~data.findIndex((d) => d[valueField] === cache2[valueField]));
resolve(data.concat(filterData));
}

@@ -353,4 +354,5 @@ };

};
const cacheUser = ({ api, props, service }) => (users) => {
const { valueField, cacheKey } = props;
const cacheUser = ({ api, props, service, state }) => (users) => {
const { cacheKey } = props;
const { valueField } = state;
const cacheUser2 = toJson(window.localStorage.getItem(cacheKey)) || {};

@@ -373,3 +375,3 @@ const cacheFields = service.userCache;

e: u[cacheFields.eno],
a: ~["userCN", "userId", "dept"].indexOf(props.textField) ? null : u[props.textField],
a: ~["userCN", "userId", "dept"].indexOf(state.textField) ? null : u[state.textField],
r: 0

@@ -386,9 +388,9 @@ };

} catch (e) {
const sortUsers = Object.keys(cacheUser2).sort((a, b) => cacheUser2[a].r < cacheUser2[b].r ? 1 : -1);
const sortUsers = Object.keys(cacheUser2).sort((a, b) => {
return cacheUser2[a].r < cacheUser2[b].r ? 1 : -1;
});
const cutUser = sortUsers.splice(0, sortUsers.length / 2);
const newCache = {};
for (let i in cutUser) {
if (Object.prototype.hasOwnProperty.call(cutUser, i)) {
newCache[cutUser[i]] = cacheUser2[cutUser[i]];
}
newCache[cutUser[i]] = cacheUser2[cutUser[i]];
}

@@ -398,6 +400,6 @@ api.saveCache(newCache);

};
const useSortable = ({ api, props, state, refs }) => () => {
const selectDom = refs.select.$el;
const useSortable = ({ api, props, state, vm }) => () => {
const selectDom = vm.$refs.select.$el;
if (props.sortable && props.multiple && !state.sortable) {
const tagsDom = selectDom.querySelector(".tiny-select__tags>span");
const tagsDom = selectDom.querySelector(".tiny-select__tags>span>span");
state.sortable = props.sortable.create(tagsDom, {

@@ -427,3 +429,3 @@ handle: ".tiny-tag",

if (typeof value === "number") {
value = String(value);
value += "";
}

@@ -437,6 +439,8 @@ if (!value) {

value && api.getUsers(value).then((info) => {
info.sort((a, b) => value.indexOf(String(a[props.valueField])) > value.indexOf(String(b[props.valueField])) ? 1 : -1);
info.sort((a, b) => {
return value.indexOf(a[state.valueField] + "") > value.indexOf(b[state.valueField] + "") ? 1 : -1;
});
const list = info.map((user) => {
user._show = true;
return user[props.valueField];
return user[state.valueField];
});

@@ -456,3 +460,3 @@ state.options = info;

} else {
return Promise.reject(new Error("[TINY Error][User]] This component depends on @opentiny/vue-service"));
return Promise.reject(new Error("[TINY Error][User]] This component depends on @opentiny/service"));
}

@@ -464,3 +468,6 @@ };

const { options = {} } = setting;
const { UserCache = { uuid: "uuid", userId: "userId", userCN: "userCN", dept: "dept", eno: "employeeNumber" }, User = { batch: 50 } } = options;
const {
UserCache = { uuid: "uuid", userId: "userId", userCN: "userCN", dept: "dept", eno: "employeeNumber" },
User = { batch: 50, textField: "", valueField: "" }
} = options;
return {

@@ -475,3 +482,5 @@ fetchUser: props.fetchUser || fetchUser || noopFnCreator("fetchUser"),

userCache: props.UserCache || UserCache,
batch: User.batch
batch: User.batch,
textField: User.textField,
valueField: User.valueField
};

@@ -482,11 +491,17 @@ };

const selectedUsers = state.user.map((value) => typeof value === "string" ? value.toLocaleLowerCase() : value);
return state.options.filter(
(user) => !~selectedUsers.indexOf(typeof user[props.valueField] === "string" ? user[props.valueField].toLocaleLowerCase() : user[props.valueField])
);
return state.options.filter((user) => {
return !~selectedUsers.indexOf(
typeof user[state.valueField] === "string" ? user[state.valueField].toLocaleLowerCase() : user[state.textField]
);
});
}
return state.options;
};
const computedTextField = ({ service, props }) => () => props.textField || service.textField || "userCN";
const computedValueField = ({ service, props }) => () => props.valueField || service.valueField || "userId";
export {
autoSelect,
cacheUser,
computedTextField,
computedValueField,
filter,

@@ -501,2 +516,3 @@ getUsers,

suggestUser,
syncCacheIds,
updateCache,

@@ -503,0 +519,0 @@ updateOptions,

@@ -18,6 +18,9 @@ import "../chunk-PKUHTIDK.js";

initService,
filter
filter,
computedTextField,
computedValueField,
syncCacheIds
} from "./index";
const api = ["state", "handleBlur", "searchMethod", "userChange", "visibleChange", "useSortable", "filter"];
const renderless = (props, { reactive, watch }, { emit, nextTick, refs, service, constants, dispatch }) => {
const renderless = (props, { reactive, watch, computed, provide }, { emit, nextTick, vm, service, constants, dispatch }) => {
const api2 = {};

@@ -37,3 +40,5 @@ const $service = initService({ props, service });

addevnet: false,
batch: props.batch === false ? false : props.batch || $service.batch
batch: props.batch === false ? false : props.batch || $service.batch,
textField: computed(() => api2.computedTextField()),
valueField: computed(() => api2.computedValueField())
});

@@ -53,3 +58,3 @@ Object.assign(api2, {

suggestUser: suggestUser(api2),
cacheUser: cacheUser({ api: api2, props, service: $service }),
cacheUser: cacheUser({ api: api2, props, service: $service, state }),
initUser: initUser({ api: api2, props, state }),

@@ -60,6 +65,11 @@ getUsers: getUsers({ api: api2, props, state }),

userChange: userChange({ api: api2, emit, props, state }),
useSortable: useSortable({ api: api2, props, state, refs })
useSortable: useSortable({ api: api2, props, state, vm }),
computedTextField: computedTextField({ service: $service, props }),
computedValueField: computedValueField({ service: $service, props }),
syncCacheIds: syncCacheIds({ props, state })
});
props.cache && api2.updateCache();
watch(() => props.modelValue, api2.initUser, { immediate: true });
provide("showContent", props.showTips);
provide("tips-max-width", props.maxWidth);
return api2;

@@ -66,0 +76,0 @@ };

import "../chunk-PKUHTIDK.js";
import { cloneDeep } from "@opentiny/vue-renderless/chart-core/deps/utils";
import { cloneDeep } from "../chart-core/deps/utils";
const created = (api) => () => {

@@ -4,0 +4,0 @@ api.loadPickerData();

import "../chunk-PKUHTIDK.js";
import { format } from "@opentiny/vue-renderless/common/date";
import { copyArray, extend } from "@opentiny/vue-renderless/common/object";
import { isObject } from "@opentiny/vue-renderless/common/type";
import { format } from "../common/date";
import { copyArray, extend } from "../common/object";
import { isObject } from "../common/type";
const lastStepHandle = ({ state, emit }) => () => {

@@ -6,0 +6,0 @@ for (let i = 0; i < state.datas.length; i++) {

import "../chunk-PKUHTIDK.js";
import { toDate } from "@opentiny/vue-renderless/common/date";
import { hasClass } from "@opentiny/vue-renderless/common/deps/dom";
import { range, nextDate, getDayCountOfYear } from "@opentiny/vue-renderless/common/deps/date-util";
import { arrayFindIndex, coerceTruthyValueToArray } from "@opentiny/vue-renderless/date-table";
import { toDate } from "../common/date";
import { hasClass } from "../common/deps/dom";
import { range, nextDate, getDayCountOfYear } from "../common/deps/date-util";
import { arrayFindIndex, coerceTruthyValueToArray, arrayFind } from "../date-table";
import { DATEPICKER } from "../common";
const datesInYear = (year) => {

@@ -11,3 +12,5 @@ const numOfDays = getDayCountOfYear(year);

};
const getCellStyle = ({ props }) => (year) => {
const getCellStyle = ({ props }) => (cell) => {
const { defaultValue } = props;
const year = cell.text;
const style = {};

@@ -19,18 +22,179 @@ const today = /* @__PURE__ */ new Date();

style.today = today.getFullYear() === year;
style.default = props.defaultValue && props.defaultValue.getFullYear() === year;
style.default = Array.isArray(defaultValue) ? defaultValue.some((v) => v && v.getFullYear() === year) : defaultValue && defaultValue.getFullYear() === year;
if (cell.inRange) {
style[DATEPICKER.InRange] = true;
}
if (cell.start) {
style[DATEPICKER.StartDate] = true;
}
if (cell.end) {
style[DATEPICKER.EndDate] = true;
}
return style;
};
const handleYearTableClick = ({ emit }) => (event) => {
const clearDate = (date) => {
return new Date(date.getFullYear(), date.getMonth());
};
const getMonthTimestamp = (time) => {
if (typeof time === "number" || typeof time === "string") {
return clearDate(new Date(time)).getTime();
}
if (time instanceof Date) {
return clearDate(time).getTime();
}
return NaN;
};
const getRows = ({ props, state, vm }) => () => {
const { tableRows } = state;
const { minDate, maxDate, disabledDate, startYear, selectionMode } = props;
const selectedDate = [];
const now = (/* @__PURE__ */ new Date()).getFullYear();
for (let i = 0; i < 3; i++) {
const row = tableRows[i];
for (let j = 0; j < 4; j++) {
let cell = row[j];
if (!cell) {
cell = {
type: DATEPICKER.Normal,
row: i,
column: j,
inRange: false,
start: false,
end: false
};
}
const year = startYear + (cell.row * 4 + cell.column);
const isToday = year === now;
cell.text = year;
cell.type = isToday ? DATEPICKER.Today : DATEPICKER.Normal;
cell.disabled = typeof disabledDate === "function" && disabledDate(new Date(year, 0, 1));
if (selectionMode === DATEPICKER.YearRange) {
const minYear = typeof minDate === "object" && minDate ? minDate.getFullYear() : minDate;
const maxYear = typeof maxDate === "object" && maxDate ? maxDate.getFullYear() : maxDate;
cell.start = minYear === year;
cell.end = maxYear === year;
cell.inRange = year > minYear && year < maxYear || [minYear, maxYear].includes(year);
cell.selected = arrayFind(
selectedDate,
(item) => (typeof item === "object" ? item.getFullYear() : item) === year
);
}
vm.$set(row, j, cell);
}
}
return tableRows;
};
const markRange = ({ props, state }) => (min, max) => {
const rows = state.rows;
const [minDate, maxDate] = [min, max].sort((a, b) => a && a < b ? -1 : 1);
const minYear = typeof minDate === "object" && minDate ? minDate.getFullYear() : minDate;
const maxYear = typeof maxDate === "object" && maxDate ? maxDate.getFullYear() : maxDate;
if (props.selectionMode === DATEPICKER.YearRange) {
for (let i = 0, len = rows.length; i < len; i++) {
const row = rows[i];
for (let j = 0, l = row.length; j < l; j++) {
const cell = row[j];
const year = cell.text;
cell.start = minYear && minYear === year;
cell.end = maxYear && maxYear === year;
cell.inRange = year > minYear && year < maxYear || cell.start || cell.end;
cell.selected = cell.inRange;
}
}
}
};
const watchDate = ({ api, props }) => (value, oldvalue) => {
if (value !== oldvalue) {
api.markRange(props.minDate, props.maxDate);
}
};
const handleYearTableClick = ({ emit, props }) => (event) => {
const target = event.target;
const { selectionMode } = props;
if (target.tagName === "A") {
if (hasClass(target.parentNode, "disabled")) {
if (hasClass(target.parentNode.parentNode, "disabled")) {
return;
}
const year = target.textContent || target.innerText;
emit("pick", Number(year));
const year = Number(target.textContent || target.innerText);
if (selectionMode === DATEPICKER.Years) {
const years = Array.isArray(props.value) ? props.value.map((v) => v.getFullYear()) : [];
const index = years.indexOf(year);
if (index === -1) {
years.push(year);
} else {
years.splice(index, 1);
}
emit("pick", years.slice());
} else if (selectionMode === DATEPICKER.YearRange) {
let { minDate, maxDate } = props;
if (props.rangeState.selecting) {
props.rangeState.selecting = false;
if (year < minDate) {
maxDate = minDate;
minDate = year;
} else {
maxDate = year;
}
} else {
props.rangeState.selecting = true;
minDate = year;
maxDate = null;
}
emit("pick", { minDate, maxDate });
} else {
emit("pick", year);
}
}
};
const getTarget = (evt) => {
let target = evt.target;
const tagName = target.tagName;
if (tagName === "A") {
target = target.parentNode.parentNode;
}
if (tagName === "DIV") {
target = target.parentNode;
}
if (tagName !== "TD") {
return;
}
return target;
};
const handleMouseMove = ({ emit, props, state }) => (event) => {
const { selectionMode, startYear, rangeState, minDate, maxDate } = props;
if (selectionMode !== DATEPICKER.YearRange || !rangeState.selecting) {
return;
}
const target = getTarget(event);
if (!target) {
return;
}
const row = target.parentNode.rowIndex;
const column = target.cellIndex;
if (state.rows[row][column].disabled || minDate === maxDate) {
return;
}
if (row !== state.lastRow || column !== state.lastColumn) {
state.lastColumn = column;
state.lastRow = row;
const year = startYear + row * 4 + column;
emit("changerange", {
minDate,
maxDate,
rangeState: {
selecting: true,
endDate: year
}
});
}
};
export {
clearDate,
getCellStyle,
handleYearTableClick
getMonthTimestamp,
getRows,
handleMouseMove,
handleYearTableClick,
markRange,
watchDate
};
import "../chunk-PKUHTIDK.js";
import { getCellStyle, handleYearTableClick } from "./index";
const api = ["state", "handleYearTableClick", "getCellStyle"];
const renderless = (props, { computed, reactive }, { emit }) => {
import { getRows, getCellStyle, handleYearTableClick, watchDate, markRange, handleMouseMove } from "./index";
const api = ["state", "handleYearTableClick", "getCellStyle", "handleMouseMove"];
const renderless = (props, { computed, reactive, watch }, { emit, vm }) => {
const api2 = {};
const state = reactive({
startYear: computed(() => Math.floor(props.date.getFullYear() / 10) * 10)
tableRows: [[], [], []],
rows: computed(() => api2.getRows())
});

@@ -12,4 +13,15 @@ Object.assign(api2, {

getCellStyle: getCellStyle({ props }),
handleYearTableClick: handleYearTableClick({ emit })
handleYearTableClick: handleYearTableClick({ emit, props, state }),
markRange: markRange({ props, state }),
watchDate: watchDate({ api: api2, props }),
getRows: getRows({ props, state, vm }),
handleMouseMove: handleMouseMove({ api: api2, emit, props, state })
});
watch(
() => props.rangeState,
(value, oldValue) => value !== oldValue && api2.markRange(props.minDate, value.endDate),
{ deep: true }
);
watch(() => props.minDate, api2.watchDate);
watch(() => props.maxDate, api2.watchDate);
return api2;

@@ -16,0 +28,0 @@ };

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc